|
> 68user様 窓の表示とともにただ線を引くというのが イベントなのかどうかわからなかったため、 今までイベント処理でやろうとは思っていませんでした。 これから試してみます。 |
|
> ずっとUDPの「53」番(ゾーン転送のときはTCPも)だと思っていたんですが、 うぅ、tcpdump で見ると確かに 53 でした。調べもせずに いいかげんなことを言ってはいけない…。 なぜかとてもとても忙しいぞー。なんでだ。 なので、その他については明日に持ち越し。 |
|
現在 Xt の勉強中。 @gongoさん > 窓の表示とともにただ線を引くというのが > イベントなのかどうかわからなかったため、 ご存知かもしれませんが一応説明しておきますと、X では ウィンドウの最初の map 時や、他のウィンドウに隠れていた ものが露出した場合に Expose イベントが飛んできます。 なので、X クライアントは Expose イベントが飛んでくるか どうかを見張っていて、飛んできたら描画/再描画しなくては いけません。これをしないと、ウィンドウ内が真っ白になります。 X サーバ側が再描画をしてはくれませんから (とりあえず バッキングストアのことはおいとくとして)。 なお、最初の Expose が飛んでくる前 (Map する前) に描画 しようとすると、core 吐くか、X Protcol Error になった ような記憶が。 # ↑Xlib のレイヤの話。Xt だけを使っているなら、 # イントリンシクスがよきにはからってくれます。 # http://X68000.startshop.co.jp/~68user/xprogram/xlib-1.html @gaoさん > kinput2をバックグラウンドで起動した後、 netscape を > 起動しようとすると以下のようなメッセージを残してすぐに > 落ちてしまいました。 > % kinput2 -canna -jserver remotehost & canna の場合は、-cannaserver じゃなかったかなぁ。 -jserver は Wnn 用だったような。 # でも kterm などで漢字変換できているのなら、 # これでいいのかも。 > % netscape & > [2] Bus error netscape(core dumped) OS 名と、Netscape をどうやってインストールしたか、 X のリソース設定 (~/.Xdefaults の中身や xrdb -query の 結果) を書いて下さい。 というより、FreeBSD/NetBSD/OpenBSD/Linux あたりなら 日本語リソース付のパッケージが用意されているでしょうから、 それを使うのが簡単です。もしパッケージを使っているのに こういう結果になるなら、変なリソース設定をしている or リソース設定が足らない、あたりが怪しいかと。 |
|
また、質問させてもらいます。 $aaa = 20000728; $datedata=substr($aaa,0,4) . "/" . substr($aaa,4, 2) . "/" . substr($aaa,6, 2); print "datedata=$datedata\n"; のように、20000728 を 2000/07/28のようにyyyy/mm/ddに変換していますが、 上記以外のスマートな方法を教えて下さい。 「perlでVBのFormat関数みたいのはないですか」って質問されたもので...。 よろしくお願い致します。 |
|
スマートでないやり方です. 修飾子での簡単な型式変換をつけました. print &format('20000728','yyyy mm dd',"yyyy/mm/dd\n"); print &format('20000728','y1 y2 mm dd',"'y2年mm月dd日\n"); print &format('20000726','yyy! m! d!',"m!月d!日\n"); $M{'m#07'}='July'; print &format('20000726','yyyy m# d!',"m# d!, yyyy\n"); sub format{ local($src,$format,$template)=@_; local(@format,$ptr,$s,$d,$len); @format=split(/ /,$format); $ptr=0; foreach $s(@format){ $len=length($s); $d=substr($src,$ptr,$len); if ($s=~/!/){$d+=0;} if ($s=~/#/){$d=$M{"$s$d"};} $template=~s/$s/$d/g; $ptr+=$len; } return $template; } |
|
> VBのFormat関数 というものを知らないので外しているかもしれませんが、普通は $date = 20000728; printf "%04d/%02d/%02d",$date=~m/^(\d\d\d\d)(\d\d)(\d\d)$/; か $date = 20000728; $date =~ s|^(\d\d\d\d)(\d\d)(\d\d)$|$1/$2/$3|; printf $date あたりかなぁ。 もし表示形式を指定できるようにするなら、date コマンドと同じ書式の http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=strftime&dir=jpman-3.1.0%2Fman#toc0 にするかも。 |
|
すいません、返答がずいぶん遅れてしまいました。 68userさん、いろいろアドバイスありがとうございます。 それで、いろいろMewについて見ていったのですが、 たまたま見ていたEmacsのINFOの中にMewという単語を見つけ、 中を見ていったら、何と既にMewがインストールされていました。 色々お手数おかけしてすいませんでした。 ただ、色々試みているのですが、いまだにMewを起動させる事ができません。 M-x Mew と入力すると起動すると書いてあるのですが、 これをどこで(どういう場面で)入力すればいいのかが解りません。 教えて頂けますか? それから、最近、Netscape をkill した時に Bus error という表示が出て、.netscape フォルダの中に、 lock ファイルができてしまいます。 以前はこんな事はなく、Done という表示が出て lock ファイルも作られませんでした。 僕は最近、不必要だと思われるファイルを色々消していっているのですが、 その過程で、何か必要なファイルまで消していってしまったのでしょうか? |
|
@68user様 > X ではウィンドウの最初の map 時や、他のウィンドウに隠れていた > ものが露出した場合に Expose イベントが飛んできます。 ここら辺はなんとなくわかっていたのですが、 最終的にできてほしいプログラムのことを考えるあまり 頭の中でごちゃごちゃになっていました。 まだ線をひくのを確認していないのでやってみます。 |
|
@68user様 度々すみません。27日のご説明でイベントハンドラを 用いていましたが、呼び出されるイベントハンドラは あらかじめ決められた関数の形式(XtEventHandler型)で なくてもよろしいのでしょうか。 |
|
>68userさんへ 確認し、理解できました。ありがとうございました。 >Netboyさんへ 確認し、ちょっと理解できないところがありましたが、ありがとうございました。 引数2と引数3の関係がイマイチわかりません。 とりあえず、これで、失礼いたします。 ありがとうございました。 |
|
>引数2と引数3の関係がイマイチわかりません。 引数2は,引数1の切り分け方の指定です. print &format('28/07/2000','dd x mm x yyyy',"yyyy年mm月dd日\n"); のように使えます. 混乱させてしまって済みません. 関数名に予約語(format)を使ったのもまずかったです... |
|
@68userさん >うぅ、tcpdump で見ると確かに 53 でした ぼくも確認しなおしました。 記憶違いでなくてよかった・・・。 #68userさんが断言してらっしゃると、 #自分の記憶に自信があっても、ビビッちゃいます(笑 |
|
@gongo さん > 呼び出されるイベントハンドラはあらかじめ決められた > 関数の形式(XtEventHandler型)でなくてもよろしいのでしょうか。 void repaint(void) としたのは、てきとーに書いただけで、 void handler(Widget,XtPointer,XEvent*,Boolean*) が正しいです。まぁ XtEventHandler は typedef void (*XtEventHandler)( Widget /* widget */, XtPointer /* closure */, XEvent* /* event */, Boolean* /* continue_to_dispatch */ ); なので、void repaint(void) でも動くはずです。C言語では 呼び出し側が渡した引数を、呼び出された関数側で受けなくても 構わないからです (…ほんとかなぁ。動くかどうかは環境依存かも)。 @ちゃいぱさん > 「perlでVBのFormat関数みたいのはないですか」 ちなみに、この問いが「perl に strftime のような関数はないのか」 という意味なら、答えは「perl5 標準では、ない」です。 ただし Time::CTime モジュールをインストールすれば strftime 関数が使えるようになります。 @いちさん > M-x Mew と入力すると起動すると書いてあるのですが、 > これをどこで(どういう場面で)入力すればいいのかが解りません。 emacs を起動して、ESC キーを押して、x を押して、 mew とタイプして Enter です。コマンドラインから % emacs -f mew としても同じことになります。 > Netscape をkill した時に Bus error という表示が出て、 > .netscape フォルダの中に、lock ファイルができてしまいます。 常套手段として、rm -rf ~/.netscape で設定ファイルをクリア してから、再度 netscape を立ち上げて下さい。preferences.js、 bookmarks.html などのバックアップは忘れずに。 |
|
@68userさん ありあまる回答をして頂き、感謝いたします。 あがとうございました。 ただ、元々の質問者のレスがなく、ちょっと残念...。 @Netboyさん 理解できました! 関数名を変えれば、結構使えそうですね。 ありがとうございました。 |
|
需要があるかどうかは知らないけど、BBS の全文検索の試運転。 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi namazu-2.0.4 でやってますが、replace に正規表現使えるし、 filter いじれば この BBS のデータ形式にも対応できるし、 いい感じ。 まだ自動更新はされません。 @hsj さん > #68userさんが断言してらっしゃると、 > #自分の記憶に自信があっても、ビビッちゃいます(笑 僕はかなりいいかげんな回答をしてます。 そもそも DNS サーバの設定をしたことがないくらいだし :-) |
|
> http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi あら、検索すると、データファイル中の remote host が丸見え。 filter で削るように設定したつもりだったんだが。というわけで、 いったん引っ込めます。 |
|
68userさん> 御回答ありがとうございます。 仰せのとおり Mew を起動させようとしましたができませんでした。 どうやら、Mew の help があるものの、Mew 自体はインストールされてないみたいです。 そこで、Mew と im をインストールしました。 次に、アーカイブを展開するというように説明に書いてあったのですが、 これって、圧縮されたファイルを解凍するという事ですよね。 そう思って、gzip で圧縮されていたので、gunzip で解凍しようとするのですが、 gzip: mew-1.94.2.tar.gz: unexpected end of file という表示が出て、うまくいきません。 どうしたらよいのでしょうか? それと、.netscape/ のことについてですが、 その中にあるファイルの bookmarks.html は何となく解りますが、 preferences.js はどういうファイルなのですか? その他の、cache/(ディレクトリ)内にある index.db そして、archive/(ディレクトリ)、cert7.db 、history.dat、 history.list 、key3.db 、plugin-list 、plugin-list.BAK、 registry 、secmodule.db はそれぞれどういったファイルなのでしょうか? 教えて下さい。 それから僕は、ディスク容量を節約するために、cache/ フォルダの中に、 99/ というフォルダを作り、その中に必要なキャッシュファイルを移動し、 他のキャッシュファイルは、全て自動削除するように設定しているのですが、 その 99/ フォルダに入れたキャッシュファイルの効果があるか、良く解らないのです。 (どうやらキャッシュフォルダは 00〜0f、10〜1f までしか作られないみたいなので、 99にする必要は別段ないのですが) これって、意味ありますか? もしくは、もっといい方法がありましたら教えて下さい。 |