68user's page 掲示板

Prev< No. 1001〜1040> Next  [最新発言に戻る] [過去ログ一覧]
No. 1001 # Netboy 2000/07/24 (月) 04:32:13
>open の時点で $file が破壊されるってことですね。
はい,あと引数'2'だと,待っている間何も出来なくなるので
マズイ,ということで2箇所...としました.
シグナル起こしはあてにならないということで.

>デッドロックを回避できるからこそ flock の価値があるんではないでしょうか?
デッドロックは起きます.
flockには価値なんかありません.BSDでの互換性だけです.
言葉遊びでなく,確率というか危険度と考えてください.

flockして成功したプロセスが無限ループに入ったとき,
解除にはたいがいプロセス殺しが必要です.うまく殺せるか
どうかは不確実なので,この時点でデッドロックといえます.
symlinkやmkdirでの排他処理だとまだ通常のファイル操作で済みます.

>それとも、セマフォとかの待ち行列の状態が検知できないという意味でしょうか?
はい,検知と制御ができません.同じ意味でfcntlやセマフォも
使うのは難しいです.OSリソースを隠れて消費し,工夫しないと
システム全体の速度が低下します.

OSに付属する排他処理機構を,よく検証せずに使うのはまずいです.

私の経験だと,
- いつどのプロセスが何をロックして
- それを参照する何個のプロセスがどれくらいの時間待機しているか
外から判るようにしなければだめな感じです.

>訳の分からない排他制御手段を考える人が出て来るような気が
他人の手法を参考のうえ,排他処理の仕組みを自分で考えるのは
結構なことだと思います.

