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

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

210330
サーバーのファイルリスト

FC2の無料版を扱う機会があり、そのFTPで苦労しました。
FC2でサーバー側のファイルリストが表示されないという問題です。
同じFTP転送の作業で、まず、FFFTPで試して、うまく動かず苦労しました。
同じ様な問題が半自動化のプログラムでも発生しました。
FFFTPのトラブルに関しては、独立したページを作り、事情を書いています。

ここではHSPでの半自動化プログラム、FC2へのFTPに関する問題です。
同時に幾つかのサーバーで試しましたが、FC2以外のサーバーでは成功しています。

サーバーのファイルリストは、ftpdirlistとftpdirlist2のセットで取り出します。
私、理屈は分からないのですが、サーバーからの返事待ち、みたいなことでしょうか、ftpdirlistの直後に何やら待機するループを作ります。文例がそうなっています。
その後で、ftpdirlist2を発行してファイルリストが取得できます。
ここでエラーが出る場合があります。
FC2でこれをやるとエラーでした。

対策は、ありました。
と言っても試行錯誤で試してみてうまく行ったというだけで、理屈は今一不明です。

エラーの直接の原因は、そのサーバー側のファイルリストをmesboxに表示させると発生しています。
不思議な事に、表示を省略すると成功します。
取得したリストを変数に入れただけなら大丈夫、その変数を表示しようとすると失敗します。
ですので、表示させずに、その変数にあるリストからファイルの日付を取り出して、別に取得しているローカルの日付と比較する事は出来ます。
これで、新旧の区別をし、上書きしていいかどうかの判断材料にします。

解決策は、どう対策したらうまく行ったのかというと、
ftpdirlistの直後のループ内のawaitを50ミリ秒から100ミリ秒にする、
あるいは、ftpdirlist2の直後にwait100を入れる、というものです。
これで、安定して作業が出来ています。表示もされます。

FFFTPで接続は出来ているようだが、リストが出ない事と共通する物があるかも知れません。

210327
合併写真集の枚数、このサイトの写真数

合併写真集の写真の枚数は、プログラムで逐次更新しています。
鳥種毎の合計です。
全部の枚数は、それを合計すると出てきます。314種あるはずです。

このサイトの写真数は、だいぶ前に大まかに計算した数字をトップページに上げています。
6500枚としています。
実際には観察メモを追加する時に、その鳥種の合計枚数を更新していますので、副次的に全部の枚数もカウントしています。
この数字は現在、プログラム上だけでカウントしてあり、表示はどこにも表示してありません。
今日の集計結果は6726枚でした。

なお、写真集にも観察メモにも出している写真があります。
観察メモに出した写真の内、多少写りがいいかなというものを写真集に上げていました。
その分が重複しています。重複しているものはカウント中にチェックして合計から外しています。
具体的には177枚が重複していました。


210324
写真集の写真の追加、等

SAKURA移転い関して、作業を続けています。
今回写真集の写真追加のプログラムに手を加えました。
ページを生成更新するものと、それらをFTPするものです。
基本的に、サーバー関係の定数を変更するだけで動きそうです。

写真集の写真の追加の他、写真集の写真の入れ換え、写真集に新規の写真を追加も対応させました。
つもりです。
実際にページを作ってみないと成否は断言できません。

210312
インターネットサーバー

サーバーのスペルは、server。インターネットサーバーは、internet serverか。
saverと書いていた。スクリーンセーバーだな。置換した。
古いプログラムにも沢山ありそう、対応できないな。

210325
FTPの書き直しをしていて、この訂正も進めています。

210308
FTP作業の関数化、#includeが使えない
下のメモで関数化を諦めたFTP作業を、もう一回関数化に挑戦しました。
一回ではなく、既に数限りなく挑戦していて、どうしてもうまく行きませんでした。
netinitの所でエラーになります。

ネットを調べまわったり、試行錯誤したりして、どうやら解決策に至りました。
#include "hspinet.as"の使い方が悪いようです、どうするといいのか分かりません。
ネットでは、#moduleの中に入れたり、外に出したり、下に置いたりと、色々な対策が見つかります。
ただ、私の理解が足りないのか、どうしてもうまく行きません。

苦難の末の解決策は、やはりネットからの知識で、
#uselib "hspinet.dll"
#func netinit netinit 0
#func ftpopen ftpopen $202
・・・
でした。

具体的には、hspinet.asを使わず、hspinet.asの内容を直接moduleの中に記述する事です。
当初、必要な部分だけ移せばいいかと思って、
実行してみて、エラーの発生するコマンドを調べて、#func以下を書き足していきました。
つまり、netコマンドの所でエラーになりますので、それに対応する部分をコピーしていました。
これを、エラーがなくなるまで繰り返しました。面倒でした。

これで、最終的にエラーが無くなりました。つまり、正しく動きました。
ここまで、動いている様に見えます。

更に考えると、試行錯誤などせず、hspinet.asのコマンドの部分を全部コピーしておけば良かったのでしょう。
これも試しました。ちゃんと動きます。
元来、#includeの意味は、そのようなものでしょう。
どうなんでしょうか、元来、moduleでは#includeは使えないのかもしれません。

ネット関係は関数化するのも良し悪しです。
一つ一つの動作に時間がかかります。
例えば、ftpdirlistです。
対象のディレクトリのファイル数次第では、かなり待たされます。
そこで、お待ち下さい、を表示したいのですが、配置に苦労しています。
これが、ローカルのドライブならランプで確認も出来ますが、サーバーだと何も分かりません。

極端な話、関数内で画面を作ればなんとかなる話です。作れる物でしょうか。
しかし、何故か、呼び出し元の画面が使えることに気付きました。
objprm オブジェクトID,表示内容、のオブジェクトIDを合わせると表示されます。
そこで、引数でIDを関数内に持って来ます。
これで、目的のmesboxに表示されます。

ここで気付きました。変数+@を使えば呼び出し元の変数も使えます。
推奨はされないかもしれませんが、IDですし、引数で引き渡すよりいいかもしれません。

210306
FTP、サブフォルダへのアップロード

FTP作業で、SAKURAやMiniへのアップロード作業に取り組んでいます。
サーバー移転前はLaCoocanにアップしていた物です。
ターバー関連の定数を変更するだけではうまく行かず、個別にチェックが必要でした。

下のメモのトップページは一枚だけの作業でしたので、比較的簡単でした。処理済みです。
現在作業中のMiniにあるスマホ版の合併写真集の目次へ写真集の掲載枚数を入れる作業も、FTP作業を含めて、ほぼ終わりました。
この二つ、ファイルはルートに置いてあります。
まあ、ルートと言ってもサーバー側でサブフォルダを指定してからの作業ですので、一回だけフォルダ移動をする必要はあります。

現在の問題は、今後出てくるはずのサブフォルダへのアップロードの問題です。
ローカル、サーバー双方のサブフォルダを同時に移動しながらアップすると問題ないのでしょうが、面倒です。
この事に関して、昔調べた記憶がありました。
そこで探してみたら、自分のページのメモがヒットしました。

「FTPは、
ftpput "temp20/200624yo.htm"
ftpput "temp20/sp/sp200624yo.htm"
という形でどちらもputできます。
つまり、ディレクトリ移動せず、ルートからのパスを指定してやると動きます。」
という事です。
以前、調べて、試していました。

ということで、
事前に、ファイルの日付を調べて、上書きしても大丈夫か調べる事と、
アップロード後には、サーバー側の日付が新しくなっているか確認する、
という作業を省くつもりなら、目的のファイルをフルパスで扱えば、どのフォルダのファイルにも対応できるという事になります。

そこで、今回、FTPのルーチンを関数にしようと試しました。
今迄は、FTPの部分だけ別プログラムにして、exec等で呼び出す方式にしてあります。
これが、関数化できるなら、その部分をコピーしてしまえばどこでも使える事になります。
これがうまく行きません。

止むを得ず、サブルーチンで仕上げてあります。
ただまあ、そういう事なので、汎用性はあるだろうと思っています。



210302
FTP、月々の一枚
いつの間にか月を越していて、トップページの月々の一枚の写真を更新するのを忘れていました。
今日、慌ててプログラムを起動して、一枚を選んで作業を済ませました。

ここで、懸案だったFTPの問題があります。
今回は、元の通りで、LaCoocanにアップされました。
LaCoocanはまだ存在していますので、エラーにはなりません。
SAKURAにはFFFTPを使ってアップしました。

ただ、来月からはこうはいきません。
LaCoocanは今月で解約です。エラーになるはずです。
それまでに、FTPを変更するか、簡単なのは、FTPをしない様にする事です。

このプログラム、月々の一枚、に関してはFTPの変更は単純でした。
扱うのがトップページだけなので、サーバーのルート(実際はルートではなくその下のディレクトリをルートと見なしています。)にアップするだけです。
そういう事で、作り直しましたが、実際にこちらの希望通り動くかは、一か月後でないと分かりません。


210221
合併写真数の写真の枚数

合併写真集の掲載してある写真の枚数を表示する作業に、改めて取り掛かることにします。

この作業、210213から始めました。
しかしながら、作業中、写真のページを見直す際に、幾つかエラーに気付きました。

鳥名が取得出来ていないページがある事、撮影日が間違って表示される事、等です。
という事で、まず、そちらの対策を先にしました。

副産物で、この合併する作業で、収集もれがかなりの数ある事にも気付きました。
対策した結果、収集できた写真は、この合併写真集を作る作業の当初は6428枚だったものが、現在6672枚になっています。

以下、本題です。

このサイトの写真は、ほぼ全部が640x480ピクセルの写真で、サイズは50から100KB程度です。
これまで、サイズを気にする事は無いと思っていました。
が、今回、合併写真集を作り、少し気になりました。
一つのページに、その鳥種の写真を全部表示してあります。

私の様にスマホのデータ使用量に制限のある契約だと、これから開くページの容量がどのくらいなのかをいつも心配しています。
ここまで、1ページの掲載写真数は、通常の写真集のページは1枚、観察メモのページは3枚が基準です。サムネイルは除いた数字です。サムネイルのサイズは一枚10KBあるなしで、まあ気にしないでいいでしょう。

