|
> a は必須かどうかわかりません。 必須ではありませんでした。以下のような感じで一応描画はできました。 正しいかどうかはわかりませんが。 void repaint(){ XDrawLine(XtDisplay(label),XtWindow(label),gc,0,0,100,100); } main(){ ... XtAddEventHandler(label,ExposureMask,FALSE,repaint,NULL); XtRealizeWidget(toplevel); ... } 現実的には、Pixmap に書いておいて、Expose が発生するたびに Pixmap から Window にコピーするのが効率的です。 # それ用の Widget が Xt にあったりするんだろうか。 うーん、やっぱり UNIX 使いとしては、基礎知識として、Xt は 抑えておかねばなぁ…。 |
|
はじめまして。初心者にもわかりやすいUNIXのHPでよく利用させて頂いていま す。早速ですが、質問があります。kinput2をバックグラウンドで起動した後、 netscapeを起動しようとすると以下のようなメッセージを残してすぐに落ちて しまいました。どのようにすれば解消できるでしょうか? % kinput2 -canna -jserver remotehost & % netscape & [2] Bus error netscape(core dumped) (↑このメッセージを残してnetscapeが落ちます。) |
|
@68userさん すみません、ちょっと横から質問です。 >> では、DNSクライアントとnamedデーモンが、 >> UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。 >その通りです。 ぼく、ずっとUDPの「53」番(ゾーン転送のときはTCPも)だと思っていたんですが、 これは間違ってたんでしょうか? #うーむ、心配になってきました・・・確認しよっと。 |
|
> 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 にするかも。 |