No. 1002 # mm@biglobe 2000/07/24 (月) 22:32:46
>解除にはたいがいプロセス殺しが必要です.うまく殺せるか
>どうかは不確実なので,この時点でデッドロックといえます.
なるほど、もし解除できないということが起こるなら、
確かにデッドロックですね。
unixを触ったことがないため、そのヘンは、何となくシステムを
信頼していました(^^;

>flockには価値なんかありません.BSDでの互換性だけです.
う〜ん、それが現状だとすると、問題ありそう…

>言葉遊びでなく,確率というか危険度と考えてください.
確かに、私の先の書き込みは、スパゲッティを食べる哲学者のレベルでの
話かも知れません(^^;

>OSに付属する排他処理機構を,よく検証せずに使うのはまずいです.
検証する能力がない人間が下手なことをするよりは、
システムが用意した機能をそのまま利用した方がマシ、
というスタンスでいたのですが、少なくともflockに関しては、
考え直さないといけないみたいですね。

>symlinkやmkdirでの排他処理だとまだ通常のファイル操作で済みます.
今後は、作成時からの経過時間検査による解除機能付きsymlink/mkdirあたりで
検討してみたいと思います。

>他人の手法を参考のうえ,排他処理の仕組みを自分で考えるのは
>結構なことだと思います.
これは、あくまでもっと低次元の話です。
「他人の手法」を正確に理解し、問題点を的確に把握した上で、
「自分で考える」のであれば、仰る通りすばらしいことだと思います。

No. 1003 # 68user 2000/07/25 (火) 00:31:46
Netboy さんは、ノンブロッキングの flock なら OK、
という立場ですよね?

で、いくつか疑問があります。

> flockには価値なんかありません.
fcntl には価値がある、という話でしょうか。それとも
両方価値がない、という話ですか?

> flockして成功したプロセスが無限ループに入ったとき,
という状況って、起こり得ますか? (現象事態は
root が SIGSTOP 送れば容易に発生しますが)

Netboy さんは、どういうプログラムを想定しておられます?
ちなみに僕が考えたのは、カウンタとか web BBS とかです。

> Perl で普通にflockを使っていると,たいがいまともに
> ロックできないうえ処理速度が遅くなります.
僕の環境では「まともにロックできない」というのは
経験したことはありません (1000回カウントアップしたつもりが、
カウンタデータファイルを見ると998回しか実行されていない
というのはあった。原因は不明)。

それと flock は、symlink・mkdir よりは速かったです。
しつこいですが、僕の環境では、です。

# あと、排他処理はいつも symlink でやるので、flock を
# 使いこんだことはないです。

> 訳の分からない排他制御手段を考える人
http://www2q.biglobe.ne.jp/~terra/cgi/lockfile.htm (笑)

No. 1004 # mm@biglobe 2000/07/25 (火) 00:56:39
>http://www2q.biglobe.ne.jp/~terra/cgi/lockfile.htm (笑)
あはは、どもです。どこだったか忘れてました。

No. 1005 # Netboy 2000/07/25 (火) 04:54:43
>Netboy さんは、ノンブロッキングの flock なら OK、
>という立場ですよね?
はい.
動作環境を知っていて,使えると判断した用途にはOKです.
例えば常駐動作のサーバー用のスクリプトなんかにはいいですよね.

>それとも 両方価値がない、という話ですか?
いいえ,fcntlは意味があると思います.
POSIX準拠(?)+NFS対応だそうですし.
あれはOSの内部操作をそのまま出してくれているんですよね?
でもWin環境で互換性が無いので,あまり使いません.

>> flockして成功したプロセスが無限ループに入ったとき,
>という状況って、起こり得ますか? (現象事態は
>root が SIGSTOP 送れば容易に発生しますが)
次のようなものです.

- スクリプトの単なるバグ
- 作成中のスクリプトのテスト時
- 予期しないデータを与えられたスクリプト
- Perlインタプリタがコケたとき.OSリソース逼迫下.
- インタプリタのバグ.
- Apacheの設定ミス,管理者の不注意な設定変更.
- クラッキングを受けたサーバー

>Netboy さんは、どういうプログラムを想定しておられます?
>ちなみに僕が考えたのは、カウンタとか web BBS とかです。
私も同じです.
スクリプトのバグでは,機種/環境依存文字の訂正で
ある予期しない文字列のとき置換操作が止まらなくなる...など.

>僕の環境では「まともにロックできない」というのは
>経験したことはありません
それは68userさんだから(笑).
普通の人は下で書いたスクリプトみたいな感じです.
NFSを使っているプロバイダの場合,もっと状況は複雑になります.

>それと flock は、symlink・mkdir よりは速かったです。
う〜ん,負荷が掛かった時なんです,問題は.
デッドロックの自動検出と,flockの解除のための
pidの保存操作や予防措置も含めてください.

MMX233+FreeBSDで1000個の掲示板が同時動作で平均待ちプロセスが2〜4個
の状況('97のテレホ時)でflockを使うかどうか,です.

>訳の分からない排他制御手段を考える人
いや,いいんじゃないですか.誰もが通る出発点だと思います.
68userさんだって,miniBBSのアレとか,ほら,悪い思い出(笑).
混雑時の実用性や設置性を検証すると,面白いことになります.

No. 1006 # ちゃいぱ [URL] 2000/07/25 (火) 15:19:18
はじめに、flockについて質問した者です。

CGIをダウンロードした人にプロバイダ来たメールで、
やはり、「NFSがらみで、flockが利用不可能な状態」とのことでした。
CGIの方は、WIN95も考慮して、ロックファイルの有無で対処いたしました。

話は、変りますが、DNSサーバーについて知識として教えて下さい。
rlogin,ftp,telnetなどで、ホスト名を指定した時に、どのようにして、
DNSサーバーとやり取りをしているのですか?
DNSサーバーはhttpみたいなデーモンが動いているですか?(私の買った本には、この辺書いていなかった)

ちょっと、気になったので、よろしくお願い致します。

No. 1007 # 68user 2000/07/25 (火) 16:27:35
flock の件は後程。

> rlogin,ftp,telnetなどで、ホスト名を指定した時に、どのようにして、
> DNSサーバーとやり取りをしているのですか?
rlogin/ftp/telnet などは、ユーザからホスト名を受け取ると
gethostbyname(3) などを使って、ホスト名から IP アドレスを
得ようとします。

gethostbyname の内部では、ソケットを使って DNS サーバに
アクセスします。で、DNS サーバは UDP の port 42 を
listen していて (UDP だから listen という表現は変?)、
クライアントからの問い合わせに応じて IP アドレスを
教えたり、他の DNS サーバに問い合わせたり、見付から
ないよと答えたりします。

こういう問い合わせを行う DNS クライアント (この例では
gethostbyname) のことを resolver と言います。resolver は
概念的なもので、問い合わせを一手に引き受ける resolver
サーバのようなものがあるわけではありません。ただのライブラリです。
なので、自分で外部の 42/udp にアクセスする DNS クライアントを
書く事もできます。

> DNSサーバーはhttpみたいなデーモンが動いているですか?
UNIX 界で DNS サーバとして有名なのは bind です。
プログラム名は named。
# apache と httpd の関係と似ています。

No. 1008 # 68user 2000/07/25 (火) 16:57:08
> こういう問い合わせを行う DNS クライアント (この例では
> gethostbyname) のことを resolver と言います。
いや、違うか。

res_query, res_search, res_mkquery, res_send, res_init,
dn_comp などの DNS サーバへ問い合わせを行うライブラリ
関数群のことを resolver といいます。gethostbyname などは
これらの関数を孫請けとして呼んでいます、かな。
# See resolver(3).

No. 1009 # ちゃいぱ [URL] 2000/07/25 (火) 17:01:14
回答ありがとうございます。

では、DNSクライアントとnamedデーモンが、
UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。

すっきりしました。
ありがとうございました。

No. 1010 # gongo [E-mail] 2000/07/25 (火) 23:48:36
はじめまして、gongoと申します。
いきなりで申し訳ありませんが質問があります。
私はXアプリケーションの勉強を始めたばかりなのですが
XライブラリとXツールキットを用いたプログラムを書こうとして
行き詰まってしまいました。
と言いますのは、例えばXツールキットを用いて表示させた窓に
Xライブラリを用いて直線を引いたりする方法がわかりません。

XDrawLine(XtDisplay(w),XtWindow(w),gc,x1,y1,x2,y2);

といった感じでプログラムの中に書き込みますとコンパイルは
できるのですが、実行させるときにXDrawLineのところで
Segmentation faultで止まってしまいます。
本もいろいろと読みましたがどうにもうまくいきません。

作成途中のプログラムは以下のところにあります。
http://www.din.or.jp/~gongo/xtshirt.c(本体)
http://www.din.or.jp/~gongo/color.dat(色の数値)
どうか宜しくお願い致します。

No. 1011 # 68user 2000/07/26 (水) 00:48:58
> では、DNSクライアントとnamedデーモンが、
> UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。
その通りです。

> 例えばXツールキットを用いて表示させた窓に
> Xライブラリを用いて直線を引いたりする方法がわかりません。
非常に興味のある分野なので答えたいのはやまやまなのですが、
Xt を触ったことがないのでわかりません。でも、DrawLineOnWidget 内で
drawgc を使ってますが、DrawLineOnWidget を呼び出す前に
drawgc に GC をセットし忘れているように見えます。

あと、戻り値を見ると XtWindow(w) で NULL が返ってるのが
問題…なのかなぁ。解決法がわかったら教えて下さい。

No. 1012 # gongo [E-mail] 2000/07/26 (水) 01:39:54
> 非常に興味のある分野なので答えたいのはやまやまなのですが、

素早いご返答ありがとうございます。

> drawgc を使ってますが、DrawLineOnWidget を呼び出す前に
> drawgc に GC をセットし忘れているように見えます。

本によると、ウィジェットをリアライズした後にGCを
設定するようなことがかいてありましたもので
XtRealizeWidget(toplevel);
よりも後にdrawgcをセットすることにしたのです。
もう少し調べてみます。

> あと、戻り値を見ると XtWindow(w) で NULL が返ってるのが

すみません、これはどういうことなのでしょうか。
NULLが返ってくるというのはどのように調べたらよろしいのでしょうか。
NULLが返ってるとなるとおそらくここが悪いのだと思います。
う〜ん、もう少し調べてみます。

No. 1013 # 68user 2000/07/26 (水) 09:20:32
> XtRealizeWidget(toplevel);
> よりも後にdrawgcをセットすることにしたのです。
うーん、XDrawLine を呼んだ時点で X サーバとの通信が
行われると思うんで、やっぱりセットしておかないと
いけないんじゃないかなぁ…。GC は
    typedef struct _XGC * GC;
なので、GC の中身がゴミ (初期化してないので) だと
まずいと思うのです。

> NULLが返ってくるというのはどのように調べたらよろしいのでしょうか。
printf("%d\n",XtWindow(w)) としました。他の部分で同じことを
すると何か値が入っているのですが、XDrawLine の前で表示させると
0 となってしまうので、XtWindow がこけてるのかと思いました。

まぁ、知識がないのに推測を重ねるのもアレなので、
会社にある本を読んで調べてみます。

No. 1014 # gongo [E-mail] 2000/07/26 (水) 19:38:45
> 他の部分で同じことをすると何か値が入っているのですが、
> XDrawLine の前で表示させると 0 となってしまうので、
> XtWindow がこけてるのかと思いました。

例えばDrawLineOnWidget(label)の書いてあった手前に

printf("XtDisplay(label) = %d\n",XtDisplay(label));
printf("XtWindow(label) = %d\n",XtWindow(label));

と書いたところ、XDrawLine の前で表示させるのと同様に
次のようになってしまいました。

XtDisplay(label) = 67584
XtWindow(label) = 0

やはり0というのはまずいのでしょうか。labelを使い回して
いくつかの窓を表示させようとしているのがまずいのか・・・。

あとdrawgcのセットをDrawLineOnWidget(w)の中で下記のように
行ってみたところ、

drawgc=XCreateGC(XtDisplay(w),XtWindow(w),0,NULL);
XSetForeground(XtDisplay(w),drawgc,pixel[1]);
XSetBackground(XtDisplay(w),drawgc,pixel[0]);

DrawLineOnWidget(label)は抜け出て、ok6までは到達したのですが

X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)
    Major opcode of failed request: 55 (X_CreateGC)
    Resource id in failed request: 0x0
    Serial number of failed request: 35
    Current serial number in output stream: 48

となってしまいました。

お手数お掛け致しまして申し訳ございません。

No. 1015 # gongo [E-mail] 2000/07/26 (水) 20:03:01
> labelを使い回していくつかの窓を表示させようとしているのがまずいのか・・・。

各窓がだぶらないようにlabel1,label2,・・・といったように
してみましたが結果的にうまくいきませんでした。

No. 1016 # 68user 2000/07/27 (木) 02:42:45
根本的には何がまずいかと言うと、
    1. GC をセットしていない (その結果 core dump)
    2. Window がマッピングされる前に XtWindow を実行している
         (その結果 X Error)
だと思います。1は先に述べた通り。2は XtWindow の前に
XtRealizeWidget が必要なんでしょう。

で、そういえば一応 Xt の本を持ってたな〜と思い出したので読んでみると、
    a. Form ウィジェットの上に Simple ウィジェットを作成
    b. Simple ウィジェットに、Exposure イベントへの
         コールバック関数を設定
    c. XtAppMainLoop でイベント待ち
    d.コールバック関数が呼ばれて、その中で XDrawLine
という手順を踏んでました。

実際には何も試してませんが、上の通りにやってみては
いかがでしょう。なお、a は必須かどうかわかりません。
Label ウィジェットに直接 XDrawLine できるのかもしれません。

flock の件はまたまた後程。うーん、調べる時間がない…。

No. 1017 # gongo [E-mail] 2000/07/27 (木) 05:23:23
> 実際には何も試してませんが、上の通りにやってみては
> いかがでしょう。なお、a は必須かどうかわかりません。

ありがとうございます。いろいろ試してみます。

No. 1018 # 68user 2000/07/27 (木) 09:35:55
> 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 は
抑えておかねばなぁ…。

No. 1019 # gao 2000/07/27 (木) 13:24:20
はじめまして。初心者にもわかりやすいUNIXのHPでよく利用させて頂いていま
す。早速ですが、質問があります。kinput2をバックグラウンドで起動した後、
netscapeを起動しようとすると以下のようなメッセージを残してすぐに落ちて
しまいました。どのようにすれば解消できるでしょうか?

% kinput2 -canna -jserver remotehost &
% netscape &
[2] Bus error netscape(core dumped)
(↑このメッセージを残してnetscapeが落ちます。)

No. 1020 # hsj 2000/07/27 (木) 14:17:21
@68userさん
すみません、ちょっと横から質問です。
>> では、DNSクライアントとnamedデーモンが、
>> UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。
>その通りです。
ぼく、ずっとUDPの「53」番(ゾーン転送のときはTCPも)だと思っていたんですが、
これは間違ってたんでしょうか?
#うーむ、心配になってきました・・・確認しよっと。

No. 1021 # gongo [E-mail] 2000/07/27 (木) 16:52:00
> 68user様
窓の表示とともにただ線を引くというのが
イベントなのかどうかわからなかったため、
今までイベント処理でやろうとは思っていませんでした。
これから試してみます。

No. 1022 # 68user 2000/07/27 (木) 19:51:17
> ずっとUDPの「53」番(ゾーン転送のときはTCPも)だと思っていたんですが、
うぅ、tcpdump で見ると確かに 53 でした。調べもせずに
いいかげんなことを言ってはいけない…。

なぜかとてもとても忙しいぞー。なんでだ。
なので、その他については明日に持ち越し。

No. 1023 # 68user 2000/07/28 (金) 01:20:21
現在 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 リソース設定が足らない、あたりが怪しいかと。

No. 1024 # ちゃいぱ [URL] 2000/07/28 (金) 10:20:30
また、質問させてもらいます。

$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関数みたいのはないですか」って質問されたもので...。
よろしくお願い致します。

No. 1025 # Netboy 2000/07/28 (金) 12:46:58
スマートでないやり方です.
修飾子での簡単な型式変換をつけました.

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;
}

No. 1026 # 68user 2000/07/28 (金) 13:54:57
> 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
にするかも。

No. 1027 # いち 2000/07/28 (金) 14:41:26
すいません、返答がずいぶん遅れてしまいました。
68userさん、いろいろアドバイスありがとうございます。

それで、いろいろMewについて見ていったのですが、
たまたま見ていたEmacsのINFOの中にMewという単語を見つけ、
中を見ていったら、何と既にMewがインストールされていました。
色々お手数おかけしてすいませんでした。

ただ、色々試みているのですが、いまだにMewを起動させる事ができません。
M-x Mew と入力すると起動すると書いてあるのですが、
これをどこで(どういう場面で)入力すればいいのかが解りません。
教えて頂けますか?

それから、最近、Netscape をkill した時に
Bus error という表示が出て、.netscape フォルダの中に、
lock ファイルができてしまいます。
以前はこんな事はなく、Done という表示が出て
lock ファイルも作られませんでした。
僕は最近、不必要だと思われるファイルを色々消していっているのですが、
その過程で、何か必要なファイルまで消していってしまったのでしょうか?

No. 1028 # gongo [E-mail] 2000/07/28 (金) 16:27:57
@68user様
> X ではウィンドウの最初の map 時や、他のウィンドウに隠れていた
> ものが露出した場合に Expose イベントが飛んできます。

ここら辺はなんとなくわかっていたのですが、
最終的にできてほしいプログラムのことを考えるあまり
頭の中でごちゃごちゃになっていました。
まだ線をひくのを確認していないのでやってみます。

No. 1029 # gongo [E-mail] 2000/07/28 (金) 16:38:57
@68user様
度々すみません。27日のご説明でイベントハンドラを
用いていましたが、呼び出されるイベントハンドラは
あらかじめ決められた関数の形式(XtEventHandler型)で
なくてもよろしいのでしょうか。

No. 1030 # ちゃいぱ 2000/07/28 (金) 17:14:01
>68userさんへ
確認し、理解できました。ありがとうございました。

>Netboyさんへ
確認し、ちょっと理解できないところがありましたが、ありがとうございました。
引数2と引数3の関係がイマイチわかりません。

とりあえず、これで、失礼いたします。
ありがとうございました。

No. 1031 # Netboy 2000/07/28 (金) 20:40:59
>引数2と引数3の関係がイマイチわかりません。
引数2は,引数1の切り分け方の指定です.

print &format('28/07/2000','dd x mm x yyyy',"yyyy年mm月dd日\n");
のように使えます.

混乱させてしまって済みません.
関数名に予約語(format)を使ったのもまずかったです...

No. 1032 # hsj 2000/07/28 (金) 21:21:48
@68userさん
>うぅ、tcpdump で見ると確かに 53 でした
ぼくも確認しなおしました。
記憶違いでなくてよかった・・・。
#68userさんが断言してらっしゃると、
#自分の記憶に自信があっても、ビビッちゃいます(笑

No. 1033 # 68user 2000/07/29 (土) 13:00:58
@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 などのバックアップは忘れずに。

No. 1034 # ちゃいぱ [URL] 2000/07/29 (土) 14:58:38
@68userさん
ありあまる回答をして頂き、感謝いたします。
あがとうございました。
ただ、元々の質問者のレスがなく、ちょっと残念...。

@Netboyさん
理解できました!
関数名を変えれば、結構使えそうですね。
ありがとうございました。

No. 1035 # 68user 2000/07/30 (日) 10:03:27
需要があるかどうかは知らないけど、BBS の全文検索の試運転。
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi
namazu-2.0.4 でやってますが、replace に正規表現使えるし、
filter いじれば この BBS のデータ形式にも対応できるし、
いい感じ。

まだ自動更新はされません。

@hsj さん
> #68userさんが断言してらっしゃると、
> #自分の記憶に自信があっても、ビビッちゃいます(笑
僕はかなりいいかげんな回答をしてます。
そもそも DNS サーバの設定をしたことがないくらいだし :-)