しかし、今回新設した合併写真集のページには、1枚だけのページもあれば、鳥種によっては100枚以上のページもあります。

例えばチョウゲンボウのページは、現在、丁度100枚の写真が掲載してあり、容量を計算したら5500KB程になっていました。5.5MBです。
これを180回表示させると1GB使用する事になります。
ま、実際には、同じ写真ならキャッシュとか使うのかもしれません。

現在、ローカルでサイト全体の容量を調べたら616MBでした。
まあ、全部見たとしても1GBにはなりませんが。

この合併写真のページには、ページを作った時に集計しますので、その枚数を表示してあります。
ただこれがページの中だと、写真が全部表示された後に分かる事になります。
あまり意味はありません。本来は開く前に表示しておきたい所です。
そういう事で、目次のページに、そのページに掲載している写真の枚数を表示する事にします。

さて、その具体的な作業です。
まあ、個々に数字は出しているし、合併写真集を作るプログラムを動かせば、いつでも再集計は出来ますので、極端な話、手書きで書き込んでいけば済む話ではあります。鳥種の数の分、314か所です。

これは面倒ですし、面白くありません。
そこで、当初は合併写真集を作るプログラムにサブルーチンを作って処理しようとしました。
現在は、そのルーチンだけ分離して、単独のプログラムで処理する事にしました。

一応、完成していますが、多少の問題点があります。
文字数が増える関係で横幅が広くなります。
表組ですので、バランスが悪いページも出てきました。
対策は、横幅を固定するか、文字のサイズを小さくするかでしょうが、一長一短です。
現在検討中です。

本来は、写真が追加された時に、この枚数も更新されるのが当然です。
面倒なので、そこまではまだ至っていません。


210221
合併写真集で日付が取得出来ない、他

下のメモの鳥名を探す作業中、ページを見直すこともあり、全くの別問題ですが、日付を正確に取得できない写真があることに気付きました。

特に古い写真は、ファイル名が今の形式になっていない物があります。
原則、ローマ字鳥名+6桁の日付+.jpgというファイル名である前提でプログラムしていますので、これ以外の形式だと日付を正しく取り出せません。

それでも、ファイル名のどこかに6桁の日付が入っていれば何とかなる所までは行きました。
最終的に、日付が間違っているもの6桁無いものが3枚見つかりました。
この3枚は、実際の日付を調べて直接挿入するようにしました。
付け焼刃もいい所です。
実際の日付はページに書き込んでありますので、もう一回ページを読み込んで調べるとスマートではあります。面倒なので後日の課題です。

他にも、観察メモの写真を取りこぼしているページが見つかりました。
これは単にページの行数を取り違えていたバグでした。
観察メモに沢山の写真を登録していると、後ろの方が把握できなくなっていました。
対処しました。副産物で、写真数が少し増えました。

この時点での写真数合計:6672枚
210122まで6800としていたトップページの数字に近付いてきましたかね。

計算に入っていない写真は、スライドショーに55枚あります。
その他には、
50音順目次を調べてみると、ページが337ページあります。
合併写真集のページ314との差の23は、鳥類ではない写真のページです。
今、この内、複数の写真があるページだけカウントしてみました。
アイガモ10、アナグマ9、イタチ9、イノシシ2、ウシ2、キツネ3、サル27,シカ10、ニホンカモシカ4、リス2、
計78になります。
先の集計結果にこの数を加算すると、丁度6800枚と言える数字になります。


210219
合併写真集の鳥名が不明
合併写真集のページに、鳥名が不明となっているページが7枚見つかりました。

薄々気付いていました。
以前から気になっていましたが、全体像が掴めなかったのです。
今回、TExchangeでチェックする方法に気付きました。
314ページを一括で検索が出来ます。
_haiirohireassisigi.htm
_kubiwakogamo.htm 
_ootidori.htm
_outyuu.htm
_sirotidori_sei.htm
_syubasikou.htm
_zyoubitaki_f.htm
の7ページのタイトル等が「不明」になっていました。
各ページに鳥名が3か所埋め込んであります。
本文、タイトル、Description、です。

プログラムのミスなのですが、具体的な原因が掴めていません。
一つには、ファイル名と鳥名が合わない時に発生しています。
このサイト、開設当初にはプログラム化について考えていませんでした。
ですので、ファイル名にかなりのブレがあります。
sirotidori_sei、これは多分シロチドリ成鳥という意味でしょう。
zyoubitaki_f、こちらはジョウビタキメスのつもりです。

プログラムでは、全部の鳥種について、
sirotidori、シロチドリ
zyoubitak、ジョウビタキ
というようなテーブルを作っています。
これでファイル名からカタカナの鳥名に変換する訳ですが、先のようなファイル名だと失敗します。

まあ、この問題を考慮して作り直すと、鳥名が不明というページは解消しました。
また、副産物として、合併写真集で収集する写真が増えることになりました。

ジョウビタキです。
先のバグ込みだと、ジョウビタキの写真は写真集にある5枚しか収集出来ていませんでした。
現在は、観察メモの写真も拾えていて、68枚に増えています。

このような問題がまだ残っているのかもしれません。
ジョウビタキを含んで再集計してみたら、ここまで6587枚だった写真数が、現在6650枚になりました。


210217
文字数の制限など

mesboxメッセージボックスが文字化けを起こします。
以前調べた事があり、32KBです。忘れていました。

私はプログラムを作る時、進行状況をボックスに表示させながら組み立てています。
これが、容量にすると結構なサイズになります。数百KBです。
文字化けです。

変数自体のサイズには実質制限が無いようで、表示がおかしくなるだけです。
そこで、最近では大きなサイズの変数はクリップボードに入れることにしました。
clipsetです。
こうしておいて、進行状況を調べたい時は、エディタを開いて貼り付けます。

以前、mesboxの制限を無くするツールがあり、使ってみました。
この時は、表示に時間がかかるのでやめた、というメモを残しています。

また、VSのC#にもtexBoxに同じ様な制限があります。
ただ、こちらはオプションで簡単に制限なしに出来ます。


210212
スマホ版野鳥紀の現状

スマホ版の野鳥紀を別のドメインで作ろうとしています。
目的は、何となくです。
この作業について、現状をまとめると、

まず、数年前に作ったページがあります。
PC版の写真を共有して、スマホ版と称して目次などを置いています。
これには、出来る限りPC版と同じものを作ろうとして、通常の目次と観察メモを置いています。
今回作った合併写真集の目次はありません。
現状では、合併写真集の目次はPC版の写真集総合目次に置いてあり、PCから見る様にしてあります。

次に、LaCoocanMiniにスマホ版だけを作りました。
ここには、観察メモがありません。
合併写真集はあります。

さらに、LaCoocanMiniと同じものをSAKURAの別ディレクトリ、別ドメインに置きました。
当然、観察メモなし、合併ありです。

MiniとSAKURAの別ドメインは、現在、disallowとしています。
SAKURAのPC版に開設した合併写真集は、数日前にnoindexなどを外しました。



210202
合併写真集、鳥名の重複分を除く、全角識別子

合併写真集の追加更新に関するプログラムのまとめです。

合併写真集を含んだ自動化のプログラムの修正の作業が終わりました。
私としては壮大なものになりました。4本のプログラムを連結しました。
(その後、1本を合併してあります。)

基本は観察メモの生成です。
観察メモを新しく作ると、新しい写真がありますので、合併写真集にも追加する事になります。
ここまで、別々には作ってあります、それぞれ動かせば、更新は出来ます。
後は、手動でFFFTPを使い、アップする段取りでした。

このままだと、一部を忘れたり、面倒だったりします。
そこで、全部をまとめました。

観察メモを作るプログラムから残りのプログラムを呼ぶ事にしました。
まず、サイトマップとRSSファイルの変換です。
中での変更が面倒だったので、そのまま、旧LaCoocan用のサイトマップが作られています。
これをSAKURA用にURLを変換します。これが一つ。
(今思うと、これはstrrep一発で出来るので、何も分離する必要はない事でした。後日改変済)

次に、本題の合併写真集のページを作り変えます。
本来、これも更新ですが、今更更新の方が面倒なので、全部の写真を改めて探して一つのページに収集します。万一、写真集の写真が入れ替わっていても対応できます。
テンプレートが作ってありますし、最初に収集する時に作ったプログラムをほぼそのまま使えます。
既存のファイルの挿入位置を探すより楽です。これが二つ目。

もう一つ、最後に全部をFTPです。
今回は、サーバーが2か所なので、その分面倒でした。
以前までの部分は、FTPでも事前にサーバーとローカルの日付を比較し、更新が必要か、
作業後には、ちゃんと日付が新しくなっているかなどチェックしています。
今回の追加部分にはそれをやりません。
面倒なのと、今までチェックしていて間違いはありませんでした。
アップ作業は、以前と同じことをしていますので、まあよかろうという事です。
時々、FFFTPでミラーリングを試しますので、間違いがあればその時、分かります。

ここまでメモして、今後必要な作業も見えてきました。
ただ、一応、これで今まで通り、写真さえ作れば、観察メモと、付随して合併写真集が完成します。

さて、この作業中に一つの課題がありました。
合併写真集に関しては、複数の写真ファイル名から、同名の鳥名(重複している鳥)を省く必要があります。

例えば、今回、ヒドリガモの写真3枚を追加しましたが、更新する合併写真集のページは一つです。
あるいは、ノスリ1枚とチョウゲンボウ2枚の観察メモの場合はノスリのページとチョウゲンボウのページを更新します。
つまり、配列もしくは文章から重複している項を省く必要がありました。

そこまで面倒なルーチンではありません。
repeat二重とif文を絡ませただけで、単純な物です。
ただ、今回、変数に全角文字を使って見ました。

最近では、ラベルにも変数にも全角日本語が使えます。使えるそうです。
この事は薄々知ってはいて、C#ではラベルに使っています。
サブルーチンを探す時、ラベル一覧を出します。
ラベルが日本語だと、この時、見晴らしがとても良くなります。探し出すのが簡単です。

