パスワードを忘れた? アカウント作成
86877 journal

dodaの日記: TTXOutputBuffering 3

日記 by doda

MozReplを使いたいという日記へのコメントをもらった。
使えない原因はコメントへの返事で書いたように常に"1文字毎に送信(character at a time)"しているから。
クリップボードの内容を貼り付けした場合などは複数文字を一気に送るけれど、動作モードとしては"character at a time"になる。
この問題には以前から気付いていたんだけれど、あまり実害が無かったので後回しにしてしまっていた。
今回の件もあるので、4.63を目標にして"line at a time"モードをサポートするつもり

あと、MozReplがどういうものか調べている時に、"メモ帳に書く"→"Tera Termへ貼り付け"を繰り返すのが面倒になったので、
TTXOutputBufferingという出力をバッファリングして擬似的に"line at a time"モードを実現するTTXを作った。
これはテスト用に即興で作ったので、常に"line at a time"モードで動くなど普段から利用するには色々と問題がある物だったので、コメントへの返信には書かなかった。
けれど、試しにssh接続時やtelnetコマンドを検出した時に無効になるようにしてみたら、入れっぱなしでもそれなりに使えるようになったっぽい。

それなりに使えるようになったので、とりあえずDLLをsnapshot置き場置いておいたので興味がある人は使ってるといいかも。
このTTXを入れるとMozRepl相手にまともに通信できるようになる他、telnet/ssh以外のサービスへの接続時にも使いやすくなる。
例えばSMTPサーバにポート25で接続した時、素のTera Termではタイプミスしても訂正が出来ないが、このTTXを入れているとバックスペースキーで入力を取り消す事が出来る。