No. 1036 # 68user 2000/07/30 (日) 23:32:28
> http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi
あら、検索すると、データファイル中の remote host が丸見え。
filter で削るように設定したつもりだったんだが。というわけで、
いったん引っ込めます。

No. 1037 # いち 2000/07/31 (月) 16:02:04
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にする必要は別段ないのですが)
これって、意味ありますか? もしくは、もっといい方法がありましたら教えて下さい。

No. 1038 # B-MAX [E-mail] 2000/07/31 (月) 17:54:57
FTPについての質問なのですが、
FTPでデータを転送するさい、失敗することはありえるのでしょうか
ある場合、正しく転送されたか、チェックすることは可能なのでしょうか?
ネットワーク関係は初心者なもので、よくわからないのですが
FTPはTCPの上位プロトコルなので、
データのチェックはTCPレベルでやっているのでしょうか?
突然の質問、失礼しました。

No. 1039 # gao 2000/08/01 (火) 00:57:00
返答ありがとうございます。

>> % netscape &
>> [2] Bus error netscape(core dumped)
>OS 名と、Netscape をどうやってインストールしたか、
>X のリソース設定 (~/.Xdefaults の中身や xrdb -query の
>結果) を書いて下さい。

~/.Xdefaults の内容は以下のようになっています。
kterm,netscape当りの設定内容のみを書き出してみました。
設定ミスなどがありそうですか?

