68user's page 掲示板

Prev< No. 931〜1023> Next  [最新発言に戻る] [過去ログ一覧]
No. 931 # 腐れ厨房 [E-mail] 2000/06/20 (火) 17:03:17
初めましてです。このサイトはとてもわかりやすく書かれていて嬉しいです。
ところでHTTPクライアントを作りたいのですが、その前にブラウザがどんな環境変数やデータを吐いてるか尻たいです。
tcpdump -i ul0
などとやってみましたが意味不明でしたです。
GET / HTTP/1.0
Referer: http://hoge/hoge
っていうようなテキストベースでのデータや相手の送信内容を知るにはどしたらいですか?

No. 932 # 68user 2000/06/21 (水) 00:04:18
http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=658
でいいですか。

あと、tcpdump の吐く hex データから tcp 部分を抽出する
スクリプトを作るというのも、TCP と IP の勉強になります。

No. 933 # wave 2000/06/21 (水) 15:45:13
質問させて下さい。

こちらのホームページで、アクセス状況をグラフ表示していますが、
これはどうやったら出来るのでしょうか。

DBからデータを取得し、グラフ表示をしたいのですが、具体的な
方法が分かりません。
何か参考に出来るのではと思い、お尋ね致します。
宜しくお願いします。

No. 934 # 68user 2000/06/22 (木) 02:23:58
1時間に一度 (cron で実行)
    http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/countup.hour

    http://X68000.startshop.co.jp/~68user/count/total.top
にその時点でのカウンタ値を追加し、さらに1時間に一度
    http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/make-count

    http://X68000.startshop.co.jp/~68user/count/out/day.top
を作成してます。

画像表示用 CGI は
    http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/view-count.cgi
です。

GIF の生成には fly コマンドを使っていますが、例の GIF 圧縮の
特許の問題で Unisys からクレームが付く可能性があります。png 版に
入れ換えようと思ってはいるのですが、なかなか時間が取れず
ほったらかしになってます。

画像データ生成が面倒なら、
    http://www2s.biglobe.ne.jp/~cru/library/zddbbs/cgi-bin/wwwboard.cgi
の投稿コードの画像のように、xbm (モノクロ) や xpm (カラー) 形式を
使う手もあります。xbm も xpm もただのテキストファイルです。

No. 935 # wave 2000/06/22 (木) 10:13:08
68userさん、ご丁寧に回答いただき感謝します。
参考にさせていただきます。
どうもありがとうございました。

No. 936 # ookubo 2000/06/22 (木) 13:37:01
初めて書き込みます。
皆さんにひとつ教えていただきたいことがあります。
実は、ある会社でメールサーバーを作ってるのですが外部からのリレー
を許可したいのです。
ところがSPAM対策も大事ということで行き着いた答えは
「POP before SMTP」です。
http://www.venus.dti.ne.jp/~phashim/fmv/POPbeforeSMTP.html
を参考にと思ったのですが、私のQpopperは
バージョン3.02すでにPOP認証のログを吐き出しています
これを利用すると書いてあるのですが
どのようにすればいいのでしょうか
どなたか、アドバイスお願いします

No. 937 # sawa [E-mail] 2000/06/22 (木) 15:26:54
はじめまして、UNIX始めて2週間くらいたちました。
で、いきなり躓いてしまい先輩方に教えていただきたい事が在ります。
cシェルで、複数件のファイルを一つずつ読みたいのですが、
どうしてもうまく行きません。
とりあえず、リストファイルを作ったまでは良いのですが、

ls -1 > TAR.list
awk 'substr($1,8,3)~ /tar/ {print}' TAR.list> TAR.result

そのファイルを頭から一件づつ読むやり方がわかりません。
何か良い方法が在ったら教えてください。

No. 938 # 68user 2000/06/22 (木) 21:37:44
@ookubo さん
> バージョン3.02すでにPOP認証のログを吐き出しています
という意味がわからないです。3.02 なので修正点が違うから
困っているということですか? 既に認証リストはあるので
POP before SMTP 用の無駄なログを吐きたくないということですか?

@sawaさん
> awk 'substr($1,8,3)~ /tar/ {print}' TAR.list> TAR.result
awk なんてすっかり忘れてしまったなぁ。最初見たとき
書き間違いかと思った。

> そのファイルを頭から一件づつ読むやり方がわかりません。
foreach fn (`cat TAR.list`)
    ls -l $fn
end
てな感じでいいですか? ファイル名に空白や *、? などを
許すなら、事前に sed あたりで変換しておく必要があります。
# まぁ、csh スクリプトでこだわっても仕方ないですけどね。

No. 939 # バグっ太 [E-mail] 2000/06/23 (金) 11:45:23
突然ですが質問させてください
初心者なんで的外れかもしれませんが・・・

