一括表示

− 野ざらし言 −

[2229] 消えるヒストリー

としき 2007/08/31(Fri) 22:17
http://www.hinocatv.ne.jp/~toshiki/
過去数年にわたって、時々症状が発生しているのですが、どうにも再現性なくて
困っています。類似の経験をしたという方の経験談でもいいですし、調査方法に
関するアドバイスでも結構ですので、お話をお聞かせ願えればと。
また、ヒストリーが消えると一口に言っても、実はメカニズムは異なっているの
かもしれません。片方はコマンドラインヒストリーですし、もう片方はファイル
名ヒストリーだからです。

まず、コマンドラインヒストリーの方から。
症状に気がついているのはメインマシンのみです。PC-9821As、DOS6 です。
現在使っているVzのバージョンは

> VZ Editor Version 1.60t03k d10 k08q2  Copyright (C) 1989-93 by c.mos
>  arranged by H.Takahashi	+ H.Konno
>  including DANNY's filer

ですが、榊原版を使っていた当時から起きていた記憶があります。
VZ.DEF の中で history2 をインクルードしています。また、hx4096になっていま
す。autoexec.bat でVzを常駐させていますが、この際、以前の履歴を読み込む
ために、A:\vz\vz.com -z @@ と指定しています。これで、起動直後に蓄積される
履歴は、おおむね100〜130です。
ここから、ごく普通にコマンドラインからコマンドを入れていくわけです。時に
はマクロがコマンドを呼び出すこともあるでしょうし、何らかのアプリがVzを
子プロセスで呼び出し、さらにそこからコマンドラインに降りることもあります。
ごく普通のオペレーションなんで、ついさっき打ったばかりのコマンドを履歴か
ら呼び出して、もう一度そのまま打ったり、ほんのちょっと変更して打ったり、
なんていうのも当り前です。
ところが、ず〜っと作業をしていくと、あるところで気がつくわけです。さっき
打ったコマンドをもう一度全部打つのが面倒で、頭の数文字だけ打って上矢印キ
ーで呼び出そうとしても、そのコマンドが出てこない。そんな馬鹿な、今日の作
業のはじめ頃にも上矢印で呼び出したではないか、ということで history.def を
起動させるとびっくりするわけです。そのコマンドが登録されていないことに。
この時、どのような状況になっているかというと、直近というのかな、最近登録
された部分は、記憶している限りにおいては、正しくというか、きちんと履歴に
残っています。大体、40〜60くらい。ところが、それ以前の部分は、マシン
の起動時に読み取った大昔の履歴がそのまま入っています。逆算すると、消えて
しまったコマンドライン履歴は、その時によって異なりますが、大体10〜40
くらいでしょうか。というか、そのくらいの時に気がつくことが多い、というだ
けかもしれません。

ところが、そんな日常業務はごく短時間に終えて、ある作業を延々と繰り返すこ
ともあるわけです。何かというと、ファイラーに拡張子を登録してあるファイル
を、ファイラーから \[RET] で外部コマンドを呼び出す形で開き、内容を確認し
たら削除する、あるいは、やはり外部コマンドを呼び出して別ディレクトリに移
動する、なんていうものです。このときに、ふと気が付いて history.def を起動
してみると、見事にずらっと、今まで繰り返した作業の履歴が並んでいて、覚え
ている限りでは履歴の欠落が発生したことがありません。ヒストリーバッファが
全てこの繰り返された作業内容で塗り潰されていることもあれば、履歴の一番古
い方に10個程度、今日の最初に行っていた日常業務の履歴が残っていることも
あるし、前回までの履歴が10個程度に今日の最初の作業履歴が20個程度残っ
ていた、という事もあります。
何が言いたいかというと、異常事象の再現性が高くない、ということです。

ということで、最初にも書きましたが、何らかのアドバイスを期待する次第です。


長くなってしまいましたので、ファイル名ヒストリーの件は、別の機会にお願い
します。そちらの方が、少なくともコマンドラインヒストリーに比べれば再現率
が高いですし、もしかしたらもう少しで原因が判るかもしれません。
 

[2233] Re: 消えるヒストリー

めざら 2007/09/02(Sun) 06:57
[2229]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 再利用しても一致しなければ消えないはずですしねぇ。

 ちょっと実験したくらいでは全然わからなくて申し訳ないのですが,単純に