----------------------------------------------------------------
kterm*VT100.translations: #override \
    Shift <Key>space: begin-conversion(_JAPANESE_CONVERSION)
KTerm*KanjiMode: euc
KTerm*SaveLines: 1000
KTerm*ScrollBar: on
KTerm*IMProtocl: kinput2
KTerm*Modifiers: @im=kinput2


*inputMethod:kinput2
*VT100*translations: #override\
    Shift<Key>space: begin-conversion(_JAPANESE_CONVERSION)
Netscape*useStderrDialog: False
Netscape*international: True
Netscape*inputMethod: kinput2
Netscape*XmTextField.fontList:\
    -*-courier-medium-r-*--14-*-*-*-*-*-iso8859-1;\
    -*-*-medium-*-*--14-*-*-*-*-*-jisx0208.1983-0;\
    -*-*-medium-*-*--14-*-*-*-*-*-jisx0201.1976-0;\
    -*-*-medium-*-*--14-*-*-*-*-*-jisx0212.1990-0:
----------------------------------------------------------------
xrdb -query
↑このコマンドは意味がわからないのですが、何を行うのでしょうか?

No. 1040 # 68user 2000/08/01 (火) 01:07:49
> gzip: mew-1.94.2.tar.gz: unexpected end of file
mew-1.94.2.tar.gz のダウンロードに失敗したんでしょう。
ブラウザで落としたなら、別の HTTP/FTP クライアントを試す。
ftp の ascii モードで落としたのなら、binary モード。

> それと、.netscape/ のことについてですが、
自分でエディタなどを使って覗いてみましたか?

> その 99/ フォルダに入れたキャッシュファイルの効果があるか、
> 良く解らないのです。これって、意味ありますか?
ls -lud 99/ で、最終アクセス時刻が得られます。その結果で
判断できるでしょう。


> FTPでデータを転送するさい、失敗することはありえるのでしょうか
ユーザ認証の失敗とか、コネクションが張れないとか、ascii/binary の
設定ミス以外にビット化けするか、ということですか?

IP データグラムでは、そもそもデータ部のチェックサムが存在しませんので、
ノーチェックです。一方、TCP データグラムはチェックサムがありますが、
「化けてもチェックサムが同じで、検出できない」ということがどれくらいの
確率で起こるのかはわかりません。おそらく論文のネタになっているでしょうね。

Prev< No. 1001〜1040> Next  [最新発言に戻る] [過去ログ一覧]