WordPress Tips
画像を順番に切り替える
ランダムに記事を切り替える方法は、古い手法だったんですが、なぜか意外とアクセスを集めているようです。最近、こんなことを書く人がいないからでしょう。調子に乗って別の方法を紹介します。
ランダムの方法を設定してみましたが、どうも乱数に偏りがあるらしく、同じような画像が表示されるように思えます。一応、乱数の初期化をやっていますが、引数を指定しないで利用しており、この場合1700年からの経過時刻で初期化されるとのこと。
もしかしたら現状15分間隔で起動しているのですが、ある程度初期化の数が大きくなると、大きい部分は切り捨てられている可能性があるので、そのため、初期化の種に同じものが繰り返し利用されている可能性があります。
まあ、この現象を深く追求する気はありません。リストの順番に従って、切り替えてやろうと思いましたので。
最初はこのリスト順を実現しようと思ったのですが、どれを表示するかの情報をリスト以外に用意するのも余計なファイルが増えていやだったんです。それとawkを使っているので、別ファイルを開くのはスマートではないと思いました。
そこでランダムに選択する方法にしたのですが、やっぱりリスト順に切り替えたくなったので、方法を考えました。リストの1行目に次に表示する行数を記録しておき、リスト自体を書き直す方法にしました。
この方法ですと、リストを開くだけでエディターで簡単に次に表示されるファイル名がわかりますし、エディターは通常行数が表示されるので、確認するのも楽です。管理もリストのテキストファイルだけですみますしね。
awkのプログラムはこんな感じになりました。
#! /usr/local/bin/awk -f
#
# target list text file :
# 1st list : next 'copy' source file position in line number.
# 2nd to end line : source file names
BEGIN {
FS = "\t";
i = 0;
targetLine = 2;
}
/Next Display Line :/ {
targetLine = $2;
if (targetLine < 2) targetLine = 2;
}
{ /* buffering whole lines */
buff[++i] = $0
}
END {
if (i < 2) exit;
if (targetLine > i) {targetLine = 2};
dirname = "/home/hiro/doutora/koutara/";
print "cp",dirname buff[targetLine],dirname "showcase-bg.png";
print "cat > hogehoge.txt";
print "Next Display Line :\t" targetLine+1
for (j=2; j <= i; j++) {
print buff[j];
}
}
コピー元の画像ファイルのリストはhogehoge.txtです。設置場所に合わせてディレクトリを指定してください。内容は次の通りです。
Next Display Line :<tab>2
Hyoyeon.png
HyoyeonKiss.png
Jessica.png
JessicaKiss.png
Seohyun.png
SeohyunKiss.png
Sooyoung.png
SooyoungKiss.png
Sunny.png
SunnyKiss.png
Taeayon.png
1行目が次に表示する画像ファイルの行数です。初期値は2が良いですね。<tab>のところはタブを入れてください。2行目です。上の例ですと、Hyoyeon.pngになります。(0とか1でも2にする処理は入っていますけれど。)
プログラムでcpコマンドに続いて、このリストを書き直しています。そのたびに数字が1ずつ増えていき、pngファイル最後の行数を上回ったら2に戻ります。
この2に戻るのがポイントで、エディターで見たときにそのままこの数字が次に表示されるpngファイルの行数を指しているので、わかりやすいのです。たまにしか見ないでしょうから、わかりやすいように作りました。
これをcronに登録しましたら、順調に動きました。当然、サーバーの環境に合わせてディレクトリの位置とかは変更しましたよ。ご自身で試すときは、環境に合わせるのを忘れないでくださいね。
| 次 >画像をランダムに切り替える |
|---|
| 次 > |
|---|