あるサーバソフトを作成中ですが、そのサーバソフトが起動時に
読込む設定ファイルのパスってどうすればいいんですかねぇ・・・
fopenする時ってフルパス指定するじゃないですか(違います?)
でサーバソフトはInetdで起動されるんです。
だから何処で動いているかわかりませんよね
どーすればいいのかなぁ・・・ 教えてくださーい
inetd.confの起動時オプションですか???

No. 940 # TOMO [E-mail] 2000/06/23 (金) 11:58:46
お聞きしたい事があるのですが、
使っているOSは、FreeBSDで
viで作成したファイルをフロッピーディスクに
保存したいのですが、どのようにすればよろしいのですか?
あと、その保存したフロッピーをWin98でも見れるように
するには?
よろしくお願いします。

No. 941 # 68user 2000/06/24 (土) 03:56:02
> fopenする時ってフルパス指定するじゃないですか(違います?)
フルパス指定でもいいし、カレントディレクトリからの
相対パスでもいいです。

> だから何処で動いているかわかりませんよね
getcwd(3) でカレントディレクトリを取得して、
どこかに出力させてみればわかるでしょう。


> その保存したフロッピーをWin98でも見れるようにするには?
    - Windows98 でフォーマットして、mount_msdos して cp して umount
    - Windows98 でフォーマットして、mcopy file a:
どちらでもよいです。
    http://www.jp.FreeBSD.ORG/QandA/HTML/640.html

FreeBSD で DOS フォーマットしたいなら
    http://www.jp.FreeBSD.org/QandA/HTML/350.html

No. 942 # takuro [E-mail] 2000/06/24 (土) 15:42:13
こんにちは。初めて書き込みするtakuroという者です。
このbbsでは、ユーザー同士の疑問や知識の交換がされていると知って書き込みしたんですが、ページの趣旨にあっていない質問だったら、無視して下さい。
winzipの事なんですが、解凍する時に、パスワードを入れるように設定して圧縮したんです。そしたら、長い間そのファイルをほうっておいたせいで、パスワードを忘れてしまい、解凍できなくなってしまったんです。
中身は重要な物が入っているんですが、必要なときに取り出せなくなってしまって、大変なんです。どなたか、解決の方法を教えて下さる方、いらっしゃいませんか?メールでも何でもいいので、どうか連絡をよろしくお願いします。

No. 943 # @ 2000/06/24 (土) 23:02:43
>takuro
PikaZipとか??
http://nagoya.cool.ne.jp/pusa/

