CGIなどのの質問を受付ます。
現在SPAM対策の為、一部ホストアドレスを規制中。
▼スレッド
│
└◇1193:nikの最新記事 [まだら] 10/15 22:03
└◇1194:Re:nikの最新記事 [moon★] 10/16
├◇1195:Re[2]:nikの最新記事 [まだら] 10/17
│└◇1197:Re[3]:nikの最新記事 [moon★] 10/17
│ └◇1199:Re[4]:nikの最新記事 [まだら] 10/17
│ └◇1200:ばーじょんあっぷ。5.53 [moon★] 10/18
│ └◇1201:Re:ばーじょんあっぷ。5.53 [まだら] 10/18 <
└◇1196:Re[2]:nikの最新記事 [まだら] 10/17
たびたび失礼します。スレッド一覧
今nik5.5を使わせて貰ってます。
それで今日、ついさっき気づいたんですが、最新記事の表示がどうもおかしいみたいなんです。
現状を書き出しますと。
記事TOP機能オフ、時刻指定表示ON、時刻指定非表示ON、最新記事表示10で降順に設定し、実際には自国指定表示、自国指定非表示にした記事は過去ログの中にも無い状態で、
9月1日、3日、5日、8日、14日、15日、17日、20日、22日、26日、27日、28日、
10月2日、5日
に記事を書いており、設定通りなら10月5日分から9月8日分までが最新記事として表示されるはずだと思うんですが、実際には
10月5日〜9月17日の分と、9月8日を飛ばして9月5日の分、9月3日、1日分と、その前に書いていた8月31日の分まで飛ばして、8月27日分の記事が最後尾に表示されています。
何故記事が飛ぶのか色々考えてみたんですがさっぱり分かりません。
因みに5.5に変えたのは9月末で、それ以降に既に記事をいくつか書いていました。
出来れば記事を飛ばさず表示させたいんですが、直りますでしょうか?
原因はいろいろと考えられるのですが、多分設定ミス(と言うか、設定読み込みミス)なのではないかと思います。スレッド一覧
設定がいろいろと増えたせいで、少し分かりづらくなっているからだと思います。
で、最新表示の仕組みを説明すると、
/nik/log/nik.log
内に保存してあるLOGを読み込みます。
このときの保存数は
管理画面の[記事]-「最新記事保存数」の設定数です。
そして、TOPで最新表示の設定は
[表示]-「最新ログ数」
になります。
注意:TOP記事表示や、時刻指定をしていると最新記事表示数と合わない場合があります
あと、nik.logを見させていただいたのですが、日付が前後しているところがあるので、多分 [表示]-「最新ログの表示順」が「書き込み順」になっている可能性があります。
バージョンアップした際、設定を増やしているため、管理上では正常に見えていても、実際日記では正しく読み取っていない状況もあります。
このようなことがあるため、管理データを変更した際は、できるだけ、設定を上書きしてください。(多分大丈夫だと思うのですが、念のため)
とりあえず結論としては、設定画面を開き、各設定を確認し、保存する(変更がなくても)。
で、様子を見てください。
これでも変な動作をする場合は多分バグです。
でも個人的に私が運営している日記は正常に動いてるので大丈夫だと思います。
最新記事保存数→10スレッド一覧
最新ログ数→10
に設定しています。(報告前もこれでした。)
設定を全て更新し、その状態で記事を一つ書き足してみましたが、消えたのは9月17日の分で、やはり日数順ではありませんでした。
そこで実験開始。
nik.logを削除し、最新ログが無い状態で、一番最近の日付の記事から順番に十個、編集→書き込みを繰り返して最新ログを十個作成。
その状態でnik.logを確認 → 古い記事から始まって新しい記事(編集→書き込みを最初にした記事が一番下、最後にした記事が一番上)という並び。
最新ログに入っている記事の真ん中辺りの記事を編集→書き込み。
(見た目上最新ログは変化なし)
その状態でnik.logを確認 → 編集した記事が一番上に移動。
最新ログに入っていないもっと古い記事を編集→書き込み。
(最新ログの一番下にあった、最初に編集した一番日付が新しい記事が消え、編集した記事が最後尾に入る。)
その状態でnik.logを確認 → 編集した古い記事が一番上に追加され、一番最初に編集した日付最新の記事が消失。
最新ログの表示は書き込み順ではなく、降順に設定してあるんですが、このような状況になります。
私は性格上、よく過去記事を編集で手直しするのですが、今まではこのような現象は起こっていませんでした。
これ、直りませんでしょうか?
わざわざ調べていただきありがとうございます。スレッド一覧
結果だけいうと、動作的には仕様です。
最新記事の書き込みは以下のように書き込んでいます。
(書き込み・修正時に発動。修正時は先に最新LOGの自分のLOGを消す。)
1、最新LOGを読み込み
2、LOG数を数えて多い分は削除する
最新記事保存数以上ある場合削除。
時刻表示や閲覧ランクを設定している場合はカウント除外。
3、最新LOGの最初に記事を書き込み
読み出し時
1、最新LOG読み込み
2、最新ログの表示順により並び替え
3、表示
こう書き出してみると記録時に並び替えてないから変になると思うのです。
なぜ、書き込み時に並び替えをしていないかと言うと、「最新ログの表示順」を変更したら直後から表示が反映されるようにとのことだと思います。
これを解消するには、
・「最新記事保存数」を多くする というのを推奨します。
ただし、これだとTOPにページ繰り用のリンクが表示されます。
これが嫌な場合とりあえず以下のようにすれば解消されます。
A.nik.cgi 1680 行目辺り
# 記事トータルが表示設定数より少ない場合は消す(○件目〜○件目という表示が出てしまうので)
$totlehit = @line;
if ($logmax >= $totlehit) {
$totlehit = '';
}
を
$totlehit = ''; だけにする
B.5358行目辺り
# 並べ替え
#if ($sinsyo == 0) { @log = sort{$a <=> $b} (@log); }
#elsif ($sinsyo == 1) { @log = sort{$b <=> $a} (@log); }
を
# 並べ替え
if ($sinsyo == 0) { @log = sort{$a <=> $b} (@log); }
elsif ($sinsyo == 1) { @log = sort{$b <=> $a} (@log); }
として、並べ替えちゃう
というような対処があります。
TOPの最新記事のページ繰りリンクは嫌ですか?
> 結果だけいうと、動作的には仕様です。スレッド一覧
私がこちらの日記を使わせて貰い始めた頃(確か4.**くらい)は、過去記事を編集すると、それが何年前の物でも最新記事の一番下に入ってしまってました。
(でも、他のの記事を編集すれば入れ替わり、新規に書き込みすれば、真っ先に消えてました。間違っても一番新しい日付の物が代わりに消えるなんて事はありませんでした。)
それから暫くして、4.44でカレンダーの表示を直して貰ってからは、いくら過去記事を編集しても最新記事には挿入されなくなりました。
以降、今回5.5*にアップデートするまではこの様な状況にはならなくて、便利になったな〜と思ってたんですが、また新たに仕様が変わってしまったんでしょうか?
> 書き込み・修正時に発動。修正時は先に最新LOGの自分のLOGを消す。
これって、書き込み・最新記事にある記事の修正時に発動。ってな具合にはいかないものなんでしょうか?
> TOPの最新記事のページ繰りリンクは嫌ですか?
かなり抵抗があります。
どうしようもないと言う事でしたら、教えて頂いた対処方法、難しそうですが挑戦してみます。
私の力量不足が判明したら、以前のバージョンに…(^^;
> 以降、今回5.5*にアップデートするまではこの様な状況にはならなくて、便利になったな〜と思ってたんですが、また新たに仕様が変わってしまったんでしょうか?スレッド一覧
迷走しているので仕様はコロコロ変わります^^;;
一応変えてみましたわ。
こういう個人的にどちらでもいい仕様は先に言ったもの勝ちですね。
今回は、
読み込み→最新LOGにぶち込む→並び替え→記事があふれたら削除
としてるので、かなり過去の記事を編集したら最新に載りません(消えます)。
これでご希望通りの動作をすると思います。
> こういう個人的にどちらでもいい仕様は先に言ったもの勝ちですね。スレッド一覧
勝利!(笑)
どうもありがとうございます^^♪
早速のちほど差し替えさせて貰います〜。
書き間違えました。スレッド一覧
(最新ログの一番下にあった、最初に編集した一番日付が新しい記事が消え、編集した記事が最後尾に入る。)
最新ログの一番下ではなくて、一番上でした(f^^)
あと、文章がややこしくなってて分かり辛くてすみません。