履歴の彼方に押し出されたということでは絶対にないわけですよね。再現性が
ないとなかなかこの手の問題は難しいです。 なにしろ,hx4096 を取るほどの
履歴を必要とした作業というのがなかなか想像つかないところですし,うーん
逆かな,そう頻繁にコマンドラインで長く作業するということが少ないから,
バッファをあまり取らず,消えていてもすぐ諦めてしまう癖が付いているので
気付かないというところでしょうか。

 うーん,うーん。バッファの履歴が取れればどこで発生したかはわかるので
しょうけど,4KB のファイルが 100個もできるなんて調査方法は嫌な感じです
よね。そもそもコマンドを発行するたびにバッファのイメージを保存するなん
て,全然現実的だと思えませんし。

 はて,どうしたものか。

[2238] Re^2: 消えるヒストリー

としき 2007/09/03(Mon) 01:00
[2233]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  再利用しても一致しなければ消えないはずですしねぇ。

え?
一致すれば、というか、何らかの条件が揃えば消えることはありうるという
ことですか?
もしかしたらこれは、ファイル名ヒストリーの方が消える現象に関する大き
な手がかりかもしれません。こちらの方は、明日、というかもう今日だな、
かなり時間が取れそうなので、可能であればたっぷり実験してみます。他の
作業内容にもよりますが、もしかしたら3時間とか空いてしまうかもしれな
いので。多分、新しいスレッドにさせてもらうことになると思います。



ところで、簡単にできそうであれば教えていただきたいのですが。
検索文字列ヒストリーにタブコードが入っていた場合、これをhistory.defで
見たとき、タブコードが半角カナ中点で表されます。これを、Vzのその他
の部分の多くで使われているように、右矢印で表示するように改造すること
は簡単でしょうか。もし簡単にできるのであれば、改造コードを作っていた
だけると幸いです。大幅とか複雑になりそうだという事であれば結構です。
あんまりこんなことでお手をわずらわせたくないので。
 

[2240] Re^3: 消えるヒストリー

めざら 2007/09/03(Mon) 08:55
[2238]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> 一致すれば、というか、何らかの条件が揃えば消えることはありうるという
> ことですか?

 ごめんなさい。消えるじゃなくて,履歴の中で移動して最新文字列になりま
す。元の位置からはなくなるということを,ついつい「消える」と表現してし
まいました。紛らわしい表現ですみません。


> 検索文字列ヒストリーにタブコードが入っていた場合、これをhistory.defで
> 見たとき、タブコードが半角カナ中点で表されます。これを、Vzのその他

 …の部分で使われている右矢印って,制御コードの 1Ch でしょうか。 だと
すると,メニューでは表示できないのです。他の制御コードも,メニューでは
表示することはできません。

 通常の1バイト文字なら簡単に変換できます。
 まぁこれは,としきさんに対しては釈迦に説法でしたね。

[2243] Re^4: 消えるヒストリー

としき 2007/09/03(Mon) 21:26
[2240]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  ごめんなさい。消えるじゃなくて,履歴の中で移動して最新文字列になりま
> す。元の位置からはなくなるということを,ついつい「消える」と表現してし
> まいました。紛らわしい表現ですみません。

ファイル名ヒストリーの挙動は、もしかしたらこの関係かもしれません。
つまり、私には直感的にピンと来ないけど、でも仕様通り、ということであ
るのかもしれません。こちらについては、風呂から出てきて、落ち着いてか
ら別スレッドで投稿します。
コマンドラインヒストリーの方なんですが、もしかしたら一つだけ関係ある
かもしれないことを思い出しました。常駐時というかマシン起動時のコマン
ドライン指定は、大昔から、あのようなeditfile読み込みになっています。
という事は、実はhxのサイズが異なる時代からeditfileを引きずっていて、
vz.defに書かれているのとは違うサイズがeditfileに記録されているのかも、
ということです。でも、現状、エスカルゴでhxを見ても4096になっているし
vz.defはあまり書き換えないけどeditfileはしばしば更新しているわけだか
ら、可能性は低いか。つまり、vz.defがhx4096になっている状況でhx1024に
なっているeditfileを読み込んで起動し、そのときにエスカルゴでは4096を
表示して、でも[ESC]Wでeditfileに書き込みを行うと1024が書き込まれてし
まう、というのはどう考えてもなさそう。

>  …の部分で使われている右矢印って,制御コードの 1Ch でしょうか。 だと
> すると,メニューでは表示できないのです。他の制御コードも,メニューでは
> 表示することはできません。

そうですか、それは知りませんでした。
どうもありがとうございました。
 
>  まぁこれは,としきさんに対しては釈迦に説法でしたね。

槃特に説法、という気もします。
 

↑ このページの先頭