パスワードはどのくらいの長さ?
ローマ字の小文字なら、、速いかな、、(謎

No. 944 # ほうり幸正 [URL] 2000/06/27 (火) 17:42:43
航空機事故で検索していたらこの掲示板にたどり着きました。
「日航機墜落事故 東京大阪123便 新聞見出しに見る15年間の記録」
のホームページです。

No. 945 # 流れ星 2000/06/28 (水) 14:27:10
ネットワークに関して教えてください。
ホームルータ経由でISDN回線に接続し、モデムとつながれている端末にアクセスすることはできるのですが、モデムでつながれている端末はホームルータないの端末にアクセスすることができません。
ルーティングテーブルの設定が必要なのかと思いますが、どのように設定したらよいかわかりません。
ホームルータのグローバルアドレスとかみることとかできるのでしょうか。
これについて詳しい人がいたら、教えてください。よろしくお願いします。

No. 946 # has 2000/06/28 (水) 20:08:06
つまらない質問でごめんなさい。
perl 5.004_04について教えてください。

スクリプトの最初にifを書くと、その後のスクリプトが
どうであろうがCompilation errorになって実行できないのですが、
これはバグなんでしょうか?
もしバグだとしたら、広く知られたものなんでしょうか?
以下余分に長いサンプル(split.pl)です。

#!/usr/local/bin/perl
if(#$ARGV != 1) { die "Usage: split.pl keyword file\n"; }
$keyword = $ARGV[0];
$infile = $ARGV[1];
open(IN, $infile);
$prefix = "$infile-split-";
$suffix = "000";
$file = ">$prefix$suffix";
open(OUT, $file);
while($line = <IN>) {
        print OUT $line;
        if($line =~ /^\s*$keyword\s*$/) {
                $suffix = sprintf "%03d", $suffix+1;
                $file = ">$prefix$suffix";
                open(OUT, $file);
        }
}

No. 947 # 68user 2000/06/28 (水) 20:27:40
@has
> if(#$ARGV != 1) {
#$ じゃなくて $# っすね。

> これはバグなんでしょうか?
ちなみに (言うまでもないかもしれませんが) ちょっと前までの
stable は 5.005_03 です。今の perl5.6 はかなり buggy だとか
# と perl の偉い人が fj で言ってた。

あと、7/22 か 8/12 か 8/20 あたりにそちらに寄りますので、
もし居るならよろしく。


@流れ星
> ネットワークに関して教えてください。
NAT もルーティングも、ソフトウェア (FreeBSD) でしか
やったことがないので、アドバイスできません。

NAT かましてるかどうか、ルータの型番、モデムの端末が
LAN 内にあるのか外にあるのか、などを書いて fj.net.lan など
に投稿するといいでしょう。

# でも、最近のってほとんど http://ルータのIPアドレス/ で
# 設定できるんでないの?

No. 948 # kick 2000/06/29 (木) 06:25:19
はじめまして
perl(CGI)でAccessLogを取るScriptを
作っています。
HTTP以外の情報って取得できるのですか?
例えば、FTPなどのAccessLogとか...

No. 949 # 68user 2000/06/29 (木) 08:45:29
> 例えば、FTPなどのAccessLogとか...
無理です。FTP と HTTP は別物だから。

No. 950 # has 2000/06/29 (木) 14:40:11
@68user
>#$ じゃなくて $# っすね。
ふぇえ、おはずかしい。
真っ先に人のせいにしてしまうなんて…。

>今の perl5.6 はかなり buggy だとか
冷静に人のシステムを批判できる人って
やっぱ偉いですよね〜。

No. 951 # よしだ 2000/06/29 (木) 17:12:30
68userさん皆さんはじめまして
早速なんですが、CGIを自分のNTマシンで開発してUNIXの本番環境でTESTしているのですが、
先頭行の#!〜の記述がNTとUNIXで違うので毎回直しているのですが
面倒なのでNT側のアパッチで自己完結型を使わないでCGIを動かしたいのですが
なにか方法をご存知無いでしょうか?

No. 952 # 68user 2000/06/29 (木) 22:53:42
> 先頭行の#!
Windows 使ってないのでわからないです。

多分 Windows では #!/bin/sh というような書き方ができない、って
ことなんだろうと思いますが、もし単にパスが違うだけならやりようは
あります。もしそうなら再度質問して下さい。

No. 953 # よしだ 2000/06/30 (金) 09:33:40
> もし単にパスが違うだけならやりようはあります。
> もしそうなら再度質問して下さい。
すみません、おっしゃる通です
Windowsが #!C:/Perl/bin/perl で
UNIXが #!/usr/local/bin/perl です
どうにかなるでしょうか?

No. 954 # Netboy [E-mail] 2000/07/01 (土) 03:03:59
よしださん

Win機の
1.Apacheをインストールしたのと同じドライブに
2.\usr\local\bin\を掘って
3.Perl一式(Perl.exeとDLL類)を入れれば

#!/usr/local/bin/perlで参照できると思います.
お試しください.

No. 955 # YOSHI [E-mail] 2000/07/02 (日) 22:33:37
UNIX,CGI,ネットワークについての事ではないので、この掲示板の趣旨に合わない
かも知れませんが、下記の事についてどなたか知っていましたらお教え下さい。
実はMOについてですが、これまで認識していたメディアが急に認識されな
くなり、他のメディアで試しても同じ現象が出るようになりました。
クリーニングしても直りません。たまに認識する事もあり、なにがおかしい
のか見当もつかず、途方に暮れています。
何か方法があるでしょうか。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 956 # Netboy 2000/07/03 (月) 15:20:06
YOSHIさん
次のようなページをご紹介します.

MO掲示板:
http://www.zob.ne.jp/%7Ekanai/mo/bbs/bbs.pl

MOにこだわるページ:
http://www.zob.ne.jp/~kanai/mo/

MOS331E 遍歴:
http://www1.sphere.ne.jp/squilla/comp/mos331al.html
悪名高いオリンパスドライブの清掃方法です.

# 私もジャンクの331(Logitec LMO-230H)を手に入れ,
# 清掃して問題なく使っています.

参考まで.

No. 957 # ST 2000/07/04 (火) 23:25:09
現在、さくらインターネット<http://www.sakura.ad.jp>で専用サーバを借りています。OSはFreeBSD 3.4です。大した知識もないのに大丈夫かな、と思っていたところ、ついに困った事態になりました。

chsh -s
でログインシェルを変更したのですが、誤った名前を指定してしまったのです。それからというもの、スーパーユーザになろうとしても
su: +++: No such file or directory
と出てしまい、rootによる作業が一切できない状況です。

root権限で
chsh -s /bin/sh
でも実行できれば済むのですが、どうすればいいものやら。セキュリティホールを利用できないか、などと本気で考えましたが、そんな技量もありませんでした。

きちんと業者に頼むべきなのでしょうが、Telnetでできる作業は1万円、Telnetでできない作業は2万円と、勉強料としても学生にはかなり惜しくなる出費なのです。

何かいい方法があるなら教えていただけないでしょうか。

No. 958 # 68user 2000/07/05 (水) 00:09:14
> su: +++: No such file or directory
むぅ…多分無理だと思います。一旦 shutdown して
シングルユーザモードで再起動するしかないので
2万円コースだと思います。

あきらめきれなければ、
    http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/chat.html
で聞いてみて下さい。そこの方々が無理だと言ったら絶対無理です。


あと、回答してもらっても返答する気がないなら、最初から
書き込まないで下さい>返答する気のない人々

No. 959 # has 2000/07/05 (水) 02:52:42
またまたperlについてお聞きします。
連想配列をうまく使って、キーに対して文字列リストを
保持したいと思うのですが、何かよい方法はありますでしょうか。

現在は、文字列を共通のリスト配列に順に格納して、
キーに対する文字列リストの中の最初の文字列へのインデックスを
連想配列に格納する、という方法をとっています。

うまく伝わらないかもしれませんので、少々サンプルを書きます。
$store = 0;
foreach $file (@files) {
        open(IN, $file);
        @contents = <IN>;
        $index{$file} = $store;
        $numlines{$file} = $#contents + 1;
        @lines[$store..$store+$#contents] = @contents;
        $store += $#contents + 1;
}

No. 960 # 68user 2000/07/05 (水) 08:55:56
要は、ファイル名と行番号を与えると、その行が得られるデータ
構造は?、ということでいいですか?

なら、
    while (<IN>){
        $data{$file}{$line}=$_;
        $line++;
    }
とやってもいいし (perl4 的にするなら $data{"$file$line"})、
あるいは
    @contents=<IN>;
    $index{$file}=\@contents;
と、配列へのリファレンスをハッシュに入れてもいいと思います。
参照するときは
    $file = 'abc.txt';
    $line = 123;
    print ${$index{$file}}[$line];
とか (abc.txt の 123行目を表示。先頭が0行目)。

No. 961 # よしだ 2000/07/05 (水) 10:25:26
Netboyさんありがとうございました

> #!/usr/local/bin/perlで参照できると思います.
> お試しください.
試してみたんですが、
#!E:/usr/local/bin/perl だと動くんですが、
#!/usr/local/bin/perl だと駄目なので
どうもapachの自己完結型がドライブ名の指定が必要みたいでした、
結果は残念でしたけど、どうもありがとうございました。

>あと、回答してもらっても返答する気がないなら、最初から
> 書き込まないで下さい>返答する気のない人々
すみません、原因が解ったら書き込もうと思っていたので
返答が遅くなってしまいました
以後気をつけます。

No. 962 # Netboy [E-mail] 2000/07/05 (水) 11:48:16
よしださん

次のようなショートカットからApacheを実行してみてください.
'作業フォルダ'のパスにあるドライブ名が,Perlの参照先ドライブになります.
動作を確認後にオプションを追加して,サービスとして実行させてください.

リンク先:
e:\usr\local\sbin\apache\Apache.exe -f e:\usr\local\etc\apache\conf\httpd.conf -s

作業フォルダ:
e:\usr\local\sbin\apache

# 2つとも,Apache.exeがe:\usr\local\sbin\apacheにあるとき

- - - - - - - - - - - - - - -
参考になるURLをご紹介します:

NTでIISやApacheのPerlの参照の設定:
http://www.hi-ho.ne.jp/lina/httpd.html#apache-pl

Apacheのレジストリ操作,NTサービスとしての実行など:
http://www.apache.org/docs/windows.html

No. 963 # よしだ 2000/07/05 (水) 13:58:57
Netboyさん ありがとうございます
ApachとPERLのドライブを合わせる必要があったんですね、
おかげさまで思いどおりの動作をしてくれるようになりました
本当に色々とありがとうございました。

No. 964 # has 2000/07/05 (水) 14:22:25
@68user
どうもありがとうございました。
リファレンスというのを勉強しときます。

それと、こちらに来られるかもということですが、
予定を確認しておきます。

No. 965 # 68user 2000/07/06 (木) 01:11:33
@よしださん
> すみません、原因が解ったら書き込もうと思っていたので
> 返答が遅くなってしまいました
別に1週間くらいはいいと思いますよ。「わかりました。試してみます」
と書くより、試してから結果を書こう、というタイプの人もいるでしょうから。

それ以前の人に向けていったことなので、気になさらないで下さい。

> もし単にパスが違うだけならやりようは
> あります。もしそうなら再度質問して下さい。
cygwin 入れて #!/bin/sh で振り分け、とか言わなくてよかった (笑)


@has
> リファレンスというのを勉強しときます。
赤ラクダ本には載ってません (念のため)。でもって、青ラクダ本の
説明はわかりにくいです。ちなみに $hoge{fuga}{ura} ってのも
実はリファレンスです。

> 予定を確認しておきます。
いや、いつ行くかも未定なので、いつも通りに過ごしてて下さい。
雨降ったら行けないし :-)

No. 966 # へにか [URL] 2000/07/06 (木) 08:08:50
>あと、回答してもらっても返答する気がないなら、最初から
>書き込まないで下さい>返答する気のない人々

・・・すみません。
以前、telnetで30個ほど繋げたら、フリーズしてしまったので、
perlで繋げる方法を考えつつ、先に進んでいないのと、まだ、
bugの原因が不明(というか、お手上げに近い)ので、返事できない
状態でした。

返答が遅れてすみません。

No. 967 # 68user 2000/07/07 (金) 00:41:37
へにかさんに向けて言ったのでもありません :-)

No. 968 # yuji 2000/07/07 (金) 03:28:41
ご無沙汰しております、以前にお世話になったyujiです。(^^)
現在、FreeBSD 2.2.8-RELEASEのカーネルなどをPentium3に最適化させたいと
考えているのですが、この場合、どういった部分を変更すべき
なのでしょうか?

自分で調べてみたところ、
http://www.goof.com/pcg/index.html
に、Pentium用パッチ(pgcc)があるのですが、
gccが現在2.7.2.1でして。(^^;
portsコレクションを探してみたのですが、
pgcc2.95.1のものがあるみたいですが、
プルダウンメニューが3.0以上のみになっています。
PGCCは、EGCSのパッチということで、
2.7.2.1のような古いバージョンには、
使えないのかもしれませんが。(^^;

FreeBSD 2.2.8-RELEASEを用いて、
マシンの能力を最大限に引き出す方法はなにかありませんでしょうか?
どうぞよろしくお願いします。

No. 969 # ST 2000/07/09 (日) 20:43:16
お返事ありがとうございました。

>> su: +++: No such file or directory
>むぅ…多分無理だと思います。一旦 shutdown して
>シングルユーザモードで再起動するしかないので
>2万円コースだと思います。

管理会社に連絡したところ、今回のように原因がはっきりしていて復旧が容易な場合は1万円だそうです。まあ仕方がないと思います。これからはもっと慎重に作業をしなければ……。

No. 970 # ユウヤ 2000/07/09 (日) 22:17:58
携帯電話に対してこちらの電話番号を表示しないためにはどうすればいいですか?

No. 971 # mm 2000/07/10 (月) 18:30:29
perlでのサブルーチンの質問です。
お願いします。

#!/usr/local/bin/perl

$Z = 1;
&abc();
print "$Z$Y";

sub abc{
        &A();
        &B();
        &C();
}
sub A{
        if($Z == 1){
                $Z = $Z + 1;
                &C();
        }
}
sub B{
        $Z = $Z + 5 ;
}
sub C{
        $Y = "!";
}

こんなカンジなのですが結果を"2!"になるようにしたいのですが
どうすればよろしいでしょうか?
このまま実行すると"7!"になってしまいます。
教えてください。

No. 972 # 68user 2000/07/10 (月) 23:12:29
@yujiさん
> 現在、FreeBSD 2.2.8-RELEASEのカーネルなどをPentium3に最適化させたいと
> 考えているのですが
すみませんが、http://www.jp.FreeBSD.org/search.html#doc
キーワード pgcc で検索する、以上の情報はわかりません。

cvsweb で ports/lang/pgcc を見ると、2.2.8 時代は (pgcc 側の)
gcc->egcs の切り替え時期なようで、その時代の gcc 対応 pgcc は
ないと思います。最新の egcs を入れて pgcc パッチを当てるのは
ダメかなぁ。いろんなところではまりそうですけど。
# あ、最近のは a.out 形式吐けないんだっけ。

@STさん
> これからはもっと慎重に作業をしなければ……。
telnet 2つ開いて、片方はつなぎっぱなしにして いつでも
/etc/master.passwd を修正できるようにしておくとよかったですね。

@mmさん
# biglobe な mm さんとは別の mm さんですか?
> 結果を"2!"になるようにしたいのですがどうすればよろしいでしょうか?
    sub B{
        $Z = $Z + 5 ;
    }
の部分で $Z==7 になってほしい、でも &B から戻ると $Z==2 としたい、
ということなら、呼び出し側で &B($Z) として引数を渡して
    sub B{
        my ($abc)=@_;
        $abc = $abc + 5 ;
    }
とか ($abc は $Z としても同じ)、単順に変数名を変えて
    sub B{
        $X = $Z + 5 ;
    }
とか、って感じでいいですか。

望んでる答えじゃないかもしれないけど、なぜ 2! にしたいのか、
&A と &B ではどういう違いがあるのかを説明してもらわないと、
これ以上はなんとも言えません。

No. 973 # mm@biglobe 2000/07/11 (火) 01:23:29
私にも意味が分からないので、別人かと思われます。

ひょっとして、sub A {...} 中で &C(); を呼び出したら、
sub abc{...} 中の &C(); に帰って来る、と誤解されてるとか…?
# goto &NAME に関係あるのかとも思ったけど…

No. 974 # mm 2000/07/11 (火) 09:23:05
># biglobe な mm さんとは別の mm さんですか?
mm@biglobeさん、失礼しました。

説明不足ですみませんでした。

sub A の処理で $Z == 1 の場合sub C へ行きたいのです。
その後、sub B へは行かずに処理を終了させたいのですが、、、

No. 975 # Netboy [E-mail] 2000/07/11 (火) 17:29:50
もしかして

#!/usr/local/bin/perl

$Z=1;&abc;print "$Z$Y";

sub abc{ if (!&A){ &B; } &C; }
sub A{ if ($Z==1){ $Z++;return 1; } 0; }
sub B{ $Z+=5; }
sub C{ $Y="!"; }

な感じですか...? 文章のままだと

sub abc{ if (!&A){ &B;&C; }}
sub A{ if ($Z==1){ $Z++;&C;return 1; } 0; }

な感じです.関数の戻り値を使わないなら

sub abc{ &A; if ($Z!=2){ &B; } &C; }
sub A{ if ($Z==1){ $Z++; }}

延々と続きそうですね.こんな話題じゃ無さそうな気も...

No. 976 # mm@biglobe 2000/07/13 (木) 01:27:06
あれ?mmさんの反応がないなぁ…
Netboyさんの回答で、出尽くしてると思うんだけど。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 977 # (6)(8)user 2000/07/13 (木) 01:32:32
そーいや、名前に機種依存文字を入れると、何かが起こったっけ。
多分まだ なおしてなかったなぁ。
# 現在機種依存文字が見えない環境なので、勘で入力。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 978 # 68user 2000/07/13 (木) 01:41:20
そうか、名前の欄が
    <INPUT ... VALUE="<FONT COLOR="red">(6)(8)</FONT>user">
となってしまうんだった。今度直そう。

ところで、LASER5 Linux 6.0 でも /etc/services は pop-3 でした。

No. 979 # has 2000/07/14 (金) 20:06:55
@68user
名前に機種依存文字入れたときの不具合、
直ったら修正部分をおしえてください。
#うちのにも同じ不具合があるってことですよね?

No. 980 # 68user 2000/07/18 (火) 00:12:35
了解。でも、ちと忙しい日が続きそうなので9月頃になるかも…。

No. 981 # 智慧 2000/07/18 (火) 22:55:44
こんばんわ。ちょっとお聞きしたいことがありまして。。。
うちの掲示板はmmさん(ここにいる人かどうかはわかりませんが)が作った掲示板を使っているんですが、
crypt関数が使えなくて削除パスとかが出てこないんです。それで、サーバ管理者に連絡しましたら、

>弊社サーバーでも、crypt関数はもちろんご利用頂けます。
>ただし、サーバーの暗号処理にMD5方式を搭載しておりますので
>MD5以外のサルト係数を使用したスクリプトでは、そのままでは動作致しません。
>(cryptはサーバーのライブラリに依存している為)
>cryptをMD5方式のサーバーでお使いになるには、salt係数をMD5の
>$1$ 固定で指定する必要がありますので、スクリプト内の
>該当部分を書き換えてご利用ください。

と教えていただきました。でもどこをどう直せばいいのかさっぱりなんです。
忙しいと言っていますけどもし時間が空きましたら、教えていただけますでしょうか。お願いします。
ちなみにhttp://whitenight.org/etc/bbs/Readme/crypt.cgiにcryptを実行するCGIがあります。
ソースはhttp://whitenight.org/etc/bbs/Readme/crypt.txtにありますんで、どうかみてやってください。
長文すいませんでした。

No. 982 # mm@biglobe 2000/07/19 (水) 00:39:40
あっ、crypt.cgi はMD5には対応してないですね(^^;
MD5を使える環境にないので、詳しくは、68userさんのご助言を頂きたいのですが、
とりあえず、ソースの以下の行を削除して、

     if ( $salt !~ m%^[\./0-9A-Z]{2}$%i ) {
         print "<H2>エラー</H2>\n";
         print "SALTが不正です\n";
         exit(0);
     }

SALTの入力欄の2文字の前に「$1$」を挿入して実行してみて頂けます?

No. 983 # 68user 2000/07/19 (水) 00:53:19
まず OS 名は何ですか?

>>(cryptはサーバーのライブラリに依存している為)
僕の知る限りでは (少なくとも FreeBSD では) 誤りです。
なんにも考えずに salt を渡せば、ライブラリ (libcrypt) の
方で DES でも MD5 でも勝手に処理してくれます。

# ただ、FreeBSD 以外の環境 (例えば Linux で MD5 な環境) だと、
# ライブラリがそこまで対応しているかどうかはよくわからんなぁ。
# 明日試してみよう。

しかし、http://whitenight.org/etc/bbs/Readme/crypt.cgi
結果が $PassWord = ''; と空になるのは謎ですね。

> print crypt( $pwd, $salt );
これを
    print crypt( $pwd, "\$1\$$salt\$" );
とするとどうですか。あるいは
    print crypt('secret','ab');
だとどうなりますか。

No. 984 # 68user 2000/07/19 (水) 00:59:14
おっと少々かぶりぎみ。

crypt.cgi は FreeBSD (MD5) 上ではうまく動きました。FreeBSD の
libcrypt では
    crypt('secret','xx')

    crypt('secret','$1$xx$hogehoge')
は同じものとして扱われるからです。

ということは、智慧さんの環境ではそうではないということで
しょうから、$1$..$ を追加すればいけるんじゃないかと思います。

No. 985 # mm@biglobe 2000/07/19 (水) 02:05:30
あっ、なるほど。(最後の $ も忘れてた)
68user さんの指示に従って対処して下さい>智慧さん

No. 986 # 智慧 2000/07/19 (水) 03:22:16
>mm@biglobeさん
>68userさん
あ、ごめんなさい。
こんなに早くお返事してもらえるとは思ってもいませんで・・・。
じゃ今から早速やってみます。
レスありがとうございました。

No. 987 # 智慧 2000/07/19 (水) 03:42:20
あ、順々にやらせてもらったんですが、もう最初のmm@biglobeさんの言ったとおりに、
一部分削除して、
>$1$
これを前に入れて5文字で実行したらちゃんと生成されました!

>まず OS 名は何ですか?
あとこれは結局わからないです・・・(汗)

お手間を取らせまして・・・。ほんとどうもありがとうございました。

No. 988 # ちゃいぱ [URL] [E-mail] 2000/07/19 (水) 10:19:01
ラウンジでは、いつもお世話になっていました。ありがとうございました。
ラウンジで質問ができないので、こちらへ質問させてもらいます。

UNIXにおいてflockを使用するデメリットを教えて下さい。
また、flock使用のCGIを見つけるコマンドなど存在しますか?

自サイトでCGIをフリー配布していますが、使っている人から、プロバイダでflockは、やめてくださいと通知されたそうです。
よろしくおねがいいたします。

No. 989 # ちゃいぱ [URL] [E-mail] 2000/07/19 (水) 10:28:30
ついでに、もうひとつ。
私の vi では、テキストファイルに一行 1024バイト以上の行があるとき
途中で切れて、全部見れません。

このような場合、「編集できない」と「多少のデータ欠落」はOKですが、
とにかく、全体を見れて、検索できるような、コマンドってないですか?

No. 990 # 68user 2000/07/19 (水) 15:00:23
LASER5 Linux (標準で MD5) では、
    crypt('secret','$1$xx$') -> $1$xx$r/r0qx2Q7FpBQWOTZk2Nc. (MD5)
    crypt('secret",'xx') -> xxWAum7tHdIUw (DES)
となりました。こういう環境があるとは知らなかった。


> UNIXにおいてflockを使用するデメリットを教えて下さい。
NFS 環境下で flock が動作しないそうですが、僕のまわりでは
NFS 環境でも正常にロックできていたように見えました。

それ以外はわかりません。プロバイダが「使うな」と言うほどの
デメリットはないように思います。

> また、flock使用のCGIを見つけるコマンドなど存在しますか?
これは質問の意図がわかりません。

> 私の vi では、テキストファイルに一行 1024バイト以上の行があるとき
> 途中で切れて、全部見れません。
nvi という vi ファミリのエディタでは、その手の制限はなかった
ように思います。ちなみに FreeBSD の vi は nvi だったりします。

> とにかく、全体を見れて、検索できるような、コマンドってないですか?
nvi 以外だと less かなぁ。less で 1024バイト/行なファイルを
見られるかどうかは確かめてませんが。まぁ、fold してその出力を
眺めるっつーのもアリかもしれません。

No. 991 # いち 2000/07/19 (水) 15:18:25
大学では、UNIXを使っているので、いつもこのHPにはお世話になっております。
それで、質問があるのですが。

UNIXでは、Windowsなどから送られてくる添付ファイルを
受けとる事はできますか?
また、添付ファイルを送る事はできますか?
よろしければ、そのやりかたも教えて頂けると嬉しいです。

ちなみに、使用機種は、SunOS 5.6です。

No. 992 # ちゃいぱ 2000/07/19 (水) 17:05:05
>68userさんへ
foldコマンドでいけました!
ありがとうございました。

>>また、flock使用のCGIを見つけるコマンドなど存在しますか?
>これは質問の意図がわかりません。
ただ、プロバイダがどうやってflock使用のプロセスを見つけたのかなぁっておもったもので...。

では、これで、失礼いたします...。

No. 993 # 68user 2000/07/20 (木) 01:07:22
> プロバイダがどうやってflock使用のプロセスを
> 見つけたのかなぁっておもったもので...。
grep?

> UNIXでは、Windowsなどから送られてくる添付ファイルを
> 受けとる事はできますか? また、添付ファイルを送る事はできますか?
メーラー次第です。Mew や Wanderlust あたりなら
できますが、emacs の rmail とか mail コマンドでは
難しい…というか多分無理でしょう。

# Mew ... http://www.mew.org/index-j.html
# Wanderlust ... http://www.gohome.org/wl/index.ja.html

No. 994 # Netboy 2000/07/21 (金) 13:55:51
NFS上のファイルをflockすると,複数マシンから
同時にロックできてしまう(場合がある)と思いますが...

Perlで普通にflockを使っていると,たいがい
まともにロックできないうえ処理速度が遅くなります.

open (LOCK, "> $file")||&error
flock (LOCK,2)||&error

とか書いた時点で終わってます.2箇所直せば使えますけど
普通そんなこと気付きません.
あと,デッドロックの発生を検知するのが難しいです.

No. 995 # いち 2000/07/21 (金) 19:14:34
68userさん>

御回答ありがとうございました。
僕のメーラーはemacsのrmailなので、受けとれないみたいですね。
文章の添付ファイルならば、その文章は一応表示されますが。

それで、御紹介頂いた Mew と Wanderlust のHPに行ってみたのですが、
その2つの違いというものがよく解りません。
よろしければ教えて頂けますか。
用途は、添付ファイルを受けとるだけなので、それに適しているのは
どちらなのかというのも教えて頂けると嬉しいです。

あと、もう一つ質問なのですが、
あるファイルのシンボリックリンクを作った時に、
そのシンボリックリンクの元となるファイルから、
そのファイルのシンボリックリンクがどこに作られているかを
見つけ出す事はできますか?

なんか解りにくい文章ですみません。

No. 996 # 68user 2000/07/22 (土) 13:34:09
> それで、御紹介頂いた Mew と Wanderlust のHPに行ってみたのですが、
> その2つの違いというものがよく解りません。
両方ともメーラーなわけで、できることは自然と似てきます。
一応僕の思う特徴をあげると
    Wanderlust のいいところ
    ・見栄えがきれい (スクリーンショット参照)
    ・IMAP4 対応
    ・ニュースリーダの機能もある

    Mew のいいところ
    ・im と mew を入れるだけなので、インストールが簡単
        (Wanderlust だと semi やら apel やら入れて、さらに
        それぞれのバージョンにも気をつけなくてはいけない)
てな感じ。インストールに自信がないなら Mew の方がいいかも
しれません。

ちなみに「添付ファイルを受け取る」という一点に関して言うと、
Mew の方が使いやすいように感じます。

> そのファイルのシンボリックリンクがどこに作られているかを
> 見つけ出す事はできますか?
無理です。全ファイルを調べるしかないです。これはハード
リンクも同じです。

> NFS上のファイルをflockすると,複数マシンから
> 同時にロックできてしまう(場合がある)と思いますが...
んー、なるほど。複数マシンからの flock というのは全く
思いつきませんでした。一つの NFS クライアントマシンから
flock して、「ああ、NFS でもうまくロックできるのね」と
思ってました。

試してみたいけど、NFS 環境がないなぁ・・・

No. 997 # hum 2000/07/22 (土) 16:42:52
はじめまして。
勉強になるのでちょくちょく見させてもらっています。

crypt化した文字を復元することはできるのですか?

No. 998 # hum 2000/07/22 (土) 16:52:27
申し訳ないです。先ほどの追加です。

crypt化するのにperlでやっています。

#!/usr/bin/perl

$A ="AAAAAA"; #←crypt化する文字
$B ="BB"; #←KeyWord
print crypt ($A,$B);

No. 999 # 68user 2000/07/22 (土) 21:10:41
> crypt化した文字を復元することはできるのですか?
できないです。復元ができないようなアルゴリズムを採用している
からです。なので、辞書を使ったり、総当りで調べるしかありません。

ちなみに keyword じゃなくて salt と言います。

No. 1000 # mm@biglobe 2000/07/23 (日) 23:37:53
unixはぜんぜん知らないのですが、
flockに関しては以前から疑問があったので、
ちょっとお伺いします。

>とか書いた時点で終わってます.2箇所直せば使えますけど
>普通そんなこと気付きません.
open の時点で $file が破壊されるってことですね。
これは、確かにしっかりしたドキュメントが必要だと思います。

>あと,デッドロックの発生を検知するのが難しいです.
flock でデッドロックが発生したら、意味ないのでは…?
flock がセマフォを使ってるのか、別の何かを使ってるかは知りませんが、
デッドロックを回避できるからこそ flock の価値があるんではないでしょうか?
それとも、セマフォとかの待ち行列の状態が検知できないという意味でしょうか?

>Perlで普通にflockを使っていると,たいがい
>まともにロックできないうえ処理速度が遅くなります.
こういう文章を読んで、flockはダメだと勝手に判断して、
もっと酷い、訳の分からない排他制御手段を考える人が出て来るような気が…

ただ、flockを使えばOSが対象ファイルごとに待ち行列を
用意することになるんでしょうから、チャット等が沢山使われるサーバーでは、
リソースを大量に消費して、レスポンスも悪くなるような気はします。
先のプロバイダの制限は、そういうことを嫌ったのではないでしょうか?

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 リソース設定が足らない、あたりが怪しいかと。

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