ただし、まだあまりチェックをしていないため、何らかの不具合がでる可能性があるので、使う場合は自己責任で。
とりあえずそれなりに使えているが、ちゃんとtelnetネゴシエーションを行っているわけではないので、正しい"line at a time"モードというわけでもない。
4.63で正式な"line at a time"モードをサポートする予定なので、その時はこのTTXは削除しておく必要がある。
ただ、それなりに使えてしまっているので、正式な"line at a time"モードは後回しになってしまうかも。
ある程度使えるようになったら飽きてほったらかしっていうのは悪い癖だと思っているんだけれど…

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2009年04月29日 5時31分 (#1556846)

    リクエストをしたACです。

    よし、4.63なんだな!と思ってRSS [osdn.jp]をNewsFoxに登録して粘着。
    まさかExtensionで実現されてるとは露知らず、発見が遅れた次第。
    という訳で、早速使わせて頂きました。

    仕事場のTeratermは最新(4.62)+XPなんですが、自宅のTeratermは4.60+2000でした。
    最初Pluginフォルダに突っ込むという、初歩的ミスをしたためか何も効果がありませんでした。
    teratermフォルダ直下に置いても効果なし。うーむ

    4.62にバージョンアップしてから実行すると、キーを1つ叩いた時の反応がエラーではなく

    .....>

    と、何かが作用しているのを確認。
    Puttyと同様の反応にならなかったので一瞬焦りましたが、

    window.alert(1);

    とエディタで入力したものを貼り付けたら、無事アラートが表示されました。おおーっ

    ・4.60では駄目だったのはこっちの環境特有?(いろいろ触ったのでその可能性はある)
    ・ヘルプにExtensionとはなんぞやと書いてあるが、導入の仕方は無い?
    ・Puttyのようなエコーバックにならないのは、Extensionだから?それとも設定?

    #前回、Poderosaはどうでもいいと言いましたが、一つ利点をあげるとJavaScript
    #親和性が高い点では有利かなとは思いました。

    • 4.62にバージョンアップしてから実行すると、キーを1つ叩いた時の反応がエラーではなく

      .....>

      と、何かが作用しているのを確認。
      Puttyと同様の反応にならなかったので一瞬焦りましたが、

      window.alert(1);

      とエディタで入力したものを貼り付けたら、無事アラートが表示されました。おおーっ

      この動作だと、ちゃんと動いていないっぽいですね。
      ちゃんと動いていれば、普通にキーボードで入力できるようになります。
      エディタで入力したのを貼り付けるのは、素のTera Termでも動くはずです。

      もしかして、サービスをTelnetにして接続していませんか?
      もしそうならば、サービスをその他にして接続してみてください。
      このTTXでは通常のtelnet接続に影響を与えないようにするため、サービスがtelnetの時、およびssh接続時は無効になるようにしています。
      # 強制的にOn/Offできるようにした方がいいのかなあ
      # ただ将来的には捨てられる運命にあるTTXなので、あまりいじってもしょうがないかも

      また、MozReplはTELNETプロトコルに対応しているわけではなく、生のTCP接続を使っているようです。
      サービスをtelnetにした場合TELNETのネゴシエーションを行うため、MozReplの側からするとゴミが送られてくるように見える事にな ります。
      このあたりはPuTTYを使った時も同じで、PuTTYの接続時に接続タイプをRawにする必要があります。

      ・4.60では駄目だったのはこっちの環境特有?(いろいろ触ったのでその可能性はある)

      ソースを見直してみましたが、4.60なら使えるはずです。
      見直す前は2.3でもいけるかなと思ってましたが、4.58で追加されたパラメータを使っていたので4.57以前だと使えません。

      ・ヘルプにExtensionとはなんぞやと書いてあるが、導入の仕方は無い?

      確かに無いですね。
      昔はttsshが別に配布されていたので、大抵の人はTTXの導入の仕方がわかっていたと思うのですが、
      今はすべてインストーラがやってくれるので知らない人も結構いそうですね。
      マニュアルのどこかに書いておいた方がよさそうですね。

      最初Pluginフォルダに突っ込むという、初歩的ミスをしたためか何も効果がありませんでした。

      これは確かに紛らわしいですね。いっその事、Pluginフォルダも検索対象にしてもいいのかも。

      ・Puttyのようなエコーバックにならないのは、Extensionだから?それとも設定?

      MozReplはTELNETプロトコルに対応していないのでTELNET Remote Echoのネゴシエーションが行われず、「端末の設定」の「ローカル エコー」の設定が使われます。
      普通はこの設定はoffなのでTera Term側ではエコーバックしませんし、またMozRepl側もエコーバックしないため、キー入力がなにも 表示されない状態になります。
      デフォルトの設定でローカルエコーをonにすると通常のtelnet/ssh接続時に問題がでる事があります。
      MozReplを使う時は毎回手動でローカルエコーをonにしてもいいのですが、それだと面倒だと思いますので、以下を参照して非telnet 接続時は自動でローカルエコーをonにするように設定するのをお勧めします。

      あと、他にもいくつか注意点がるので挙げておきます。

      • 受信改行コードはLFにする。通常、ネットワークサービスでは改行にCRLFを使うのですが、MozReplではLFのみを送ってきます。
      • 受信漢字コードはUTF-8にする。一部US-ASCIIに収まらない記号をUTF-8で送ってくるようです。
      • 送受信共に日本語は使えないと思った方がいいです。状況から判断すると、MozRepl側に問題があります。
      親コメント
      • by Anonymous Coward

        >もしかして、サービスをTelnetにして接続していませんか?

        …なんてすと…おおっ確かにそのようでした。
        上手くいきました!∩( ・ω・)∩ばんじゃーい

        >このTTXでは通常のtelnet接続に影響を与えないようにするため、サービスがtelnetの時、およびssh接続時は無効になるようにしています。
        ># 強制的にOn/Offできるようにした方がいいのかなあ

        というか「TTXというのは全てそういうもの」というコンセンサスというか
        仕様上のポリシーがあるかどうかではないかと、TTXに対して認識の浅い、
        初心者同然の立場からは思えてきます。

        規約は無く、実装者の意図によって変わるとすると何

typodupeerror

※ただしPHPを除く -- あるAdmin

読み込み中...