検索

galeon で見た記事のキャッシュをコピーして Namazu にかけておくと、「どこかで見たことがある」てなときに、検索できて便利。
Google だとキーワードによっては目的以外のページが多すぎで、目的のページが見つからないとか、既に無くなっていることもあるから。

ということで以前から実行していた。最初の copy-cache。

cd /home/matznaga/.galeon/mozilla/galeon/Cache
foreach i (`file *|egrep '(HTML|SGML)'|sed 's/:.*//'`) 
  cp -p $i /usr/local/work/galeon/${i}.html

.html を加えるのは、こうしないと mknmz にかけたり w3m で読んだり出来ないから。
HTML と SGML に限定したのは、画像はディスクを圧迫するのと、著作権がテキストよりも面倒そうだったから。(Namazu 検索には画像は不要だし)
*1

そのうちに、大きな記事が Namazu の検索にかからないことが判明。
調べたら、大きな記事は gzip で圧縮されている。
type が gzip であるものもコピーすることにするため次の行を追加。

foreach i (`file *|grep gzip|sed 's/:.*//'`) 
  cp -p $i /usr/local/work/galeon/$i.html.gz

が、これだと、プログラムをダウンロードしたときに tar.gz までフォルダに保存されてしまう。これはマズい。ということで tar.gz を除くようにする。

foreach i (`file *|grep gzip|grep -v tar|sed 's/:.*//'`) 
  cp -p $i /usr/local/work/galeon/$i.html.gz

またしばらく使っているうちに、blog などは、最新の記事しか、フォルダに残っていないことが判明。どうやら、リロードしてもキャッシュのファイル名は変化しないらしい。
そこで保存フォルダに入れるときに日付を加えることにする。

TODAY=`date -I`
cd /home/matznaga/.galeon/mozilla/galeon/Cache
foreach i (`file *|egrep '(HTML|SGML)'|sed 's/:.*//'`) 
  cp -p $i /usr/local/work/galeon/${i}${TODAY}.html
foreach i (`file *|grep gzip|grep -v tar|sed 's/:.*//'`) 
  cp -p $i /usr/local/work/galeon/$i${TODAY}.html.gz

人狼BBS」 に参加したとき、ログがフォルダに入っていないことを発見。
キャッシュ禁止か? と思ったが、サーバの事故のときユーザのキャッシュから回復した、という記事を発見する。ということは手元の copy-cache が悪い、ということ。調べて「人狼BBS」のキャッシュは XML 形式であることを発見。
対応策を取る。

TODAY=`date -I`
cd /home/matznaga/.galeon/mozilla/galeon/Cache
foreach i (`file *|egrep '(HTML|SGML|XML)'|sed 's/:.*//'`) 
  cp -p $i /usr/local/work/galeon/${i}${TODAY}.html
foreach i (`file *|grep gzip|grep -v tar|sed 's/:.*//'`) 
  cp -p $i /usr/local/work/galeon/$i${TODAY}.html.gz

そのうち、${TODAY}をつけると、CACHE に残っているファイルが毎日コピーされ、同一内容でファイル名だけが違うものが大量にフォルダに入ってしまうことに気付く。mknmz も過負荷になるし、なにしろディスクがもったいない。
と言って、${TODAY} を外すと、内容が変っていても overwrite してしまう。
md5sum でのチェックも考えたが、処理が重たそう。
blog の reload で問題になるのは、ようするに日付けが変ったときであって、同じ日付内なら、却って歓迎すべきことだと思い至る。
ということで、現在の copy-cache

TODAY=`date -I`
touch TIMESTAMP.temp
cd /home/matznaga/.galeon/mozilla/galeon/Cache
foreach i (`file *|egrep '(HTML|SGML|XML)'|sed 's/:.*//'`) 
  if [ $i -nt TIMESTAMP ]; then
    cp -p $i /usr/local/work/galeon/${i}${TODAY}.html
  fi
  end
foreach i (`file *|grep gzip|grep -v tar|sed 's/:.*//'`) 
  if [ $i -nt TIMESTAMP ]; then
    cp -p $i /usr/local/work/galeon/$i${TODAY}.html.gz
  fi
  end
mv TIMESTAMP.temp TIMESTAMP

処理の最初に touch して最後に mv しているのは、この copy-cache は cron で1時間に一度バックグラウンドで動くため、作業中にも新しいキャッシュが作られる可能性があるから。
ちなみに、mknmz は cron.daily の中で行なわれるので実行は日に1度。suspend していたマシンがその日最初に resume したとき。(同時に openmya などの ML 統計解析や、pdumpfs の実行なども行われる。)
フォルダは大きくなりすぎると、Namazu の負荷が高くなる、その他の理由で、3ヶ月毎に 2004-3q (q は quater の略) のようにフォルダ名を変更して新しいフォルダを作っている。

# ふと気がついた。CACHE に入っているのが純正な text ファイルだったとき
# の処理が足りないような。どうして入っていないのだろう。なんか前にトラ
# ブルを起して削除したかな?

キャッシュのオリジナル URL を保存する方法は無いのかしら。テキスト内容を見て、ああこれだ、と思った時、その画面では画像が重要な役割を果していた場合、今の方法だと、オリジナルの URL が判らなくて結局 Google にお伺いを立てないといけない。(そして、見つからないことが多々ある。)

galeon の Cache に今日のファイルしか無い。そう言えばさっき一度 galeon が落ちてしまった。
galeon って落ちたときにキャッシュが消えるんだっけ?
とすると、copy-cache が実行されてから、落ちるまでに見たページのキャッシュは消えてしまうわけだ。これに関しては対策は無いなー。
いや、キャッシュが消えるのは、立ち上がるときだな。
だとしたら落ちたときに手で copy-cache を実行してから再立ち上げすれば問題無いのか。
と言っても当然忘れてしまうだろうから、copy-cache してから galeon を立ち上げるよ
うなスクリプトを書いて、それを icon にアサインしておけばいいのか。

*1:テキストだけなら、*公開しなければ*「私的利用」の範囲だと考えた。