今迄は半角でラベルを作って、実際のルーチンの所にコメント文で説明を入れていました。
今では極端な話、そのコメント文をラベルにしています。
HSPでも最近追加するラベルは全角です。

さて、今回は一歩進んで変数も全部全角日本語にして見ました。
いえ、元々半角で作っていた変数を全部、全角に置き換えて見ました。

今迄は、変数名とかラベルとかに、合っているのかよく分からない英語、スペルも正しいか不安な英語、仕方が無いのでローマ字と、使っています。
これでは人様に見せるのには強い抵抗があります。
これが、全角日本語にすると、そういった問題は解消します。

という事で、作ったものが下のボックスです。
全角変数は、慣れないせいもあるのでしょうか、とても見づらいスクリプトになります。
このような事は今後はやらないと思います。まあ、面白半分です。
折角なので、簡単な解説も含めておきます。


210131
月々の一枚更新

月末になり、定例の月々の一枚を更新しました。
今回はメジロでした。

今回から、変更したことがあります。
月々の一枚の写真を観察メモから取った事です。
今回の分は1月26日付けの観察メモに入れていた写真です。

これまでは、写真集のページの写真が選定の対象でした。
ただ、最近では写真集に入れる写真がほとんどありません。
毎月、苦労して写真集の写真を無理やり更新していました。

今月は、写真集はとうとう一枚も更新なしでした。
観察メモの方は現在でも結構な数があります。

そこで、かなり以前にプログラムを変更して観察メモの写真も取り込めるようにしていました。
しかしながら、観察メモから取り出したのは今回が初めてです。
年も改まったので、いい区切りと思い、実行しました。
今後はやはり、観察メモから取り込むことになるはずです。

210130
合併写真集

合併写真集の自動化が一応完成しました。
と言いますか、最低限の機能で動きます。

合併写真のページは、SAKURAのPC版とLaCoocanミニ(スマホ版)の2か所に作ってあります。
とてもややこしい事をしています。

写真自体は2か所とも同じです。バックアップのつもりもあります。
写真を掲載しているページはバナーが違うだけです。
PC版のページはマウスで操作、スマホ版はタップで操作でしょうから大き目のバナーにしています。
当然、それぞれの目次の形式も違います。

目次はスマホ版には分類順と五十音順を作りました。
SAKURAのPC版には当初分類順しか作っていませんでしたが、今日、五十音順も作りました。
目次の場合、ほぼ手作業です。置換のツールが役立ちます。
作成途中という事もあり、複製に近いという事もあるので、いずれも、noindex,nofollow、Disallowです。

他に、SAKURAには数年前に作ったスマホ版があります。
今のところ、SAKURAスマホ版には合併のページへの目次は作っていません。
これもどうするか、考えどころです。

さて、自動化プログラムの方は、
通常のFTPで観察メモの写真はアップされます。
合併用の目次は一回アップしておけば、後は必要ありません。
ただ、新種の鳥が出た時には当然目次が増えますので、手書きで更新する事になります。

残っている作業は、
SAKURAでは合併写真集のページが更新されてもアップされません。古いままです。
210201サクラ側は合併写真のページもアップするようにしました。
今日、観察メモにヒドリガモをアップしました。合併写真のページも更新されている事を確認しました。

ミニ側は、やはり更新した際の合併写真集のページと写真のファイルがアップされないままになります。ローカルは同期されています。FTPだけが未完です。
ただ、新しい写真が反映されないだけで、404エラーにはなりません。
210202Mini側もFTPする様にしました。
今回のヒドリガモで試して、正しく転送されることは確認できました。
ただ、一連の自動実行は実際に実施してみないと分かりません。

ローカルのファイルはプログラムで更新されます。
写真やページのファイルもSAKURAとミニのフォルダで更新、コピーされます。
ですので、現在はFFFTPでそれぞれのサーバーにミラーリングする事で作業終了です。

210130
合併写真集では分類順の項目分しかページを作っていません。
五十音順目次には鳥類ではない項目も含まれています。
つまり、合併ページ用の五十音順の目次を作るには、この分の項目を削除する必要があります。
SAKURA版の五十音順の目次を作る際、削除した項目を計算しました。
23個です。五十音順目次には337個の項目があります。

ここで気付きました。
何もいちいち数えずとも、それぞれの項目数を比較すると簡単に分かる事でした。
Chromeのソースで適当な単語を指定して検索するといいのです。
検算にはなります。
今、この方法で試すと、合併のページの目次は全部314、通常の五十音順の目次の項目数も、やはり337でした。



210128
合併写真集の五十音順目次

合併した写真集のページはほぼ出来上がっています。
これを作るプログラムも動きます。
プログラムもページも現状で十分です。ただ、目次が不十分です。
現在、合併写真のページの目次は分類順の目次だけで、五十音順の目次を作っていません。
まあ、スマートなのですが、いざページを探すとき、分類順からは探しづらいです。

そこで、五十音順の目次に挑戦しました。
目次だけを作ればいいのです。
ただ、目次の数がとても多い、あいうえお順に五十音の分だけあります。

プログラム化してもいいのでしょうが、目次を作るだけです、2度と使えません。
面倒なので、手書きで作りました。
仏の写真集の目次がありますので、これを手書きと、一部TExchangeを使ってやりました。
Mini版の方だけです。何とか終わりました。

210127
ノートパッドに改行が残る
note2arrayでノートパッドから配列へ変換できる事を知りました。とても便利です。
今まではこれを知らずに、repeatとnotegetで配列に入れていました。

ところが、dirlistが失敗します。訳が分からず悩みました。

mmにフォルダのリストを入れてあります。
notesel mm
note2array ma,mm
dirlist G:/+ma(0)+"/*.jpg"

このままだと失敗します。
note2arrayの次に、
strrep ma(0),"\n",""
これを入れないといけません。

ノートパッドの要素には改行が含まれている、という事の様です。
気にしないでいい事も多い様に思います。
今までnotegetで取り込んだ時は問題なかったような。
面倒なので試してはいませんが。


210127
合併写真のページ

合併写真のページを作るプログラムがほぼ完成しました。

具体的には、一つの鳥種に関して、写真集と観察メモにある写真を全部収集して、
新しいページにその写真のパスを埋め込んでいくだけです。

現在、ページがSAKURAとLaCoocanMiniに作ってあります。
それぞれバナー類が違うだけで、ほぼ同じものです。
これ用の変換ルーチンも作りました。
まず、SAKURA用にページを作ります。
作ったものを、Mini用に変換します。バナーを入れ換えるだけです。

写真集の方はめったに変化はないですが、観察メモは写真が逐次追加されます。
この為、同期するにはこのプログラムを逐次使わないといけません。

副産物で、このサイトの写真数をカウント出来ます。
210126の段階で、6554枚でした。

なお、実際には、収集していない写真もあります。
基準が、写真集の分類順のページに掲載している314種からスタートしています。
分類順に掲載出来なかったものや、独立したページもあります。
実数はもう少し増えるはずです。

Mini版のリンク切れがあるので、調べてみたら、Miniのローカルフォルダに新しい観察メモの写真ファイルをコピーしていなかった。
何か、方法を考えないといけない。
変換作業後にフォルダ数を調べて、足りなければコピーする様にした。




210126
noindex,nofollow、Disallow

現在作業中の合併写真のページは既にアップロードしています。
しかも、2か所、SAKURAとLaCoocanMiniです。

ただ、作成したばかりで、今後大小の改変をするかも知れません。
そこで、念の為、noindex,nofollow、Disallowを付けています。
この事を忘れなければいいのですが。

210130
SAKURAに五十音順の目次も作ろうとしています。
これにもnoindex,nofollowを入れています。

210125
鳥名とファイル名

合併写真のページを作る作業をしています。
写真集の写真と観察メモの写真を合併したページを作ることです。

一応、プロトタイプが出来上がって、アップしています。
プロトタイプと言っても、これで充分だろうと思っていました。

ただ、特に観察メモは日々増えていきます。
これを追加するプログラムが必要だと思い、作りました。
これも、ほぼ出来上がりました。

ただ、これを走らせて見ると、ほころびがいくつも露呈してしまいました。
プログラムのバグはもちろん、サイトのページ自体の間違いがありました。
写真集のページの鳥名とそのファイル名は基本一致させている前提です。
これの一致していないものがあることに気付きました。

プログラムでは、まず、ファイル名に使うローマ字とタイトルなどに使うカタカナの鳥名を対にする為に一覧表を作っています。ただのテキストファイルです。

通常、この一覧表をプログラムの初期の段階で読み込んで使います。
この一覧表に登録していないものがあります。
まあ、これは新種が出たら、その都度追加する前提でやっていましたので、エラーやダイアログが出た所で追加していました。
しかし、今回、この一覧表を見直すことになって、タイプミスに気付きました。
正しいローマ字、カタカナになっていない名前がありす。
この分は、一覧表を修正追加する事で済みました。

困った事に、ページのファイル名が違うものがあります。
オオヒシクイです。本来は、oohisikui.htmとすべきものをhisikui.htmとしていました。
このままだと、先の一覧表を参照すると、違う鳥名になります。

これには古い記憶があります。
ヒシクイとしてアップしたら、詳しい人から注意を受けて、オオヒシクイと訂正しました。
ただ、昔はプログラムの事など念頭になく、ページ数も少ない時でした。
訂正したのは目次とページのタイトルだけに終わっていて、ファイル名を変えていませんでした。
見た目、ファイル名等は問題にはなりません。表向きは解決しています。

ただ、現在、この末端のページのファイル名を変えたら、リンクの修正が必要です。これが、どこにいくつあるのか見当もつきません。

もう一つ、目次やページに書いている鳥名を間違えている物がある事に気付きました。
こちらは単なる制作時の書き間違いでしょう。

プログラムの途中でダイアログで気付かされたものです。
トモエガモです。ページやタイトルは大丈夫でしたが、目次がトモエエガモになっています。
多分、開びゃく以来のミスでしょう。

