CGIへるぷみー | y6p6jr | sa.yona.la ヘルプ | タグ一覧 | アカウント登録 | ログイン

CGIへるぷみー

返信

チャットのスクリプトで、最新の発言が上に表示されるようになってる。


サーバーにたまるログ.txtを開くと、同じように最新→最古の順でだらっと発言(やら時間やら名前やら)が記録されてる。

このログが最古→最新の順になる方法はあるだろうか。


リアルタイムのチャット場では最新が上で構わない。が、後で眺める時に、ログ.txtには古い順に並んでて欲しい。

スクリプトのこの辺りを見てみろとかこの辺りをどうこうしてみろとか、わかる人教えてくれくれ。

投稿者 y6p6jr | 返信 (4) | トラックバック (0)

このエントリーへのトラックバックアドレス:

Re: CGIへるぷみー

いろいろと情報不足なので100%憶測ですが

返信

ふつー、ベタなテキストファイルの単純出力では

既存のファイルをOPEN→APPEND→CLOSEという流れなので

最新のデータは末尾になる、つまり特に意識しなくても

勝手に「最古→最新」になっているはず…ですよね


そうなってないということは、

・ログファイルへの出力時に何かひとひねりしている

か、

・実はバックエンドで動いているDBがすべての書き込みデータを制御していて、

それからログファイルを動的生成する際のソートキーが新→古の順になっている

とか、そういったところではないかと

投稿者 g2tw2s | 返信 (0)

Re: CGIへるぷみー

すごく後ろ向きな解決策 — Re: CGIへるぷみー

返信

「後で眺める時に、行を逆順にできるエディタで眺める」


…そういうことじゃないですよね。サーバ上で直にですよね。

投稿者 zig5z7 | 返信 (0)

Re: CGIへるぷみー

http://fqmktw.sa.yona.la/305

返信

CGIがどうなってるか分からないけど、

逆順で読み込みをすればいいんじゃないでしょうか。


PHPだったら

$lines = file("ログ.txt");

for ($i = count($lines) - 1; $i >= 0; $i--) {

...

}

て感じですか。

日曜プログラマなので自信はないですが…。

投稿者 fqmktw | 返信 (0)

Re: CGIへるぷみー

サリンジャーに黙祷する教えてクン

返信

       |

   \  __  /

   _ (m) _

      |ミ|

   /  .`´  \

     ∧_∧  

    (・∀・∩   zig5z7って天才じゃね?

    (つ  丿

    ⊂_ ノ

      (_)


と、マジでこんなだった、という話。


>>g2tw2s

人さまのスクリプトなのでどこまで中身を晒せるかわらかないのでロクなことを言ってなくてスマン。

ログの出力でひねってある、というよりも、最初の段階で「入力されたものをこういう風に(最新~最古)並べるように」としてあって、それがそのままログファイルに書き出されてるという感じらしい。

unshiftだのpushだのarrayだのいろいろ見つけて調べて書き換えてみたりしたが、記述を1行くらいまるっと付け加えないと、求めてるようにはならない予感がしてるところ。ということは素人は下手にいじるとアブないぜってことだな。

今は黙ってエディタを閉じて、もうちょっと勉強しようかと思うだけ。反応に大感謝。


>>fqmktw

phpとperlは、もちろん中身の記述とかが違ったりする、わけ、で・・・?

その辺りからすでによくわからないので、いじってるスクリプト(perl)が、「入力された内容を新しいものから上へ追加してゆけ→そのまんまログファイルへ書き出し」という流れになってるらしいということは読み解きつつ、もっと簡易なスクリプト(表示は最新から、ログは最古から、という理想の形)では、どうやら「表示は最新からだけど、ログは最古から並べてね」になってるらしい、と読み解いたところで力尽きてるところです。

こーゆーことは、自分でプログラムを作るところからやらないと理解は難しいようです。日曜プログラマに敬意を。


>>zig5z7

そんな便利な機能つきのエディタがあるんかい!と調べたらあっさり見つかったので、それでひとまず目の前の問題は解決。何でもっと早く教えてくれなかったんだよ!!!(超理不尽な逆ギレ)

スクリプトの中身を自分の思い通りにするという部分は全然解決されてないが、エディタでテキスト自体を何とかするというのは確かにひとつの解決法だった。マジで目から鱗だった。You really made my day。


というわけで、みんなに つ【腰もみ券】 釣りはいらねえぜ取っときな(面白いこと言ったつもり)。

投稿者 y6p6jr | 返信 (1)

API | 利用規約 | プライバシーポリシー | お問い合わせ Copyright (C) 2024 HeartRails Inc. All Rights Reserved.