これが、分類順の目次全てで間違っていました。
10ページ近くあります。
多分、制作過程で順次コピーして作っていったものでしょう。

解決は、そう面倒ではありませんでした。
TExchangeが使えます。
テキストファイルの検索置換が出来るツールです。
これで、フォルダ全部のファイルをチェックさせます。
すると、変更箇所がリストされ、変換も一括で完了します。

まだあります。
オオタカのページがootaka_you.htmとなっていました。多分、オオタカ幼鳥の意味でしょう。
これが、ファイル名になったいるのが間違いなのです。
この為、オオタカの観察メモの写真が取り込めていませんでした。取り込めていたのは写真集の5枚だけでした。

ここを取り込めるようにすると、59枚になります。
同じミスがカササギにもありました。これは+6枚です。

この対策は、
先の一覧表に、ootaka_you,オオタカ、という項を追加しました。
ただ、他の既存のプログラムにどう影響するか心配はしています。

ここで、全体を制作しなおしてみました。結果は、
合計:6517、失敗:10、重複:177、です。
これで、トップページの写真数と整合する事になりました。

210107
写真集と観察メモの写真を合併したページを作る

サイト移転やそれに関する修正など、落ち着いてきた所で、長年の懸案に取り掛かろうと思います。
サーバーに余裕がある事も動機の一つです。

写真を一つのページにまとめようと思います。
現在、このサイトの写真、つまり野鳥の写真は、一つの鳥種が2か所のグループに分散して収納表示されています。
一つは、写真集のページ、もう一つは観察メモのページです。

写真集の方は、野鳥の写真集総合目次からリンクを進みます。
こちらの方は、50音順、分類順等何種類もの目次が作ってあります。

観察メモは、日記みたいなもので、日付順に並べた一覧表形式の目次と、鳥種別の五十音順に並べた目次(観察野鳥鳥名順目次)があります。

中には重複しているものもありますが、ほとんどは別の写真です。
日々撮影した写真を観察メモに作り、その中でほどほどのものを写真集に上げていました。
写真集の写真の枚数は一種当たり原則5枚と決めていますので、最近では大半が観察メモのページだけに留まっています。

これを統一したページを作ろうと思います。
一つの鳥種に関して、このサイトに収録してある全部の写真が見られるページを作りたい、のです。

色々考えました。
当初考えていた事は、写真集のページの末尾に観察メモへのリンクを作ろうか、という事でした。
しかし、これはプログラムの変更が面倒で実現しません。
写真集のページは、追加、入れ換え、並び換えなど何種類もの操作があります。これを全部変更する必要が出てきそうです。

そこで、写真集のページとは独立したページを作っていきます。
一番簡単なのは、写真集の写真は、5枚前後ですので、全部表示し、その下に、観察メモのページへのリンクを作っていくことです。
この方式だと、作業は比較的簡単です。
観察メモの分は、観察メモの目次にあるリンクをコピーするだけですので。
ただ、これだと、見る場合の操作性がよくありません。現在の、別々のページになっているのと大差ない様に思います。

そこで、もう一つは、写真をまとめて表示するページの形です。
一つの鳥種の写真数は、多いものは100枚を超えるはずです。
この場合に心配なのは表示に要する時間です。

そこで、まず、チョウゲンボウのページを作ってみました。写真が丁度100枚あります。
試してみると、100枚1ページでも表示に問題はありません。
写真のサイズが640x480で、今では小さい方の部類に入ります。そのおかげでしょう。
結局、これで仕上げました。
ページ分けなどの工夫もいりません。プログラムも楽でした。

既に、プロトタイプが作ってあって、写真集の総合目次にリンクを作ってあります。

副次的な成果がありました。
プロクラムの中に、総写真数等をカウントさせてみました。
他にも、、収集に失敗したもの、重複しているものもカウントさせます。

結果は、
合計:6426、失敗:21、重複:171(210122)
でした。

合計(以下の二つを除いた写真数):6426
失敗(日付を正確に取得できず、収集できなかった写真数):21、
重複(写真集にあった写真が観察メモにも使われているもの:171

6426枚となりました。
これまで、トップページには6800枚としていました。
(枚数には、いずれもサムネイル分は入れていません。)

この差に関しては、
まず、今回のプログラムで収集できなかったファイルがあるはずです。
ファイル名に鳥名と日付が規定通り入っていないものは収集から外しました。
最近はきっちり、鳥名+日付という形で作っています。ただ古いファイルにはそうでもない物があります。
これは処理が面倒なので、そのまま残しました。

先にカウントされた失敗分を修正して行きます。
実際には、失敗分は数字の他に、個々のファイル名もリストしています。
そこで、気付きました。
特に古い年次の写真には、ファイル名が正しくないものがあります。
と、言いますか、一枚の写真にオオソリハシシギとオバシギというタイトルで2種写っているものがあります。
このファイル名をoosorihasinado0419と付けています。
目次には双方の鳥種で登録されているのですが、このままだとどちらの鳥種でも収集されません。
普通はこの事に気付きません。一つのページには普通に何種類かの鳥種を表示しています。
ですので、目的の鳥種名でない時は収集しないようにしています。
このファイルは、日付が規定通り6桁で入っていなかったので気付けました。日付が正しければスルーしている所です。

このケースを収集する事は事実上出来ません。
目的の鳥種名になっていない、それでは別の鳥種か探そうとしたら、現在の登録数314回のループが必要です。
冗長になりすぎます。ですので諦めています。

さて、この失敗分21の内20は手書きで修正しました。
正しい鳥種名と規定の6桁の日付にして、作業をし直しました。
結果、
合計:6447、失敗:1、重複:172
となりました。
残りの一件は、鳥種の同定が曖昧だったので、そのまま残すことにします。
この間の作業による合計が微妙に違うのは愛嬌という事で済ませます。

合計枚数の差に関しては、その他、
はっきりカウント対象外の写真と分かっているものが、
スライドショー用の写真が55枚、
50音中のページにはあって、分類順のページにはない項目、
例えば、ウシ、これは分類順には載せていません。ただ、写真にはウシとアマサギが写っていますので、カウントしてもいいはずです。
それに、先の説明の通り、どの鳥種にも合致せず、収集できなかったものもありそうです。
210130
五十音順の合併目次を作ろうとして、やむなく分類順目次に入れなかった項目を計算しました。
合併写真集のページが合併順の目次の分しか作っていないからです。
この過程で、分類順に含まれていない項目数が分かりました。
23個です。五十音順目次には337個の項目があります。

210122、
徹底して探せば、残り300枚ぐらいはあるはずと思いますが、この際、トップページを6500枚に書き変えました。ここまで6800枚としていたものです。
野鳥写真数としてあり、誰か数えるかもしれません。
何しろ、今回生成した鳥種別のページに、そのページの掲載枚数を表示しましたので。
それにしても、6500/314=20で、一種当たり平均20枚となります。大丈夫かな。

どこかで紹介したと思いますが、実際にローカルの写真をカウントするプログラムを作っています。
これを使うと、今、7235枚となります。
この分の写真はアップしてあります。
未使用のファイルは計算に入れてあります。
未使用分は、HPBのビジュアルサイトで計算できます。577件になりました。
このページみたいな、野鳥に関しないページに挿入している写真などは計算しているはずです。

余談になりますが、トップページにある鳥種数の簡単な確認方法に気付きました。
Chromeで、ページのソースを表示します。
写真の行に必ずあって、他の行に無い文字列を検索するといいです。
例えば、width="160" height="120"で検索をすると、ヒットする合計が出てきます。
Edgeでもほぼ同じです。IEでも検索は出来ますが、数字は出てきません。

210125
上のメモにあるように、プログラムのバグ修正で、オオタカなどかなりの写真を追加というか発見できました。結果、
合計:6517、失敗:10、重複:177

210126
合計:6554、失敗:1
失敗1は、
日付を処理できなかったファイル
アカハラ:temp12/120424_kibitaki/akaharakana120424.jpg
これは、識別に不安があるので、そのまま残す。カウントしない。

210213集計
合計 既存 6581

210106
旧年分の観察メモの追加
昨年末、201231撮影のノスリの写真を観察メモにアップしました。
プログラムでは旧年分の観察メモも対象にしてあり、ちゃんと旧年分の観察メモ一覧表に追加するようにしてあります。あるはずでした。
実際に昨年の年初も同じケースがあり、年初に年末分のページを正しく追加できています。

今日、201231付けの観察メモを作りました。
これが思い通りに仕上がっていません。
スマホ版のページがPC版の観察メモへのリンクになっています。
間違えているのは2か所、スマホ版のトップページとスマホ版の一覧表のリンクです。

スクリプトを調べて行くと、間違いに気付きました。
その通りに作ってあるのです。

まず、原因は、元々観察メモはスマホ版を作っていませんでした。
スマホ版からもPC版の観察メモを呼び出していたのです。
スマホ版の観察メモを作ったのが、昨年20年の6月でした。
それでも一応、20年分は遡ってスマホ版を作った様です。
19年分は全部PC版と共通です。こちらはそのまま残してあります。

つまり、この分を全く対応していなかった、という訳です。
その通り、PC版へのリンクになっていました。

今回の分は、手書きで修正しました。
一応、スマホ版のメモは生成されており、リンクが2か所間違っているだけでした。

スクリプトの修正も、手の届かない問題ではないと思いますが、手を付けていません。
来年、発生しないように気を付ける、もしくは手書きで修正する、事にしています。


210106
Rekisa

下のメモの作業中など、Rekisaに重宝します。
WinXp時代のアプリです。いまでもWin10で問題なく動きます。

ページを生成した時、期待通りの結果になっているのか心配します。
単にページを表示してみただけでは安心できません。
HTMLでは、多少のゴミがあっても表向きは動いている場合があるからです。

この事を確認するのにRekisaを重宝しています。
変換前のページと出来上がったページとを比較します。
これで、安心できます。


210105
トップページ中央の写真
トップページの中央にサムネイル写真を表示させています。
元々、乾坤一擲、という写真を使っていて、入れ換えは数年に一回するかどうかという状態でした。

現在は、時節柄という事で、アマビエのページを作り、その姿を切り抜いたものを表示しています。

そこで、ふと思いつきました。この写真も毎回入れ換えたらどうだろう、という事です。
新しく追加した観察メモのページの写真のサムネイルを表示し、そのページへのリンクを張ります。
観察メモ等の更新状況は、隣にある「最近の更新状況」欄にリストされています。こちらはテキストです。
その写真のサムネイルを表示します。つまり、観察メモが追加されるごとに写真が入れ替わる訳です。

プログラムは修正しました。
現在のアマビエを、幕の内の間、もう何日か表示させますので、そのうち更新します。

また、写真によっては、そんなに写りはよくない、というものもあります。
そんな場合は、この部分だけ変更しない、という選択もできるようにしました。



201222
観察メモのページ生成の修正

サイト移転に関して、観察メモのページの生成プログラムの修正が、ようやく終わりました。
細かい修正は必要とは思いますが、今まで通り、写真さえ準備すると、FTPでアップするまでの作業を自動化しています。
移転前は、ページ生成と関連のページの更新プログラムと、その追加更新されたページをFTPするプログラムの二つでやっていました。

今回は、その二つの間に、マップとRSSファイルのURL部分を置換するプログラムを入れました。
いずれも、ページ生成更新のプログラムから呼び出して実行しますので、写真さえ出来ていれば、サイトが更新されます。
(201225の観察メモの追加作業で全体の動作を確認、完了)

おかげで、写真集その他のページの更新作業にも目途が付きました。
ページ生成はそのままでいいはずです。
生成したマップファイルなどは、今のURL置換のプログラムがそのまま使えます。
単独でも使える様に、起動の際、コマンドラインオプションが無ければ、ボタンで操作するようにしています。

FTPは多分、サーバー関連の変数を書き変えるだけで動くと思います。
現在では、観察メモ以外は月に一回あるかどうかです。
当分は、SAKURA用のマップとRSSを変換して、FFFTPでアップするつもりです。

2101106
元々あったバグだと思います。全年分の観察メモに欠陥がありました。
丁度。2012131の観察メモを作ったのですが、スマホ版のリンクに手違いが出ていました。
リンク先が、PC版になっていました。
観察メモ一覧とスマホ版トップページのリンクです。
手書きで処理しました。
プログラムの修正はこれからです。と言いますか、全年分を作らなければ出ないものです。



201218
サブフォルダ、ドメイン、サブドメイン

LaCoocan用のFTPプログラムがSAKURAで使えるか、という問題です。
サーバーを変え、ここまでは、新SAKURA用、旧LaCoocan用二つのフォルダを作っていました。
半自動化のプログラムがLaCoocan用のフォルダでないと動きません。
更に、手を加える必要のあるファイルがあります。
その作業を、旧フォルダで済ませて、新フォルダにコピーしてFTPでアップしていました。

これを統一する、と言いますか、LaCoocan用フォルダから、そのままSAKURAのサーバーへFTPでアップロードする様にしました。
残った作業はFTP部分のプログラムです。今はFFFTPでアップしています。

FTP作業では、古いファイルでサーバー上の新しいファイルを上書しないようにします。
FTPではこの点、2度目のテストが効かないのです。
この事に関し、SAKURAではサブフォルダを使っていますので、動作試験は楽な事に気付きました。
用語がよく分かりませんが、サブフォルダにindex.htm以下を置いて、そこをルートとして扱います。

そこで、サブフォルダです。
サブドメインは二つしか使えませんが、フォルダを作るだけなら自由です。
サブフォルダを別に作っておけば、本来のフォルダに影響を与えずに試験が出来ます。
極端な話、全く同じようにファイルをアップしておけば、同じサイトが出来上がります。
そこまではしませんが、動作試験に関連するファイルを置いておくだけです。
古いファイルをアップしておいて、新しいファイルで上書するという試験がいくつでも出来ます。
プログラムでは、ホスト側の初期フォルダを変更するだけでいいのです。

これを何度か試してみて、プログラムの中身は変更なしで使える事に気付きました。
フォルダの構造は以前と変わらないのだから、そのはずです。

201215
ローカルフォルダ、FTP、文字化け

半自動化プログラムも、サーバー移転に関して、残った課題はFTPです。現在は、SAKURAの分はFFFTPでアップしています。
このFTP作業も、HSPでプログラムします。今まではしていました。

そのSAKURA用のFTPのプログラムで、若干ですが困った事があります。
サーバーにあるファイルのリストを取ると、日本語名のファイルが文字化けするのです。
プログラムは、LaCoocanで使っていたものをそっくり転用しています。
細かい所はこれからですが、ホスト名等を変えただけで、後は何も変えていません。
LaCoocanでは、これが正しく表示されます。
ところが、SAKURAでは文字化けするのです。
日本語名のファイルはこの間の試験用に作っただけで、数個です。実際に使ってもいません。
しかも、表示だけの事で、動作には関係ありません、

調べてみると、どうやら、サーバーでは日本語はいけないみたいです。
とは言え、SAKURAのファイルマネージャーでは文字化けはしていません。赤色で非対応な名前のファイルと注釈、警告でしょう、が出ています。
FFFTPでは何もなく、正しく表示されます。
やり方次第では、文字化けは防げるという事ですし、LaCoocanでは問題ないし、未練は残ります。
まあ、当面日本語は使わないとして、後日の課題です。


201213
dirlist、改行

dirlistで苦労しました。
dirlistでファイル名を調べ、そのテキストファイルを読み込む、というスクリプトを作りました。
これがうまく行きません。
ファイルが無いというエラーになります。
原因は、改行でした。
dirlistで取ったファイル名には改行マークが付いているらしく、そのままnoteloadするとファイルが無いと言われます。
strrepで改行を取り除いてから実行します。


201205
サイト移転に伴うプログラムの追加
今日、実際に観察メモの追加作業をやりました。
一応、手順通りに終わりました。

まず、今までのLaCoocan用のプログラムでLaCoocan用のフォルダに各ファイルを生成します。
ただし、ここではFTPは実行しません。現在は実行しても問題はないのですが、LaCoocanを廃止した後はエラーになります。

そこで、新しく、マップファイルとRSSファイルの変換プログラムを作りました。
これで、SAKURA用のファイルにします。
作業は単純で、URLをstrrepで置換し、SAKURA用のフォルダに保存するだけのものです。
毎回上書きされますので、別名でバックアップも作ります。

こうしておくと、当分、変換が正しく出来ているか検査が出来ます。
テキストファイルを比較するツールがあります。
それを使って、この場合、新しいファイルの項目が追加されている事と、
その他は同じ内容ある事を確認します。

ここ、当初は、ファイル名を変えて生成し、変換が正しいことを確認してファイル名を変更していました。
現在、動作は確認できましたので、同じ名前で生成しています、

残りのファイル、今回の観察メモ用に生成、更新したファイルは、LaCoocan用のフォルダにあります。
これを、LaCoocan用からSAKURA用のローカルフォルダにミラーリングします。
ミラーリングには、バックアップ用のツールを使います。
この時、先に変換したマップとRSSファイルはコピーされません。
先に変換して、名前を戻したファイルの方が新しいからです。
なにやら、綱渡りのような気もしますが、大丈夫です。
万一、マップファイルもコピーしてしまっても、先の変換用のプロクラムを使えば済みます。
ただ、この場合には、別名でバックアップしたものが使えません。URL部分がLaCoocan用のままです。

これで、SAKURA用のファイルがそろいます。
最後に、SAKURAのサーバーにFTPして終わりです。

これで何回か試して、問題なければ、直接LaCoocan用のフォルダからSAKURAのサーバーにFTPする用に出来そうですが、それは出来ません。
マップファイルをSAKURAのURLにしておくと、観察メモ生成用のプログラムが動きませんので。

201203
サイト移転に伴う作業

この項、変更有り。
半自動化しているプログラムは、原則すべて書き換えないといけません。

しかしながら、ここに来て、簡単な方法に気付きました。
書き換えるのは、ローカルフォルダに関する部分とURLに関する部分です。
こういう事態になるとは考えもせず、絶対アドレスで組んであります。

ローカルフォルダに関する部分は、フォルダを変えなければ、何もする必要が無くなります。
URLが入っているのは、マップファイルとRSSファイルだけです。

そこで、差し当たっての対策で、
普通に、今までの半自動化でファイルを追加更新します。
その後、マップとRSSを改めて読み込んで一括置換します。
strrepが使えます。
置換したマップとRSSのファイルは別名で保存します。

これでいいはずで、元のプログラムはそのまま通用します。
URLを置換する部分だけを別にサブルーチンにするか、別プログラムにしてもいいはずです。
関数化するのが良いのでしょうね。関数はよく分からないので、多分サブルーチンになると思います。

これまで、FTPまで自動化していました。
旧サーバーへはそのままFTPしても問題ありません。差し当たってはです。
しかし、いずれ、旧サーバーは廃止します。
幸い、FTPするかどうかは選択できるようにしていました。
このままでもいいし、そのうち、FTPせずに終了するようにするといいはずです。

出来上がったファイル群を新サーバー用のフォルダにコピーします。
ここでは、バックアップ用のツールを使います。ミラーリングやコピー除外が出来るものです。
そこで、旧サーバー用のマップとRSSファイルはコピー除外します。
こうすると、ファイル名を変えたマップとRSSがコピーされます。

コピー先で、ファイル名を元に戻して、FTPします。
ここのFTPはFFFTPを使います。

最終的には、旧サーバーを廃止した後の段取りを考えないといけません。
旧サーバーは無いものとして考えればいい訳です。

現在の作業の大半は、観察メモを追加する事です。
観察メモに関しては、ここまでの形で作業して、うまく行きました。

201204
旧サーバーへのFTPをしない事にします。
元のプログラムをいじって、問題のマップとRSSファイルは別名で保存します。
そのファイルを、別のプログラムかサブルーチンで読み込んで、新URLに一括変換して、元々のファイル名で保存します。
これで、旧サーバー用のローカルフォルダから直接新サーバーへFTP出来ます。


200709
同じフォルダが、mkdirで、と思ったら。
HSPのmkdirで新しいフォルダを作ります。
一応、作る前に同名のフォルダがないか調べるのですが、通過してしまいました。
念の為に結果を見てみたら、同じ名前のフォルダが二つできています。
そこで、慌てて、元のフォルダにファイルを移し、新しく良く作った方を削除しました。

ゴミ箱をよく見たら、スペルミスしていました。
同名ではありませんでした。


200630
forループ、観察メモ、サイトマップ

観察メモのページの生成作業に関して、多少の改良をしました。

この観察メモの追加作業は、現在、具体的には、
2個の新規のページを作り、
8個の関連するページとファイルを更新する、という作業をプログラムで実行しています。

実行前に、ページに使う数枚の写真を準備し、既定のフォルダに保存しておきます。
後は、この専用のプログラムを動かすと、先の2個と8個のファイルを生成、更新し、FTPでアップトードまでやらせています。

この内の一つが、サイトマップファイルの更新作業です。
これに関して懸案がありまして、この更新作業に、51秒程かかっていました。
他のファイルは、ほぼ一瞬で終わります。

サイトマップファイルとは、
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

<url>
<loc>http://ooo.d.dooo.jp/index.htm</loc>
<lastmod>2020-06-30</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
・・・

といったものです。
もう忘れましたが、バージョンや形式がいくつかあって、恥ずかしながら、簡単な方を選んだ様に思います。

つい少し前、これとは関係ない作業でしたが、
HSPでもループを減らす工夫をすると、作業時間の短縮になる事に改めて気付きました。
(ここまで、スクリプトの分かり易さ重点だったのです。)
そこで、このプログラムに関しても見直してみることにしました。

まず、現状では、サイトマップファイルの更新の際に、ループを
重複の検査、
観察メモのページが登録してあるブロックが始まる位置の特定、
そのブロック内での具体的な追加位置の特定、と、
三つのループを使っていました。

何とかなりそうな気がしてきます。
これを、改良して、一つにまとめる事にしました。
ついでに、ループをrepeatからforに変えます。
これも別の作業で気が付いた事でしたが、forだと、例えば7行おきに読み込む、という場合にとても便利です。

現在、サイトマップファイルは30131行になっています。
ここまでは、先のループの二つでは、全部の行を読み込んで調べていました。

サイトマップファイルは、各ページ毎に登録しますが、一ページの分が全部7行のブロックです。
つまり、7行おきに調べると、事が済むことに気付きました。

改良後は、forのループで、
重複の検査(今回のファイルが既に登録されているものでないか)
一個のページに関するブロックが、ちゃんと7行おきに並んでいるか。
観察メモページは、まとめて日付順に並べてありますので、観察メモのブロックが始まる位置を特定出来ます。
ここまでの作業を一つのループでまとめて調べることにしました。

最後に観察メモのブロックの中の、どの位置に追加するか特定し、実際に新しいブロックを追加します。
この作業だけは別のループにしました。
これは、普通には、一回かそこらの検査で終わります。普通は一番新しいファイルだからです。

こうして、作業時間を再度測定したら、3.3秒で終了しました。33秒ではなく3秒と少しです。

なお、サイトマップファイルの行数から、現在登録しているページ数が分かる事に気付きました。
行数から、ヘッダ、フッタ部分の3行を引いて、7で割ります。
(30131-3)/3=4304ページとなります。



200629
a+=1、=の省略

HSPのスクリプトを見直していました。
途中のスクリプトに変な物を見つけました。
見つけた物と同じではないのですが、こういう物です。
if a>0:b+7、です。

b+7の所です。エラーになっていません。
b=b+7、と書こうとしていた様子です。

調べてみたら、HSPではこのような時、=を省略できるそうです。
あまり、拡張性はなさそうとの事。
b+7の場合、b+=7と同じで、bに結果が入る、という事です。



200625
リンクエラー、HPB

HPBのビジュアルサイトビューでリンク切れをチェックできます。
ただ、全4000ページ以上が対象なので、結構な時間がかかります。
結構な時間(10分ぐらいか)待って、結果を見ると、10数個のリンク切れがあると出ています。
これを調べても分かりません。
個別に、ツールメニューのURLエディタで調べても異常はありません。
リンク切れをチェックしてくれるサイトもあります。ここで調べても出てきません。
誤動作なのでしょうね。

このサイトビューを使うと、HPBを終了してもタスクが残る時があります。
そうなると、HPBを再度起動しようとしても、反応しません。立ち上がりません。
タスクマネージャーを見ると、ゴースらしきプロセスが残っています。
どうにも、無理があるようです。

200625
スマホ版観察メモ
とても自慢できる物ではないのですが、スマホ版と称するページも作ってあります。
写真集と、観察メモのページです。
スマホ版を作るに当たり、特に知識はありませんでした。今でも同じです。
小さい画面で表示できるように、リンク類を大きくしたらいいのだろうという考えだけで作ってあります。

スマホ版と言っても写真はPC版と共通です。ページの体裁とバナーだけを変えてあります。
スマホ版の観察メモは2018年から始めましたので、まだ3年目です。
それも、観察メモ一覧表を作っただけで、ここまで、実際のメモのページはPC版へ飛ぶようにしてありました。

今回、それを別々のページにしました。
と言っても、やはり、バナーを大きく単純にしただけです。
まあ、スマホの画面で見ても、なんとか操作できるだろうという事です。

しかも、独立して作るのではなく、普通にPC版のページを作った後、そのファイルをコピーして編集します。
編集の内容は、
バナーの部分をスマホ用のものに入れ換え、
表示する写真はPC版のページと共用ですので、リンク先(?参照先)を書き換えます。
ついでにMETA name="viewport"を追加しようと試してみましたが、これが無い方が良いように思います。
観察メモのページに関してはこれだけで、スマホ版のページ専用のフォルダに名前を変えて保存します。

後は、関連するページのリンクです。
スマホ版の観察メモ一覧表とトップページにリンクがありましたので、そこを書き換えます。
今はHSPに、strrepというコマンドがあって、作業が簡単です。
strrep "書き換えるテキスト","書き換え対象","書き換え内容"、
とすると、文章の特定の部分だけを入れ換えることが出来ます。
これを使ってリンクの文字列を作り直します。

昨日のページの分から独立分離させてあります。
もっとも、この分は、手書きで修正しました。
改変したプログラムが使えるのは、明日以降に作る分からです。
多分、です。未だ実際には動かしていませんので。

次に、古いページの処理があります。
既に今年だけでも70枚ほどのページがPC版と共通という形で作ってあります。
年度の途中から変更するのも、情けないので、そのうち、一括変換するプログラムを作るか、今持っている置換のアプリで作業しようと思っています。

今年分のページは全部変換しました。
一括変換のプログラムでは対応できませんでした。変換してはいけない部分との区別が難しい為です。
先に作ったPC版のページを編集するルーチンを利用して、簡単な変換用のプログラムを組みました。

前年分も簡単に変換できるはずですが、サイトマップを修正する方を先に片づけるつもりです。
サイトマップへの追加ルーチンも作りました。

後は、FTPのプログラムです。
当初、FTP関連は修正が要らないだろうと考えていました。
実際に試すと、エラーで止まります。

完全な検証はしていませんが、事前のエラーチェックで止まっていました。
逆に、チェックをしなければ動いていたと思います。

FTPは、
ftpput "temp20/200624yo.htm"
ftpput "temp20/sp/sp200624yo.htm"
という形でどちらもputできます。
つまり、ディレクトリ移動せず、ルートからのパスを指定してやると動きます。

200628追記
今日新規に観察メモを1ページ追加しましたので、結果がはっきりします。
予定通り動いていました。
スマホ版観察メモ追加作業には積み残しもあります。
観察メモ追加作業にはFTPでのアップロード作業もあります。
FTP作業中、関係のファイルが、事前にアップロードされていない事と、事後にアップロードされていることをチェックしています。
しかしながら、今回追加したスマホ版のページに関しては、これを省略しました。
手抜きなのですが、ここまで、このチェックで止まった前例がありません。
まあいいか、という事です。






200501
トップページの改修
トップページをほんの少し変更しました。
下の画像は変更前の画面コピーです。改修後は現在のページです。

文章を少し変えた他、体裁を少し変えています。
何しろ、元々、1024x768ピクセル程度のCRTで見る前提でした。それに、表組が基本の組み立てです。
それでも、窓で見るる分には普通に見えるのですが、最近の大きなディスプレイで、全画面表示にすると、ただ横にだだっ広い隙間だらけの配置になってしまいます。

これを、今では当たり前の、中央にまとめてバランスよく表示するようにしたいと考えていました。
調べてみると、いくつか方法がある様です。
<meta name="viewport" content="width=1000"/>、とか、
<style type="text/css"><!--body {width:1000px;margin:auto;}--></style>、とか、です。

実際に試すと、metaの方は効果なしでした。
いえ、私が知らないだけで、何か足りない物があるのでしょう。
幸い、styleの方で、期待通りになりました。
本来は、全部のページを同じようにしないといけません。
ただ、膨大な数になります。保留です。

さて、後はプログラムの問題です。
丁度、文章を変更した部分に現在の掲載数が含まれています。
このままでは、この部分を扱うログラムが動きません。
後日、こちらも対応しました。



200425
文字コード

Windows10のメモ帳の文字コードが、UTF-8標準になっています。
調べてみたら、2019年6月のWin10の1903から、変わったようです。

さて、今回のトラブルは、
下のテキスト変換のプログラムの作業中に、突然、文字化けが出てきました。
mesboxに表示しているものですが、今回は、32KB問題ではなさそうです。

ほんの数文字のテキストでもゴミが出ます。
今回は、文字数の増減はありません。単に文字化けです。

古いテキストファイルは、大半Shift_JISで保存してあります。
これは、今でもWin10のメモ帳で普通に更新してもコードは変わりません。
元の文字コードが維持される為でしょう。

プログラムのテストをする為に、単純で短いテキストファイルで試します。
もっとも単純にと思って、半角数字の123だけというテキストファイルを作りました。
問題はありません。
次に、やはり漢字も入れてみるかと、123試験、とかいうテキストにしてみました。
ここで、文字化けが発生しました。

こうやって、順番に書くと、原因は明確です。
もう一つ、要因はあります。半角文字の場合、Shift_JISもUTF-8もコードは同じです。
テキストエディタでは区別できません。
そこで、半角数字だけのファイルを作った時、メモ帳ではUTF-8と判断され、保存されてしまいます。
しかしながら、HSPではShift_JISとみなして、想定通りに作業を済ませます。
半角だけのファイルの場合はどちらも同じコードですので。
そこに漢字を追加すると、今度は、といいますか、今度も文字コードを維持して、UTF-8で保存されてしまいます。
そうすると、HSPが誤作動するのです。
HSPでは、何もしなければ、相変わらずShift_JISとして処理します。

直接に関連は無いのですが、
文字コードと言えば、我がサイトは当初からShift_JISを使っています。
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">、です。

いえ、開設当初、多少は迷いました、
ページを作る際、文字コードを何にするか、最初に決めないといけない問題です。
UTF-8も当時からありましたかね、ISO-2022とか、EUCとかの選択肢がありました。
結局、当時はポピュラーだったShift_JISで始めました。
現在では、Shift_JISは、どうやら置いて行かれている様です。

しかしながら、私の所では、ここまでは、Shift_JISが正解でした。
その後、始めたHSPが、原則Shift_JISでしたので。
サイトの構成ファイルの中にはUTF-8等でないと受け付けられないファイルもあります。
HSPには、その場合のコマンド、UTFファイルを生成するコマンドも用意されています。
一つのファイルなら、一手間加えるだけです。だったと思います。

現在では、UTF-8が主流の様に見えます。
そこで、一括で変換する事が検討課題には上ります。
しかし、ページが大変な数です。
確か、この為のコンバーターがあったはずです。
ですが、残念ながら、文字コードをコンバートしただけでは解決に至りません。
文字コードを変換したら、プログラムも対応させないといけないのです。
今では、これが面倒なのです。
つまり、様子見です。

200420
mesbox、文字数制限

HSPのmesboxに表示できる文字数に制限があることを知りました。

少し大きめのテキストを表示するプログラムを作っています。
90KBほどのテキストファイルで、その内容を読み込んで、多少の変換をして表示するものです。

3つのmesboxを作り、そこに表示していきます。
ボックスは、読み込んだばかりの元のファイルの内容、それを変換したもの、更にもう一回変換したもの、を表示する為です。

ファイルが大きいせいで、結構時間のかかる作業になりました。
90KBで試そうとすると、2回の変換作業で、約11分かかります。
そこで、早く結果を見る為に、最初は、仮の小さなファイルで動作試験をしていきました。
数KBのテキストで試すと数秒で終わります。
いずれにしろ、テキストファイルを扱うだけです。さほどの問題は出てきません。

作業に目途がついた段階で、目的の90KBのファイルで試しました。
これがうまくいきません。
結果にゴミが付くのです。テキストの末尾に10バイトほどのゴミが付いて帰ってきます。
それだけではなく、テキスト自体が入れ変わる場合もありました。(これはプログラムのミスかも知れません。ただ、以下の対策後には異常は出なくなりました。)
困りました。

当初、テキストの中に元々ゴミか何か原因になる物が有るのかと疑いました。
動作異常を起こすようなテキストではない物があるのではないかと。
ただ、プログラムは、たとえテキストにアスキーコードでない部分があっても対応しているつもりでした。
つまり、バイト単位で変換するものです。

いずれにしろ、ファイルのどこに原因があるか調べないといけません。
ファイルが大きいせいもあり、眺めたぐらいでは分かりません。
そこで、ファイルを分割して調べることにしました。
どんどん分割して試していけば、そのうち、原因の個所に出会うだろうという考えでした。

90KBのファイルを半分にしてもゴミが出ています。
そこで、さらに半分にして調べました。
今度は正常です。驚くことに、その四分割したファイルを個々に全部調べても、どれも異常が出ません。
2分割したものは、どちらも異常な結果になります。

ここに至って、ファイルの大きさ、テキストの長さが原因ではと勘繰るようになりました。
ゴミが付くと、少しばかりテキストの長さが大きくなります。
先のmesboxに入れた前後でテキストの長さを調べてみました。他の場所は、もう調べる場所もないのです。
結果は、mesboxの後でゴミが付いていました。
しかも、30KBを超えたあたりの大きなファイルだけです。

そこで、mesboxの仕様を調べてみました。
ヘルプでは出てきません。
ネットで調べて、ようやく32KBの限度があることが分かりました。
回避する方法はあるようですが、よく理解できません。
仕方が無いので、mesboxには表示しない事にしました。

内容を見るには、ファイルを保存してテキストエディタで見るか、
よくやる方法ですが、クリップボードに転送して、やはりエディタに貼り付けて見る様にしています。

200425追記
掲示板にあったスクリプトを使わせていただき、限度のないmesboxに変えました。
ゴミは出なくなりました。

200526追記
上の拡張ボックスで表示させると、大きなテキストでは表示に時間がかかります。
300KB程度のテキストで13秒程です。
ちゃんとした解決方法があるのかもしれませんが、分かりません。
やむを得ず、テキストの一部だけを表示するように変更しました。
10KBで1秒、100KBで3秒程度になりました。



200406
ftp、stat

自分のサイトの更新にftpを使っています。
HSPでftpのコマンドが使えることを知ってからは、ページの生成とftp転送を一体化して使っています。

ftpコマンドは、netinit、ftpopen、ftpdir、などです。
これらについて、私の理解が間違っているのかもしれませんが、statが説明の通りに値を返しません。
説明では「実行に成功した場合は、システム変数statに0が代入され、失敗した場合はそれ以外の値が代入されます」、と書いてあります。

実際には、私の環境では、成功失敗にかかわらず、stat=0、です。
我がNiftyのサーバーだけがそうなのかもしれません。
私の使い方が間違っているのかもしれませんが、いくら調べても分かりません。
困ったものです。

仕方が無いので、逐一、エラーを発生させたり、させなかったりして、ftpresultを調べました。
この違いを確認することで、失敗成功を分けています。


200303
ループの中のwait
HSPで画像ビューアを作り始めてから、もう1年半ほどになります。
行き当たりばったりでスクリプトを追加してしまうので、大きく複雑になって困っています。
最近、特にもたつきが目立ってきました。
扱うのが一眼レフの大きな写真です。インタプリタ的なツール(多分)では、ストレスのない程度に動かすことは、無理筋なのかもしれません。

実は、ちょっと前、突然、昔読んだような記憶が湧き上がってきました。HSPでは、ループににwaitを入れないといけない、という記事です。私の記憶自体、あてにはならないものでしたが。
まあ、そうだったかもしれないなと、入れてみました。wait 1です。ループは10箇所ありました。
繰り返しの回数は、小さいものは10回、大きいものは、写真の数ですので、数百、たまには、500とか1000とかになる事もあります。

最初に書いた通りで、最近、このビューアの動きがとても悪くなっている事に気付きました。
そこで、再検討しました。このwaitです。
wait 1は10ミリ秒とあります。つまり100回まわすと、waitだけで1秒消費することになります。
これは体感的にはかなりの時間になります。
結局、全部外しました。

で、マニュアルを読み直しました。以下の通りです。
「HSPではキーを押さないと進まないなどの無限にループになる可能性のある部分では、 必ずwaitかawait命令を入れる必要がある」、と書いてありました。

これを勘違いしたようです。
この意味は、例えば、ループさせておいて、getkeyでキーコードを受け取る場合には、そのループにwaitを入れておかないと、帰ってこない。という意味のようです。

私もgetkeyを使っています。場所はかなり複雑なループの中です。
そこで試しました。waitは入れても外しても同じです。目的のキーを認識します。
単純なループではwaitを入れろ、という意味なのでしょうね。
あるいは、試していませんが、実行ファイルでは危ない、という意味かも知れません。

私は、元々、用心のため、ループにはいつも、 if cnt>3000:dialog "err":end、みたいな一行を入れています。
これでまあ、強引にcntを変更しない限り、止まらない事は無いはずです。多分。

この、waitの勘違いだけではないと思います。
他にも、同時にスクリプトの整理も進行中です。
ちょっと見には、かなり軽くなったように感じます。



200209
TExchange、写真集の掲載枚数チェック

現在取り組んでいる画像ビューアで、作業中に、写真集のページの掲載枚数を調べて警告を出す事を思いつきました。

この写真の枚数を調べるスクリプトは、既に幾つか作ってあります。
その一つは、観察メモを作る時、その鳥種について写真集の枚数をカウントして表示するようにしています。

ですので、その時作ったものを利用すると、そんなに面倒ではないはずです。
本来は、それが独立したルーチンにしてあり、適当な引数を付け、呼び出せば済む、という事でしょうが、そうはいきません。いつも、行き当たりばったりなのです。

ビューアでは、写真の出来をチェックしながら、まともな写真があれば鳥種ごとのフォルダにコピーをする、という作業をやります。
このコピーの作業で鳥名が特定できますので、対応する写真の数を調べられます。
写真集のファイル名もローマ字になっています。
鳥種ごとのフォルダはローマ字に統一してあります。

そこで、予め、写真集の50音順の目次のページを読み込み、
鳥種ごとのページのファイル名のリストを作ります。
そのファイル名から鳥名のリストも作っておきます。
次に、その鳥種のページを全部読み込み、写真が何枚あるか、リストにしておきます。
つまり、起動時に、ページに掲載してある鳥種の鳥名と写真数のリストを作っておくことにしました。

なお、この際の鳥種は336件になりました。
サイトのトップページにある掲載数の313種は純粋な鳥種で、50音順の目次のページには動物等の写真もありますので数が増えます。

さて、という事で、ビューアでコピー先のフォルダを作った時、そのフォルダ名を参照することで、ページに掲載してある写真の枚数が分かります。
その数が5枚未満ならダイアログを出すようにしました。
つまり、写真集用の写真があったぞ、という訳です。

ここまでが前置きです。
この作業中に、問題を見つけました。
写真集のページのファイル名が完全な鳥名になっていないものがあるのです。
例えば、ジョウビタキのページは、zyoubitaki_f.htmとしていました。
全部がこの形なら対応ができますが、シベリアオオハシシギは、s_oohasisigi.htmとしていました。
いずれも初期の頃の写真です。当時はプログラムの事は考えていません。
ジョウビタキは多分、メスという意味でしょう。
シベリアオオハシシギは名前が長すぎるので短縮した覚えがあります。
何しろ、8.3形式の世代です。長いファイル名には無意識な抵抗があります。中途半端ですが。
都合、5枚がこのような状況、完全な鳥名に一致しませんでした。

これを対応しました、
最初に考えたのが、ファイル名を変更してちゃんと鳥名にする、という事です。
先の例ですと、ページのファイル名をzyoubitak.htm、siberiaoohasisigi.htmと変更したら、問題は出ません。
ところが、ファイル名を変更するだけだと問題が出ます。リンクです。
そのページをリンクしている構文を書き換えないといけません。

ここで頼りになるのが、TExchangeというフリーソフトです。
テキストファイルの中の文字列を一括で置換してくれるソフトです。
まさにこのような場合に使います。とても便利です。

TExchangeを起動して、ページを保存しているローカルのフォルダのファイルを対象にします。
ファイルが4500枚ほどありました。
起動に数十秒かかりました。
指定する文字列の検索と置換が出来ます。
zyoubitaki_f.htmを指定して、まず検索してみます。この作業に数分かかりました。
ファイル数が多いのでやむを得ません。
結果、対象ファイルが21個、件数で25件あると出ています。
同じページに対象の行が複数ある場合です、件数が増えていきます。

対象の行も一行全部、対象のファイル全体も表示されますので内容も分かります。
全部リンクのようです。
こんな感じです。<TD><A href="shtm06/zyoubitaki_f.htm">ジョウビタキ</A></TD>
これを、TExchangeで一括置換すると作業完了です。

完了のはずなのですが、これは実施しませんでした。
一括で変更することを、ちょっと心配しました。
冷静に考えると、強引に置換実行でよかったと思います。

以前、TExchangeが無ければ事実上無理だったと思える作業をしたことがあります。
サムネイル写真の入れ換えです。
何年か前、サムネイル写真を多少大きくしました。
この時、写真集の全ページの書き換えが必要でした。
多分、数千か所の一括書き換えをやったと思います。
手書きではまず無理で、TExchange(あるいはこれに類するアプリ)がなければ、検討することもなかったでしょう。

今回は、見苦しいですが、ソフトで対応できましたので、書き換えはしませんでした。
先のリストの中から、分かっている5件分をif文で抜き出して書き換えてしまいました。
問題を先送りしただけかもしれません。

200212追記
このページが大ききなりすぎたせいでしょう。HPBでの編集時にカーソルがまともに動きません。
2019年以前を別のページに分離しました。
最下段にリンクを置きました。


200125
onkey、oncmd、sendmsg

画像処理には、XnViewを使わせていただいています。これで必要十分です。十分すぎますけど。

恐れ多くもこれの真似をしようと思い立ち、独自の画像ビューアに挑戦していて、もう1年半ほどになります。
ま、このメモにあるページ関係のプログラムが落ち着いていて、勉強のために何か新しい事を、と考えたものでした。

画像処理といっても、私の場合、大半の作業は写真の削除です。
あと、多少なり写りのいいものを鳥名ごとにコピーする作業があります。
そこで、この削除とコピーに特化したビューアを作ろうと考えました。2年近く前です。
スクリプトは既に8000行を超えています。
そこはHSPです。各作業に多少時間がかかるのが難点ですが、一応不自由のない程度には動いています。

この作業中の、リストボックス内での動作に関するトラブルです。
大まかな流れは、
まず最初に、リストボックスに写真ファイルの一覧を表示させます。
次に、ボタンを使って、リストボックス内のポインタを移動させます。
次に、同様にカーソルキーなどでもポインタの移動をさせます。
具体的には、onkeyを使って押されたキーを補足し、カーソルキーならボタンと同じ動作をさせます。
そして、ポインタのある行の写真をgzoomで表示させます。
ここまでは、よくあることで、問題はありません。

次に、マウスを使ってもリストボックス内の項目を移動させたいと考えました。
つまり、listbox内のどの行をマウスでクリックされたか把握する方法です。これが面倒というか、自分の能力の外でした。
調べてみると、HSPの掲示板などで、これに関してoncmdとsendmsgを使う方法が紹介されています。
oncmd gosub *xxx,$111と
sendmsg ID, $188,0,0を組み合わせるものです。
おかげさまで、これでクリックされた行が把握できています。
行が分かれば、ファイル名が分かり、写真を表示させます。

この作業を進めていくうちに、問題に気付きました。
マウスでリストボックス内の行を指定した後、更にカーソルで行を移動しようとすると、2行移動してしまうのです。

説明が面倒ですが、
aaaaa
bbbbb
ccccc
ddddd
eeeee
というリストがある時、

最初に、ポインタはaaaaaにあります。
これをマウスでbbbbbをクリックして、ポインタをそこに移します。oncmdで移動させた行が分かります。
更に、カーソルでcccccに移動させます。onkeyでカーソルキーを把握しての作業です。
当然、ポインタを一つ増加させますので、ポインタはcccccに移動すべきなのですが、
何故かそこを飛び越してdddddに移ってしまいます。
以降は、カーソルを使うと、同じように一つ置きに移動するようになります。

正確には、最初にポインタがaaaaaにある時、ボタンとonkeyを使って、別の作業をしています。
画像の拡大と画像の表示域の変更(ま、スクロールです)です。
そして、この二つの作業をしていない時は、この問題は発生しません。困ったものです。

気が付いてから、一週間ほどは悩みました。
実際には、かなり前からこの問題を抱えていたようで、気が付くまでかなりの日にちが過ぎていました。

もっとも、特殊な動作で発生します、普通にはこのような作業はしません。
本来、単純な作業の連続の場合、動作が早くて楽なのは、キーボードでの操作です。
マウスクリックを挟まない限り、問題は発生しません。

しかしながら、放置する訳にはいきません。原因追及に苦心しました。
oncmdの実際の動作が今一つ分からないので、対策が試行錯誤になりました。
本来は、oncmdの根本に帰って作業をすると簡単な事なのかもしれません。

最終的に、oncmd gosubを、oncmd gotoにすることで解決しました。
onkeyの方は、最初からgotoでした。

プログラムの基本に、gotoを多用すると流れが分かりにくい、と言われていました。
ただ、最近のスクリプトを見せていただくと、結構gotoが使われているように思います。
そこで、今回、最初から、どちらでもいいような場合はgotoを使うという前提で始めたものです。

原因を私なりに考えたことは、(全くの勘違いかも知れませんが)
oncmdはプログラム動作中、常時監視している、
onkeyはstopの所でのみ有効になり、監視が始まる。
以前、oncmdがonkeyより優先して発動される様な経験があったような、おぼろげな記憶があります。
つまり、onkeyで項目を移動させると、即oncmdで項目移動を補足してしまい、onkeyはその後、さらに移動をさせてしまう、のではないかという事です。
理屈はよく分からないながら、結果的に、二重に認識されていると想像しました。

対策は、gosubをgotoに変え、
oncmdで変化を把握した直後に、oncmd 0を入れる。
onkeyでも同様にonkey 0を入れる。
oncmd 1やonkey 1はstopの直前に置く。
この為に、stopは分散させず、全部のルーチンを作業後はstop専用のルーチンに戻し、そこでstopさせる。
oncmd 0の方は、面倒ながら、ほぼ全部のサブルーチンに入れてしまいました。
こうして、極力、stopの所でのみ、oncmdが有効になるようにしました。

なお、oncmd 0等はgotoに変更する以前から、あちこちに入れていました。
解決したのは、oncmdをgotoに変えた後でした。



200112
Runtime Error、NumLock、onexit

またしてもランタイムエラーです。
下のメッセージと同じものです。
今回は原因は分かりました、いえ、原因が分かるほどの知識は無いのです、ただ発生個所がはっきりしていました。
HSPの掲示板で紹介されていた関数で、NumLockをオンオフするものです。
紹介されていた関数は期待通りに動いていました。

画像ビューアのプログラムでテンキーを使いたいので、紹介されていた関数を使わせていただいて、起動時にテンキーをオンにするようにしました。つまり、NumLockをオンにします。
期待通りに動いています。

しばらくして、プログラム終了後もNumLockがオンのままでは困ることに気付きました。
通常の使用で、テンキーにあるDelボタンを頻繁に使うのです。NumLockがオンの状態では、このDelキーには小数点の「.」キーが割り当ててあります。Delキーとして使えないのです。
そこで、プログラム終了直前にオフにしようと、同じ関数を配置しました。オプションを変えるだけです。

このオフのところで、先のランタイムエラーです。
NumLockオフを入れるとランタイムエラー、入れないと、NumLockオンのままですが、エラーになりません。

ネットで調べて、どうやらonexitとの絡みだと考えました。
その時は、

起動、
NumLockオン
onexit 1
・・
NumLockオフ
onexit 0
終了
としていました。

そこで、順番を変えて、
起動、
NumLockオン
onexit 1
・・
onexit 0
NumLockオフ
終了
と変えてみました。ま、ファーストイン、ラストアウト、ですね。昔は、Push、Popと言っていましたか。

これで、エラーは出なくなりました。


200212
ページを分割、2019年以前を分離しました。

半自動化メモ(2019年以前)へ

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


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