68user's page 掲示板

Prev< No. 701〜1400> Next  [最新発言に戻る] [過去ログ一覧]
No. 701 # ももんが 2000/02/02 (水) 08:39
: : 信じられないけど本当の話。  
: : 私はある日BBSで1000円が200万円に、、、とかいてあるのを見た。
: : 200万円ものお金が郵送されてくると書いてあった。
: : まさか、そんなには、、、と思ってはみたが、
: : やらなきゃ何もはじまらない、まぁ、何もなくて1000円くらいの損だし、、、
: : ま、数万くらいは、、、、。と、思っていた。
: : (ホントに軽い気持ちで)だから、そのBBSのとおりにやってみた。

: : 私がやったことは、書き換えたファイル(この文書です)を
: : ニュースグループやBBSの電子掲示板などに(!!出来るだけ多くの!!)
: : アップロードした。
: : そして私はお金が来るまでどきどきしながら待っていた。
: : 私は10万円や15万円ぐらい来る時しまうところを確保していた。 
: : でも、、、。お金の入った封筒がどんどん郵便受けに入ってくるのには、
: : 仰天した。!! さて、私にいくらお金が送られてきたでしょう?
: : 10万?20万?50万?私は合計!!!約200万円!!!嘘、、、、、。
: : このお金を目にしてまだしんじらんないって感じ!!!

: : さて、その具体的な方法を書きます。ちゃんとファイルに保存しておくと良いよ。
: : あとで役に立ちます。君が払わなくてはいけない物は、5枚の切手、封筒、1000円。
: : それを、リストの5人に、合法的に現金を送る方法で送る。そして、君の名前と
: : 住所が書いてある方のファイルをいろいろなところにアップロードする。
: : そうしたらたった1000円あげるだけで150万円から250万円の戻りが3〜5週間で
: : 届きます!!!!

: : では具体的にどうすれば良いか?
: : * **名前と住所のリストは最後にあります。***
: : まず一枚の紙に「私をあなた方のリストに入れてください。」これを書くことにより、
: : このスーパーマネーシステムは成り立ちます。(合法になります。) 
: : あなたは200円をランダムに払うのではなくこのシステムに払うのです。
: : そうそう、紙に自分の名前と住所とあなたが出す人はリストの何番目にいたかを
: : 書きます。
: : 1.(あなたはリストでは、○番目にいました)と、書きます。
: : 2.(1)で書いた紙を200円にまきつけましょう。そして封筒に入れ、
: :  リストに書いてある5つの住所に送る。 紙を200円に巻きつけて、  
: :  200円を見えなくするのにはワケがあります。 
: :  郵便で現金を送ってはいけないのだ。郵便局に行って200円の5枚にしても良い。
: :  手数料10円。小為替だったらまく必要がないよ!

: : * *このステップは重要です。**
: : 3.さて、ここからが重要。よく読んで、システムを理解してね。
: :  一番上の人を消す。そして他の皆のポジションを一つずつ上げる。
: :  つまり、ポジション2の人をP1に、P3の人をP2に、P4の人をP3に、P5の人をP4に
: :  かえるということ。そしてポジション5に君の名前、住所、郵便番号、国を
: :  書きこむわけ。
: : 4.そして(3)で変えたこれのファイルをいろいろなところに出来る
: :  だけたくさんアップロードします。  

: : アップロードしたぶん自分に跳ね返ってきます。
: : 自分と他の4人にもお金が入ることになります。

: : さて皆さん、リストについては正直にしましょう!! 
: : 汚い事しなくても、お金はいっぱい入るから。ウソは絶対に辞めましょう。OK?

: : 5.ここまできたらもう後は人生楽しみましょう。
: :  お金は着々と君の郵便受けに入ってきます。

: : 初めて2週間くらいからお金が入りはじめて3〜4週間目にはお金の台風が君の
: : 郵便受けを襲います。 びっくりして叫ばないようにね。
: : お金がなくなってきたら又既に書き換えたファイルに(4)〜の行程を繰り返しましょう。
: : 絶対にこのファイルはなくさないように。
: : 何度でも使えるから。参考にしてください。
: : 名前と住所のリスト正直がこのプログラムを成功させる!!!

: : 1. 横山美由紀 〒193-0932東京都八王子市緑町401−105
: : 2. 波多野絵梨 〒860-0085熊本県熊本市高平2-16-5
: : 3. 浦西弘明 〒524ー0101滋賀県守山市今浜町2620-14-216
: : 4. 村上健一 〒014-0722秋田県仙北郡中仙町豊川字下延17-2
: : 5. 小関リノ 〒080-0834北海道帯広市稲田町西1線5番地115

: : あなたに全くマイナスはありません!!!!
: : 君にお金を送ってきた人の名前はなくさないようにしたほうが良いでしょう。 
: : みんなで公平にこのシステムを使いましょう。

: : 最後に:正直がこのシステムを成功させるのです!!!
: : もしもあなたがお金をリストの五人に出さない卑怯者だったらあなたはあまり
: : お金をもらえない。私は誰かがお金をリストの五人に送らなかったので3万円(2ヶ月後に)
: : しかもらえなかったのを知っている。それからお金をリストの5人に送ったのでリスト
: : の人たちは彼をリストに入れてあげた。そして4〜5週間後に彼は200万円以上手に入れたのです。 
: : これは本当の話ですよ!!! (ちょっとびっくり)
: : だまされたと思って1000円出せばすごい大金が手に入ります!!!(上記のことから)
: :  このチャンスを大事にしましょう!!!

No. 702 # Ta [E-mail] 2000/02/02 (水) 12:08
はじめまして。Taと申します。

whois.cgiに関して、お聞きしたいことがあるでのすが、もしよかったら教えて下さい。

私のISPは、LINUX(Redhat)を使用しているため、68Userが作られたcgiのスクリプトの
一部を変更しなければならないことに気が付きました。

オリジナルでは、'whois -h whoisserver domain'となっていますが、Linuxでは、whois
コマンドのパラメーターが違うようで、'whois domain\@whoiserver'('whois domain@whoiserver'というパラメーターも見たことがあるんですが)ということなので、スクリプト内の以下の部分のみを変更しました。


#変更前

$ret = `$whois -h $nics{$nic} $domain`;

#変更後

$ret = `$whois $domain\@$nics{$nic}`;


これにプラスして、当方のISPでは、'whois'が、'/bin'にあるので、'environment.pl'の'$whois'のパスも'/bin/whois'に変更しました。

ところが、サーバーエラーが出てしまいます。ISPで用意してあるデバックの機能(web
から行う)を利用してみたところ、以下のような結果がでました。

-----------------------------------
TEST 1: script and permissions
Passed Test 1!

TEST 2: script file format
Passed Test 2!

TEST 3: check perl path
Passed Test 3!

TEST 4: perl syntax
      String found where operator expected at t_whois.cgi line 45, near "print ""
          (Might be a runaway multi-line "" string starting on line 33)
       (Missing semicolon on previous line?)
      syntax error at t_whois.cgi line 45, near "print ""
      t_whois.cgi had compilation errors.

Your script failed one or more of the tests and could not
be automatically corrected. Please correct the errors
listed above and try again.
-----------------------------------

調べてみたところ、おそらく、変更した部分のが関係すると思うのですが・・・
原因がよく分かりません。

もし、解決方法をご存知でしたら、ご指導頂ければ助かります。

Ta

No. 703 # 68user [URL] [E-mail] 2000/02/02 (水) 13:34
> (Might be a runaway multi-line "" string starting on line 33)
> (Missing semicolon on previous line?)
「33行目から始まる "" が閉じてないのではないか?」
「前の行の最後にセミコロンを付け忘れていないか?」
ということでしょう。

> $ret = `$whois $domain\@$nics{$nic}`;
これ自体は問題ありません。

No. 704 # Ta [E-mail] 2000/02/02 (水) 14:39
68Userさん、早速のお返事有り難うございます。
スクリプトは確認したと思うのですが、再度、確認してみます。
もし、また分からないことがあれば、お聞きするかもしれませんが、
よろしくお願い致します。

Ta

No. 705 # Ta [E-mail] 2000/02/02 (水) 20:58
度々すいません。Taです。スクリプトにミスがありました。その後、デバックをしてみると、全てパスしました。

TEST 1: script and permissions
Passed Test 1!

TEST 2: script file format
Passed Test 2!

TEST 3: check perl path
Passed Test 3!

TEST 4: perl syntax
      t_whois.cgi syntax OK
Passed Test 4!

Your script has passed all 4 tests.

If your script passes these tests, and still won't run,
you might look for one or more of these common problems:
      1) make sure it can find any files or external programs it needs
      2) make sure any included perl programs also check out
      3) make sure you are writing a "Content-type:" line
            at the beginning of your output
Consult your favorite Perl/CGI book for more information.

これで動くかと思ったら、Internal Server Error・・・
う〜ん、なんでだか分かりません。environment.plは、$whoisのパスを修正するだけで、いいはずですよね。

何か、チェックしてみるところがあったら教えて下さい。

Ta

No. 706 # 68user [URL] [E-mail] 2000/02/03 (木) 06:30
とりあえず、

> open(STDOUT,"|$nkf -j");
open(STDOUT,"| /usr/local/bin/nkf -j");
> &put_header("whoisしてみよう -- $domain --");
print "Content-type: text/html\n\n";
print "<HTML>\n<HEAD><TITLE>whoisしてみよう -- $domain --</TITLE></HEAD>\n";
print "<BODY ...(略)...>\n";
> &finish_work;
print "</BODY>\n</HTML>\n";

などと書き換えて、environment.pl なしで動くようにしてみて下さい。

それはそれとして なぜ動かないかというと、CGI 経由で実行した際に
environment.pl が読み込めているかどうかが気になります。
    if ( ! require 'environment.pl' ){
        print "Content-type: text/plain\n\nCan't load environment.pl\n";
        exit;
    }
てな感じでチェックするといいでしょう。

No. 707 # dai [E-mail] 2000/02/04 (金) 22:10
初めまして〜m(_ _)m

ちょっと聞きたい事があるのですが、unixでmoにデータをセーブするにはどうすればいいんでしょうか?
環境はあるみたいなのですが、やり方が分かりません。

因みにroot権限はないです。
unixはsolarisです。

No. 708 # Ta [E-mail] 2000/02/06 (日) 00:12
68Userさん、色々とアドバイス有難うございます。

どうしてもうまくいきません。'nkf'のパスが間違っているのでしょうか?
('environment.pl'を使わない方法で行ってみました)
'whois'も、結局、調べたところ、'/bin/whois'でしたし・・・

今晩、また挑戦してみます。

No. 709 # 68user [URL] [E-mail] 2000/02/06 (日) 06:25
まずは
    #!/usr/local/bin/perl
    $|=1;
    print "Content-type: text/plain\n\n";
    print `/bin/whois yahoo.co.jp@whois.nic.ad.jp`
ここから始めましょう。これでダメなら whois の問題です。動いたら
    #!/usr/local/bin/perl
    $|=1;
    open(STDOUT,"|/usr/local/bin/nkf -j");
    print "Content-type: text/plain\n\n";
    print `/bin/whois yahoo.co.jp@whois.nic.ad.jp`
として下さい。これでダメなら nkf のパスが問題です。

whois.nic.ad.jp は JIS コードを返しますが、whois.cgi は
EUC で書かれているので、nkf で文字コードを統一しています。
なので、細かい事を言うと上の例では nkf は要りません
(スクリプトが EUC を (というか、日本語を) 出力していないから)。

> unixでmoにデータをセーブするにはどうすればいいんでしょうか?
ここらへんがヒントになるでしょうか。
    http://www.pfu.co.jp/x86/faq/
僕自身は経験がないのでわかりません。

No. 710 # へにか 2000/02/06 (日) 19:29
「HTTP クライアントを作ってみよう」と、2000/01/12(水) 20:56の
proxyに関する書き込みを参考にしたら、簡単なproxyサーバーが、
簡単に作れました。ありがとうございます!

# でも、数行の追加じゃ済まなかったなぁ。もっと修行すれば
# 出来るようになるんだろうけど・・・

No. 711 # has 2000/02/07 (月) 01:03
なにやらいろいろ大変そうですね。
ところで掲示板の話なんですが…。
ログの管理とか、なんかいい案浮びました?
俺はあんま考えてないですけど。

それとうちの掲示板、過去ログ一覧をちょっと
並べ替えてみました(なにやってんだか…)。
もしよかったら使ってやって下さい。
それではまた。

No. 712 # 68user [URL] [E-mail] 2000/02/07 (月) 04:31
> # でも、数行の追加じゃ済まなかったなぁ。
そうでしたか。実際に作ってみたわけではないので、そうかもしれません。
ただ、実用で使おうとすると、マルチスレッド化しないといけませんが、
その場合は結構行数は増えますね。

> ログの管理とか、なんかいい案浮びました?
ログを1つのファイルにまとめるか、1.txt・2.txt…と分けるか、ですか?
実際のところ、それぞれメリット・デメリットがありますから、難しいですね。
# <Email ....> 方式はやめようと思ってます。<Email>....</Email> スタイルに
# するつもり。

それはそれとして、後者のログ管理方式にしてくれ、ということなら
どちらでも選べるように改造しますけど どうします?

> 過去ログ一覧をちょっと並べ替えてみました
個数が多くなると、見やすいですね。参考にさせていただきます。

ところで ML の件ですが、has のところでやってもらえません?
うちは後任の管理者がいないので、この時期に始めるのはあきらめました。

No. 713 # かりり [E-mail] 2000/02/08 (火) 05:38
やっと、自力でCGI設置出来ました。
CGIをやろうとしてから実に二年もかかってるんですけど
パーミッションとperlと言う言葉の意味がやっと分かりました
次は自作に燃えて居たら、CGI プログラムのはじめの一歩
って言うコンテンツが在ったので嬉しいです。perlパソに入れて
CGIの本買ってきますよー。なんか、CGI設置できたのが
嬉しくて、68userさんに報告がしたかったのですー
ヒトの作ったCGIがうごいたってだけなんですけど、嬉しかったです。

No. 714 # 68user [URL] [E-mail] 2000/02/09 (水) 00:16
> perlパソに入れて CGIの本買ってきますよー。
それはよいことで御座います。やはり自作するのが一番楽しいわけで、
ぜひ勉強してみて下さい。

ただし、他人に聞く前に「まず本を読む、まず自分で調べる」という
ことは必ず行うようにして下さい。自分で調べられない・自分で
調べる気のない人は、上達しませんから。

No. 715 # たまり 2000/02/10 (木) 23:35
はじめまして、たまりと申します。
CGI、特にperlを勉強中の物です。
「ネットワークプログラミングの基礎知識」、滅茶苦茶参考になりました。
ありがとうございます。

現在、68userさんのスクリプトを参考に、FTPクライアントを書いているんですが、
どうもSTORがうまくいきません。
ファイルが送信し終わるまでに接続を切られてしまい、FTPdがファイルハンドルを
解放しないような状態になってしまいます。

当方の環境はというと、Windows98 + ActivePerl build 521 + TinyFTPDaemon Ver 0.51です。
HDの転送速度が追いつかないのかなと思い、以下のようにウェイトを入れてみても
だめでした。

while (<IN>) {
    print DATA $_;
    $i = 10000;
    while ($i) {$i--;}
}

上記のコードはPassiveモードでサーバが開いたDATAポートにINファイルをPUTして
いる部分だとお考え下さい。
結果として転送速度は確かに下がったのですが、ファイルハンドルを解放しない
(=FTPdが「受信が完了しました」と言わない」)という症状は改善されません。

なお、環境の制限により、シングルスレッドで書いています。

これは、環境による原因があるのでしょうか?
それともコーディング上の問題があるのでしょうか?

よろしければご教示下さい。

No. 716 # 68user [URL] [E-mail] 2000/02/11 (金) 20:24
> ファイルが送信し終わるまでに接続を切られてしまい
何バイト送ったら切れる、などという再現性はありますか?
1バイトずつ送ってみるとどうでしょう。また、切れるのは
データコネクションですか? コマンドコネクションですか?

> FTPdがファイルハンドルを解放しないような状態
というのは具体的にはどういう状態ですか?
これもデータコネクションかコマンドコネクションかを教えて下さい。

あと、このコードの前後数行を見せてもらえますか?

> HDの転送速度が追いつかないのかなと思い
これはさすがにないと思いますよ。Windows といえども OS ですから、
そこらへんはきっちりやってくれるでしょう。

ちょっと急いでいるので、この辺で。

No. 717 # 68user [URL] [E-mail] 2000/02/11 (金) 20:28
> これはさすがにないと思いますよ。
仮に HDD がとても遅かったとしても、
>> while (<IN>) {
でブロッキングするだろうから、読めなかったけど処理が
先に進むなんてことはないと思う、ということです。
# ここでブロッキングしてくれないと、OS の意味がない。

No. 718 # メリクリウス 2000/02/12 (土) 00:36
初めまして、セガBBSの過去ログ凄いです、
ご苦労様としか言えません、
また、じっくり見させてもらいにきます、
(今からみるんだけど、、、)

No. 719 # たまり 2000/02/12 (土) 02:10
> 何バイト送ったら切れる、などという再現性はありますか?
再現性はないようです。
接続が切られた時点でのサイズは不定でした。

> 1バイトずつ送ってみるとどうでしょう。
えっと、具体的にどのようにすればいいんでしょうか?
readで1バイトずつ読んでいくのでしょうか。ちょっと試してみます。

> また、切れるのはデータコネクションですか? コマンドコネクションですか?
すいません、説明が足りなかったようで。
どうやらQUITは送信されているようなのでデータコネクションが切られているようです。

>> FTPdがファイルハンドルを解放しないような状態
FTPdが起動中はエクスプローラからもファイルの削除等ができません。
もちろんスクリプトが終了していても、です。
FTPdを終了させると、送信したファイルが元サイズ以下(不定)であるという感じです。
そうなると削除等も可能になります。
「データコネクションかコマンドコネクションか」というのは自分にはわかりません。

> あと、このコードの前後数行を見せてもらえますか?
以下のようになります。
ほとんどftptrans.plを流用させて貰ってます(^^;

if ($mode eq 'put') {
    &send_command(COMMAND, "STOR $target_file\r\n");
} elsif ($target_file =~ m|/$|) {
    &send_command(COMMAND, "LIST $target_file\r\n");
} else {
    &send_command(COMMAND, "RETR $target_file\r\n");
}

&client_work(DATA, $data_connection_host, $data_connection_port);
open(IN, $infile) || die "$infile: $!";
binmode(IN);
while (<IN>) {
    print DATA $_;
}
close(IN) || die "close: $!";
&read_response(COMMAND);
close(DATA) || die "close: $!";

&send_command(COMMAND, "QUIT$CRLF");
&read_response(COMMAND);
close(COMMAND) || die "close: $!";

> # ここでブロッキングしてくれないと、OS の意味がない。
当てがはずれてたようですね(^^;
実際改善されなかったですし。


ファイルが送信し終わる前にQUITが送信されてると言うことはデータコネクションが
切断される前にコマンドコネクションが切断されると言うことでしょうか?
確かFTPってデータコネクションの切断=データの終わりでしたよね?
でもcloseでは死んでないようだし・・・

とりあえず1バイトずつを試してみます。

No. 720 # たまり 2000/02/12 (土) 02:13
あ、すいません、訂正です

> &send_command(COMMAND, "QUIT$CRLF");
&send_command(COMMAND, "QUIT\r\n");

です。

# 普段$CRLF="\r\n";でやってるもので(^^;

No. 721 # 68user [URL] [E-mail] 2000/02/12 (土) 09:19
> メリクリウスさん
メールの返事をここでさせて頂きますが、人の多いところから
リンクしちゃダメなのは、お肉さんのところです。うちは
どこからリンクしても構いませんです。


> FTPdが起動中はエクスプローラからもファイルの削除等ができません。
FTPd が STOR 先のファイルをオープンし続けているということですね。
謎ですね。

こちらには Windows 環境がないので、そのものずばりの答えは
わかりませんが、思いつくままに。

1. まずは小さなファイルでやってみて下さい。
2. sub client_work の最後で、SOCK のバッファリングを OFF にしている
   ($|=1) のは削ってませんよね?
3. QUIT 送信の前に &read_response(COMMAND) が一つ足りてないんじゃない
   ですか? データコネクションが確立したら、
    150 Binary data connection for test/hogemoge (127.0.0.1,33299).
   というレスポンス、さらに転送が完了したら
    226 Transfer complete.
   というレスポンスが返ってきませんか?
   (でもこれが原因じゃないと思う。レスポンスを読まなくても転送はできるはず)
4. $verbose=1 にして、プロトコル眺めてますよね?
5. passive なら、telnet コマンドだけを使って送信してみるのもいいかも。
6. ftp にデバッグオプションを付けて、プロトコルを観察してみては。

>> 1バイトずつ送ってみるとどうでしょう。
> えっと、具体的にどのようにすればいいんでしょうか?
例えばこんな感じです。
    &send_command("STOR $target_file\r\n");
    &client_work(DATA,$data_connection_host,$data_connection_port);
    &read_response(COMMAND);

    use IO::File;
    sysopen(IN,$infile,O_RDONLY);
    binmode(IN); # sysopen なら不要かな?
    while (1){
        $nread = sysread(IN,$buf,1);
        $read_size += $nread;
        last if ( $nread == 0 );
        print "$read_size read ";
        print DATA $buf || die "$!"; # 成功したかどうかチェック
        print "$read_size send.\n";
    }
    close(DATA); close(IN); &read_response(COMMAND);
    &send_command("QUIT$CRLF"); &read_response(COMMAND); close(COMMAND);
とりあえず、何バイト目でこけているのかは調べられるでしょう。
ただし、パケットレベルで 1バイトずつのデータが送られる、という
保証はありません。

念には念を入れて、print DATA の代わりに syswrite(DATA,...) を
使ってみるのもいいかも。
# syswrite = select(DATA);$|=1;binmode(DATA);print DATA と
# 同じはずだと思うんですが、違いましたっけ。


Solaris の ftpd 相手に試していて思ったんだけど、
    http://X68000.startshop.co.jp/~68user/net/ftp-5.html
> 次のアクションは
>  データコネクションの確立なのか
>  コマンドコネクションからのエラーレスポンスなのか
> のどちらなのかが わからないのです。
こんな変な仕様は、もしかして FreeBSD の ftpd だけかもしれない…。
調べておかねば。

No. 722 # アーゴン 2000/02/13 (日) 20:17
はじめまして。ゲームでわからない事があったので、誰か教えて下さい。
「七ツ風の島 物語」というゲームなのですが・・・
(知っている人、いるかなぁ・・・)
第11章 『小さくてキレイな物』・・・で、どうしたらいいのか、わかりません。 あった事といえば、白ガラスのヒューと、カンぞうに会った事です。できれば、わかる人、教えてください。よろしくお願いします。
  

No. 723 # たまり 2000/02/14 (月) 05:02
返事が遅くなって申し訳ないです。
ここ二日ほど色々あって何もできませんでした(^^;

> FTPd が STOR 先のファイルをオープンし続けているということですね。
です。FTPd側の問題という可能性も無くはない気もしますが(但し、普通の
クライアントを使用した場合は当然ながらうまく送信できます)

まず、先程試してみた結果から。

どうやら原因は
> 3. QUIT 送信の前に &read_response(COMMAND) が一つ足りてない
だったようです。
これを入れたらまともに動いてくれるようになりました。

念のため、詳しい報告も
> 1.
小さなファイル(数KB程度)でも同様でした
> 2.
削っていません。
> 4.
とりあえずまともに動くようにしようと即興で作っていたので$verbose=1の部分は
削ってました(^^;
本来はそういうときこそ細かくデバッグすべきなんでしょうけど・・・
> 5. 6.
telnetやftpを使えば問題なく送信できます。

なお、1バイトずつ読んでいく方法ですが、
print DATA $buf || die "$!";
ではデータ的に0x30、つまり'0'のところでなぜかdieするようです。
print DATA $buf;
のようにするとうまくいきました。

また、syswriteに関しては使ったことがないのであまりわかりませんが、
引数はsysreadと同様な形で取って、返り値は書き込んだバイト数のようです。
また、binmodeはsysopenでO_BINARYを指定しておけば不要かと思います。

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

No. 724 # 68user [URL] [E-mail] 2000/02/14 (月) 18:59
> はじめまして。ゲームでわからない事があったので、誰か教えて下さい。
ここにはゲームに詳しい人はあまりいないような気がします…。


> どうやら原因は
>> 3. QUIT 送信の前に &read_response(COMMAND) が一つ足りてない
> だったようです。
なるほど。ちょっと不親切な ftpd ですね (と僕は思う)。

> ではデータ的に0x30、つまり'0'のところでなぜかdieするようです。
なんででしょう。調べてみよう。

> また、binmodeはsysopenでO_BINARYを指定しておけば不要かと思います。
ああそうか。(Cでいうところの) open でも改行コード変換できるんですね。

> こんな変な仕様は、もしかして FreeBSD の ftpd だけかもしれない…。
> 調べておかねば。
これは Solaris の ftpd でも同じでした。変なの。

No. 725 # ハリー 2000/02/15 (火) 19:43
はじめまして、ハリーと申します。
実は今、Kシェルを作っているんですが、シェル内で
exportコマンドを打って環境変数を変更しようとし
てもできませんでした。普通にexportコマンドを打
ってもダメなんですか?それとも出来ないのですか?
シェル初心者なので、よくわかりません。
よろしく、お願いします。

No. 726 # 68user [URL] [E-mail] 2000/02/15 (火) 19:59
export HOGE=FUGA で できませんか。

No. 727 # ハリー 2000/02/15 (火) 20:09
はい。
シェルの中でenvを打つと変更した環境変数に変わっているのですが
シェルが終ってもう一度、envを叩くと元に戻っています。

No. 728 # 68user [URL] [E-mail] 2000/02/15 (火) 20:35
子プロセスでいくら環境変数をいじっても、親プロセスには
影響しません。これはどんなシェルでも同じです。

具体的に何をしたいのかがわからないのですが、
どうしてもやりたければ、eval を使うしかないです。

No. 729 # ハリー 2000/02/16 (水) 09:04
ありがとうございました。
やってみます。

No. 730 # つる 2000/02/16 (水) 09:39
はじめましてつると申します。
ネットワークプログラムについての質問なのですが、
今、いろいろと事情があって
ここのページを参考にプロキシのようなサーバプログラムを
作成しております。
なにをするサーバかというと、ブラウザからのリクエストを受け取り
そのリクエスト(GET,POST)を他のWebサーバにそのまま送りつけ
そのWebサーバからのレスポンス(HTML)を受け取り、
ブラウザに返してやるサーバです。
このページのソースを参考にしています。
サーバ部分はecho-server.plを
httpリクエスト部分はhttp-client.plを利用しましたが、
Webサーバまではリクエストが行っているようですが
レスポンスがうまく表示されません。
なにか原因がわかりになるようでしたら
教えてください。

No. 731 # つる 2000/02/16 (水) 10:32
ソースはこんな感じです。

#!/usr/local/bin/perl -w

use Socket;

$server_port = 4989;

# ソケット生成
socket(CLIENT_WAITING,PF_INET,SOCK_STREAM,0)
                || die "ソケットを生成できません。$!";

# ソケットオプション設定
setsockopt(CLIENT_WAITING,SOL_SOCKET,SO_REUSEADDR,1)
                || die "setsockopt に失敗しました。$!";

# ソケットにアドレス(=名前)を割り付ける
bind(CLIENT_WAITING,sockaddr_in($server_port,INADDR_ANY))
                || die "bind に失敗しました。$!";

# ポートを見張る
listen(CLIENT_WAITING,SOMAXCONN)
                || die "listen: $!";

print "ポート $server_port を見張ります。\n";

# while(1)することで、1つの接続が終っても次の接続に備える
while (1){
                accept(CLIENT,CLIENT_WAITING);

                # HTTP プロトコルを使う
                $port = getservbyname('http','tcp');

                # ホスト名を、IP アドレスの構造体に変換
                $iaddr = inet_aton("xxx.xxx.xxx.xxx")
                                || die "[xxx.xxx.xxx.xxx]は存在しないホストです。\n";

                # ポート番号と IP アドレスを構造体に変換
                $sock_addr = sockaddr_in($port,$iaddr);

                # ソケット生成
                socket(SERVER,PF_INET,SOCK_STREAM,0)
                                || die "ソケットを生成できません。\n";

                # 指定のホストの指定のポートに接続
                connect(SERVER,$sock_addr)
                                || die "[xxx.xxx.xxx.xxx]のポート$portに接続できません。\n";

                # ファイルハンドル SERVER をバッファリングしない
                select(SERVER); $|=1; select(STDOUT);
                # クライアントに対してバッファリングしない
                select(CLIENT); $|=1; select(STDOUT);

                # WWWサーバにHTTPリクエストを送る
                while (<CLIENT>){
                                print SERVER "$_";
                                print "$_";
                }

                # ヘッダ部分を受け取る
                while (<SERVER>){
                                # 改行のみの行ならループを抜ける
                                m/^\r\n$/ && last;
                }

                # ボディ部分を受け取り、表示
                while (<SERVER>){
                                print CLIENT "$_";
                                print "$_";
                }
                close(CLIENT);
}

とりあえず、サンプルをそのまま利用させていただいております。
おかしいところがあればご指摘下さい。
perl初心者のものですみません。

No. 732 # 68user [URL] [E-mail] 2000/02/16 (水) 16:31
簡単に言うと、HTTP proxy とは
    1. proxy サーバが localhost:8080 を listen する。
    2. ブラウザの proxy の設定を localhost:8080 にする。
    3. ブラウザが http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi を読むとき、
          GET http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi HTTP/1.0
          Host: X68000.startshop.co.jp
          User-Agent: ....
         というリクエストを proxy 宛に送る。
    4. proxy は X68000.startshop.co.jp:80 に接続し、
          GET /~68user/cgi-bin/wwwboard.cgi HTTP/1.0
       Host: X68000.startshop.co.jp
       User-Agent: ....
      というリクエストを送る。
    5. X68000.startshop.co.jp から (proxy に) 返事が返ってきたら、
         そのままブラウザに渡す。
を行うプログラムです。とりあえず GET を中継できるように
してみて下さい。

No. 733 # つる 2000/02/16 (水) 16:44
つるです。
早速のお返事ありがとうございます。

仕組みはだいたいわかるのですが
実際に作ってみるとなると・・・。
ネットワークプログラム初心者には
かなりキツイです。

No. 734 # 68user [URL] [E-mail] 2000/02/16 (水) 17:54
> 仕組みはだいたいわかるのですが
こう言っちゃなんですが、自分ではわかっているつもりでも、
わかっていないのでしょう。

クライアントからのデータを読まないと、proxy サーバが
どこに接続したらよいかは判断できないのに、先に接続
しようとしていますし、
    GET http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi HTTP/1.0   

    GET /~68user/cgi-bin/wwwboard.cgi HTTP/1.0
に変換する処理もやってません。

ちょっとずつ作ってみて下さい。

No. 735 # つる 2000/02/16 (水) 18:43
つるです。

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

>クライアントからのデータを読まないと、proxy サーバが
>どこに接続したらよいかは判断できないのに、先に接続
>しようとしていますし、

実は、接続先は固定です。(IPアドレス指定です。)
特定のコンテンツサーバに接続しようとしてます。

>GET /~68user/cgi-bin/wwwboard.cgi HTTP/1.0
>に変換する処理もやってません。

ブラウザからのリクエストは
GET /~68user/cgi-bin/wwwboard.cgi HTTP/1.0
・・・
のように来るようにしてます。
そして、そのリクエストを
そのまま(操作無しで)
接続先Webサーバに転送しようとしていますので・・・。

すいません、説明不足で・・。
とりあえず、もうちょっとがんばってみます。
参考にするとよいページがあったら
教えてくださると幸いです。

ご迷惑をおかけします。

No. 736 # 68user [URL] [E-mail] 2000/02/17 (木) 01:09
とりあえず 2〜3日悩んでみて下さい。それでも
わからなかったらまた質問して下さい。

No. 737 # かず*なごや 2000/02/21 (月) 17:47
はじめまして。

Solarisのnfsで質問したいのですが。

.nfsAA5A (下4桁はユニークな番号に変化する)
というファイルを見たことはありませんか?

クライアントマシンからあるシェルを起動すると
勝手に出来てしまって、困っています。
サーバマシン上では出来ないのですが。

心当たりがあれば、なんでも良いので教えて下さい。

No. 738 # 68user [URL] [E-mail] 2000/02/22 (火) 04:45
> .nfsAA5A
昔 消せなくて困りましたが、管理者に聞いたら NFS で
トラブルがあった際、作成されるファイルだそうです。
しばらくすれば勝手に消えるとか。

ただし、本当かどうかは知りませんし、どういうトラブルが
あったら作成されるのかも知りません。

No. 739 # 68user [URL] [E-mail] 2000/02/22 (火) 04:59
もし FreeBSD と Solaris のNFS まわりのコードがある
程度同じなら (元は同じはずですよね)、
    http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/sys/nfs/nfs_vnops.c?rev=1.150
    /*
     * Silly rename. To make the NFS filesystem that is stateless look a little
     * more like the "ufs" a remove of an active vnode is translated to a rename
     * to a funny looking filename that is removed by nfs_inactive on the
     * nfsnode. There is the potential for another process on a different client
     * to create the same funny name between the nfs_lookitup() fails and the
     * nfs_rename() completes, but...
     */
    static int
    nfs_sillyrename(dvp, vp, cnp)
    ...
あたりのようです。

No. 740 # かず*なごや 2000/02/22 (火) 11:28
ありがとうございます。

現在、NFS & NIS の設定がうまくいってないそう
なので、その辺の影響かな?

まずは、ちゃんと設定するようがんばります。(^^;

No. 741 # らんらん 2000/02/22 (火) 21:26
いつも拝見させていただいてます
今c言語でcgiのプログラム書いてるんですが

hoge.exe?data1=aa&data2=bb

みたいに引数を渡してプログラムを直接呼びたいのですが、うまくデータが渡せません
Formからだと正常に動作するんですがサーバーの設定が関係しているんでしょうか

サーバーはwindows nt + iisです
apachだとそのような事はないですか?

No. 742 # 68user [URL] [E-mail] 2000/02/22 (火) 23:41
> hoge.exe?data1=aa&data2=bb
情報が不足していますので、わかりません。

「FORM からだと正常に動作する」というのは、どういう
ふうに呼び出しているんですか? 「引数を渡してプログラムを
直接呼びたいのですが」とはどういうふうに呼び出そうと
しているんですか?

No. 743 # kika [URL] 2000/02/23 (水) 07:44
いつも勉強させていただいてます。あたしもがんばります。

No. 744 # すがチャン [E-mail] 2000/02/23 (水) 08:03
大江山と言う童謡か歌の歌詞知りませんか?

No. 745 # らんらん 2000/02/23 (水) 09:52
スミマセンでした...
hoge.exeは日付等を受け取りlogを集計して返すプログラムです

まず送信フォームのhtmlはこんな感じです

&lt form method=post action="cgi-bin/hoge.exe" &gt
&lt select name="data1" size="1" &gt
&lt option selected value="aa"&gt aa &lt /option &gt
&lt option value="bb" &gt bb&lt /option &gt
&lt /select &gt
&lt INPUT TYPE="SUBMIT" VALUE="送信" &gt
&lt /form &gt

これを

&lt A HREF=hoge.exe?data1=cc&data2=dd &gt hoge &lt /a &gt

のようにリンクから呼んで決まった処理をさせたいんですけどうまくいきません

お手数ですが情報お持ちでしょうか

No. 746 # らんらん 2000/02/23 (水) 09:55
またスミマセン....
<>の書き方を間違えてしまいました

No. 747 # 68user [URL] [E-mail] 2000/02/23 (水) 10:23
FORM は POST で送っているわけですね? で、
> <A HREF=hoge.exe?data1=cc&data2=dd> hoge </a>
だと GET になるわけです。hoge.exe は POST でデータを
受けているので、標準入力を読んでいるはずですよね。
もしGET にも対応したいなら環境変数 QUERY_STRING を
見るようにしないといけません。

C なら getenv("QUERY_STRING") でもいいし、
    main(int argc,char *argv,char *envp)
として envp を見てもよいでしょう。

No. 748 # らんらん 2000/02/23 (水) 12:54
ありがとうございます

if(0 == strcmp("POST",getenv("REQUEST_METHOD"))) { /* POSTの場合 */
                if(fgets(buf, len+1, stdin) == NULL) {
                                return 1;
                }
} else { /* GETの場合 */
                strncpy(buf, getenv("QUERY_STRING"), sizeo(buf)-1);
}

こんな感じでうまくいきました
POST と GET ぜんぜん意識してませんでした(よく調べます)

ほんとにありがとうございます。

No. 749 # Rica 2000/02/23 (水) 15:49
promptの説明文の中にHTMLタグが表示されてましたよ

% set prompt="%Sabc%s%Bdef%b%Ughi%u:"
abc<b>def</b><u>ghi</u>:

No. 750 # スナフキン 2000/02/25 (金) 03:15
お久しぶりです、以前くだらない質問ばかりしていたものです(^^;

CGIでサーバーの負荷率を調べたいのですが何かよい方法は無いでしょうか?

一応 top の表示のヘッダー部分に表示される数値を取り出し加工しようと
もくろんだのですが見事に失敗しました。

open(SYS, "top|");

やはり甘かった。コマンドラインで top > hoge.txt としても取れないので
top から取り込むのは駄目みたいですね。
オプションにもそれらしいものが見つかりませんでした。
FreeBSDの日本語マニュアルを見る限りはどうも互換性なさそうです。

面倒なんで試していませんが、一定の処理にかかった時間を測定して
負荷を調べようかと思うのですが・・・
これもいまいち正確さに欠けそうだし。何よりめんどうだし(^^;

あっ因みにそれほどの正確さは求めていません、そもそもそんなに正確に
数値を取れないと思ってますから。

何か方法を知っていましたら、よろしくお願いします。
OSはVineLinuxです。

No. 751 # 68user [URL] [E-mail] 2000/02/25 (金) 06:14
> promptの説明文の中にHTMLタグが表示されてましたよ
どうもです。直しておきます。
# 実は気づいていたんだけど、自作の変換フィルタをどう
# 直せばよいのかわからくて悩んでいるところです。

> CGIでサーバーの負荷率
load average を求めたいなら uptime や rup localhost
などが使えると思います。

> open(SYS, "top|");
入力に tty を読んでるのなら、top < /dev/null で
いけるかもしれません (ダメかも)。

なお load average は、違うマシンや OS と比較は意味が
ありません。わかっておられるかもしれませんが、念のため。

No. 752 # スナフキン 2000/02/25 (金) 23:49
uptimeの情報ありがとうございます。
なるほどこれなら何とかなりそうです。

手持ちのコマンドリファレンスには uptime のことが載っていません
でしたが、man には掲載されていたので、これでうまくいきそうです。

/usr/bin/ や /usr/local/bin/ にあるコマンドを一つづつ調べるのも
あまりの数に手を焼いていたところなので助かりました。

>入力に tty を読んでるのなら、top < /dev/null で
やってみましたが駄目でした。

>なお load average は、違うマシンや OS と比較は意味が
>ありません。わかっておられるかもしれませんが、念のため。
すいません、意味がよくわからないのですが、「この結果を元に
ほかのサーバーと比較するには意味が無い」と言う意味でしょうか。

単純に、マシンの反応が遅い時の原因が、回線の影響かサーバーの負荷
かを調べる用途に使うつもりです。

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

No. 753 # 68user 2000/02/26 (土) 05:14
> 「この結果を元にほかのサーバーと比較するには意味が無い」
そうです。「Pentium133+FreeBSD と Pentium166+FreeBSD」とか、
「Pentium133+FreeBSD と Pentium133+Linux」などの load average を
比較するのは意味がないです。また、load average が2倍だから
と言って、負荷が2倍とか速度が1/2 ということもない、という
意図で書きました。

> 単純に、マシンの反応が遅い時の原因が、回線の影響かサーバーの負荷
> かを調べる用途に使うつもりです。
ということであれば、load average でいいと思います。

> /usr/bin/ や /usr/local/bin/ にあるコマンドを一つづつ調べるのも
> あまりの数に手を焼いていたところなので助かりました。
`load average' というキーワードを知っていれば、
    % strings -f /usr/bin/* | grep -i 'load average'
などとするのも一つの手ですね。

No. 754 # へにか 2000/02/26 (土) 08:34
この間示唆して頂いた、マルチスレッドの関連文書を調べる長旅に出た
ところ、68userさんのところにあるではないですか(echo関連)。灯台下
暗し・・・ 御恥ずかしい。
ただ、以下のようなメッセージが出たので、どうも僕の環境(後述)では
不可能みたいです。
The Unsupported function fork function is unimplemented at echo.pl line 36.

因みにperl -vの結果は以下の通りです。
version 5.005_03 built for MSWin32-x86-object
目的がテキスト変換なので、delegateみたいな形式(/-_-)で対応しようかな、
それともjavaでも使ってみようかな、それともPCにUnixをインストールしよう
かな、と悩んでいるところです(なんかどれも実行しなさそうですが)。

No. 755 # 68user 2000/02/26 (土) 19:13
> どうも僕の環境(後述)では不可能みたいです。
Windows では fork は使えませんので、select を使うしか
ないですね。

IO::Socket と IO::Select を使って
    http://X68000.startshop.co.jp/~68user/tmp/bogus-proxy.pl
こんな感じでしょうか。本当に実用段階まで持ってくには
まだまだ機能追加、バグ取りをしなきゃいけませんが。

ポイントは、全てのソケットからのデータを select 経由で
受け取ること。今はそうなってませんので、1つのソケット
からのデータが遅れると、そこがボトルネックになってしまいます。

No. 756 # Yuuki 2000/02/27 (日) 12:49
> Windows では fork は使えませんので
cygwinに入っているPerlはforkが使えるそうです。(試していません。)
http://sourceware.cygnus.com/cygwin/

No. 757 # へにか [URL] 2000/02/27 (日) 20:12
68user様;
どうも御教授、ありがとうございます。
現在、示して頂いたスクリプトを理解しようと勉強しています。しかし、
理解した上で改造するまでに、ちょっと時間がかかりそうなので(※)、
先にお礼を申し上げます。
※ ->とか、selectとかの概念がまだ無いので、アルゴリズムがまだ
        理解できずに停止しています。
また、進捗があったら、ご報告します。本当にありがとうございます。

# http://X68000.startshop.co.jp/~68user/tmp/bogus-proxy.pl は、
# ひょっとして、僕の質問のために作って頂いたものですか?
# だとしたら、大感激です! ←違っていたらすいません。

Yuuki様;
どうも貴重な情報、ありがとうございます。
早速ダウンロードして、68userさんのecho.plを実行したら、とりあえずforkは
するみたいなのですが、残念なことに、forkしたとたんに、子プロセスが一般保護
違反を起こしてしまう(kernel32.dll)みたいです。多分、僕の環境が一般的じゃ
ないので、それが原因じゃないかな、と思っています。現在、解析中です(←時間
がかかりそうですが・・・)。
因みにcygwin32はB20(full.exeのほう)です。perl -vは以下の通りです。
This is perl, version 5.005_62 built for cygwin
折角情報を頂いたのに、生かせなくって、申し訳ないです。

No. 758 # 68user 2000/02/28 (月) 03:59
> selectとかの概念がまだ無いのでアルゴリズムがまだ
> 理解できずに停止しています。
考え方は http://X68000.startshop.co.jp/~68user/net/echo-4.html
同じです。モジュールを使うことで、ちょっとだけすっきりと書けます。
ここらへんは、そのうち web で解説を書くつもりです。

> ひょっとして、僕の質問のために作って頂いたものですか?
自分で使おうと思って、たまたま作ってました :-)
一応、GET だけはできるレベルのものを置いておきます。
    http://X68000.startshop.co.jp/~68user/tmp/1st-proxy.pl
shutdown あたりが とてもあやしい。

> cygwinに入っているPerlはforkが使えるそうです。
あ、そうなんですか。Windows 環境で perl を動かした
ことがないので、適当に書いてしまいました。

No. 759 # 68user 2000/02/28 (月) 20:05
http proxy は結構難しいですね。シグナルが飛んできたり、
コネクションを切断できなかったり、ファイルディスクリプタが
解放されなかったり…といったバグに苦しみながらも、3日かかって
やっと書き上げました (でも HTTP/1.1 には未対応)。
# perl が panic で落ちるのを初めて見た。

でも、ネットワークプログラミングに関する理解力を試すには、
絶好の例題かと思いますので、ぜひチャレンジしてみて下さい。
# というわけで、完成版は出しません :-)

No. 760 # へにか [URL] 2000/02/28 (月) 22:48
いろいろ、ありがとうございます。早速ダウンロードして解析してます。
まだまだ、分からないことばかりですが、何とかふんばって作ってみます。
でも、68userさんが3日かかって作り上げたってことは、僕はどのくらい
かかるのか、考えただけでも恐ろしくなります。いつになるやら・・・

もっとも、試行錯誤して自作するのは結構楽しいので、以下の、
>でも、ネットワークプログラミングに関する理解力を試すには、
>絶好の例題かと思いますので、ぜひチャレンジしてみて下さい。
># というわけで、完成版は出しません :-)
は、楽しみが残って嬉しいです。

>web で解説を書くつもりです。
楽しみにお待ち申し上げます :>

# ># perl が panic で落ちるのを初めて見た。
# 僕も見られればいいなぁ、と妄想してます・・・

No. 761 # 金床 [URL] [E-mail] 2000/02/29 (火) 21:49
みなさんはじめましてこんにちは。
今日はじめてこのページを見たのですが、いやはや素晴らしい内容ですね・・
さんざん苦労して色々なところで得た知識(+α)がここに・・・(笑

私は最近Winでのネットワークプログラムに凝っているものです。
簡単なHTTPやSMTP、POP3クライアントはBorland C++ BuilderでWinsockを使い作成したこともあります。

さて実は質問があるのですが・・・
現在DNSサーバーからのMXレコードの取得のプログラムを作っています。(リゾルバもどき?)
メールアドレスに対し送信先のSMTPサーバーのアドレスを調べる簡単なクライアントです。
さてそこで問題となるのが問い合わせを行うDNSサーバーです。
私はダイアルアップでインターネットに接続しているのですが、接続した状態でwinipcfgを実行すると
「DNSサーバー」の欄にDNSサーバーのIPアドレスが入ります。
ダイアルアップを終了するとこの表示が消えます(当たり前かもしれません)。

このDNSサーバーのアドレスをプログラム内で取得したいのですが・・・一体どうやれば良いのでしょうか。
もし何かしらご存じでしたらお教え頂けるとありがたいです。

No. 762 # 68user 2000/03/01 (水) 01:17
> このDNSサーバーのアドレスをプログラム内で取得したい
こればっかりは OS に尋ねるか、設定ファイルを見るか、
ユーザに手動で入力させるか、くらいの手しかないんじゃ
ないでしょうか。

winipcfg の出力を見るってのはダメですか?
# 美しくないですけど。

No. 763 # kuw 2000/03/01 (水) 09:36
こんにちは。いつも勉強させていただいています。
> DNSサーバーのアドレスをプログラム内で取得したいのですが
RasGetEntryProperties で取得できるような気がします。
RASENTRY 構造体の ipaddrDns が、
> Specifies the IP address of the DNS server to be used while
> this connection is active.
だそうです。
NT で無事に取得できた覚えがあるのですが、かなり昔のことなので
記憶が曖昧です。

No. 764 # 金床 [URL] [E-mail] 2000/03/01 (水) 20:44
68userさん、kuwさん、お返事ありがとうございます。
>ユーザに
出来れば使う人にDNSサーバーを意識させないで(設定の必要なしに)
動かしたかったのです。。
>RasGetEntry
おお、ありがとうございます。そうか、こういうのがあったのか・・・とヘルプを見ましたが、
NTのみとのこと・・(涙
実はダイアルアップでない、LAN内の端末でも使いたいという希望もあるんです。

おとなしくあきらめてユーザに設定してもらおうかな(^-^;;
本当にありがとうございました。

CGIのperlスクリプトなどについてもここで勉強させていただきます。
それでは失礼致します。

No. 765 # 68user 2000/03/01 (水) 21:32
Windows は全く知らないのですが、
    open(IN,"winipcfg|");
    while (<IN>){
        last if ( ($ip_addr) = m/(\d+\.\d+\.\d+\.\d+)/ );
    }
てな感じで取得できないんでしょうか?

No. 766 # 龍華 2000/03/01 (水) 23:22
リリィさん、霊山の寺の中に、隠し通路があって、その奥に宝箱が2つあって、その内の1つに扉を開けるための、『大きな鍵』がありますよ。

No. 767 # kuw 2000/03/01 (水) 23:54
Windows も UNIX も Perl も中途半端にしか知らないので、
誤解しているかもしれないのですが、、、
winipcfg は 標準出力に結果を吐き出すのではなくて、
ウィンドウが出てきます。
しかも、そのウィンドウで、[詳細ボタン]をクリックして
はじめて DNS サーバが表示されます。
ですので、winipcfg の結果から DNS サーバを取得する
のは容易ではない気がします。
# 不可能ではないのだろうけど。

No. 768 # みさ [E-mail] 2000/03/02 (木) 07:57
はじめまして・・・
こちら 大阪のヒトです。
突然ですが 最近 日曜日の夜中に「ニキータ」のTV版をみて はまりまくってます。
で 「ニキータ」情報を知りたくて 検索したのですが・・・
どなたか TV版「ニキータ」について 教えて下さい!!!
お邪魔しました ☆

No. 769 # 68user 2000/03/02 (木) 20:35
> winipcfg は 標準出力に結果を吐き出すのではなくて、
> ウィンドウが出てきます。
ああ、なるほど。だから金床さんは お困りなわけですか。
全く話が見えてませんでした。失礼。

> どなたか TV版「ニキータ」について 教えて下さい!!!
> 『大きな鍵』がありますよ。
たまにゲームなどの話題が出てくるので、なぜだろうと
不思議に思ってたんですが、もしかして SEGA BBS の
過去ログを見てこちらに書き込まれたわけですかね?
# http://X68000.startshop.co.jp/~68user/segabbs/bbs1/vol390/390_432.html

うちに置いてあるのは、昔の SEGA BBS の過去ログですので、
発言できません。こちらへどうぞ。
    http://www.sega.co.jp/sega/p_cafe/bbs.html

No. 770 # かむい 2000/03/03 (金) 02:39
こんにちは。

僕は研究室配属でUnixマシンとご対面になります。(構造解析用)
で、ちょっと触ってみたんですが難しかったです。(^^;
一応結構速いマシンなので使いこなそうと思ったんですが、
root権限貰う予定なので下手にいじりすぎるのもどうだろうと思いました。
OSはSunなんですが、今のところ画面も256色しか出ていません。
追々勉強して使いこなそうとは思っているんですが、
SCSIのHDを買ってきてそれにNTを入れたらどうなるのかと思って質問に来ました。
NTを使うときはUnixは完全に切り離して壊さないようにしたいんですけど、
ルートドライブ以外にNTを入れる事って可能なのでしょうか?
また、出来ればNTの方は管理者専用(笑)にしたいのですが
Dualbootに関して問題とか生じないでしょうか?
僕以外はPC使えない人なので一人でWSでインターネットしながら・・・
と目論んでいるのです。(笑)

要約すると、Unixは大事に使い、NTを別のHDに入れて普段はこちらは使いまくると言うわけです。
HDを切り離しててもフリーズしたりするとUnixの方のHDもちょっと心配ですね。怒られない程度にやる予定ですが(^^;

No. 771 # 68user 2000/03/03 (金) 03:17
もちろんマシンは Ultra なんとかじゃなくて
PC/AT 互換機なんですよね?
> 一人でWSでインターネットしながら
と書いてあって、ちょっと気になったもので。

> Dualbootに関して問題とか生じないでしょうか?
これに関してはこちらを。
    http://www.pfu.co.jp/x86/faq/other-002.html

> ルートドライブ以外にNTを入れる事って可能なのでしょうか?
すいませんが、NT は全くわかりません。

> HDを切り離しててもフリーズしたりするとUnixの方のHDも
> ちょっと心配ですね。
うーん、完全に2台の HDD に分けるなら、あまり心配すること
ないんじゃないでしょうか。と、個人的には思います。

Solaris も Windows も守備範囲外なので、いまいち
お役に立てず すいません。
# 僕の知識はとても狭く、なおかつとても浅いので (^^;

No. 772 # かむい 2000/03/03 (金) 07:56
えっと、compacのalphaマシンなので
いまいち分かってないです。(^^;
NTも乗せられるとは思うんですが。

ありがとうございます

No. 773 # 元隣人(GPZ900R) 2000/03/03 (金) 22:15
おひさしぶりです.
一つ教えて下さい.
mule(emacs)で,lexまたはyaccのコーディングをしたいのですが,
lex-mode, yacc-modeというのはあるのでしょうか?

No. 774 # 68user 2000/03/03 (金) 22:38
> えっと、compacのalphaマシンなので
えっ、alpha 対応の Solaris ってあるんですか?
あと 最新の NT って alpha で動きましたっけ。
# すいません、全然知らないので…。

> 元隣人(GPZ900R)
> おひさしぶりです.
おひさしゅうございます。2週間ぶりですけど :-)

> lex-mode, yacc-modeというのはあるのでしょうか?
昔 fj で教えてもらったものを置いておきます。どこから
取ってきたかは忘れました。
    http://X68000.startshop.co.jp/~68user/tmp/bison-mode.el
    http://X68000.startshop.co.jp/~68user/tmp/yacc-mode.el
常用してないので、どちらが使いやすいかはわからないです。

{lex,flex}-mode は聞いたことがないです。みんな c-mode で
やってるんですかね?

No. 775 # 岡本正浩 [E-mail] 2000/03/04 (土) 00:36
関西のソフマップにNTTのモバイル3の在庫はありますか?

No. 776 # かむい 2000/03/04 (土) 05:05
>えっ、alpha 対応の Solaris ってあるんですか?
>あと 最新の NT って alpha で動きましたっけ。

色々調べてみたんですが、
どうやらNTは載らないみたいです。(compaqがサポートしてないのかも知れないけど)
alphaでNTが動く物も有るようですがよく分かりません。
で、Tru64 UnixというのがOSな気がします。
そうなるとUnixを勉強するしかないようです。(^^;

No. 777 # 68user 2000/03/04 (土) 06:58
> どうやらNTは載らないみたいです。
NT4.0 は動くみたいですけどね。
# NT5.0 って出てるのか知らないけど…。
## NT5.0=Windows2000?

> Tru64 UnixというのがOSな気がします。
Tru64 以外で動くのは、NetBSD、FreeBSD、Linux あたりでしょうか。

No. 778 # かむい [URL] 2000/03/05 (日) 00:22
一般ユーザーで持ってる人は少ないと思います。
Tru64Unixなんて初めて聞いたOS名でした。(^^;
しょうがないのでLinuxを入れるかも知れません。
UnixをDualbootなんて出来るんでしょうか?
#NT5=Win2000と考えて良いと思います

NT4.0が動くとして、ドライバとかって有るんでしょうかね?
とりあえず、4月になって院生が居なくなったら僕が使えるようになるので(笑)

No. 779 # 68user 2000/03/05 (日) 10:39
> UnixをDualbootなんて出来るんでしょうか?
多分 Alpha Station のアーキテクチャは PC/AT と異なる
だろうから、専用のブートローダが要るんでしょうね
(ほんとか?)。まぁでも、誰かが作ってるでしょう。多分。

これ以上は僕にはさっぱりわからんので、fj や Linux 関係の
メーリングリストで質問してみて下さい。

No. 780 # Manabu Takayama [URL] [E-mail] 2000/03/06 (月) 04:49
どうも。高山です。

現在 Perl の syntax を絶賛嫌悪中(意味不明)。
あの $ やら % やら @ やら & を見ると殺意が沸きます(笑)。

# 1 ヶ月後には謎の世界な気が。二次元配列とか作るの面倒だし……。

tmpl2html の改造を申し出て墓穴を掘ったかもしれません(苦笑)。
Ruby で書けたら嬉しいと思う今日この頃。

# ちなみにバグを 1 ヶ所発見しました。tmpl2html を通した後に
# 余計な改行が入るという物です。

No. 781 # 68user 2000/03/06 (月) 06:12
> tmpl2html の改造を申し出て墓穴を掘ったかもしれません(苦笑)。
iso-2022-jp 化は、おまかせします。はっきり言って、
メリット云々じゃなくて美意識の問題ですよね?

あと、EUC 化するとしたら、ついでに jcode::euc2jis/jis2euc を
削って直接 EUC の HTML を書き出すようにしていただけませんか?
# ちょっと CGI が重すぎるので、処理を減らしたい。

> Ruby で書けたら嬉しいと思う今日この頃。
まだ ruby は初心者同然なので、既存のスクリプトの書き換えは
ご勘弁を。でも新規スクリプトなら…ruby でも…いい…かな…?
でもあんまり難しいことしちゃイヤ (^^;

No. 782 # Manabu Takayama [URL] [E-mail] 2000/03/07 (火) 07:34
> メリット云々じゃなくて美意識の問題ですよね?
嫌な事態への予防策です。確立的には結構低いでしょうけど。
でも、熊谷さんが待ったをかけていますので、まだしません。
# む〜。僕の勘違いだったりするのかな?

美意識の方は、持ち出すと際限が無いので(笑)。考慮外。

> まだ ruby は初心者同然なので、既存のスクリプトの書き換えは
僕も初心者同然ですけど、触ってると面白いです。
それにオブジェクト指向な所がいいです。僕は Java から入ったので、
実はかなりオブジェクト指向大好き人間なのですよ。フフフ(笑)。

No. 783 # Yuuki 2000/03/08 (水) 00:22
CVSって最近までなんのことだかさっぱりわからなかったんですよ。

ちょっと前いじってみようと思って、Windows版のCVS(WinCvsじゃなくてコマンドラインの)
がダウンロード出来る所まではわかったものの使い方がわからずにそのままでした。:-)
それで今日、何気に高山さんのホームページを見たらCVSの項目があったので
そこのページを見ながらやってたら、とりあえず使えるようになりました。(^^;
しかし、もう、必需品となりつつある。

とりあえず使えるようになった所で、以前は謎だった
http://www.ruby-lang.org/ja/download.html
pserverをお使いの方は〜 に書いてあるとおり打ちこんだら
ダウンロードが始まって、、その時はすごい嬉しかったです。(^^;

今度はVineLinuxにCVSをインストールしてWindows側から管理出来るようにしてみたいな・・と。
# 何が言いたいのかよくわからない書きこみになってしまった。:-)

No. 784 # 68user 2000/03/08 (水) 12:28
> でも、熊谷さんが待ったをかけていますので、まだしません。
あれは待ったなのかな? 別に問題ないんじゃないでしょうか。

なお、僕の方は3月15日前後から暇になります。運用開始は
今月中の予定。でも予定は未定 :-)

> CVS
/etc/* とか、個人用 dot file とか、ここの web page も
cvs で管理したいんだけど、なかなか…。

No. 785 # Manabu Takayama [URL] [E-mail] 2000/03/08 (水) 23:07
> それで今日、何気に高山さんのホームページを見たらCVSの項目があったので
あ。役に立ちましたか。良かった。CVS 便利ですよね。
# そいえば自分のウェブ随分更新してない……。

僕は自分のウェブを CVS で管理してますが、
$Id$ などで更新時間を表示できるので楽です。

> 運用開始は今月中の予定。でも予定は未定 :-)
早く運用始めないと忘れ去られそうですね(汗)。
# 既に忘れられてるかも……(苦笑)。

No. 786 # 68user 2000/03/08 (水) 23:33
> # 既に忘れられてるかも……(苦笑)。
ML が立ち上がって はや14ヵ月。完全に忘れられてます (^^;

> http://www.bsdclub.org/~motoyuki/d/d200003a.html#08-1-2
ほえ〜。

No. 787 # Yuuki 2000/03/09 (木) 15:34
> # そいえば自分のウェブ随分更新してない……。
CVSの項目に
http://www-vox.dj.kit.ac.jp/%7enishi/cvs/cvs-manual/cvs-jp_toc.html CVSの説明書日本語訳?
http://www.freebsd.org/~fenner/cvsweb/ CVSWEB
を追加しとくのはどうでしょうか?


前に僕が書いたcygwinでforkは使えますってやつですけど試してみました。
(http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=756)

http://x68000.startshop.co.jp/~68user/net/sample/echo-server-fork.pl
をまったく変更しなくてもWindowsで動きます。
その時のスクリーンショットを、、:-)

まずは1つのtelnetで...
http://homepage1.nifty.com/tyuuki/68user/mt_echo/client.png
http://homepage1.nifty.com/tyuuki/68user/mt_echo/server.png

2つ同時にアクセスされても大丈夫。
http://homepage1.nifty.com/tyuuki/68user/mt_echo/thread.png

No. 788 # へにか [URL] 2000/03/09 (木) 22:47
Yuuki様;
forkできているみたいですね! 情報ありがとうございます。
僕は、会社のマシンで実験したのですが、やっぱり落ちてしまいます・・・
なので、あきらめていたのですが、まだ検討の余地があるってことですね。
う〜ん、なんでだろう? ←自問自答です。

68user様;
すいません、やっとselectの概念がわかったのと、以前いただいた
スクリプトを試してうまくいっているところまでしか進んでいません。
まだまだ道のりが長そうです。なかなかいい報告ができないので、
心苦しいです・・・

No. 789 # お嬢(♂) [E-mail] 2000/03/10 (金) 00:48
はじめまして。
これからUNIX(LINUX)を導入して、ネットワークプログラミングを
勉強しようとしている者です。
まだ全部読んでませんが、このページはすごくわかりやすく、
しかも私のレベルに合っているので重宝します。
これからも、この調子で更新していってください(^^)

68userさんはすべての作業をX68000でやられているのですか?(^^;

No. 790 # Manabu Takayama [URL] [E-mail] 2000/03/10 (金) 03:26
ん〜。眠いぜ。

> ML が立ち上がって はや14ヵ月。完全に忘れられてます (^^;
たまに「この作業報われない?」と思う瞬間があります(笑)。
某 www-links-core ML も、ほぼ二人の世界ですし。

> http://www.bsdclub.org/~motoyuki/d/d200003a.html#08-1-2
何か段々商業色が強くなっていくようで、個人的には嬉しくないです。
最近の FreeBSD はどうも妙な方向に向かいつつあるみたいな感じが。

No. 791 # ハリー [E-mail] 2000/03/10 (金) 12:00
すいません、少しお聞きしたいんですが、FreeBSDにDDS規格のDAT装置を
取り付けたいのですがSCSIやらデバイスの設定やらさっぱりわかりません
助けてください。
よろしくお願いします。

No. 792 # 68user 2000/03/10 (金) 14:53
> 前に僕が書いたcygwinでforkは使えますってやつですけど試してみました。
なるほど。fork できる Win 用 perl *も* あるってことでしょうか。

> すいません、やっとselectの概念がわかったのと、以前いただいた
> スクリプトを試してうまくいっているところまでしか進んでいません。
ま、一歩ずつ着実に…。

> 68userさんはすべての作業をX68000でやられているのですか?(^^;
Using FreeBSD with X68000 spirit ということで :-)

> すいません、少しお聞きしたいんですが、FreeBSDにDDS規格のDAT装置を
> 取り付けたいのですがSCSIやらデバイスの設定やらさっぱりわかりません
僕もわかりませんので、FreeBSD-users-jp などで質問して下さい。
なお、こういう質問の仕方では「何がわからないのか、デバイスが
認識されないのか、設定方法がわからないのか」などの情報が全く
書かれていないので、投稿する際は そこらへんを詳しく書いて下さい。

あと、
    http://www.jp.FreeBSD.org/search.html#doc
で、DDS で検索するといくつか引っかかります。

No. 793 # かむかむ 2000/03/10 (金) 15:32
こんにちは。
はじめて投稿さしてもらいます。
smbclientコマンドのオプション-Mってありますよね。
UNIX→WinPCへの送信はOKなんですが、
WinPC→UNIXへの送信メッセージってどうやってWinPCのメッセージを参照
するのですか?
#ちなみに、使用UNIXはRedHat LINUX5.2(J)です。
宜しくお願い致します。

No. 794 # むらた [URL] [E-mail] 2000/03/11 (土) 05:31
こんばんわ。どーしても FTP が作りたくなったので、探して
みたら辿り着きました。 FTP の資料を探していたくせに、
いま調べまくって Proxy を VisualBasic で作成中です。
  RFC を読んでからにするべきなんでしょうが、すでに
コンテンツや画像の中継機能は実装できていますが、マルチで
まともに動くのが怪しい VB で作っているのと、状態遷移図を
書かずにやってるのとで、サーバからのデータを取りこみ
きれずにソケットが閉口(笑)してしまいます。

    単純なデータ処理なら既に完成しているんでしょうが Java を
横目で眺めつつ、ノウハウの蓄積などと嘯いております。

    ドカチンプログラマ(Oracle屋さん)なので、そっち方面では恩返しが
出来ると思いますが、メインはやっぱり Windows なので、Oracle on
  Unix となるとちょっと…。しかも Socket やってるくせに私は
C/C++が使えません(^^;)とはいえ NetBSD/X68k なんかも知ってたり
して、支離滅裂なコンピュータ人生です。

またちょくちょく顔を出させてください。でわまた。

No. 795 # Yuuki 2000/03/11 (土) 13:32
へにかさん
> forkできているみたいですね!
こっちの環境書くの忘れてました:-)
Windows98 Cygwin B20
Perl 5.005.62
(http://cygutils.netpedia.net/B20/perl-5.005_62.html)

cygwin1.dll
(ftp://gd.tuwien.ac.at/gnu/sourceware/cygwin/snapshots/cygwin1-20000306.dll.gz)

http://www.jaist.ac.jp/~fujieda/cygwin/snapshot.shtml
とか参考になるかもしれません。

No. 796 # お嬢(♂) [E-mail] 2000/03/12 (日) 02:21
また書き込んじゃいます。てへ。
なんかFreeBSDとBSD/OSの会社が合併するようですね。

Linux勢に押され気味のBSD勢ですが、今後はBSDも活気が
出てきますかね?

っていうか、まだLinuxかBSDか迷っています。
ノートPCで動かす予定なので、ノート関連の資料が多く揃っている(?)
BSDもいいなぁなんて。

No. 797 # へにか [URL] 2000/03/12 (日) 09:42
Yuuki様;
cygwin1.dllを入れ直したら、無事forkしました。
色々、ありがとうございます! 嬉しいです。
嬉しさのあまり、証拠画面を作成しました。
以下に示します。宜しかったらご覧ください。
http://henika.virtualave.net/echotest.gif

No. 798 # 68user 2000/03/12 (日) 18:11
> smbclientコマンドのオプション-Mってありますよね。
すいません、samba の設定をしたことがないのでわかりません。

> いま調べまくって Proxy を VisualBasic で作成中です。
HTTP proxy ですか? それとも ftp?

> 状態遷移図を書かずにやってるのとで、サーバからのデータを
> 取りこみきれずにソケットが閉口(笑)してしまいます。
あ〜、普通 状態遷移図を書くもんなんでしょうか。
僕は素人なので思いつくままコーディングしている
のですが。その結果、close でソケットが閉じず、
shutdown しなきゃならないプログラムが出来上がりました (笑)。

> なんかFreeBSDとBSD/OSの会社が合併するようですね。
FreeBSD Project に資金提供して、その見返りとして CD-ROM を
売っている (と言っても、誰でも CD-ROM を売ってもいいんです
けどね) Walnut Creek と、BSD/OS を作っている BSDI が合併、
ということです。念のため。

個人的には、OpenBSD,NetBSD 陣営とも一本化してほしいもんです。
人手が分散するのが惜しい。Linux 界も、あそこまでディストリ
ビューションを乱立させることもないと思うんですが…。

> へにかさん、Yuuki さん
Windows ユーザへの注意点とか、ここから perl を落とせとか、
そこらへんがまとまってるリンク先があれば、
    http://X68000.startshop.co.jp/~68user/net/
に付け加えますが、何かいいところはありますか?

No. 799 # むらた 2000/03/12 (日) 21:36
いまつくってるのは、なぜか http-proxy です。
状態遷移図とかは、商売上お客さんに納入しないとだめなときが
ありますが、あればあったで、自分が混乱したときに役立ちます(笑)

No. 800 # PUYO [E-mail] 2000/03/13 (月) 19:22
質問です。
wwwboardに以下のような行がありますが、
print <CACHE>;
これは my @line = <CACHE>; print @line;
と同じような動作をするのでメモリに負担がかかるような気がするのですが
どうなのでしょう?

No. 801 # 68user 2000/03/13 (月) 22:12
> メモリに負担がかかるような気がするのですが
う、その通りですね。修正しておきます。ありがとうございました。

No. 802 # 68user 2000/03/13 (月) 23:48:05
> print <CACHE>;
の他にも、なんやかんやと掲示板をいじってみたり。

というわけで、テスト。
すいませんが、古い cookie は多分効きません。

No. 803 # Yuuki [URL] 2000/03/14 (火) 02:16:15
> Windows ユーザへの注意点とか、ここから perl を落とせとか、
> そこらへんがまとまってるリンク先があれば、
僕が見てきたページには無いようです。
僕がそこらへんをまとめたページを作りますね。
WindowsでPerlをやる時の注意点 てな感じで。

> 古い cookie は多分効きません。
例によって、名前を入力する場所に "68user"と入ってました。:-)

No. 804 # 68user 2000/03/14 (火) 02:53:23
> 例によって、名前を入力する場所に "68user"と入ってました。:-)
ありゃ、古いバグを掘り起こしてしまった…。

No. 805 # Yuuki [URL] 2000/03/14 (火) 03:58:05
まとめたページ、とりあえず作りました。
まだ情報が少ないですが、、(なのでまだ公開してない)
http://homepage1.nifty.com/tyuuki/perl/windows_perl.html

かなり眠い状況で書いたので間違いあるかも。です。:-)

No. 806 # へにか [URL] 2000/03/15 (水) 08:27:36
あ、Yuuki様が既に・・・
でも折角なので、投稿してしまいます。

ご希望に何処まで沿えるかどうか分かりませんが、これが良いと思います。
http://www.st.rim.or.jp/~nakata/ (但し後半部分のリンク集)

ただ、これだとfork可能な、cygwin上のperlへは辿り着かないので、
Yuuki様が紹介された、以下のサイト、
http://www.jaist.ac.jp/~fujieda/cygwin/
更に、cygwin1.dllを入れ替えなければならないので、その参考として、
http://www.jaist.ac.jp/~fujieda/cygwin/snapshot.shtml
を付け加えればいいかと存じます。

cygwinをインストールして、perlをインストールして、cygwin1.dllを
入れ替えて、やっと動作するので、forkが必要な場合以外でインストール
するのはかなりしんどいかも知れません。ActivePerl(http://www.activestate.com/)
がforkをサポートさえすれば、最初に紹介したサイトが一番良いと思います。

ついでに進捗;
    なんとか、mime typeを認識まで出来ました。後はtextのfilterを入れる
    寸前で(schedule的に)停止中・・・

あと、全く関係無いですが、状態遷移図からプログラムを吐き出すソフト、
って存在するのですか? フローチャートだと、
programa(http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/)が面白いです。
ハードだと、stateCADやDesignBookが有名です。

※ cookieを久しぶりに食べたら、名前が へにか Email になって
        ました。また、WWWC(更新チェッカ)で3/14 8:22にチェックしたら、
        3/13 22:12でした。更に、曜日が、羨ましい状態です。

No. 807 # A-trap 2000/03/15 (水) 14:30:43
はじめまして。UNIXのコマンドの質問なのですが...

    % ls -l
    -rw-r--r-- 1 *** ***** 2449 Mar 14 08:17 **.*
    -rw-r--r-- 1 *** ***** 1739 Mar 14 08:17 **.*
    -rwxr-xr-x 1 *** ***** 1223 Mar 8 00:04 **.*
    -rw-r--r-- 1 *** ***** 4135 Mar 14 08:20 **.*
    -rw-r--r-- 1 *** ***** 29140 Mar 14 08:20 **.*

と、こんなかんじで表示されると思うのですが、そのとき↓のように表示したいときは
どうすればいいですか?

    2449
    1739
    1223
    4135
    29140
こんなかんじにファイルサイス゛列だけを表示したいのですが教えてもらえますか?

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

No. 808 # kuw 2000/03/15 (水) 14:39:32
こんにちは。

> ファイルサイス゛列だけを表示したい

わたしなら、
ls -l | awk '{print $5}'
かなぁ。
awk って便利ですよね〜

No. 809 # A-trap 2000/03/15 (水) 15:30:22
kuwさん、ありがとうございました。
助かりました。

No. 810 # Leiji 2000/03/15 (水) 22:14:36
はじめまして

レンタルサーバを借りていて、telnetで少々時間のかかるコマンドを
バックグラウンドで順番に実行させようと思っているのですが、
ログアウトするとどうもプロセスが終了してしまうようなのですが・・・
ログアウト後も終了させないでつづけさせるにはどうしたら良いのでしょう?
ちなみに、commandA&&commandB &っていうふうにコマンドラインには
入力しています。

超初歩的な質問だとおもいますが、よろしくお願いします。。。

No. 811 # 68user 2000/03/15 (水) 23:20:33
> ログアウト後も終了させないでつづけさせるには
    http://X68000.startshop.co.jp/~68user/unix/pickup?nohup
でいいですか?

> 更に、曜日が、羨ましい状態です。
おぉ、毎日が日曜日…。

Win+perl の件は後程。

No. 812 # あき [E-mail] 2000/03/16 (木) 20:13:04
    スゴい深刻な問題抱えてますーーーー。
    連休明けまでに(3月20日までに)プレイステーション2売ってくれる
人いませんかーーーー?????
    チョットクライ高くてもかまいませんんんん。

No. 813 # Yuuki [URL] 2000/03/16 (木) 23:30:15
> cygwinをインストールして、perlをインストールして、cygwin1.dllを
> 入れ替えて、やっと動作するので
勘違いしてCygwinをダウンロード(13MB)する人がいるかもしれないので一応。
CygwinPerlをインストールするためにCygwinをインストールする必要はないです。
どうするかというと、それは僕のページに書いてます。:-)
(http://homepage1.nifty.com/tyuuki/perl/windows_perl.html)

No. 814 # Leiji 2000/03/17 (金) 03:16:47
>68userさま
お返事ありがとうございます。
リンク先のnohupコマンドを使ってやってみたのですが
やっぱりログアウトするとプロセスが終了してしまうみたいです。

nohup /home/hoge/hage/commandA&&/home/hoge/hage/commandB &
というかんじで入力しているんですけど。。
実行すると「nohup: appending output to `nohup.out'」
というメッセージがでます。
こういうやり方でいいんですよね?
サーバの設定の問題なのかな?
どうすればいいんだろうか。。

No. 815 # 68user 2000/03/17 (金) 05:26:43
> 実行すると「nohup: appending output to `nohup.out'」
ということは bash をお使いだろうと思いますが、こちらでは
    nohup commandA && nohup commandB &
でできました。tcsh なら
    ( nohup commandA && nohup commandB ) &
とサブシェルに実行させれば動くようです。

No. 816 # へにか [URL] 2000/03/17 (金) 23:13:17
Yuuki様;
>勘違いしてCygwinをダウンロード(13MB)する人がいるかもしれないので一応。
うっ、た、確かに・・・ ご指摘ありがとうございます。
会社のマシンでも、pathからcygwinをはずして、usr\以下にpathを
追加し、そこにcygwin1いれると、動いてました。
あと、Yuuki様のページ、なかなかインストールしやすくなっていて、
感心しました。

No. 817 # こてつ [E-mail] 2000/03/22 (水) 21:04:54
DVDとCD−RWが一緒になっているドライブがあると聞いたけど、これってお買い得?

No. 818 # 68user 2000/03/22 (水) 22:10:20
モジュール関係を中心に更新しました。
    http://X68000.startshop.co.jp/~68user/net/
さすがにネタが尽きてきた & 飽きてきた。何かおもしろい
題材ないですかね。NNTP も ICQ もいまいち食指が動かないなぁ。

あと、Windows+perl を使うときの参考ということでリンクを
張りましたが、よいですか?>Yuuki さん

# 「よいですか?」というのは (失礼な言い方でなりますが)
# こういう分野は情報がすぐに古くなるので、定期的に更新を
# 続ける気はおありですか? ということ。
## 僕は Windows 使ってないため、情報が正しいかどうか全く
## チェックできないので。

なお、ちょっと忙しくなるので、26〜27日あたりから
4月中旬まで しばらく掲示板を閉めます。

No. 819 # かりり 2000/03/24 (金) 07:32:04
>こてつさん
DVDとCD-RWくっついてるやつは
性能的にみても,別々に買ったほうが安いので
辞めといたほうがよろしいかと。

>68user様
自作機で新マシン作りました。ハード関係
前より詳しくなりましたよ。CGIは相変わらずですけど。
奥深いですね。自分で組むと全く動かないです(w

No. 820 # Yuuki [URL] 2000/03/24 (金) 09:38:40
> あと、Windows+perl を使うときの参考ということでリンクを
> 張りましたが、よいですか?>Yuuki さん
はい。大丈夫です。

No. 821 # 68user 2000/03/25 (土) 07:13:21
> はい。大丈夫です。
了解です。

> 自分で組むと全く動かないです(w
CGI ってのはデバッグしにくい環境なので、いろいろと
がんばってみて下さい。

いろいろとありまして、転載についての説明を
    http://X68000.startshop.co.jp/~68user/
に加えました。ご一読下さい。

予告通り、4月中旬まで掲示板は閉めます。ではまた。

No. 822 # ftptransのforkのところをselectで書くと [E-mail] 2000/04/18 (火) 10:13:19
68user様
突然掲示板に書き込む無礼をお許しください。
私はネットワークの勉強をし始めたばかりの薩摩という者です。
こちらのページは大変奥深く、いつきても感動してしまいます。

ところで、今回意を決して掲示板に書き込むことに決めたのは、
ftptransのforkの部分を4引数selectを用いたらどうなるかを
知りたかったためです。

自分で考えてみたのですが、ソースが汚くなってしまい、
もし68user様ならどのように書かれるのか気になって
しまったのです。本当ならこういうソースはメール等で
お送りすべきとは思うのですが、こちらの方でするように
とありましたので、いかに書きます。なお、ftptrans内で
用いられているサブルーチンはそのまま使わせて頂きました。

if ($passive){
    &client_work(DATA,$data_connection_host,$data_connection_port);
}

$rin = &set_bits(COMMAND,DATA,DATA_WAITING);

while(1){
    $ret = select($rout=$rin,undef,undef,undef);

    if(fileno(COMMAND) && vec($rout,fileno(COMMAND),1)){
        $ret = &read_response;
        if ( $ret =~ m/^5/ ){
            print STDERR $ret;
            close(DATA);
            close(DATA_WAITING);
            exit;
        }elsif( $ret =~ m/^1/ ){
            if ($mode eq put){
                open(IN,$infile) || die "$infile: $!";
                while (<IN>){
                 print DATA $_;
                }
                close(IN);
            }
        }elsif( $ret =~ m/^2/ ){
            close(DATA);
        }
    }elsif(fileno(DATA_WAITING) && vec($rout,fileno(DATA_WAITING),1)){
        accept(DATA,DATA_WAITING);
        $rin = &set_bits(COMMAND,DATA,DATA_WAITING);
        close(DATA_WAITING);
    }elsif(fileno(DATA) && vec($rout,fileno(DATA),1)){
        open(OUT,">$outfile") || die "$outfile: $!";
        print OUT <DATA>;
        close(OUT);
        close(DATA);
        exit;
    }
}

sub set_bits {
    @sockets = @_;

    $rin="";
    foreach $sock (@sockets){
        if(fileno($sock)){
            vec($rin,fileno($sock),1)=1;
        }
    }
         return $rin;
}

sub to_bin {
    return unpack "B*",$_[0];
}

以上です。投稿が非常に長くなってしまいましたが、
気付いた点がありましたら御指摘いただけると幸いです。
また、68user様がかかれた物も拝見できましたら
ありがたいのですが。

以上、よろしくお願いします。

No. 823 # 薩摩 [E-mail] 2000/04/18 (火) 11:31:09
ごめんなさい。下の投稿をしたのは僕です。
名前が抜けていました。どうも削除はできないようなので、
もう一度投稿しました。
本当にごめんなさい。

No. 824 # へにか [URL] 2000/04/18 (火) 21:52:16
どうも、おひさしぶりです。再開おめでとうございます。
散々アドバイス頂いて、スクリプトも頂いて、そのおかげでなんとか
perl proxyを作れました。本当にどうもありがとうございます!
sysreadの返値がundefかどうかを判定するところではまってました。

これでやっと当初の目的(漢字変換および80桁で折り返す、ヘブライ語
のテキストをiso-8859-8-iからiso-8859-8)に取り掛かれます・・・

No. 825 # 68user 2000/04/18 (火) 22:44:09
ふう、やっとネットワークに繋がった。

> perl proxyを作れました。
あれを完成させてコメント付けて解説付けて公開するつもりでしたが、
全然進んでないので、置いておきます。
    http://X68000.startshop.co.jp/~68user/tmp/2nd-proxy.pl
へにかさんのが これより高機能なら公開して下さいね。

# 不具合:
#  POST の長さについて、実際のデータより少し多めに送ってしまう
#  ような気がする & たまに永遠にソケットを読みに行ってしまう
#  ことがある & ブラウザ側が途中で切断しても proxy 側が感知できない。
#  perl5.004 だと動かないような気がする。perl5.005_05 以降
#  ということで。

>薩摩さん
これって動いているんですよね。ならいいんじゃないでしょうか。
でもまぁ、せっかく select を使っているんだから、
> while (<IN>){
>  print DATA $_;
> }
せずに、read して 再度 select で待つとよいかもしれません。
そうすれば、「現在 〜% 読み込み中、あと何秒、(〜bytes/sec)」
なんてのを刻々と表示できますし。表示するかどうかは別としても、
僕ならそうすると思います。

No. 826 # 薩摩 [E-mail] 2000/04/19 (水) 09:11:08
68user様

有難うございました。なるほど、readを使うとは
思い当たりませんでした。これから挑戦してみます。

有難うございました。

No. 827 # UNIX初心者 [E-mail] 2000/04/20 (木) 10:42:14
68userさんへ

どうも、はじめまして UNIX初心者です。
私はUINXの勉強をし始めたばかりの岡野という者です。
こちらのページはいつもお世話になっています。

実は、userさんにgzipがなぜ使えないのか??
どうしても知りたかったため 投稿をしました。
gzipをインストールをして、pathで環境設定をしたんですが・・・・
バイナリーファイルを実行できません。

gzip -d bash-2.03-sol7-sparc-local.gz
と打ったのですが、
/GNUzip/root/usr/local/bin/gzip:execフォーマットエラー
こう出てきました。
なぜでしょう? OSはsolaris5.7です。

No. 828 # 68user 2000/04/20 (木) 12:50:37
exec フォーマットエラーという意味がわからんので確認して下さい。

適当なファイル foo を用意して、gzip foo で
foo.gz が作成されますか? できるなら、
bash-2.03-sol7-sparc-local.gz が壊れているんでしょう。

gzip foo でも exec フォーマットエラーとなるなら
gzip 自体がおかしいんでしょう。どうやってgzip を
インストールしましたか?

No. 829 # has 2000/04/20 (木) 17:27:53
>68user
こんちは。いろいろおつかれさまです。
もうおともだちはできましたか?

さて、早速ですが、以前作っていただいた掲示板のCGI、
実はダウンロードしたつもりで忘れていたみたいです。
いろいろ探してみたんですが、見つかりませんでした。
なので、お手数ですが、もっかいどっかにアップしてやって下さい。

No. 830 # tototo [E-mail] 2000/04/20 (木) 20:00:27
はじめましてこんにちは。
diffコマンドで質問があるのです。

最終行にnewlineがあるファイルとないファイルを比較したとき、
newline以外の部分が同じでも、その行は違うよと答えてきます。
newlineあるなしに関わらず内容部分だけでdiffするにはどうしたら良いでしょうか。
どうか教えてください。よろしくお願いします。

No. 831 # 68user 2000/04/20 (木) 21:45:07
> diff
うちの GNU diff-2.7 では、-b オプションで
お望みの動作をしているようです。

> もうおともだちはできましたか?
まぁ、それなりに。というより、ずっと一緒に研修受けてるから
自然に仲良くなるって感じですかね。

> もっかいどっかにアップしてやって下さい。
すんませんが、もうちょいデバッグしてから送ります。
どういうバグが残ってたのかも忘れてしまったので。

週末に仕上げる予定。

No. 832 # tototo [E-mail] 2000/04/20 (木) 22:12:52
68userさん、お返事ありがとうございます。

>うちの GNU diff-2.7 では、-b オプションで
>お望みの動作をしているようです

ぼくが使ってるやつで-bオプションを使ってもゆうこときいてくれないです。
何か他の方法あれば教えてください。お願いします。

No. 833 # 68user 2000/04/21 (金) 00:46:31
-y とか -B などはどうですか。なお、FreeBSD の diff では
    http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=diff&dir=jpman-3.4.0%2Fman
という意味です。ご自分の環境の diff のマニュアルを見て、
同じようなのを探して下さい。

なお、SunOS などに付いてくる低機能な diff じゃ無理かもしれません。

あとは perl などで最後の改行を削除してから diff、くらいしか
思い付きませんねぇ。

No. 834 # tototo [E-mail] 2000/04/21 (金) 09:26:10
68userさんへ
お返事ありがとうございます。

ぼくの使っているSunOS環境のdiffではダメなようですね。トホホ。
どうやら末尾のスペースまたはタブしか無視してくれないようです。
perlもつかえる環境ではないのです。仕事先なのでインストールもできないです。
またいろいろとチャレンジしてみます。

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

No. 835 # UNX初心者 [E-mail] 2000/04/21 (金) 10:13:01
65userさんへ
お返事ありがとうございます。

いろいろ調べてみたのですが、SPARC と INTEL
を間違えていたみたいです。
間違えてINTELをダウンロードしてしまったみたいです・・・・

bash-2.03-sol7-sparc-local.gzを展開したら
bash-2.03-sol7-sparc-localになってこれは展開できてるんですよね
でもその後にどうやってインストールしていいかわかりません。
お願いします 教えてください。

No. 836 # 68user 2000/04/21 (金) 13:09:08
> でもその後にどうやってインストールしていいかわかりません。
http://hiroyuki.oresama.org/tech/solaris/install.solaris.html
など。僕は package から入れたことがないので、詳しいことは
わかりません。

> ぼくの使っているSunOS環境のdiffではダメなようですね。
GNU の diffutils を入れるのは? SunOS のコマンドは
貧弱すぎて、僕はほとんど使ってないです。

No. 837 # へにか [URL] 2000/04/22 (土) 22:52:36
>へにかさんのが これより高機能なら公開して下さいね。

僕のproxyは、
1) 1st-proxy.plに対し、
    a) sysreadの返値をdefinedでチェックするところ、
    b) フィルタをかけられるようにしたところ、
    c) 環境変数を配列に貯えたるところ、
    以外は、あまり変わらないところ、
2)68userさんが示された、2nd-proxy.plの不具合の内容に対するような
    観点ではチェックしていない(というか、僕が遊べる程度でしかチェック
    していない)ところ、
という事で、まだまだ公開できるレベルではないです。

すいません・・・

No. 838 # CADファン 2000/04/23 (日) 23:36:33
疑問が何点かあります。
アスキー形式ファイルとは具体的に言えばどういう事なのでしょうか。
それと、中間ファイル、圧縮形式、プロッタ言語の意味がわかりません。
どうか、お教え下さい。困っています。
よろしくお願い致します。

No. 839 # 68user 2000/04/23 (日) 23:50:58
何の話かわからないです。CAD ですか?

> プロッタ言語
HPGL とかのこと? プロッタに座標 (10,20-200,300) の
直線を書かせるには (HPGL を解するプロッタならば)
PD10,20;PA200,300; (だったっけな?) という文字列を送れば、
あとはプロッタが適切に解釈して線を引いてくれるってこと。

アスキーと圧縮形式はコンピュータ一般の用語ですが、
CAD 界ではどうなのか知りませんので何とも言えません。
中間ファイルは CAD の処理系依存でしょう。多分。

なお、僕は CAD を全く知りません。

> 週末に仕上げる予定。
すまんす。仕上りませんでした>has

No. 840 # コペン 2000/04/24 (月) 17:09:22
SFCのドラクエ3ですが、
最後のゾーマにあえません。
のぼっても、もぼっても、くだっても、くだってもおなじ階段とかって、
関係あります????

No. 842 # かくた@ちばし [E-mail] 2000/04/25 (火) 17:42:58
こんにちは。cgi-mlの記事を見て、このサイトの存在を知りました。
大変参考になります。
ところで、
http://x68000.startshop.co.jp/~68user/net/pop3-2.html
に書かれている「Linux や Solaris の /etc/services には……」の部分で、
手元のSolaris2.5.1(x86)及びFreeSolaris7(x86)、Linux(Slackware,Plamo/98)を調べてみましたが、
pop3 110/tcp の記述になっていました。

Solaris2.5.1はわかりませんが、他の環境は私がデフォルト設定でそうなっているのを確認しましたので、
間違いないと思います。
68userさんが見られた設定は、管理者が書き換えたものではないでしょうか?

No. 843 # 68user 2000/04/25 (火) 22:29:32
> Solaris2.5.1(x86)及びFreeSolaris7(x86)、Linux(Slackware,Plamo/98)を
> 調べてみましたが、pop3 110/tcp の記述になっていました。
情報どうもです。僕が調べたのは Solaris 2.5.1 と 2.6 だったかなぁ?
Linux はバージョンはおろか、ディストリビューション名さえ覚えていません。
# NIS で Solaris2.3 から services を引っ張っていた可能性もあるなぁ…。

> 管理者が書き換えたものではないでしょうか?
片方の Solaris は わかっている人が管理してたから書き換えるような
ことはしないと思うし、もう一方の Solaris は素人が管理してたから
多分書き換えるようなことはしないと思いますが、既に確認できないです。

どなたか、この辺の情報をお持ちでないですか? 「うちの Solaris も
pop3 110/tcp」だった、と言っていただければ、その記述は削除しておきます。

No. 844 # かくた@ちばし [E-mail] 2000/04/26 (水) 09:25:37
> # NIS で Solaris2.3 から services を引っ張っていた可能性もあるなぁ…。
古いSolaris(2.5.1も十分古いか?(^^;)だと、pop-3とかで書いてある
可能性が高いですね。pop2だと、以下の記述になってます。

Solaris2.5.1(x86) /etc/services
pop-2 109/tcp # Post Office

Solaris7(x86) /etc/services
#pop2 109/tcp pop-2 # Post Office Protocol - V2
#pop-2 109/tcp # Post Office
(あ、さすがに7まで来るとコメントアウトになってる<デフォルト)

ということで、Solaris2.3からそのままservicesをもってきている場合は、pop-3の
記述であるのも頷けますね。

No. 845 # まめねこ 2000/04/26 (水) 11:55:05
ただいまWAPのペ−ジを作成していますが、どうも文字のエンコ−ドがうまくいかずいきづまっています。
誰か助けてください。

No. 846 # かくた@ちばし [E-mail] 2000/04/26 (水) 16:27:30
> ただいまWAPのペ−ジを作成していますが、どうも文字のエンコ−ドがうまくいかずいきづまっています。
> 誰か助けてください。
環境がどうなのか全く分からないので、的外れかもしれませんが、
HDMLの文字コードに関する問題ならば、
http://www.houshinji.org/hdml.html
のサイトが参考になるかもしれません。

No. 847 # 68user 2000/04/27 (木) 21:38:16
> Solaris2.3からそのままservicesをもってきている場合は、
> pop-3の記述であるのも頷けますね。
では、次回更新時に「古い Solaris (おそらく Solaris 2.3 あたり)
では、pop-3 となっている可能性があります。最近のものだと
大丈夫でしょう。」としておきます。

そういえば、あのときの Linux は…Netboy さんのとこだったかなぁ。
確認しておこう。

No. 848 # 68user 2000/04/28 (金) 01:10:48
Netboy さんに聞いてきました。
    http://www.lunartecs.ne.jp/~segabito/cgi/bbs/minibbs.cgi
debian 系が pop-3 なのではないか、だそうです。
# Linux ってのは Slackware/Redhat/debian 系の3本柱があるんですよね?
# で、Vine は debian 系…?

No. 849 # Netboy [E-mail] 2000/04/28 (金) 07:25:58
失礼します.

>Vine は debian 系…?
いえ,Redhat系です.
設定ファイル作成部分のみDebian系の(古めの?)スクリプトを元に
独自のものを用意した...のかな,という感じです.
インストーラは配色がいい感じの独自のものでした.

Linux関連で'pop-3'になっているものは,どこか当時の
Debianの香がする,ということだけ判りました.

今のDebian(2.2?)は判りません.
おじゃましました〜.

No. 850 # 68user 2000/05/01 (月) 19:45:41
どうもです。

というわけで、やはり pop-3 な環境もあるようだ、ということを
追記しておきます。

No. 851 # 薩摩 2000/05/03 (水) 17:12:32
68user様

こんにちは。
以前お世話になりました薩摩です。
その節はありがとうございました。

実は、68user様のecho-serverプログラムを参考にしまして
ローカルで動くftpproxyを作ったのですが、echo-server
プログラムにftp処理をくっつけただけのプログラムになって
しまいまして、知り合いに配布しようかと考えているのですが、
CGIの引用は自由とは書いてありましたが、これは許可を
取らなくてはと思い、書き込みをしました次第です。

配布してもよろしいでしょうか?

No. 852 # 68user 2000/05/04 (木) 21:00:02
無償配布ならば (メディア代などは受け取っていいです)、
プログラムの再配布・改変はご自由にどうぞ。

ちゃんと決めないといた方がいいかなぁ。とりあえず GNU の
精神を尊重して、GPL チックに扱っていただけると
うれしいです (いいかげんだなぁ)。

No. 853 # 68user 2000/05/04 (木) 21:01:25
テステス。曜日を直したつもり。すいませんが、また cookie が
クリアされてるかもしれません。

No. 854 # 薩摩 2000/05/05 (金) 18:53:53
68user様

配布の許可ありがとうございます。

GNUの精神を尊重して、GPLチックに扱わせていただきます。

これからGNUとGPLを調べなきゃ。

本当にありがとうございました。

No. 855 # へにか [URL] 2000/05/08 (月) 14:49:30
お久しぶりです。

前回、公開しないと言ってしまいましたが、virtual host対応にして、外部フィルタを
使用できるようにしたので、公開したいかと存じます(実はヘブライ語が表示できたので、
嬉しくって嬉しくって仕方が無い←68user様のおかげです、ありがとうございます)。

現在、 http://henika.virutalave.net/japanese/proxy.htm で、仮公開(どこからも
linkしていない)しています。
正式な公開(linkを僕のサイトから張る)に先立ち、説明の書き方等で問題があるか
どうか、是非ともご確認して頂きたいと存じます。お手数ですが、宜しくお願い
致します。いつになるか分かりませんが、同じような文面で、他言語にも翻訳しようかな、
とも、もくろんでいます。

因みに、
1)正規表現が分かってない and/or 恥ずかしいなぁ。
2)よっくもまぁ、ここまで支離滅裂に改造したなぁ。
3)たまに再起動しないと、clientからの新しいrequestを受け付けてくれない。
4)clientからのrequestが増えると、clientはrequestした状態で停止したように
    なってしまうらしく、proxyのlogを見ると、clientからrequestされているはずの
    URIがrequestされていない(Netscape Navigator 4.04[ja]で確認)。
5)変数名を短く、しかも4tabにしました。
6)日本語で掲示板に書き込む際には、その掲示板がjcode.plなどで日本語を処理して
    いないと、文字化けする可能性がある(だから、先ほどview-script.cgiで中身を確認
    しようとしたのですが、失敗したので、やむをえず、MSIEで書き込んでいます)。
という、特徴があります。

追伸:
68user様の掲示板、cookieはクリアされてないみたいです。
あと、曜日は、以前のbugがあったままのほうが、嬉しいです・・・

No. 856 # へにか [URL] 2000/05/08 (月) 18:14:27
タイプミスしました。

誤 : やむをえず、MSIEで

正 : やむをえず、proxyを経由しないで

すみません・・・

No. 857 # ハリー 2000/05/11 (木) 12:04:22
すいません、ちょっとお聞きしたいのですが、viの設定はどこでどのように
すればよいのですか?今の設定では画面の半分くらいまでしか文字が表示さ
れないのですが。
ちなみにテラタームでそのマシンにつなぎに行ってます。

No. 858 # 薩摩 [URL] 2000/05/11 (木) 12:50:34
>68users様
以前配布の許可について質問させていただきました薩摩です。

このたびホームページを開設したしましたので、
展示しているスクリプトについてご意見を伺えると
幸いです。

よろしくお願いします。

http://koten.hypermart.net/

No. 859 # 68user 2000/05/12 (金) 01:05:28
> 正式な公開(linkを僕のサイトから張る)に先立ち、説明の書き方等で問題があるか
> どうか、是非ともご確認して頂きたいと存じます。
別に問題ないです (特に確認を求める必要はないですよ。念のため)。
時間がないので、すいませんがスクリプトは読んでません。

> http://koten.hypermart.net/
うちの NN4.61 で見ると、何も表示されないです。

> 今の設定では画面の半分くらいまでしか文字が
> 表示されないのですが。
環境変数 TERM で何とかなりませんか。env TERM=cons25 vi とか
env TERM=VT100 vi とか。あるいは TeraTerm の設定かも
しれませんが、使ってないので詳しくはわかりません。

No. 860 # へにか [URL] 2000/05/12 (金) 08:01:24
68user様;
どうもありがとうございます。では、近日中に公開いたします。

ハリー様;
ウィンドウサイズの縦が50行くらいで半分くらいになっているなら、
以下の方法がよいかもしれません。うまくいかなかったらすみません。
Setup->Terminalで、開いた画面で、
Terminal sizeのTerm size=win sizeのチェックボックスにチェック
すると、うまくいきませんか? 因みに、Tera Term Pro version 2.3です。
僕は、これでうまくいっています(環境変数は特に設定していなかった
ような気がします)。

No. 861 # 薩摩 [URL] 2000/05/12 (金) 09:13:26
>68users様
大変申し訳ございません。僕はIE5を使っているのですが、
見れていたので問題ないと思っていました。
自分自身の未熟さを知りました。すみません。

少し手直しをしたのですが、見れますでしょうか?

http://koten.hypermart.net/

No. 862 # 68user 2000/05/14 (日) 02:47:58
> 少し手直しをしたのですが、見れますでしょうか?
見られました。

個人的な意見ですが、串や鯖などの言葉は好きになれません。
もちろん薩摩さんのページですので、どういう言葉を使うかは
薩摩さんの自由なんですが。
# スクリプト自体に関する感想でなくてすいません。

No. 863 # 砒(ひ) 2000/05/14 (日) 10:25:53
トップページの 他では役に立たないスクリプト&ファイル が全て
500 エラーで見られないんです。
申しわけありませんが直して頂ければ...

No. 864 # 薩摩 [URL] 2000/05/14 (日) 15:14:03
68user様
>見られました。
ありがとうございます。

>個人的な意見ですが、串や鯖などの言葉は好きになれません。
>もちろん薩摩さんのページですので、どういう言葉を使うかは
>薩摩さんの自由なんですが。
いえいえ、私の方こそ気分を害させてしまいまして、すみませんでした。
本来ならば、来ていただけるだけでも光栄でしたのに、
このようなことになってしまい、私も反省しています。
こういった言葉を使うことがあまりよくないということが
わかりました。勉強になりました。

># スクリプト自体に関する感想でなくてすいません。
言葉の方も、手直しいたしましたので、今度来ていただける
機会がありましたときにお願いします。
それまで僕も精進して少しでも68user様に追いつけるように
なりたいです。

本当にありがとうございました。そして、すみませんでした。

No. 865 # 68user 2000/05/14 (日) 15:27:41
> トップページの 他では役に立たないスクリプト&ファイル が全て
> 500 エラーで見られないんです。
ご報告ありがとうございます。直しました。

No. 866 # 琢磨 2000/05/15 (月) 04:24:12
はじめまして。
いつも参考にさせていただいています。

いきなりな質問でなんなんですが、私は現在PerlでのWebオートパイロット
スクリプトを開発中でして、ちょっとお聞きしたいことがあります。
作業ディレクトリが./として、ダウンロードしてきたファイルを
./dir/fileに保存しようとしたとき、open(FH, ">./dir/file")
ではdieしてしまうんです。
原因は./dirが無いからだ、というのは分かるんですが、ではその都度
mkdirしていかないとだめなんでしょうか?
このmkdirも当方の環境がWindowsのせいかうまくいきません。
`md dir`とかは汎用性が著しく無くなるので避けたいです。
打開策があるなら是非ご教示ください。

上でも少し触れましたが、当方の環境はWindows98+ActivePerlです。

No. 867 # 68user 2000/05/15 (月) 06:24:44
> ではその都度 mkdirしていかないとだめなんでしょうか?
そうです。

> このmkdirも当方の環境がWindowsのせいかうまくいきません。
Windows で mkdir が失敗するとは初耳ですが、本当でしょうか?
どういう風に書いてるんですか?
# Windows + perl の環境がないので試せませんが。

それはそれとして、perl5 なら深い階層のディレクトリを
一発で mkdir してくれる File::Path という標準モジュールが
あります。詳しくは perldoc File::Path で。

No. 868 # 琢磨 2000/05/15 (月) 08:49:53
> Windows で mkdir が失敗するとは初耳ですが、本当でしょうか?
> どういう風に書いてるんですか?
申し訳ありません、気を取り直してもう一度試してみるとうまくいきました(^^;
と言うかmkdirで失敗する現象が再現しません。
またWindowsのファジーさにやられた気がする・・・
お騒がせしました。
一応、
mkdir "./dir", 0604;
と言う感じで書いてます。
以前はエラーメッセージは出ないものの、ディレクトリが作成されていない
と言うような状況でした。

> それはそれとして、perl5 なら深い階層のディレクトリを
> 一発で mkdir してくれる File::Path という標準モジュールが
おぉ、見てみます。
ありがとうございます。

と、言うわけで、失礼しました。

No. 869 # 砒(ひ) 2000/05/15 (月) 22:54:58
先日はジンソクな対応ありがとうございました。

grep について質問なのですが、analog で apache のログを解析するとき
/member/ 以下が邪魔なので grep などにて `/member/' の文字が入った行を
取り除きたいのです。が、マヌアルを見てもそれらしきオプションが見当たりません。
もしなにか方法があったら教えてくださいませ。

No. 870 # 68user 2000/05/15 (月) 23:02:52
grep -v /member/ filename でいいですか?

No. 871 # 砒(ひ) 2000/05/16 (火) 01:07:12
> grep -v /member/ filename

あ〜〜〜〜できましたわぁ〜〜感謝感激
よく読んでなかったですね…
ありがとうございましたー

No. 872 # 入海 2000/05/19 (金) 18:35:37
はじめまして。

「他では役に立たないスクリプト&ファイル」のうち、
nslookup.cgiは、他の方のものと比べ複数入力が可能な点でいいなと思い、
何とかこちらの環境でも使えるように試行錯誤したのですが、
結果表示の際に「ホスト名」「IPアドレス」と表示されるべき部分が、
うまく表示できません(ナカグロ=黒点になる→文字化け?)。
実質的な実りの部分は全然問題ないのですが。

ソース中、put_data のサブルチに渡している引数だと思いますが、
$desc のローカル変数部分の文字化けが絡むのでしょうか。
Windowsの環境でメモ帳などでつくるため、nkfのオプションは -s に
しました。nkfより遅いと言われる jcode.pl も試しましたが不発でした。

あるいはやり方(書き方)が間違っているのでしょうか、
何かアドバイスをいただければ幸いです。

No. 873 # 68user 2000/05/20 (土) 23:29:19
> 結果表示の際に「ホスト名」「IPアドレス」と表示されるべき
> 部分が、うまく表示できません
余計な部分をどんどんコメントアウトしていって、
実質 print "ホスト名\nIPアドレス" だけのスクリプトに
しても化けますか?

またヘッダを
    Content-type: text/html; charset=Shift_JIS
    Content-type: text/html; charset=ISO-2022-JP
などと出力して、ブラウザに明示的に文字コードを伝えても
ダメですか? それでもダメならソースそのものを見せて下さい。
# どこかにそのまま置いてもらえると、文字コードなどが
# わかるので調べやすいです。

> $desc のローカル変数部分の文字化けが絡むのでしょうか。
ということはないと思います。

> Windowsの環境でメモ帳などでつくるため、nkfのオプションは
> -s にしました。
nkf は、CGI の出力を JIS にするために使っているだけです。
    ・スクリプトを SJIS にして、出力も SJIS
    ・スクリプトを EUC にして、出力も EUC
などという場合は、nkf は不要です。

No. 874 # yuji 2000/05/21 (日) 12:33:32
はじめまして、yujiといいます。
たびたび参考にさせていただいています。(^^)
アクセス状況チェックでは、1時間おきに更新されていますが、
これは、どのようにして定期的にプログラムを
実行させているのでしょうか?
サーバー上では、cronが利用できると思うのですが、
プロバイダのほうで提供されてたりするのでしょうか。
それとも他のサーバー上で実行されているのでしょうか。

あと、linux上でPerlを書いているのですが、
LANカードとPPP接続を行った場合に、gethostbyname,
inet_ntoa(inet_aton())のどちらを使ってもLANカードの
アドレスが取得されてしまうのですが、
PPP接続のアドレスを取得する方法というのは、なにか
ありますでしょうか?
ifconfigでpppの部分だけ切り出そうかとも思ったのですが、
exec('ifconfig'');
の出力をどうやって拾うのかがわかりません。(^^;
なにかアドバイスなどありましたら、どうぞよろしくお願いします。

No. 875 # 68user 2000/05/21 (日) 14:34:37
> アクセス状況チェックでは、1時間おきに更新されていますが、
cron でやってます。
    http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/.crontab
のようなファイルを
    % crontab ~/.crontab
として設定します。

> LANカードのアドレスが取得されてしまうのですが、
外部にソケットで接続して、getsockname で取得できるませんか?
(試してません)

> exec('ifconfig'');
Linux の ifconfig がどういう出力をするのかわからないのですが、
    open(IN,"ifconfig |");
    while (<IN>){
        if ( m/ppp.*(\d+\.\d+\.\d+\.\d+\)/ ){
            $ip = $1;
        }
    }
    close(IN);
という感じでしょうか。

No. 876 # yuji 2000/05/22 (月) 03:21:49
お返事、どうもです。(^^)
そうなんですか。>cron
ちなみに、cronは、
どこのプロバイダでも利用できるものなんでしょうか?
telnetができるところなどに限定されるんでしょうか。
>%crontab ~/.crontab

外部に接続すると、そのソケットのアドレスは、
グローバルなIPアドレスでないと困りますから、
それをgetsocknameで取得するということですよね。
ばっちりでした。(^^)

Linuxのifconfigは、
(略 lo eth0など)
ppp0 Link encap:Point-to-Point Protocol
                    inet addr:*.*.* P-t-P:*.*.*.*
(略)
のようなカタチでして、水平タブなどを取り除いて、
.*?の最小マッチングを試してみたところ、取得できました。
外部コマンドの出力は、パイプを利用して取得すると。(メモメモ)

長くなってすいません。(^^;
今後とも、どうぞよろしくお願いします。

No. 877 # 68user 2000/05/22 (月) 05:02:11
> ちなみに、cronは、どこのプロバイダでも利用できるものなんでしょうか?
普通の UNIX なら、おそらく使えます。ただし、
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=73
のように、cron を使えないようにしているプロバイダもあります。なお、
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=74
では、ソースをコンパイルすれば使えるかのような発言をしてますが、
ソースをコンパイルしても無理です。
# /var/cron をいじるために、root の権限で suid を
# 立てなければいけないので。

> telnetができるところなどに限定されるんでしょうか。
そう思って下さい。crontab コマンド自体が使えるなら CGI や
~/.forward 経由でできるかもしれませんが、管理者に断らず
勝手にやるのはお勧めしません。

# CGI が nobody 権限で動いているサーバなら、nobody 権限で
# cron のデータが設定されるわけで。

No. 878 # hiroko amada [E-mail] 2000/05/22 (月) 14:45:03
unixで、sqlファイルを開き、中のコードを見れる状態にしただけでは、
書きこみモードにしない限り、
SQL文の書きこみ、変更はできないようになっているのでしょうか?

No. 879 # goto [E-mail] 2000/05/23 (火) 09:19:44
HP-UX9.06の内蔵HD(/ディスク)がfsckに引っ掛かってしまい、
立ち上がらない現象が発生しています。
ついては、CD-ROMからブートして上記HDをfsckに掛ける必要があるかと
思われますが。
そこで、実際にどのメディアを使い、どのような操作をすべきか
教えて下さい!

No. 880 # 入海 2000/05/23 (火) 18:29:49
> ブラウザに明示的に文字コードを伝えても
> ダメですか? それでもダメならソースそのものを見せて下さい。
> # どこかにそのまま置いてもらえると、文字コードなどが
> # わかるので調べやすいです。
ヘッダ対策はしてたのですが。
ご迷惑をおかけしますが、ソースをアップしてみましたので、
ご覧いただけますか。
http://www.hatsumei.psiweb.com/IPconvert_3.cgi.txt

> nkf は、CGI の出力を JIS にするために使っているだけです。
>  ・スクリプトを SJIS にして、出力も SJIS
>  ・スクリプトを EUC にして、出力も EUC
> などという場合は、nkf は不要です。
知識不足でお恥ずかしいです。勉強になりました。

No. 881 # 入海 2000/05/23 (火) 18:33:26
すいません。アドレス間違えました。
正 → http://www.hatsumei.ab.psiweb.com/IPconvert_3.cgi.txt

No. 882 # 68user 2000/05/23 (火) 21:58:14
http://www.wakusei.ne.jp/twn/lng/red/wwwlng.cgi?show+200005/00050026.txt
と同じですかね。SJIS の全角空白の2バイト目が
@ のコードと同じなので、
        print "  $desc = $after<br>\n";
で化けているんでしょう。例えば、SJIS で
    @a=(1,2,3);
    print " a";
とすると、@a と書いてないのに 1 2 3 と表示されるはずです。

対策としては、スクリプトを EUC にするか、
    print '  '; # 全角空白2つ
    print "$desc = $after<br>\n";
がお手軽でしょうか。

> HP-UX9.06の内蔵HD(/ディスク)がfsckに引っ掛かってしまい、
> SQL文の書きこみ、変更はできないようになっているのでしょうか?
HP-UX も SQL も使ったことがないので わからないです。

No. 883 # 入海 2000/05/24 (水) 16:49:05
68user様。
やはり文字化けでしたか、ありがとうございました。
SJIS での一部の漢字と @ の文字化けは知ってましたが、
全角空白2つでも化けるとは知りませんでした。

教えていただいた「対策」もいいと思いましたが、
  print " \ $desc = $after<br>\n";
と、全角空白の一つ目と二つ目の間に、
エスケープ用にメタキャラクタ \ を置いてみると
ソース的にすっきりするかなと思い、
やってみたらこれでうまく表示されました。

いやぁ、とほほさんのところも覗いてきましたが、
漢字コードひとつとっても、奥深いですね。
ほんとにお世話になりました。ありがとうございました。

No. 884 # 68user 2000/05/24 (水) 20:14:00
別に全角空白が2個だからまずいわけではなく、
    \x81 @ $ d e s c
となるので、@$desc という配列 (シンボリックリファレンス)
を表示しようとしているのでしょうから、
> 全角空白の一つ目と二つ目の間に、エスケープ用に
> メタキャラクタ \ を置いてみると
で本当にうまくいくのか疑問です。確かでしょうか?
それとも jperl だからうまくいく、ということでしょうか。

なお、FreeBSD+perl5.00503 では
    $desc = 'abc';
    print " \ $desc\n";
ではダメでした。

No. 885 # 入海 2000/05/25 (木) 12:22:06
> で本当にうまくいくのか疑問です。確かでしょうか?
再度確認しましたら、文字化けはしていないのですが、
インデント、つまり空白2文字分の字下げはうまくいっていませんでした。
その分が、つめられて行頭に配置されます。

> それとも jperl だからうまくいく、ということでしょうか。
ローカルでなく、プロバイダの Appacheサーバ上ではありますが。

でも、疑問が。
>  print '  '; # 全角空白2つ
>  print "$desc = $after<br>\n";
これでやってみましたが、syntax errorを返してきました。
上の2行目が next token ??? なのだそうです。
エンジンで検索してみましたが、意味がわかりませんでした。
セミコロンは打ってるし・・・。

No. 886 # ヘルツォーカー [URL] [E-mail] 2000/05/26 (金) 13:14:20
はじめまして。
ヘルツォークで検索したら、貴サイトにたどりつきました。

最近私はヘルツォークツヴァイのようなゲームを
自作してみようという主旨のサイトをつくりました。
まだ内容はないのですが、よかったら見て下さい。

トップページから最強の敵を創造る会へどうぞ。

メイリングリストも参加募集中です。
プログラミング好きの方でツヴァイ好きの方、
共にヘルツォークの続編(みたいなもの)を作りませんか。

No. 887 # 68user 2000/05/27 (土) 23:52:32
> インデント、つまり空白2文字分の字下げはうまくいっていませんでした。
半角空白になってませんか?

> これでやってみましたが、syntax errorを返してきました。
> 上の2行目が next token ??? なのだそうです。
タイプミスだと思いますが、直らなければ再度
どこかに置いて、見せて下さい。

> 最近私はヘルツォークツヴァイのようなゲームを
> 自作してみようという主旨のサイトをつくりました。
ゲームをやらないのでよくわかりませんが、最強の
思考ルーチンを作ろう的なページですか。いろんな
思考ルーチン同士を戦わせると面白そうですね。

昔 I/O でそういう記事があったっけなぁ。

No. 888 # yuji 2000/05/29 (月) 01:03:24
どうも、yujiです。(^^)
今、いろいろなサーバーにアクセスして、
HTMLファイルをダウンロードするというプログラムを作成しているのですが、その中にダウンしていると思われるサーバーなどが
ありますと、そこで処理が中断されてしまいます。
そこで、タイムアウト処理のようなものを実装して、
ある程度経過してもダウンロードできないようなら、
次のURLに進むようにしたいと考えています。
こういった場合、どのようにして、
タイムアウト処理を実装したらよいのでしょうか?
forkなどで子プロセスを作成するのでしょうか。
アドバイスなどありましたら、どうぞよろしくお願いします。(^^)

No. 889 # 68user 2000/05/29 (月) 05:19:17
fork するなら、子プロセスで
    $SIG{ALRM} = \&timed_out;
    sub timed_out {
        die 'TIMED OUT';
    }
    alarm(10);
    while (<SOCKET>){
        print $_;
    }
    alarm(0);
などとすればいいでしょう。また、die したくなければ
    $SIG{ALRM} = \&timed_out;
    sub timed_out {
        die 'TIMED OUT';
    }
    eval {
        alarm(10);
        $buf=<SOCKET>;
        alarm(0);
    }
    if ( $@ =~ /TIMED OUT/ ){
        タイムアウトになった
    }
と eval で囲めばよいです。

4引数 select を使う方法もありますが、gethostbyname や
connect で時間がかかると対応できません。
# connect はノンブロッキング IO を使う方法がある。

並行して gethostbyname するにはどうしたらいいのかなぁ?

No. 890 # yuji 2000/05/29 (月) 13:49:39
すばやいお返事とサンプルコード、
ありがとうございます。
$SIG{ALRM}とevalを用いることで、
うまくできました。(^^)
DNSサーバーエラーなどで、
connectで時間がかかる場合があるということで、
connectと<SOCKET>の部分をalarmで
囲むカタチで利用させていただきました。
connectの部分については、
最初にIO::SocketのTimeoutを指定してみたのですが、
うまくいきませんでしたので。(^^;
$SIG{ALRM}=\&timed_out;の\は大切なのですね。
意味合いについて、調べてみたいと思います。
今後とも、よろしくお願いします。(^^)

No. 891 # 入海 2000/06/02 (金) 13:15:22
68user様、遅ればせながら、
>> インデント、つまり空白2文字分の字下げはうまくいっていませんでした。
> 半角空白になってませんか?
どうやら、そのようでした。
ただ、ウインドウズ環境のテキストエディタでは、
全角空白というのが打ちにくいように思いました。
半角空白二つならべて、それで同じかなんて思ってました。
私の知識不足なのかもしれませんが。

ちなみに、下のように書いて、やっとインデントができました。

        print ' '."$desc = $after<br>\n";

No. 892 # 68user 2000/06/03 (土) 18:14:21
> 半角空白二つならべて、それで同じかなんて思ってました。
半角空白を2つ並べてもブラウザに反映されないのは、
perl とは全く関係なくて、出力しているのが HTML だからです。
HTML 的に言えば &nbsp; で空白を表現する方がいいでしょう。

わかっておられるかもしれませんが、念のため。

No. 893 # yuji 2000/06/04 (日) 04:01:52
どうも、yujiです。(^^)
Web上でアカウント発行がいろいろなところで行われていますが、
いたずら防止などもあり、入力したメールアドレスに、
登録内容の確認のメールを送って、再度返信してもらうなど
さまざまな方法がありますが、こういったプログラムは、
どのような仕組みになっているのでしょうか?
かなり漠然とした質問で申し訳ないですが、(^^;
なにかご存知でしたら、どうぞよろしくお願いします。

No. 894 # 68user 2000/06/04 (日) 05:45:40
0. メールが返ってきたらメール処理プログラムが実行されるよう、
    ~/.forward で設定しておく
1. CGI でメールアドレスを入力してもらう。
   適当なファイルにメールアドレスを記録して、メール送信
   この時点で CGI プログラムは終了。
2. 訪問者がメールを受け取り、再度返送
3. メールが届き、~/.forward で設定したプログラムが実行される
   記録しておいたメールアドレスと照合して、正しければ OK。

…てな感じでしょうか。

No. 895 # yuji 2000/06/05 (月) 01:11:43
またまたすばやいお返事、どうもです。(^^)

なるほど。>0,1,2,3
~/.forwardについては、初耳でして、勉強になります。

あと、メールのヘッダやフッタに自動的に広告などをいれている
メールを見かけますが、ああいうものは、
どういったカタチで実現しているんでしょうか?
CGIなどを使って、というカタチでしょうか。

No. 896 # CZ 2000/06/05 (月) 01:18:34
こんばんは。某ラウンジで何度かお世話になりました。

さて、さっそく質問なのですが、ファイルマウントについて教えてください。サーバを一台まるごと借りたはいいのですが、なかなかUNIXが理解できずにいます。

/etc/fstabの中身は一部次のようになっています。

/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /var ext2 defaults 1 2
/dev/hda3 swap swap defaults 0 0

この/dev/hda2を/homeにし、/varは/dev/hda1内に移したいのですが、果たしてできるのでしょうか。ハードディスクのフォーマットなどをしないで行ないたいのですが。/varを一瞬でも消せればいいのですが、/varの中は常駐プログラムなどが収まっているので無理なように思えます。回線経由ですので、telnetなどは起動したままでなければいけません。

ちなみにOSはTurboLinux Server 1.0Jです。何かいいアイディアや参考になるウェブサイト・本があればご教示ください。情報が足りなければご指摘ください。

No. 897 # 68user 2000/06/05 (月) 03:37:00
> この/dev/hda2を/homeにし、/varは/dev/hda1内に移したいのですが、
> 果たしてできるのでしょうか。
できなくはないでしょうが、かなり怖い作業ですね。
特にリモートでの作業になってしまう、というのが。

    1. cd /var
    2. シングルユーザモードに移行
    3. 不必要なプロセスを全て殺す
    4. /etc/fstab から /var のエントリを削除
    5. mkdir /newvar
    6. cd /var; tar zcvf - . | (cd /newvar; tar zxvfp -)
    7. mv /var /oldvar
    8. mv /newvar /var
    9. システムをリブート

かなぁ。7 から 8 の間で、/var 以下のファイルをオープンしようと
するプロセスがあれば、その動作は失敗します。また、(おそらく)
最初に /var 以下のオープンしているプロセスは、7 を行っても
引続き /oldvar 以下のファイルをオープンし続けているので、
最後にリブートが必要です。

/home については、上の作業をした後、

    A. シングルユーザモードに移行
    B. /etc/fstab に /dev/hda2 /home ext2 なエントリを追加
    C. /dev/hda2 を /newhome としてマウント
    D. rm -rf /newhome/* (フォーマット。newfs を使った方がよいけど)
    E. cd /home; tar zcvf - . | (cd /newhome; tar zxvfp -)
    F. mv /home /oldhome
    G. リブート
    H. rm -rf /oldhome

でしょうか。

僕は Linux を触ったことがないので、コマンド名やオプションが
Linux でも通用するかどうかはわかりません。事前に十分シミュ
レーションしてから行って下さい。できれば Linux-users-jp や
fj などで、
    「…という作業手順でいのでしょうか?」
と質問した方がよいと思います。
# もし「それではうまくいかない」「こうすれば簡単だ」という回答を
# もらったら、僕にも教えて下さい :-)

なお、上記の通りにやってうまくいくかどうかは保証できません。


> あと、メールのヘッダやフッタに自動的に広告などをいれている
> メールを見かけますが、ああいうものは、
> どういったカタチで実現しているんでしょうか?
> CGIなどを使って、というカタチでしょうか。
CGI は web の仕組みであって、メールとは全く関係ありません。
# web 上でボタンを押すとそういうメールが送られる、
# というなら関係ありますけど。

確か、そういう機能を持ったメーリングリストプログラムが
あったように思いますし、常に一箇所からしかメールが発信
されないなら、その部分でヘッダやフッタを追加してもいいです。

No. 898 # 68user 2000/06/05 (月) 03:43:52
> 7. mv /var /oldvar
おっと。マウント中のマウントポイントは mv できないかも
(FreeBSD ではそうでした)。

一度 /dev/hd2 を umount すればいいですが、もし device busy
などと怒られたら、umount -f で強制アンマウントできます。
本当は fstat や fuser で、/var 以下のファイルを使用している
プロセスを調べて、それを殺してから umount するのが筋ですけど。

No. 899 # yuji 2000/06/05 (月) 13:27:56
いつもお返事、ありがとうございます。(^^)
表現が悪かったですね。>CGI(^^;
おっしゃるように、この場合は、必ずしもWWWサーバーと
やりとりするわけではないですから。

perlやCによるプログラム
でヘッダやフッターを処理したメールを、SMTPサーバーで
送信しているのか、それともSMTPサーバーのどこかで、
ヘッダやフッターを設定できるのかな、と思いまして。

今のところは、他の場所で使う予定はないですので、
自分で付加するプログラムを実験してみようと思っています。
下のメーリングリスト関連のリンク集を参考に、
いろいろなメーリングリストの特徴を勉強してみようと思います。(^^)
http://yamanoya.ecs.cst.nihon-u.ac.jp/patio/ml/makeml/mllinks.html

No. 900 # CZ 2000/06/05 (月) 21:19:42
お返事ありがとうございます。

早速Linuxのメーリングリストに入る準備をしましたが、業務用に使っているわけではないし、物は試しと思って一発勝負をかけてみました。

% /usr/local/apache/bin/apachectl stop
% fuser -k -m /dev/hda2
| /etc/fstab から /var のエントリを削除

ここで`umount /var`としたら'device busy'が出たので、深く考えずに再度`fuser -k -m /dev/hda2`としたら見事telnetが死にました。そこで
% umount -f /var
% mv /newvar /var
% reboot
この作業を管理会社の方にお願いしました。

| /etc/fstab に /home 追加
% mkdir /newhome
% mount /dev/hda2 /newhome
% rm -rf /newhome/*
% cd /home; tar zcvf - . | (cd /newhome; tar zxvfp -)
ここで何かエラーが出たのですが、読み飛ばし。
% mv /home /oldhome
% reboot

再起動したらさっきのエラーが原因らしく/newhomeの中が空で、かつ/homeができていなかったので、

% cp -a /oldhome/* /newhome
% mkdir /home
% reboot

再起動中に混乱してきました。(そういえばさっきの/newhomeはどうなるんだ? `mkdir /home`は不要だったか?)

% mount
(あ、ちゃんと/dev/hda2 on /home type ext2 (rw)になってる。)
% ls /home
(中身もある。ひょっとして成功か?)

というわけで、成功しました。(あるいは成功したように見えています。)一つ間違えば追加料金を払って再設定してもらうところでした。今までもこんな具合に、システムをほとんど理解しないまま手探りで運用してきました。もっとしっかり身に着けようと、本などを買って勉強してはいるのですが。

ただ、/newhomeと/homeが両方存在しています。/newhomeは消しても構わないと判断できるでしょうか。

No. 901 # 68user 2000/06/06 (火) 01:01:56
> ただ、/newhomeと/homeが両方存在しています。/newhome は
> 消しても構わないと判断できるでしょうか。
多分よいと思いますが、df -k して、別パーティションで
あることを確認して下さい。また、本当にコピーできたか
どうか du や diff などで確認して下さい。

> `mkdir /home`は不要だったか?
/dev/hda2 を /home にする、ということなのでマウントポイント
/home はマウントする前に mkdir で作成しなければなりません。

なお、マシンが手元にあるなら、シングルユーザモードで起動してから
作業をするのが正しいやり方です。


> perlやCによるプログラムでヘッダやフッターを処理したメールを、
> SMTPサーバーで送信しているのか、それともSMTPサーバーのどこかで、
> ヘッダやフッターを設定できるのかな、と思いまして。
SMTP サーバがヘッダやフッタに関与することはないと思います
(そういうサーバが世の中に絶対ないとは言い切れませんが)。

ちなみにメーリングリストサーバの fml なんかは、ポリシー
として、フッタを付けるような機能は実装しない方針だった
ように思います (今はどうか知りません)。

No. 902 # mac 2000/06/07 (水) 07:04:04
はじめまして。

pl(cgi)で
    $A="abc";
この$Aに入っている“abc”をクリプト化したいのですが
どのようにすればよろしいですか?

No. 903 # james [E-mail] 2000/06/07 (水) 16:25:30
Xwindowのソフト開発をやらなければいけません。が、まったく分かっていない状態だと思います。
サンプルプロを入力して起動させると、画面は表示されないままだんまり状態になります。
fputsのstdoutで処理通過点を表示させると、XtMainLoop()のところでだんまりになってる様です。
しかし、どのように原因を究明していいのか、ディバッグツールは何があるのか全く分かりません。
古いUNIXの本にadbと言うディバッグツールが乗っていたのでmanで説明を見て(と言っても英文なので見たつもり)
いろいろ表示させて見ましたが、内容を見ても分からない状態です。
一体何をどうすれば、いやいや、何からどう始めれば、はたまたどんなマニュアルを購入すれば、少しはましな状態になるでしょうか?
どうかお願いします。どんなヒントでもいいので教えてください。
順序が後先になりましたが、OSはSolaris7、言語はC、マシンはSUNです。
掲示板に書き込むのは初めてなのですが、これでよろしいでしょうか?
でれでは・・・。

No. 904 # 68user 2000/06/08 (木) 02:32:14
> この$Aに入っている“abc”をクリプト化したいのですが
お望みのものかどうかわかりませんけど、
http://X68000.startshop.co.jp/~68user/webcgi/cryptogram.html など。

> fputsのstdoutで処理通過点を表示させると、
> XtMainLoop()のところでだんまりになってる様です。
僕は Xt のプログラムを作ったことがないのですけど、
XtMainLoop で戻ってこないのは正しいのではないですか?
その中でイベント待ちをしているわけだから。

No. 905 # james [E-mail] 2000/06/08 (木) 09:35:05
お返事どうもありがとうございます。

確かにおっしゃる通りです。正確に自分のQを伝えていません。ごめんなさい。
XtMainLoopでだんまりになっているのに、画面が表示されないのです。
色々悩んでリソースファイルと言う物が間違っているのかとか思うのですか・・
自分が起動かけてる状態で、どのリソースファイルを見にいってるのかも分からないんです。
だから、本当にリソースファイルが問題なのかどうかも???
マニュアルによると、/usr/lib/X11/app−defaults
と言うファイルだと書いてありますが/usr/libの下にはX11なるディレクトリはありません。
ではapp−defaultsはというと、いくつものフォルダーに存在しています。(ざっと40個位)
はたしてどのファイルなのやら・・・・
こんな状態ではいつになったらソフトが完成するのやら・・と思うと気がめいってきます。
が、やらねば。
何かヒントをお願いします。

No. 906 # レイズナービデオに取って見ていた女 2000/06/08 (木) 11:33:48
「僕の血の半分は地球人の血です!僕の父は地球人です!」「目を覚ませ!エイジ!」「基地の中には僕と同じ位の年の人もいるのです!」・・・レイズナーは一部が面白かったですね。エイジが全裸でカプセルに閉じ込められてる姿はドキドキものでした!二部のエイジはなんかオヤジっぽくてイマイチだと思ったのは私だけ?

No. 907 # 68user 2000/06/08 (木) 20:59:16
> レイズナービデオに取って見ていた女
すいません、おそらく あなたが見たコンテンツは SEGA BBS の過去ログです。
SEGA BBS は http://www.sega.co.jp/sega/p_cafe/bbs.html でやってますので、
そこに書き込んでみて下さい。

  > XtMainLoopでだんまりになっているのに、画面が表示されないのです。
つまり、ボタンなどの簡単な部品を表示するだけのプログラムが
動作しない、と解釈していいですか? ソースが短いなら、見せて
もらえばわかるかもしれませんが、わからないかもしれません。

> 自分が起動かけてる状態で、どのリソースファイルを見に
> いってるのかも分からないんです。
truss コマンドで、どのファイルを open(2) しているか
わかるでしょう。

> /usr/libの下にはX11なるディレクトリはありません。
ディレクトリは環境依存なので /usr/X11R6/lib/X11、/usr/X/lib/X11 など
に置いてある場合もあります。

> ではapp−defaultsはというと、いくつものフォルダーに
> 存在しています。(ざっと40個位) はたしてどのファイルなのやら・・・・
app-defaults/KTerm は何のファイルかご存知ですか? kterm が
起動時に読み込むリソースファイルです。

なんで kterm が app-defaults/KTerm を読むかというと、kterm の
クラス名が KTerm だからです。そのクラス名というのは、
XtAppInitialize (古い Xt なら XtInitialize) の引数で指定します。

なので、「app-defaults/あなたの作ったプログラムのクラス名」という
ファイルが存在すればそれが読み込まれますし、存在しなければリソースが
空になるだけです。

> はたまたどんなマニュアルを購入すれば
Xt の本は結構あります。秋葉原などが近いなら、ちょっと覗いてみれば
結構見付かります。ただし、古い本が多いので、既に obsolete な関数
(例えばさっきの XtInitialize とか) を紹介していたりするのが難点。
あと、少し前の UNIX USER で、数回 Xt の説明が載ってました。

No. 908 # 68user 2000/06/08 (木) 23:49:29
> XtAppInitialize (古い Xt なら XtInitialize)
違った。XtAppInitialize も obsolete でした。少なくとも
X11R6.3 なら XtOpenApplication を使いましょう。

# From XtOpenApplication(3Xt)
#  XtAppInitialize and XtVaAppInitialize have been superceded
#  by XtOpenApplication and XtVaOpenApplication respectively.
#
# be supereded ≒ be obsolete と解釈してよいのだろうか?

No. 909 # james [E-mail] 2000/06/09 (金) 17:55:20
毎日どうもありがとうございます。感謝感謝です。

たくさんのコメントどうもです。
まず、app-defaultsファイルの件はtrussと言うコマンドで分かりました。


次に、XtOpenApplicationを使ってコーディングしてみましたが、(以下)
    disp=XtOpenApplication(app1,"xmfonts",NULL,0,&argc,argv,NULL,
        applicationShellWidgetClass,NULL,0);
パラメータの値がよく分かりません。でもこれでコンパイルしたところ
以下のようなエラーでコンパイル出来ません。
内のX11のバージョンは分かりません。
cc /export/home1/sakou/srclib/cstlib/xmfonts.c -c -g -I /usr/openwin/include -I /usr/dt/include
"/export/home1/sakou/srclib/cstlib/xmfonts.c", line 78: warning: improper pointer/integer combination: op "="
cc -o xmfonts xmfonts.o -lXm -lXt -lX11 -lm
Undefined first referenced
  symbol in file
XtOpenApplication xmfonts.o
ld: fatal: Symbol referencing errors. No output written to xmfonts
*** エラーコード 1
make: 致命的エラー: ターゲット `xmfonts' の構築用コマンドが失敗しました。

最後に、マニュアルは、地方にいるので書店にいってもX-windowsのマニュアル
なんてほとんど皆無です。
どんなマニュアルがあるかも分からないのでネット上で一生懸命探しているのですが
内容が分からないのと、価格がPCの物と比べて高価なのとでなかなか
自分では決められない状況です。

もう一つ、自分の無知さがまた一つ分かりました。
X-windowsのプログラムはXlibだけでもコーディング出来るのですか?
XツールキットとかMotifルーチンとかが無くても出来るのですか?
XツールキットとかMotifルーチンは簡単にコーディングするための
ライブラリーなのですか?
ほかにOpenGLとかXveiwとかも聞きますがそれらの位置関係が全く
分かっていない事が分かりました。(今まではすべて使って初めてプログラムが
完成する。と思っていました。それなのにサンプルプロは様々な関数を
使ってあるのでなぜ???って)

ではまた。byebye。です。

No. 910 # 68user 2000/06/09 (金) 22:35:15
すいません、Xt のつもりで書いてました。Motif なんですよね。
Xt* のくだりは無視して下さい。その他は後ほどまた書きます。

No. 911 # 68user 2000/06/11 (日) 00:58:18
> X-windowsのプログラムはXlibだけでもコーディング出来るのですか?
> XツールキットとかMotifルーチンとかが無くても出来るのですか?
> XツールキットとかMotifルーチンは簡単にコーディングするための
> ライブラリーなのですか?
答えは全て YES です。Xt も Motif も最終的には Xlib の API を呼びます。
    http://www.ainet.or.jp/~inoue/im/basic.html#api
が参考になるでしょうか。ただし、Xlib だけでやろうとすると
入力フォーム一つ作るのにも相当苦労するでしょう。

# この方のページはとても質が高いので、UNIX を使う人は
# 一通り目を通しておいた方がよいと思います。

ちなみに、
> 極端な話、Xlibを使わずソケットプログラミングで直接 X protocol を
> 話すXクライアントアプリケーションを作ることも原理的には可能です。
というのは、/tmp/.X11-unix/X0 に対して UNIX ドメインソケット経由で
X プロトコルを話すとか、ポート 6000 に対して X プロトコルを話す、
ということです。

> ほかにOpenGLとかXveiwとかも聞きますがそれらの位置関係が全く
僕もわかってません。なので、偉い人に聞いてきました。
    http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/log/200006/20000610.html
の (Jun 10 00:26)[go] を読んで下さい。
# …全然わかってなかったんだなぁ。

あと、OpenGL は 3D を描画するためのライブラリです。

> 最後に、マニュアルは、地方にいるので書店にいってもX-windowsの
> マニュアルなんてほとんど皆無です。
こっちも
    http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/log/200006/20000611.html
をどうぞ (6/11 07:00 あたりにならないと作成されません)。

> 次に、XtOpenApplicationを使ってコーディングしてみましたが
やはり Motif であっても XtOpenApplication を使うべきだとは
思いますが、お使いの openwin が X11R6.3 より古い規格に準拠して
いるのではないかと思います。

> 内のX11のバージョンは分かりません。
man X とすると、最後に
    X Version 11     Release 6.3
などと書いてあると思います。

以下、ひとりごと。Perl/Tk 800.xxx 系の日本語化パッチ。
    http://opinion.nucba.ac.jp/~tsutomu/perltk/jp-patch.html
やっと見付けられた…。

No. 912 # kasuga 2000/06/13 (火) 03:34:40
グラデゥウスの基盤手に入ったがどうしても無敵技で来ません
教えてください
4面でフォースフィールドつけながらクリアーして
そのあとまたはりなおすんですか??

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

No. 913 # 参考になりました。 2000/06/13 (火) 14:36:51
私は課題研究という授業で
ゲーム業界についてというテーマで
いろいろ調べています。
その中で、ここが検索に引っかかりました。

日付から見てかなり前のものだったようですが、
中古ゲーム販売についての論争、
とても参考になりました。
当然、こんなテーマで調べているのですから
私自身ゲームもやりますし、
中古店も利用しています。
いろいろ考えさせられました。

参考といってもあの内容をそのまま引用したり
するわけではありません。
調べる範囲に中古市場を加えることを
視野に入れて・・・変な文章・・
とにかく、それを加えることを決めました。

報告書作成まで、日にちが余りないのですが
がんばってみようと思います。
勝手ながら少しばかりご挨拶をさせて
いただきました。

No. 914 # へにか@箇条書き [URL] 2000/06/14 (水) 23:02:08
おひさしぶりです。いつぞやは、お世話になり、ありがとうございます。

早速ですが、質問がございます。
echo-3.htmlには、
> このように SOMAXCONN を指定すると、 OS が許す最大値を意味します。
とあって、且つ、
> FreeBSD2.2.7 では /usr/include/sys/socket.h で
> #define SOMAXCONN 128
>と定義されているので、
とあります。

で、以下の1)と2)のどちらに解釈していいのか悩んでいます。
1) この例の128は、クライアントや言語に依らず(?)、OSによって
    一意に決定されるもの。
2) この例の128は、クライアントや言語に依って、決定されるもの。
    (∵128と書くということは、減らすのはもちろん、増やすのも可能?)
    (これが真なら、いじる方法はありうるでしょうか?)
なぜ、このような質問をするかというと、
a) 事の発端は、自作proxy( http://henika.virtualave.net/view.cgi?0 )
    で、 http://henika.virtualave.net/japanese/browsers.htm
    (厳密に言うとローカルマシン上でテストしてます)見に行くと、画像の
    枚数が多いせいか、全ての要求を受付てくれない(logで確認済み)。
b) でも、自作proxyを経由しないと、ちゃんと表示される。
c) そこで、SOMAXCONNをいじれないか?
と、思ったからです。

多分、いじれそうにないな、とは思っているのですが、もし、いじる
方法(perlのコンパイルを除く)をご存知でしたら、ご教授願いたく、
よろしくお願いします。

因みに、環境はwindows98, perl -vでは、
This is perl, version 5.005_03 built for MSWin32-x86-object
と表示されます(失礼ながら、windowsをご存知ではないのは、過去ログ
から、承知しておりますので、perlでいじれる方法、ということで、
お願いします)。

・・・とかいいつつ、delegateのように、delimiter(但し/-_-ではなく/)で
imgタグをproxy経由させないように改定してしまいましたが、気になって
気になって仕方がない・・・

No. 915 # へにか [URL] 2000/06/14 (水) 23:12:17
すいません、先の自作proxyは、あれ単体では動作しないので、
もし、眺めるのでしたら、お手数ですが、
http://henika.virtualave.net/view.cgi?0 を適当な名前に、
http://henika.virtualave.net/view.cgi?1 をfilter.plに、
http://henika.virtualave.net/view.cgi?2 をhtrans.plに
してください。

宜しくお願いいたします。

参照 http://henika.virtualave.net/japanese/proxy.htm

No. 916 # 68user 2000/06/14 (水) 23:24:55
> グラデゥウスの基盤手に入ったがどうしても無敵技で来ません
わからないです。というか、無敵技があったのか。
# ちなみに基盤じゃなくて基板です。

> 参考になりました。
と言っても、僕が書いた文章ではないので扱いには
お気をつけ下さい。まぁ、
> 参考といってもあの内容をそのまま引用したりするわけではありません。
ということなので、心配はしておりませんけど。


> 1) この例の128は、クライアントや言語に依らず(?)、OSによって
>  一意に決定されるもの。
です。

(FreeBSD では) この数はカーネル内部に書かれており、動的に数を
変更する仕組みもないので、一般ユーザでも root でも変えられません。
どうしてもというならカーネルの再コンパイルでしょうか。

とはいえ、他の UNIX 系 OS では動的に変更できたりする *可能性* はあります。
# ioctl とかで変更できても不思議ではないけど、できなくても不思議ではない。

> 画像の枚数が多いせいか、全ての要求を受付てくれない(logで確認済み)。
なお、FreeBSD では SOMAXCONN は128で、128*1.5=192 なので、待たせて
おけるクライアント数は最大 192 になります。しかし、本当にそれくらいの
コネクションが張られているのでしょうか? netstat で見ると ESTABLISHED に
なっているのが そんなにたくさんありますか?

あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん
接続してみればわかると思います。

なお、http://X68000.startshop.co.jp/~68user/net/echo-3.html には
> もし backlog 以上のクライアントが同時に connect してきた場合は、
> サーバは接続を拒否するか、何もレスポンスを返しません。
とありますが、おそらくこれは間違いで、拒否することはありません。
カーネルレベルで無視するだけで、サーバプログラム側はクライアントが
やってきたことすら検知できません。

一方クライアントからは TCP の 3way handshake の1発目の SYN に対する
返事が返ってこないので、そのうち SYN を再送、という挙動をすると思います。

No. 917 # 68user 2000/06/14 (水) 23:25:53
> ioctl とかで変更できても不思議ではないけど、できなくても不思議ではない。
ioctl はありえないですね。デバイスじゃないんだから。

No. 918 # へにか [URL] 2000/06/15 (木) 22:29:25
ご回答、ご指導、どうもありがとうございます。

>カーネルの再コンパイルでしょうか。

こ、この時点で、止めが刺された気がしました。A^^;
多分、windowsでもあてはまるのでしょう。

>しかし、本当にそれくらいのコネクションが張られているのでしょうか?
> netstat で見ると ESTABLISHED になっているのが そんなにたくさんありますか?

早速、試してみました。
netstatで、ESTABLISHEDとなった本数(数回やった場合の最大)を以下に示します。

Local Address = n:80 は、 2
Local Address = n:8080 は、 5
Local Address = n:15xx は、 7 (15xx=1500番台)

http://henika.virtualave.net/japanese/browsers.htm には、このページ+36枚画像
あるので、ブラウザと思われる1500番台が、想像ですが、20近くないとおかしいような
気がします。この時点で、SOMAXCONNの値は1桁台と推測しました。

この時点で、自動的に、
>あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん
>接続してみればわかると思います。
を、満たしてしまっているような気がします・・・

因みに、SOMAXCONNをperlで表示させると、 5 でした(以下を実行)。
use IO::Socket;
print SOMAXCONN;
(思いつきで試したので、あまり意味がないかもしれません・・・)
これが正しければ、待たせておけるクライアント数は、5+alphaで、先の推測には
合致してるなぁ、と思い込んでいます。

う〜ん、windowsって、少ないのかなぁ? なんかうそっぽいなぁ。

>カーネルレベルで無視するだけで、サーバプログラム側はクライアントが
>やってきたことすら検知できません。

なるほど。windowsでも同様であれば、当方の現象(全ての要求を受付てくれない)
も納得いきます(logにクライアントから要求されるはずのイメージ・ファイルが
要求されていないようになっている)。

>一方クライアントからは TCP の 3way handshake の1発目の SYN に対する
>返事が返ってこないので、そのうち SYN を再送、という挙動をすると思います。

申し訳ないのですが、このあたりは、まだよくわからないので、確かめられません。
今後の課題・勉強材料とさせてください。

No. 919 # 68user 2000/06/16 (金) 01:48:47
> これが正しければ、待たせておけるクライアント数は、5+alphaで、
> ...
> う〜ん、windowsって、少ないのかなぁ? なんかうそっぽいなぁ。
うーん、ちょっとうそっぽいですねぇ。いくらなんでも一桁ってのは…。

SOMAXOCNN が誤って5になってしまったから、それ以上接続できない
という可能性はないですか? backlog に 10 や 100 を渡すと
どうなりますか?

僕はこれ以上わかりませんが、もし Winsock に詳しい方が
おられましたら教えて下さい。

No. 920 # james [E-mail] 2000/06/16 (金) 16:46:58
お久しぶり(?)です。

色々情報をもらって少し頑張って見たつもりですが、もーイヤ!と言う感じです。
やっぱり自分にはX−windowのプログラム作成は無理なんでしょうか?
そんなに簡単に出来るとは思っていませんが、でもいまの状態では全く持って・・

でも一つだけ決めた事があります。それは、Xlibだけで作成するのはやめよう
と言う事。馬鹿げた事を、と思わないでください。この結論を出すのもとっても
大変な位にX−windowに関して無知なんです。

まだ迷っているのはMotifを使うか使わないかと言う事。
で、とりあえず何かを始めないと、と思い、XtとMotifをこだわらずに(
これがまた問題なのですが)サンプルプロをアレンジして、自分の作りたいアプリ
に近づけようと努力しました。が、もーイヤと言うかダメと言う感じです。

Xlibだけを使用したサンプルプロにイベント処理(具体的にはPointerMotionMask)
があったので、そのサンプルを加工して、画面に現在のカーソル座標を表示させる
所はOKになったのです。でもXtで作り直そうと思って関数を探して(これも
大変な作業です 自分には)XtAddCallback、XtAddEventHandlerを使おうと思ったまでは
良かったのですが、パラメータ中のイベントマスク名が何を見ても一部しか載って
いないのです。PointerMotionMaskに相当するベントマスク名が・・・・・・・!!

これじゃー全然はかどらないよ!!って訳です。
やっぱり絶対にマニュアル不足ですかね?
それともマニュアル以前の問題ですかね?
どう思われます? 率直な意見を教えてください。
(でも「あなたには無理です」と言う究極の意見は勘弁してください。首が
かかっているんです)

愚痴になってしまいました。ごめんなさい。
ここしか頼るところ無くって、申し訳無いと思っているのについ書かずに
いられないんです。

また来週元気出して頑張るぞ!!   じゃあまたネ!!

No. 921 # hsj 2000/06/17 (土) 04:45:06
はじめまして。
ずっとROMオンリーだったのですが、書きこんでみます:)

@へにかさん
>因みに、SOMAXCONNをperlで表示させると、 5 でした
winsock-ver1のSOMAXCONNはホントに5です。ネタじゃなく。
winsock-ver2になってはじめて0x7fffffffになりました。
思うに、perlはwinsock-ver1のヘッダを使っているのではないでしょうか。
さらに、テストされているブラウザはIEかネスケだと思いますが、
どうもブラウザ側が、5より多くのコネクションを張らないようですね。
これはおそらく、前述のwinsock-ver1にも対応させるためだと思われます。
#自信は無いです(笑
なので、プロキシ側でいくらbacklogを増やしても、
ブラウザ側が接続しに来てくれないんだと思います。

@jamesさん
XとMotifを使っての開発は、かなり昔にHPとSolarisで行った事があるのみなのですが、
#もうほとんど忘れています(苦笑
その時に非常に役に立った書籍として、
・日刊工業新聞社「X-Window Ver.11 プログラミング」
・日刊工業新聞社「OSF/Motifプログラミング 」
の2冊をあげてみます。
見た目がかなり初心者向けっぽいのですが、
なにもわからなかった頃から、だいぶ理解できてきた頃まで、
ずっと役に立ってくれました。
オススメです。
#ちょっと検索かけたら片方だけでてきました↓
http://www.pro.or.jp/~fuji/computerbooks/unix-x/osfmotif.nikkan.html

@68userさん
どうも、はじめまして。
いきなりでアレなのですが、:)
httpサーバがContent-Lengthを返してくれないコンテンツには、
クライアント側からどのように対処するべきでしょうか。
現状の自作proxy(この書き込みもコレ経由です)では、
サーバ側からの切断を待っている状態ですが、
どうもこちら側から切らなければいけないようで、
毎回タイムアウトで自分から切るハメになっています。
#例えば、下でへにかさんが示しておられるURLから示されているGIF画像もそうですね。
IEやらネスケやらのブラウザはやってくれているようなので方法はあると思うのですが、
探し方が悪かったのか見つかりませんでした。
なにか、普通こうするだろ、って言うような方法というのは有るのでしょうか?
もし知っていらっしゃったら、ぜひ教えてください。
よろしくおねがいします。

・・・でも、画像ファイルの中を見て長さを取得してたりしたらイヤだなぁ(笑

No. 922 # へにか [URL] 2000/06/17 (土) 12:15:50
68user様、hsj様、ご教授、どうもありがとうございます。

68user様>backlog に 10 や 100 を渡すとどうなりますか?

backlogを、思い切って128に増やして、netstat 1 で、1秒刻みで出力した結果を
以下に示します。
前回、netstatを、(間抜けなことに)手動で何回も実行した結果を示しましたが、
そのためか、前回とは異なる結果になってしまいました。すみません・・・

backlog = 128
Local Address = n:80 は、 7
Local Address = n:8080 は、 5
Local Address = n:14xx は、 12 (14xx=1400番台)

backlog = SOMAXCONN
Local Address = n:80 は、 8
Local Address = n:8080 は、 5
Local Address = n:15xx は、 12 (15xx=1500番台)
Local Address = n:ingreslock は、 1 (←ほとんど出ない)

上記の結果から、backlogを増やしても、大差ないみたいです。

hsj様のご示唆から考えて、proxyを経由しない場合を調査しましたので、以下に
示します(上記の結果に対応しています)。

Local Address = n:80 は、 5
Local Address = n:16xx は、 5 (16xx=1600番台)
(但し、Netscape3.0)

確かに、おっしゃるとおり、
hsj様> 5より多くのコネクションを張らない
ようですね。

でも、proxy経由しないほうが、ちゃんと画像が表示されるので、今、僕は
混乱の極みです(今までも混乱してますが)。
proxy経由すると、コネクションが張られっぱなしみたいなので、どうも、
backlogが怪しいわけではない??? となると、proxyが黒ですね。

hsj様>httpサーバがContent-Lengthを返してくれないコンテンツには、
hsj様>クライアント側からどのように対処するべきでしょうか。

このご質問が、良い示唆になって、ありがたいです。ここを対処すれば、

>へにか@箇条書き [URL] 2000/06/14 (水) 23:02:08
>a) 事の発端は、
{略}
>全ての要求を受付てくれない(logで確認済み)。

が、うまく解決できそうな予感がします。

追伸1:
だんだん、わかってきたような気がして(実際にわかってるかどうかはおいといて)、
嬉しいです。こちらの掲示板でお世話になって、よかった、と思っています。

追伸2:
明日(日曜)から、1週間(弱?)程度、出張に行ってきますので、書き込みが
遅れるかも知れません。色々アドバイス頂いているのに、大変申し訳ないです。

No. 923 # 68user 2000/06/17 (土) 13:07:57
@james さん
> それは、Xlibだけで作成するのはやめようと言う事。
賢明な選択でしょう。

> やっぱり絶対にマニュアル不足ですかね?
だと思います。この前のチャットのログや hsj さんの情報を
元にして何か本を買わないと苦しいと思います。

UNIX で GUI アプリを作るなら、Gtk+、Qt、Perl/Tk などの
選択肢もあります。入門書は結構出てます。ただ「困っても
その本を読めば絶対にわかる」といったレベルまで 徹底的に
解説した本はないですね。

ただ、仕事に使えるほど熟成しているかというと、ちょっと不安ですが。
# Gtk+ や Qt って、もう API の仕様は固まったのかしら?

@hsj さん
> winsock-ver1のSOMAXCONNはホントに5です。ネタじゃなく。
> winsock-ver2になってはじめて0x7fffffffになりました。
なるほど。どうもです。

> サーバ側からの切断を待っている状態ですが、
> どうもこちら側から切らなければいけないようで、
HTTP/1.0 なら常にサーバ側から切ってくれますので、
    while (<SOCKET>){ print }
でいけるはずです。

マルチスレッドなら select で待って、
    $len = read(SOCKET,$buf,8192);
    if ( ! $buf ){ 切断された } # $len==0 の方が better かな?
てな感じでどうでしょうか。


@へにかさん
> proxy経由すると、コネクションが張られっぱなしみたいなので、どうも、
> backlogが怪しいわけではない??? となると、proxyが黒ですね。
ですね。本来、proxy がやってきたクライアントをさくさく accept
していれば、SOMAXCONN が 1 でも影響は出ないはずですから。
うまくマルチスレッド化できているかどうか調べてみて下さい。

なお、
> Local Address = n:8080 は、 5
というのは accept 済のコネクションと accept 前の OS がキューイング
しているコネクション、両方の合計が 5 ということです。なので、
この調べ方はあくまでも目安にしかなりません。念のため。

厳密に調べたければ
> あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん
> 接続してみればわかると思います。
をやってみてください。

No. 924 # hsj 2000/06/18 (日) 07:23:19
@68userさん
>HTTP/1.0 なら常にサーバ側から切ってくれますので
はい、そのハズなのでそれを待っているのですが、
#ちなみにCでつくっています
どうも、なかなか切ってくれないようなのです・・・
・・・というのが疑問だったのですが、解決しました:)
つくった機能のうち、環境変数の追加と削除で、
深い考え無しに、「Connection: Keep-Alive」を追加していました。
さらに追い撃ちで、HTTP/1.0にもかかわらず、
httpdによってはコレを解釈してくれているようで。
基本に戻ってrfc2616ながめてて気が付きました・・・あぁマヌケ。
そこで、この環境変数を「Connection: close」に修正したところ、
期待通り、httpd側からサクサク切ってくれるようになりました。
なにはともあれ、ありがとうございました。

@へにかさん
もしかして、へにかさんのおっしゃっておられる、
「プロキシを通すとコネクションが張られっぱなしになる」というのも、
この辺りと関係がないでしょうか?

No. 925 # mark11 2000/06/18 (日) 16:10:42
はじめて書き込みます.UNIX初心者のものです.

ソース環境がひとつで2つのアプリを作っているのですが,
毎回できたオブジェクトを手作業で退避・圧縮しています.
この作業をmakefileに記述したいのですが,次の記述でよい
でしょうか.

BAKDIR2 = /tmp/backup2/

test2.o.gz: test2.o
        cp -p test2.o $(BAKDIR2)
        gzip $(BAKDIR)/test2.o

ご指導よろしくお願いします.

No. 926 # 68user 2000/06/19 (月) 00:36:46
> 深い考え無しに、「Connection: Keep-Alive」を追加していました。
なるほど。HTTP/1.1 まわりではまるのは よくありますよね。
# Host ヘッダを付けず HTTP/1.1 を使ってはまるとか。

> この作業をmakefileに記述したいのですが,次の記述でよいでしょうか.
よいように見えますが、そちらではうまく動いていないんですか?

No. 927 # とろと 2000/06/19 (月) 11:48:19
どっかのホームページを読み込んできて
タグ以外と、コメントを削除する
ということをやりたいんですが、

http://www.din.or.jp/~ohzaki/perl.htm

タグを削除する
というのがあったので、これをタグ以外を削除
にしてみたのですが、
コメントタグが消えてくれません、、

<!-- -->で囲まれている中身と、<!--、-->も消えてほしい。。

消したいんですが、どのように改造するといいで
しょうか?

---ソース---
$tag_regex_ = q{[^"'>]*(?:"[^"]*"[^"'>]*|'[^']*'[^"'>]*)*}; #'}}}}
$comment_tag_regex =
        '<!(?:--[^-]*(?:(?!--)-[^-]*)*--(?:(?!--)[^>])*)*(?:>|(?!\n)$|--.*$)';
$tag_regex = qq{$comment_tag_regex|<$tag_regex_>};
$text_regex = q{[^<]*};

$result = '';
while ($str =~ /($text_regex)($tag_regex)?/gso) {
    last if $1 eq '' and $2 eq '';
    $result .= $2;
}
------
あ、本当はとほほラウンジに書きたかったのですが、
書き込みできなかったので、、

No. 928 # hobbes 2000/06/19 (月) 18:10:26
こちらで質問をさせて頂きたいのですが、unix commandで、OS及びHWが
32bitか64bitと知るにはどの様なコマンドを打てばよろしいのでしょうか?
教えていただきたいと思います。

No. 929 # 68user 2000/06/19 (月) 20:04:37
> <!-- -->で囲まれている中身と、<!--、-->も消えてほしい
まずタグ以外を消して、再度 <!-- --> を消すような正規表現を
使うというのはダメですか。

# ちょっとその正規表現を読む気力がないので…。

> OS及びHWが32bitか64bitと知るにはどの様なコマンドを
> 打てばよろしいのでしょうか?
思い付くのは printf("%d\n",sizeof(int)); くらいですかねぇ。

これが「OS及びHW が32bitか64bit」という判断の基準として
ふさわしいかどうかはわかりません。

No. 930 # hobbes 2000/06/20 (火) 09:25:59
68userさん、

回答ありがとうございました。

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

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 データグラムはチェックサムがありますが、
「化けてもチェックサムが同じで、検出できない」ということがどれくらいの
確率で起こるのかはわかりません。おそらく論文のネタになっているでしょうね。

No. 1041 # 68user 2000/08/01 (火) 01:12:43
僕の回答を再掲します。
> OS 名と、Netscape をどうやってインストールしたか
ちゃんと読んでますか?

あと、原因の切り分けを行ってください。~/.Xdefaults の
各行をコメントアウト (リソースのコメント開始は `!' )
して動けば、原因はリソースなんでしょう。rm -rf ~/.netscape
して動けば、原因は netscape の設定ファイルがおかしくなって
しまったんでしょう。

No. 1042 # 68user 2000/08/01 (火) 01:14:56
> TCP データグラム
TCP セグメントでした。

No. 1043 # yuji 2000/08/02 (水) 09:15:28
どうも、ご無沙汰しております、yujiです。(^^)
今、指定されたディレクトリ以下のファイル一覧を表示させたい、
と考えているのですが、再帰関数を使った場合、
ファイルハンドルがグローバルのため、値の上書きになって
しまい、うまくいかないようです。ローカルなファイルハンドルというのは、できるんでしょうか?myやlocalで試してはみたのですが。(^^;
なにかよい方法は、ないでしょうか。

また、$home/$fileのカタチで出力する場合、どのようにするのがよいでしょうか?
"$home/$file"とすると、/$で変数ではなく文字として解釈されると
思うのですが。"$home/".$fileとして逃げたりしているんですが。(^^;
こちらのほうでも、別の方法などありましたら、よろしくお願いします。

#!/usr/bin/perl

GetFiles(".");
exit(0);

sub GetFiles(){
local($dir)=@_;

print "In $dir\n";
opendir(DIR,$dir);
while($file=readdir(DIR)){
    if(-d $file && $file ne '.' && $file ne '..'){
    &GetFiles($file);
    }else{
    if($file ne '.' && $file ne '..'){print "$file\n";}
    }
}
close(DIR);
}

No. 1044 # B-MAX [E-mail] 2000/08/02 (水) 09:19:37
@68user様
ご回答、ありがとうございました。
もう少しTCP/IPについて勉強してみます。

No. 1045 # 68user 2000/08/02 (水) 09:52:14
    local(*DIR);
とします。なお、ハンドル DIR だけでなく $DIR も @DIR も %DIR も
全て localize されます。あるいは
    $handle = 'unique string';
    opendir($handle,'.');
とか。あと、こういう疑問が出てくるなら、
    http://www.oreilly.co.jp/BOOK/adperl/
をお勧めしておきます。

> "$home/$file"とすると、/$で変数ではなく文字として解釈される
/$ でも問題ないです。\$ と勘違いされてませんか?

No. 1046 # yuji 2000/08/02 (水) 11:41:15
すばやいお返事、どうもありがとうございました。
おかげさまで、うまくいきました。(^^)
書籍の情報、参考にさせていただきますので。
そうですね。すいません。(^^; >勘違い
スラッシュとバックスラッシュを使っていまして。

FTPで、指定したディレクトリ以下を決まった時間に、
指定したFTPサーバーのディレクトリに、自動的にアップロードするスクリプトを
作成していまして。これで次のステップに進めそうです。(^^)

今後とも、どうぞよろしくお願いします。

#!/usr/bin/perl

GetFiles(".");
exit(0);

sub GetFiles(){
local($dir)=@_;
local(*DIR);
local($file);

print "In $dir\n";#ディレクトリの作成などに。
opendir(DIR,$dir);
while($file=readdir(DIR)){
    if(-d "$dir/$file" && $file ne '.' && $file ne '..'){
    &GetFiles("$dir/$file");
    }else{
    if($file ne '.' && $file ne '..'){print "$file\n";}#ファイルごとの処理
    }
}
close(DIR);
}

No. 1047 # yuji 2000/08/02 (水) 12:18:15
近況報告ですが、回線が専用線になりまして。(^^)
今後は、apache+php+データベースに取り組んでいきたいと考えております。
Xt、おもしろいですよね。以前、ちょっとだけ取り組みました。

ディレクトリには、1個以上のファイルが含まれることが
多いですから、こっちのほうがスマートでしたね。(^^;
それでは、また。

#!/usr/bin/perl
GetFiles(".");
exit(0);

sub GetFiles(){
local($dir)=@_;
local(*DIR);
local($file);

print "In $dir\n";
opendir(DIR,$dir);
while($file=readdir(DIR)){
    if(-d "$dir/$file"){
        if($file ne '.' && $file ne '..'){
        &GetFiles("$dir/$file");
        }
    }else{
    print "$file\n";
    }
}
close(DIR);
}

No. 1048 # いち 2000/08/02 (水) 18:27:43
御回答ありがとうございます。

ちなみに僕の使っているOSはSunOS 5.6で、
Netscape はバージョン4.7です。

HTTP/FTP クライアントについては、
ネットワークプログラミングの基礎知識で今勉強中なのですが、
ftp の ascii モードと binary モード
というのがなんなのか良く解りません。


.netscape/ については less で覗いてみて、
bookmarks.html は、ブックマークに登録してあるもの、
history.list は、
URLを入力する所の右の下向き矢印をクリックすると表れるURL一覧、
preferences.js は、設定ファイルだと思うのですが、
plugin-list 、plugin-list.BAK については解りません。
その他のファイルについては、見ようとすると

"ファイル名" may be a binary file.
See it anyway?

という表示が出てきて、yesと答えても意味の解らないものが出てくるだけでした。


netscapeのキャッシュの事に関しては、
ls -lud 99/ と入力すると、99/ディレクトリにアクセスされていましたが、
その99/ディレクトリの中のファイルに関して、そのコマンドを入力すると、
アクセスされていませんでした。
これって、だめなのでしょうか?


あと、umask というコマンドについてなのですが、
ファイル、ディレクトリ作成時に、
ファイルのパーミッションを -rw-------
ディレクトリのパーミッションを drwx------
としておきたく、umask の値を変更したいのです。

umask が0の時のパーミッションは、
ファイルが -rw-rw-rw- で、
ディレクトリが drwxrwsrwx なのです。
groupの部分に s の表示があるため、umask 2067
としたらうまくいかないので、umask 77 としたら、
ディレクトリのパーミッションは drwx--l--- となりました。
groupの l も消すようにしたいのですが、どうしたらいいですか?

No. 1049 # 68user 2000/08/02 (水) 23:32:28
@いちさん
> ftp の ascii モードと binary モード
> というのがなんなのか良く解りません。
http://X68000.startshop.co.jp/~68user/unix/pickup?ftp のように
どこかの ftp サイトから mew-1.94.2.tar.gz をダウンロードして下さい。
get の前に binary とタイプすればいいです。

> .netscape/ については less で覗いてみて、
ね、自分で調べればそれなりにわかるでしょ。まずは
自力で調べて、それでもわからなければ質問して下さい。

その他については、strings で見ればわかるかもしれません。
それでもわからないものについては、多分僕にもわからないです。

> 99/ディレクトリの中のファイルに関して、そのコマンドを
> 入力すると、アクセスされていませんでした。
> これって、だめなのでしょうか?
ダメなんでしょう。ということは、おそらく
    % strings ~/.netscape/cache/index.db
で、ファイル名が出ないでしょうから、そもそも URL と
キャッシュファイルとのマッピングが出来ていないということです。

> あと、umask というコマンドについてなのですが、
umask 77 で、mkdir でディレクトリを作成したら
drwx--l--- になりますか? SunOS 環境が今手元に
ないので試せませんが、本当ですか?
# l の意味は ls のマニュアルを参照のこと。

@yujiさん
> 近況報告ですが、回線が専用線になりまして。(^^)
実はうちも専用線になったので Postgres をいじって遊ぼうと
思ってたら、仕事のせいで暇が全くなかったりします。

機能仕様書や詳細設計書を書いたり、Word や Excel に
苦しむ生活はもう嫌 (-_-#

No. 1050 # my [E-mail] 2000/08/04 (金) 11:39:12
はじめまして。
私は今プログラマーの仕事をしております。

今回の質問というのはcronについてです。
現在、UNIXを使って「指定した時間にプログラムを実行させる」
ということをしようとしています。
crontabに日時などの情報とコマンドを記述するらしいということは
わかったのですが、どうも思ったようにいきません。
crontabに日時、echoコマンドを記述したところ
mailで返ってきました。
インターネットからの情報ではechoコマンドやエラーが出たときは
mailで返って来るということなので、それはそれでよかったのです。
しかし、いざ実行したいシェルを書きますと、
シェルが起動してくれませんでした。
cronはシェルを起動することもできるんですよね?
シェルはフルパスで指定しましたし、chmodで実行を許可しておきました。
そして、何せシェル単独では動くのです・・・。
cronを使ってシェルを起動させるのに、ほかに何か注意する点はありますか?

お忙しいところすいません。
もし何かわかることがございましたら、お答えいただきたく思います。

それでは、よろしくお願いいたします。

No. 1051 # 68user 2000/08/04 (金) 13:14:22
> ほかに何か注意する点はありますか?
必要な環境変数が設定されているか、例えば PATH は
通っているか、などをチェックしましょう。cron で
env コマンドを実行すればわかるでしょう。

No. 1052 # Syuichi.K [E-mail] 2000/08/06 (日) 05:20:18
この掲示板を観ていて、
ソース類を頻繁に書き込む掲示板では、独自タグでtextareaを表示できるようにすると
1.ドラッグによるテキスト選択がやりやすい(普通の表示だと異様にやりずらいブラウザがあります)
2.1ページのログの縦幅が減る
という利点があると思ったのですがどうでしょうか。

#独自タグは人によって意見が全然違うのでしょうが
##「違うのでしょうが」っていうのは日本語としておかしいのでしょうが

No. 1053 # じょん 2000/08/07 (月) 15:56:49
はじめまして、教えて下さい。

Apache 1.3.12
TurboLinux 6.1
の環境で cgi-bin フォルダがあります。
.cgi のファイルは正しく実行されるのですが、
.html のファイルまで実行しようとする様子で、エラーになってしまいます。
多分、Apache の設定だと思うのですが、資料がなくてわかりません。

ご教授よろしくお願いします 

No. 1054 # has 2000/08/07 (月) 16:27:37
perlでローカルタイムと標準時との間の相互変換をする方法について
質問です。

$t = time;
($sec,$min,$hour,$day,$mon,$year,$wday) = gmtime($t);
または
($sec,$min,$hour,$day,$mon,$year,$wday) = localtime($t);

とすると、現在の時刻に関する情報(秒、分、時、日、年、月、曜日)が
得られますが、この($sec,$min,$hour,$day,$mon,$year,$wday)がわかっているときに
$tを得るにはどうしたらよいのでしょうか。

No. 1055 # 68user 2000/08/07 (月) 17:46:23
@じょんさん
> .html のファイルまで実行しようとする様子で、エラーになってしまいます。
おそらく
    http:// hostname/~foo/cgi-bin/
でなくて、
    http:// hostname/cgi-bin/
の話だろうと思いますが、デフォルトでは httpd.conf で
    ScriptAlias /cgi-bin /usr/local/www/cgi-bin
などとなっているので、全てのファイルが CGI プログラムとして
認識されます。なので、
    Alias /cgi-bin /usr/local/www/cgi-bin
にすればよいです。ただし根本的には /usr/local/www/cgi-bin に
CGI プログラムしか置かないというのが (apache の思想としては)
正しいです。

@Syuichi.K さん
> ソース類を頻繁に書き込む掲示板では
空白の話ですよね。空白を &nbsp; に変換しようかなと考えて
いたのですが、それだと
> 1.ドラッグによるテキスト選択がやりやすい(普通の表示だと
> 異様にやりずらいブラウザがあります)
> 2.1ページのログの縦幅が減る
というのは解消できないのでしょうか? 「ドラッグしづらい」
「縦幅が減る」の意味がちょっとわからないです。

@has
> この($sec,$min,$hour,$day,$mon,$year,$wday)が
> わかっているときに $tを得る
Time::Local モジュールを使います。perldoc Time::Local を
参照のこと。perl4 なら require 'timelocal.pl' です。

ところで、お盆には行けない可能性が大になりました>has
今の状況だと、夏休みを取れるかどうかも怪しいという…。

No. 1056 # has 2000/08/07 (月) 20:39:23
@68user
ありがとうございました。
調べてみますです。

お仕事大変そうですな。
時間のとれたときにでも、
ゆっくりお話ししましょう。

No. 1057 # じょん 2000/08/08 (火) 12:06:08
68user さんありがとうございます。
アドバイスを元に、試行錯誤してうまくいきました
Apache って面倒ですね (^^;)

今後も、よろしくお願いします。 m(_'_)m 

No. 1058 # gongo [E-mail] 2000/08/08 (火) 20:14:01
@68user様
どうも、ご無沙汰しております。Xアプリケーション作成中のgongoです。
前回68user様に教えていただいた通り、イベントハンドラを用いて
線を描くことができました。そこで今度はXDrawLineだけではなく、
他のXlibの関数を用いて絵を描こうと思い実行してみたのですが
問題が生じてしまいました。前回のプログラムからちょこっと直したので
次のようになっております。
http://www.din.or.jp/~gongo/xtshirts.c (プログラム本体)
http://www.din.or.jp/~gongo/color.dat (色設定)
http://www.din.or.jp/~gongo/outline.dat (絵の輪郭のための座標)
http://www.din.or.jp/~gongo/polygon.dat (絵を塗り潰すための座標)
今回やろうとしたのは、
1.絵を描くための窓を白で塗りつぶす(最初のみ)
2.窓に影をつける(見た目を格好よくしたかったため)
3.全ての窓に同じ絵を描く
4.その絵に輪郭をつける
です。で、問題というのはこれらすべてはExposeイベントによって
処理されるようにしたのですが、どうも窓の名前(window1,window2など)
が表示されてしまいます。窓に何も描いていない場合でない限り
窓の名前は表示されないものと思っていたのですが、今回絵を描いても
窓の名前が表示されたりされなかったりします。Exposeを何度も起こして
(上に他の窓を持って来たりして)動作を確認していたのですが
窓の名前が表示されるときもさればそうでないときもあるため
原因がいまいちわかりません。

どうかよろしくお願い致します。

No. 1059 # 68user 2000/08/08 (火) 22:51:30
まず、
    - Window?? というのは Xt のラベル
    - その下の服やらなんやらは Xlib
です。

Xlib の方は Expose が発生すると再描画するように EventHandler を
設定しています。しかし、Xt の方は Xt が勝手に Expose を取得し、
再描画しています。

で、表示される/されないの現象を見るに、
    - Xlib の方は、ウィンドウの一部が露出しただけで常に
        再描画するようになっています。なぜならウィンドウ全体である
        form に Expose イベントハンドラとして、全ての Xlib な画像を
        再描画するように設定されているからです。
    - Xt のウィジェットの方は、自分自身のウィジェットが
        露出しない限り、再描画しません
なので、xtshirts のウィンドウの半分を別のウィンドウで覆い、
その後 xtshirts ウィンドウを露出させると、隠れていなかった
部分のラベルが消えます。これは、隠れていなかった部分の
ウィジェットは再描画しなかったのに、Xlib の方が再描画
してしまったからでしょう。

対策としては、
    - Xlib の方でも本当に関係ある Expose だけを拾うようにする。
    - Xlib の方で Expose を受けたら再描画し、その後 XClearArea
        (だったかなぁ?) で隠れてしまったウィジェットの方に
        Expose イベントを送る
でしょうか。あるいは重ね合わせを簡単に指定できる方法が
あるのかもしれません。

以上、Xt 素人の意見でした。大外しの可能性もありますので、
盲目的に信用しないで下さい。

ちなみに initflag の部分は
    - 結局一度しか実行されない (main だから)
    - コールバックやイベントハンドラは一度設定したら、ずっと
        その設定が残る (再設定しない限り)
なので、意味はないと思います。

No. 1060 # gongo [E-mail] 2000/08/09 (水) 03:23:55
@68user様
本当にありがとうございます!
どうしてあのような状況になったのかだいたい理解できました。

>form に Expose イベントハンドラとして、全ての Xlib な画像を

これについては最初は各ウィジェットごとにExposeイベント処理をしよう
かとも思っていたのですが、アプリケーションの見た目のために
意味もなくつけた影となる窓もXlibを用いて色を塗っていたため
全部のウィジェットについてExposeを設定するよりもformの方が
簡単かなぁと思ってしまったためです。

ご提案してくださった対策法につきましては2つ目の方がちょっと
まだわからないところがあるのでいろいろやってみたいと思います。

基本的にはXtのラベルには出てきてほしくないものなのですが・・・。

No. 1061 # gongo [E-mail] 2000/08/09 (水) 21:13:23
@68user様
Xtのラベルを表示させないようにするのは成功しました。
結局各ウィジェットごとにExposeイベントの処理を行うことにしました。
そこで次に各ウィジェットごとに服の色を変えようかと思い、
DrawOnWidgetの中でdrawgcの属性値を変えようとしたのですが
どうもうまくいきません。1つのGCを各ウィジェットに対して
属性値を変えつつ使い回すのは無理なのでしょうか。
どうしても最初の窓用に設定した色で全て塗りつぶされてしまいます。
プログラムはこちらです↓
http://www.din.or.jp/~gongo/xtshirts.c
http://www.din.or.jp/~gongo/color.dat
http://www.din.or.jp/~gongo/fixedcolor.dat
http://www.din.or.jp/~gongo/polygon.dat
http://www.din.or.jp/~gongo/outline.dat

まだ先の話ですが、いずれは1つの窓をクリックすることで
全ての服の色に影響を与え、再描画するようにしたいと考えております。
どうか宜しくお願い致します。

No. 1062 # 68user 2000/08/09 (水) 21:54:47
たぶん、DrawOnWidget の fscanf で、バッファオーバーランを
起こしています。そのため windownum が上書きされ、値が常に
0になってます。例えば POLNUM の数を増やすと動作しました。

開発初期段階のうちから
    if ( j >= sizeof(polpoints)/sizeof(polpoints[0]) ){
        オーバーラン
    }
というような自動チェックのコードを仕込んでおくこと
をお勧めします。

あと、デバッグは、もうちょっと注意深くやってみましょう。
XChangeGC 周辺で windownum や pixelnum[windownum] の
値を表示させるだけで、おそらく気づいたことでしょうから。

No. 1063 # 68user 2000/08/09 (水) 22:16:39
ちゃうな。POLNUM は正しいのか。というわけで、
    誤: fscanf("%d%*c%d%*c",&polpoints[j].x,&polpoints[j].y);
    正: fscanf("%hd%*c%hd%*c",&polpoints[j].x,&polpoints[j].y);
ですかね。XPoint のメンバ x,y は int でなく
short int です。

No. 1064 # gongo [E-mail] 2000/08/10 (木) 00:16:58
@68user様
お手数おかけ致しまして申し訳ございませんでした。
DrawOnWidgetに入った時点でwindownumがきちんと受け渡されて
表示されていたので、てっきり大丈夫なのだと思いこんでいました。
以後もう少し気をつけてデバック致します。

No. 1065 # masa 2000/08/10 (木) 00:59:15
よく参考にさせてもらってるのですが、発言ははじめてです。
よろしくお願いします。
今環境変数に興味を持っているのですが
UGTOPの「確認くん」で一部の携帯電話で
クライアントの電話番号が取得できる欄が
ありました。この環境変数名(HTTP_???)は何かご存知ですか?
もしかしてCLIENT_IPとかでしょうか?

No. 1066 # 68user 2000/08/10 (木) 01:24:48
> この環境変数名(HTTP_???)は何かご存知ですか?
    http://www.zdnet.co.jp/news/0003/29/ido.html
HTTP_X_UP_SUBNO だそうで。まぁおそらくデータの流れは
    携帯←→センタ←→WWWサーバ
でしょうから (かな?)、今はセンタ側で対応されてて、電話番号は
取れないのかも。

ところで、相変わらず http://www.ugtop.com/ って、Shift-JIS なのに
    Content-Type: text/html; charset=iso-2022-jp を
を出してますな。なので、うちでは化け化け。何か意図があるんだろうか。

No. 1067 # tt1 2000/08/10 (木) 13:29:07
はじめまして
perlで以下のことをやりたいのですが教えてください。

$aaa = 10000000;

これを 10,000,000 というようにしたいのですか?
1000の場合は、1,000 です。
どうすればよいですか?
よろしくお願いします。

No. 1068 # 68user 2000/08/10 (木) 14:00:07
> どうすればよいですか?
どうすればよいと思いますか?

# 考えるのがめんどくさい人はこちら。
#  http://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma

No. 1069 # R-N 2000/08/11 (金) 02:57:41
どうも、おひさしぶりです!
wrapperを使って色々テストしていたのですが、wrapperではエラー表示がなく
実際に実行すると得意の500 Internal Server Errorがでます。
ちょっと変なことをやってるんですが...。
(日付を数値で保存して差をみたかった)

#!/usr/local/bin/perl
$temp0 = 966500000;
$temp1 = localtime($temp0);
$temp2 = localtime(966000000);
print "$temp1/$temp2";

以上がテストした全文です。(属性は755)
この調子だとプログラムに組みこんでもエラーですよね?
日付表示もしたいのでlocaltime($temp0)とかしてみたんですが...。
何処がマズイのでしょうか?

No. 1070 # Syuichi.K [E-mail] 2000/08/11 (金) 05:16:14
> 空白の話
それはどういう不都合なのでしょうか?

ドラッグというのは、マウスでソースを選択する時の事です。

No. 1071 # 68user 2000/08/11 (金) 09:29:41
@R-N さん
> wrapperを使って色々テストしていたのですが、wrapperではエラー表示がなく
> 実際に実行すると得意の500 Internal Server Errorがでます。
Content-type ヘッダを出力していない、ってことかな。

@Syuichi.K さん
> ドラッグというのは、マウスでソースを選択する時の事です。
これはちょっと後ほど。というか、空白はなにかしらの
方法で画面に反映するようにするつもりではいます。

No. 1072 # R-N 2000/08/11 (金) 23:29:12
ぐはっ、そうでした...。
あいかわらず基本がおろそかでもうしわけない...。
ありがとうございました、でなおしてきまする。

No. 1073 # gongo [E-mail] 2000/08/12 (土) 19:07:46
@68user様
どうも、gongoです。
前回発言したときよりさらに進めて、今度は真ん中に表示される服を除く
服が選択されたときに、選択された服の色によって選択されなかった
他の服の色を塗りなおすということをやろうとしています。

そこで、あるウィジェットがマウスでクリックされるとWidgetChoice
という関数に入るようにして、その中でChangeColorという関数を
呼び出すことで色のRGB値を書いたファイルcolor.datを書き直すことに
しました。そして新たな色で再描画するようにExposeイベントを送る
ことにしました(ただし、まだ実験段階なのでlabel1だけ
書き直そうとしています)。

ところが、Exposeイベントを送っても新たなカラーで描き直されません。
XtRealizeWidgetではだめで、XtUnmapWidgetをやってからXtMapWidget
をやるとマウスでクリックした時に一瞬label1がチラッとするので
Exposeイベントは送られているような気がします。しかし、新たな色が
有効になりません。また、XClearWindowをやってみたりもしましたが
これだと服が消えてしまったままで再描画されません。

こういった場合は、DrawOnWidgetと同様のことをChangeColorの後に
書くべきなのでしょうか。できればExposeイベントを意図的に
起こすことで再描画してほしいのですが・・・。

どうか宜しくお願い致します。

No. 1074 # gongo [E-mail] 2000/08/12 (土) 19:12:17
@68user様
失礼しました。プログラムはこちらです↓
http://www.din.or.jp/~gongo/xtshirts.c
http://www.din.or.jp/~gongo/color.dat
http://www.din.or.jp/~gongo/outline.dat
http://www.din.or.jp/~gongo/fixedcolor.dat
http://www.din.or.jp/~gongo/polygon.dat
http://www.din.or.jp/~gongo/oldcolor.dat

宜しくお願い致します。

No. 1075 # gongo [E-mail] 2000/08/14 (月) 02:00:24
@68user様
よくよく考えると、maninに入ってすぐにColor()を呼び出したっきり
だからまずいのでしょうか。そうなるとExpose云々よりもまず
クリックしてcolor.datが書き直された後にColor()を呼び出すべき
なのでしょうか。う〜ん、お盆あけないと確認できません・・・。

No. 1076 # ふくし [E-mail] 2000/08/14 (月) 04:04:54
ここでははじめましてです。どぞよろしく。
早速質問ですみませんが、
・Cygwinで動くApacheのバイナリーパッケージを見かけた方か、
・CygwinでApacheのコンパイルに成功した方か
・Windows用ApacheでCygwinのPerlのスクリプトを動かす方法を知っている方は
いらっしゃいますか?
いつもは会社でFreeBSDでCGIの開発、メンテをしているのですが、
(一般ユーザーで管理者ではなく、UNIXくわしくありません)
夏休み家人のWindows98マシンで作業をしなければならなくなり、
Cygwin、Perl、Meadow(Emacsですな)は入れて快適に使えているのですが、
肝心のApacheがどうしてもインストールできません。
具体的な現象でいうと、makeで「no rule for targat all. stop」とか言われます。
成功した人のページ(男塾の塾長さんらしいです ^^;)のマネをしているのだが、、。
ActivePerlを使うのが常道らしいですが、会社に最終的には持っていくのでUNIX互換にしたいし、
DOS窓とかWindowsのエディターは慣れてないので憂鬱です。
ぶしつけで申し訳ありませんがよろしくお願いします、、。
ああっでもペケロクの部屋なのにPCの質問ですいませんっ
ではでは。

No. 1077 # ふくし [E-mail] 2000/08/14 (月) 13:53:34
すいません、解決しちまいました、、。
pastyというフランス人のサイト(http://persoweb.francenet.fr/~pasty/cygport/)に
B20(というCygwinのバージョン)用のバイナリーがあって、ぼくのはv1.1なんだけど、
動かしてみたら、動いた。
http://localhost/index.htmlに自分が書いたページ置いたら見えます。イエー!

ただ、ここでまた問題がー。
/usr/local/apache/cgi-bin/の下に自作のcgi、hello.cgiを

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
print "<html><body>聞こえますか</body></html>\n";

とか書いて動かしてみたんですが、奇怪な現象が、、。
ブラウザがページを一生懸命ロードするんですけど、
いつまでたってもロードがおわりません。
で、停止ボタンを押すと

聞こえますか>
================================================
転送を中断しました!

とか表示されて、ページのソースを見ると、

<html><body>聞こえますか</body></html>

と書いてある。ううん、動いてはいるようなんだけどなー。

コマンドラインで hello.cgi を動かしても、

Content-Type: text/html

<html><body>聞こえますか</body></html>

と出てくるし、Content-type のあとの改行を1個減らすと
ちゃんと Internal Server Error になるんですけど。(^^;;;

どなたか同様の経験を克服された方はいらっしゃいますか?
何回も聞いてすいません。
うーん、惜しい。惜しいんだけどなー、、、。

No. 1078 # CAcTus [URL] [E-mail] 2000/08/14 (月) 14:09:19
ホームページ開設のお知らせ・・・
■残暑お見舞い申しあげます。さて、一風変わったサボテンホームページができましたのでご参笑ください。これで子供たちやご婦人方のサボテンファンがひとりでも増えれば幸いです。どうか今後ともいろいろご教示くださいね。

No. 1079 # skel.103M 2000/08/15 (火) 17:58:45
はじめまして、skel.103Mです。いつもこのホームページを参考にさせて
いただいてます。

@ふくし さん
>print "Content-type: text/html\n\n";
print "Content-type: text/html\r\n";

print "Content-type: text/html\n\r";
にすれば動くかも、と思ったりしました。

No. 1080 # 68user 2000/08/16 (水) 21:53:20
IP unreachable な環境にいたので、しばらく書き込め
ませんでした。で、ネット外でいろいろあって、これから
しばらくは書き込まないと思います。ご了承ください。

とりあえずはこの掲示板はそのまま置いておきますが、
一時的に書き込み不可にするかもしれないし、しないかも
しれないです。要は未定ってことです。

No. 1081 # にゃ 2000/08/17 (木) 00:55:35
はじめまして。にゃと申します。

@ふくし さん
おそらく接続がKeep-aliveのままに
なっているのではないかと思います。
Connection: close
というヘッダを追加して試してみてください。
ローカルでCGIのテストをするときはLinuxでApacheを動かしていますが、
こちらではCGIを動かすと自動的にこのヘッダを付けてくれるようです。
あとskel.103M さんも指摘されてますがヘッダの部分は
改行コードを"\r\n"にしたほうが良いかもしれません。
ヘッダの部分だけ書くとこんな感じかな?
print "Connection: close\r\nContent-type: text/html\r\n\r\n"

No. 1082 # ふくし [E-mail] 2000/08/18 (金) 22:37:20
skel.103Mさん、にゃさん、お返事ありがとうございました。
\r\n も、\n\r も、\r\n\r\n も、\n\r\n\r もダメでした。(;.;)
ちなみに httpd.conf で KeepAlive Off にしています。
Telnet でたたいてみると(この発想がなぜかありませんでした ^^;)、

$ telnet localhost 80
Trying 127.0.0.1...
Connected to tokumei.kibou.catv.ne.jp.
Escape character is '^]'.
GET http://localhost/cgi-bin/test.cgi HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 18 Aug 2000 13:25:42 GMT
Server: Apache/1.3.12 (Cygwin)
Connection: close
Content-Type: text/html

<html>どうなんでしょうね</html>

とここまで表示して端末の動きが固まってしまい、
Ctrl-Z を押すと、

Connection closed by foreign host.
$

と出て終わります。
(ふつうの html を表示させるときは固まりません)

また、上のように、Connection: close は Cygwin でも挿入されるようですねー。
(KeepAlive On にしてみても挿入されました)

とまれ、どうもありがとうございます。
引き続き何かありましたらよろしくおねがいします。

ちなみに、勉強用に使っているのはオライリーの「ねずみの本」ですが、
これでは \n\n になっているんですが、\r\n が正式なんでしょうか?
あるいは Cygwin だから Windows 改行にした方がいいということですか?
これも合わせてよろしくおねがいします。

質問ばかりで申し訳ありませんが、ご無理のない範囲でどうぞよろしくお願いします。

No. 1083 # 68user 2000/08/18 (金) 22:57:32
> これからしばらくは書き込まないと思います。
と言いながら、早々に復帰してみたり。

Windows も cygwin も詳しくありませんが、スクリプトの最後に
    close(STDOUT);
を入れるとどうなりますか?

でもまぁ、どの方法で解決したとしても挙動が変なわけで、
> 肝心のApacheがどうしてもインストールできません。
> 具体的な現象でいうと、makeで「no rule for targat all. stop」
をなんとかするか、別の WWW サーバを入れるのが
正しい道のような気もします。

No. 1084 # ふくし [E-mail] 2000/08/19 (土) 00:02:31
68userさん>
お忙しいところ、お返事ありがとうございます。
close(STDOUT); を早速入れてみましたが、ダメでした。

うーむぅApache以外のhttpdかー、考えませんでした。
どんなもんがあるんでしょうね(自分でも調べますが)

とまれ、どうもありがとうございましら。

No. 1085 # 68user 2000/08/19 (土) 00:13:29
@gongo さん
作成したプログラムをそのまま投げてデバッグしてもらおうと
するのはやめましょう。回答者の負担が大きすぎます。

例えば、color.dat を書き換えるとか、10個のウィジェットを使う、
なんてのは Xt の理解とは関係ないはずです。問題が発生する
最小限のプログラムを作ってから質問して下さい。

また、最小限のプログラムを作る過程で、自力で解決してしまう
ともあるはずです。例えば前の fscanf の件は、ファイル操作部分を
切り離して定数化しようとしていたなら、自力で原因を突き止められて
いたかもしれません。

あと、web にプログラムを置く際、改行コードを 0x0D に直しておくとか、
文字コードを EUC にしておくなどの気遣いがあるといいですね。

本題ですが、WidgetChoice の中に
    DrawOnWidget(label1,client_data,NULL);
と書いてみるといかがですか。当方の環境では、選択したウィジェットの
色が label1 に反映されていました。

No. 1086 # gongo [E-mail] 2000/08/19 (土) 01:33:10
@68user様
本当に面倒ばかりおかけして申し訳ございませんでした。
今まで状況をどうやって伝えたらよいのかわからず
全部お見せするという形をとってしまいましたが、
これからは良く考えます。

で、プログラムについてですが、結局、68user様のご返事を
いただく前に自分で試した方法でなんとかなりました。

方法としてはWidgetChoice()内でChangeColor()をやった後に
Color()をやって、あとは再描画したいウィジェットについて
XtUnmapWidget()とXtMapWidget()を行いました。
これによって新しい色が有効になってExposeイベントが
発生し再描画できました。

68user様がご提案してくださった方法についても実行してみます。

とにかく本当に御忙しいところすみませんでした。
何卒これからも宜しくお願い致します。

No. 1087 # Yuuki [E-mail] 2000/08/19 (土) 02:44:05
Yuukiです。

ふくしさん
> 肝心のApacheがどうしてもインストールできません。
> 具体的な現象でいうと、makeで「no rule for targat all. stop」
ここのバイナリを使うっていうのはどうですか?
一番楽だと思います。

http://www.apache.org/dist/binaries/win32/
http://www.apache.org/dist/binaries/win32/apache_1_3_12_win32.exe

No. 1088 # ふくし [E-mail] 2000/08/19 (土) 05:57:25
>Yuukiさん
情報ありがとうございます。
これも知っていて、インストールしてみたんですが、結局Cygwinとは共存できないんですよね?
(Cygwin の / から始まるファイルシステムにDocumentRootを乗せてCygwinのPerlを実行することができない)

会社でFreeBSDのApacheを使っていて、もうだいぶUNIX用のCGIスクリプトを書いていて、
プログラム内のパス名とか全部UNIX風に書いてしまっているし、flockやsystemなどのUNIXコマンドも使っているので、
できればCygwinにApacheを入れたいんです。
あるいは、Windows用のApacheをCygwinで使う方法があるんでしょうか?

今は別のPCにLinuxを入れてハブでつないで作業してるんですけど、
やっぱりどうしてもノートに入れて出先でデバッグとかしたいので、
またmakeから再挑戦しています。

いずれにせよ、ありがとうございます。

No. 1089 # T.T. 2000/08/19 (土) 10:34:07
はじめまして

> 肝心のApacheがどうしてもインストールできません。
> 具体的な現象でいうと、makeで「no rule for targat all. stop」

この件ですが、試しにソース(1.3.12)を持ってきてコンパイルしてみました。
結果、多少の問題があるものの、以下手順でインストールまで出来ました。
・./configure --prefix=/usr/local/apache
・以下のパッチを当てる
・make EXTRA_LIBS=-lcrypt
・make install INSTALL=install.exe

ただ、「no rule for targat all. stop」ってエラーには遭遇しませんでした。
Makefileの作り方を間違えていませんか? >ふくしさん
また、下のhello.cgiも動いているようです。(^^;

---- ▽パッチ ここから
diff -ru old/apache_1.3.12/src/main/http_main.c new/apache_1.3.12/src/main/http_main.c
--- old/apache_1.3.12/src/main/http_main.c Sat Feb 5 21:01:54 2000
+++ new/apache_1.3.12/src/main/http_main.c Sat Aug 19 07:29:30 2000
@@ -116,7 +116,7 @@
  #endif
  #ifdef WIN32
  #include "../os/win32/getopt.h"
-#elif !defined(BEOS) && !defined(TPF) && !defined(NETWARE) && !defined(OS390)
+#elif !defined(BEOS) && !defined(TPF) && !defined(NETWARE) && !defined(OS390) && !defined(__CYGWIN__)
  #include <netinet/tcp.h>
  #endif
  #ifdef HAVE_BSTRING_H
diff -ru old/apache_1.3.12/src/support/logresolve.c new/apache_1.3.12/src/support/logresolve.c
--- old/apache_1.3.12/src/support/logresolve.c Wed Jan 26 13:36:02 2000
+++ new/apache_1.3.12/src/support/logresolve.c Sat Aug 19 09:09:00 2000
@@ -101,7 +101,7 @@
    * statistics - obvious
    */
  
-#ifndef h_errno
+#if !defined(h_errno) && !defined(__CYGWIN__)
  extern int h_errno; /* some machines don't have this in their headers */
  #endif
  
---- △ここまで

No. 1090 # にゃ 2000/08/20 (日) 00:03:43
@ふくしさん

ううっ、外してましたか。

一応答えられるところだけ。
>ちなみに、勉強用に使っているのはオライリーの「ねずみの本」ですが、
>これでは \n\n になっているんですが、\r\n が正式なんでしょうか?

確か調べたことのある範囲ではHTTPの1.0と1.1で
ヘッダの改行はCR LF(\r\n)が正式だったと思います。
ただ改行が\nで不具合を起こした経験はないですし
多分問題はないと思います。

No. 1091 # 68user 2000/08/20 (日) 00:26:16
> 確か調べたことのある範囲ではHTTPの1.0と1.1で
> ヘッダの改行はCR LF(\r\n)が正式だったと思います。
ですね。

> ただ改行が\nで不具合を起こした経験はないですし
> 多分問題はないと思います。
ですね。WWW サーバ君が勝手に変換してくれます。

でも、少し前の apache ではどうやっても (\r\n を
出力しても) \n になってしまって、なんでかなぁと
思った記憶があるんですが、今やってみたら再現しない。
記憶違いか。


ところで、勝手に他人のリンク集にリンクチェック
かけてしまうという、かなり無礼なページを作りました。
    http://X68000.startshop.co.jp/~68user/links/
しかし、よいリンク集ってのは簡単には見付からないものだなぁ。

No. 1092 # ふくし [E-mail] 2000/08/20 (日) 16:17:55
T.T.さん、ありがとうございました!

教えていただいた通りにビルドしたら、インストールできました!(^o^)/

ただし、CGI がなかなか表示されない問題はそのままです。まとめると、
・普通の HTML を表示すると、すぐ表示され、流星もすぐ止まる。
・CGI で text/plain だと(cgi-bin に入ってる TEST-CGI とか)
    表示はされるものの、流星は止まらない。
・CGI で text/html だと、表示じたい待たされる
です。

\r\n問題、Connection: close 問題、KeepAlive 問題も試しましたが、無効だったようです。

あと、apachectl stop でたまに死んでくれず、そうするとapachectl start で生き返ってくれない問題がありました。
これは、apache/logs/httpd.pid が消えずに残っているせいで、手動でぶち消してやると再度生き返りましたが、
同様の問題に遭遇された方はいらっしゃいますか?

ときに、T.T.さんはhello.cgiを無事動かされたそうですが、
WindowsはNTですか、98ですか? CygwinはB20ですか、v1.1ですか?
教えていただけると幸いです。

なんだか掲示板を私物化しているようで心苦しいですが、CygwinでApacheが動くと使い道があると思うので御寛恕ください。
あらためてみなさんありがとうございます。(_ _)

No. 1093 # T.T. 2000/08/20 (日) 23:17:31
@ふくし さん

私の環境は Windows2000 + Cygwin-1.1.4 です
Cygwinを使うなら、NT系の方がいいですよ。
特に、外部プロセスの呼び出し辺りは95/98だと怪しいから...

おそらく、ふくしさんの問題も外部プロセス呼び出しに起因する問題でしょう。
Windows98で作業を行いたいのであれば、割り切って使うしかないと思います。
Netscape6だと</html>までを読み込んだ時点で表示してくれるようなので、
読み込みが完了しないことさえ気にしなければどうにかなるでしょう。

No. 1094 # ふくし [E-mail] 2000/08/21 (月) 00:43:57
うーん、そうかぁ、、。
NTも2000も持ってないし、使いたいマシンはノートなんで、
あんまりネイティブ インストールしにくいものがあるんですよね。
(ハイバネの設定とかいろんなドライバーなど、めんどくさいので、、。
    メーカー、サポートしてくんないし。
    最近のノートは「プロダクト リカバリー ディスク」とか入ってるけど
    OSのディスクじたいついてこないんだもんなー、、、)
プロセスの問題というのは納得がいきますね。
ということでどうやらCygwin固有の問題でだらだらと引っ張ってきたようですね。
どうもすいません。(_ _)
NC6 を入れてみます。重ねてどうもありがとうございました。

No. 1095 # ふくし [E-mail] 2000/08/21 (月) 02:23:41
たびたびすみません。
CGIがなかなか出てこない問題で、10分ぐらいたつと表示されると書いていたのは、
ApacheのTimeoutで表示が中断させられていたということがわかりました。
Timeoutをデフォルトの300(秒)から1とかにすると、見かけ上は1秒で表示されます。(^^;;;

No. 1096 # ふくし [E-mail] 2000/08/21 (月) 14:01:31
T.T.さま>
NC6試してみました。いいビルドに当たったのか、意外と安定しててビックリ。
ということで今回のソリューションとしては
「NC6でみて納得したら読み込み停止」で納得することにします。
すいません、今回の情報の公開について打ち合わせしたいことがあるので、
わたしあてに E-Mail いただけるでしょうか。お手間は取らせません。

他のみなさんも、情報をいただき大変ありがとうございました。
ここ数日でずいぶん物知りになりました。
今後もよろしくお願いいたします。

No. 1097 # 68user 2000/08/21 (月) 23:07:24
全然関係ない話題ですが、FYI ということで。
> NC6試してみました。いいビルドに当たったのか、意外と安定しててビックリ。
僕も数日間使いましたが、一度も落ちませんでした。
1998 年の末に、NC4 のコードを捨てて再出発したときは
どうなることかと思いましたが、まぁよくもここまできたもんだ。

Mozilla5 の最新 Milestone は M17。Netscape Communicator 6 PR2 は、
これに Netscape 社が Plug in などの付加機能を付けたもの。

Mozilla5 は
    http://www.mozilla.gr.jp/download.html
から自分の OS 用アーカイブを落としてきて、
    % tar zxvf mozilla-*-M17.tar.gz
    % cd package
    % ./run-mozilla.sh
これだけで動きます。mozilla5 は ~/.mozilla を使うので、
~/.netscape の退避は必要ありません。

mozilla を使って http://www.mozilla.gr.jp/jlp/ を見て、
M17-langjajp-ja.xpi か M17-langjajp.xpi をクリックするだけで、
メニューなどが日本語化 (これをしなくても日本語ページは閲覧可)。

FreeBSD ユーザは (ports-current を追っかけているなら)
ports で入れるのもいいでしょう。
# http://www.gnome.gr.jp/~yatt/mozilla/index.html

まぁ元々重い上にデバッグ情報を吐くので、かなり重いです。
自分で build するなら HDD を 1GB くらいは 空けておいた
方がいいかもしれない。

興味を持ったなら、
    http://www.mozilla.gr.jp/
からいろいろ辿って下さい。

No. 1098 # にゃ 2000/08/21 (月) 23:19:00
ふくしさん

全然解決にはなってませんが、一応参考までに。
Content-Lengthヘッダ等でサイズを指定してやれば
ブラウザの方で接続を切ってくれるようです。
まあ、あまり役には立たないかもしれませんが・・
    

No. 1099 # 68user 2000/08/22 (火) 02:40:28
> Content-Lengthヘッダ等でサイズを指定してやれば
またまた全然関係ないんですけど、頭の体操でも。

お手軽に Content-length を出すにはどうすればいいかなと
考えてみて、
    http://X68000.startshop.co.jp/~68user/tmp/content-length.txt
というスクリプトを書きました。BEGIN と END の部分を挿入すれば、
どんな CGI スクリプトでも Content-length が出せるはずでした。

コマンドラインからだとうまく動きます。でも、web 経由だと
    http://X68000.startshop.co.jp/~68user/tmp/content-length.cgi
と、Content-length が後に出力されてしまいます。

暇な人は原因を考えてみてください。僕は1時間悩みました。

Windows だとちゃんと動くのかもしれない。UNIX だと
動く環境もありますが、動かない環境の方が多いと思います。

No. 1100 # ふくし [E-mail] 2000/08/22 (火) 11:25:13
>にゃさん

をーホントだ(^^)。
ではじぜんに Content-length を計測して、それをはさむ仕組みを考えればいいですね。
どうもありがとうございました。

No. 1101 # hsj 2000/08/22 (火) 15:14:38
@68userさん
>暇な人は原因を考えてみてください。
perlは「何となく読める」ぐらいしかわからないのですが、
考えてみました。
原因がわかったとき脱力しました(笑

No. 1102 # gongo [E-mail] 2000/08/22 (火) 17:38:14
@68user様
Xウィンドウでの色の扱い方についての質問です。

Xアプリケーション工房のXlib編(3)で、RGBの値を0から255の範囲で指定して
いらっしゃいますが、これはどうしてなのでしょうか。
XColor構造体のred、green、blueのメンバは色のRGB値が入りますよね。
そして実際これらのメンバはunsigned shortのはずだから0から65535までの
値になるはずなのになぜ0から255の範囲で指定していらっしゃるのでしょうか。

試しに自分で簡単なプログラムを作ってみて、
同じように値(例えば"rgb:00/00/F0")をいれて見たのですが、
結果的にXAllocNamedColor後に各RGB値を見たところ、Red=0 Green=0 Blue=63420
となっていたので、きちんとunsinged shortになっています。
よって動作としては問題ないと思うのですが、どうして0から255の範囲で指定して
いたものが勝手に0から65535の範囲に直されたのかがよくわかりません。
それとXAllocNamedColorの一番後ろの引数には指定した色の正確なRGB値が入る
とのことなので調べたところ、Red=0 Green=0 Blue=61680 となっていました。
ということは指定した色に最も近いRGB値が入ったということなのでしょうか。
(厳密に同じRGB値になってほしいのですが)

そもそも自分の環境が一体何万色中何色同時発色できるのかというのが
いまいちよくわかりません。RGBの各々の強度を8ビットで表現すると
組合せとして約1677万色(フルカラーというのでしょうか)になりますが
実際はどうなのでしょう。前述のようにXColor構造体のRGBの各メンバは
unsigned shortです。ということはRGBそれぞれが16ビットで表現されるので
組合せとしては大変な数になってしまいます。

また同時発色についてはカラーマップが問題となってくる(?)のでしょうか。
本には、同時に画面に表示できる色の数はプレーン数から決まる
と書いてありました。で、私の使用しているディスプレイの情報を調べたところ
---------------------------------------------------
*Information of Visual Class*
-visual class : TrueColor
-red_mask : 00007c00
-green_mask : 000003e0
-blue_mask : 0000001f
-bits_per_rgb : 5
-map_entries : 64

*Other Informations*
-depth :16
-the number of cells in the colormap : 64
-the number of planes : 16
---------------------------------------------------
となりました。プレーン数が16ということはカラーマップのエントリは
最大65536色まで作れる(ということは65536色同時発色できる!?)とも
思ったのですが、カラーマップのセルの数は64という情報まで出てきました。
いくらなんでも64色ということはないと思うのですが・・・。

色に関してかなり頭の中が混乱しているのですが
何卒宜しくお願い致します。

No. 1103 # YAGI [E-mail] 2000/08/22 (火) 17:59:11
質問なのですが…

皆様はじめまして。今回初歩的な質問なのですが、
どうしてもわからなく投稿させて頂きます。

UNIXコマンドでuptimeがあると思うのですが
ロードアベレージ部の1分、5分、15分のところに表示される
0.09などといった値は何を基準に表示されるのでしょうか?

申し訳ありませんがお答え頂きたく思います。
よろしくお願いいたします

No. 1104 # 68user 2000/08/22 (火) 18:13:29
@hsj さん
> 原因がわかったとき脱力しました(笑
僕と同じ思いをしていただいたようで、なによりです :-)

@gongo さん
> Xアプリケーション工房のXlib編(3)で、RGBの値を0から255の範囲で指定して
> いらっしゃいますが、これはどうしてなのでしょうか。
一言で言えば X の仕様です。X(1) に
    rgb:<red>/<green>/<blue>
            <red>, <green>, <blue> := h | hh | hhh | hhhh
            h := single hexadecimal digits
とあります。たぶん、rgb:f/f/0 = rgb:ff/ff/00 = rgb:ffff/ffff/0000 ですね。
ちなみに rgb 表記は X の色が指定できるところならどこでも使えます。
# Ex. kterm -background rgb:00/33/55

> 本には、同時に画面に表示できる色の数はプレーン数から決まる
> と書いてありました。で、私の使用しているディスプレイの情報を調べたところ
> -depth :16
depth って、1色ごとの bit 数じゃなかったかなぁ。
なので、この環境だと 256*256*256 で 1677万色
出…ないかなぁ。違うかなぁ。

正直カラーマップのことはわかってないので、ちょっと調べて
みますが、あまり期待しないで下さい。

@YAGI さん
> ロードアベレージ部の1分、5分、15分のところに表示される
> 0.09などといった値は何を基準に表示されるのでしょうか?
これは後ほど。というか、正しい & わかりやすい説明をする
自信がないので、誰か答えていただけるとありがたいです。

No. 1105 # ふくし [E-mail] 2000/08/22 (火) 20:35:27
>68userさん

あれー、会社のApache1.3.9と自宅に構築中のApache1.3.12は
期待通り(というか期待を裏切ってというか)Content-length:13 を返しますねー。

これって最近話題になった改○○ー○を勝手に変えてくれる問題ですか?

No. 1106 # gongo [E-mail] 2000/08/22 (火) 22:52:29
@68user様
カラーマップについては私も調べているのですが、
どうもよくわかりません。ただ、少なくとも私の環境では
ビジュアルクラスがTrueColorとなっているため
カラーマップを書き換える事ができないようです。

>とあります。たぶん、rgb:f/f/0 = rgb:ff/ff/00 =
>rgb:ffff/ffff/0000 ですね。
>ちなみに rgb 表記は X の色が指定できるところならどこでも使えます。
〜省略〜
>なので、この環境だと 256*256*256 で 1677万色

ということはrgbを二桁(00やF0)で表せば必ず指定した通りの色が
でるのでしょうか。そうなるとなぜ四桁(FFFFなど)で表現する方法も
あるのでしょうか。逆に四桁だとカラーマップにないという事態に
なる確立が高まってしまうのでしょうか。
それと256*256*256というのはどこからわかるのでしょうか。

う〜ん、もう少し考えてみます。

No. 1107 # has 2000/08/23 (水) 00:37:34
いつもながらおかしな質問だったらごめんなさい。
perlでプログラムを作っていて、whileの中に置いたdo-whileの中で
ある条件のときはlastでdo-whileを抜けようとしていたのですが、
うまくいきませんでした。
結局いろいろ調べているうちに、lastはdo-whileをループと見なして
いないらしく、その外にあるwhileを抜けてしまっているということが
わかったのですが、これはそういうものなのですか?

No. 1108 # 68user 2000/08/23 (水) 01:59:41
@ふくしさん
> 改○○ー○
ではないんです。答えを書いちゃうと
    - $tmp = "tmpfile.$$";
    + $tmp = "/tmp/tmpfile.$$";
です。あほらしくて泣きそうです。


@has
そういうものだと思います。perl では
    do { block } while (expr)
の do は直後のブロックを実行するための命令で、
while は修飾子です。要は
    foo if ( expr );
と同じ形なわけですね。これはループではないので
last も next も redo も使えません。まぁ、
    { do { block } while (expr) }
とすれば大丈夫ですが、そこまでして do〜while を
使いたいかという話になりますか。


@gongo さん
> ということはrgbを二桁(00やF0)で表せば必ず指定した
> 通りの色がでるのでしょうか。
じゃなくて、X の内部では RGB それぞれ16ビットだけど、
16ビット×3なんていちいち指定するのがめんどくさいだろうから、
    1. ユーザは色名 (red とか) で指定できる
    2. ユーザは rgb:x/x/x rgb:xx/xx/xx rgb:xxx/xxx/xxx という
         簡略化した形式で色を指定できる
とした、ということだと思います。どの指定方法でも
XAllocNamedColor の内部で RGB それぞれ 16ビットの
色情報に展開されると。
# X のソースを持ってるなら GetColor.c あたりを
# 追っかけると、展開方法はわかると思います。

> XAllocNamedColorの一番後ろの引数には指定した色の
> 正確なRGB値が入るとのことなので調べたところ、
> Red=0 Green=0 Blue=61680 となっていました。
ということは、rgb:00/00/f0 は rgb:0000/0000/f0f0 に
展開されたということですね。

で、その 16ビットに展開した色情報が本当に使えるかどうかは、
カラーマップや X サーバ次第、ということです。

> ビジュアルクラスがTrueColorとなっているため
> カラーマップを書き換える事ができないようです。
TrueColor だと XAllocColorCells でプライベートカラーセルを
取得できないんでしたっけ? もしできないとしたら XCreateColormap
と XInstallColormap を使うんですかね (わかってない)。

> depth って、1色ごとの bit 数じゃなかったかなぁ。
これは違いました。多分。depth は1ドットごとのビット数です。

ところで、gongo さんはカラーセルを使って何をしようと
思っておられるんですか?

No. 1109 # ふくし [E-mail] 2000/08/23 (水) 02:04:17
>68userさん
あそっかぁ、、ぼくはこれを動かすために cgi-bin を 733 にしました。(^^;

>has さん
68user さんも書かれてますが、do の外側をさらに { } で囲むとあら不思議、
実行できるようです。

No. 1110 # has 2000/08/23 (水) 14:37:10
68user & ふくしさん、どうもありがとうございました。
{}でくくればいいなんて、なんか不思議な感じがします。

No. 1111 # gongo [E-mail] 2000/08/23 (水) 15:57:01
@68user様

> じゃなくて、X の内部では RGB それぞれ16ビットだけど、
> 16ビット×3なんていちいち指定するのがめんどくさいだろうから、

ということは二桁で表現するというのは本来0から65535なものを
大雑把にわけているということでしょうか。だとしたら大雑把に
分けているやつぐらいカラーマップに必ずあってほしいものですが・・・。

> # X のソースを持ってるなら GetColor.c あたりを

こ、これってどこにあるのでしょうか。

> 取得できないんでしたっけ? もしできないとしたら XCreateColormap
> と XInstallColormap を使うんですかね (わかってない)。

確かプライベートカラーセルは取得できなかったような気がします。
XCreateColormap や XInstallColormap についてはまだちょっと
詳しいことがわかりませんので本を見てみます。

> ところで、gongo さんはカラーセルを使って何をしようと
> 思っておられるんですか?

色を正確なRGB値で自由自在に扱いたいと思っております。
そして最終的には色の探索をするようなプログラムを作りたいと考えております。

以前お見せしたプログラムでは中央に窓を1個、
周りに10個の窓を表示しました。
で、各窓にはいろいろな色の服を表示しました。

具体的には中央の窓の服をターゲットとして、
周りの10個の服からユーザーがターゲットに最も近いと思われる
1つの服を選び、それによってあるアルゴリズムを通して
10個の服の色のRGB値をターゲットの色に近づけるように
改善したいと考えております。

1.服の提示(各窓の描画)
2.ユーザーによる選択
3.あるアルゴリズムを通して10個の服の色のRGB値を改善

この1から3の操作を繰り返すことで、提示されている10個の服の色が
ターゲットの服の色に収束していくようにしたいと考えております。
また実験段階なのでターゲットを表示しますが、
最終的にはターゲットの表示をやめ、ユーザーが心に思い描いた色へ
収束するようなアプリケーションを作りたいと考えております。

ここで問題なのは正確なRGB値を入れてもその色がカラーマップにない場合です。
近い色で勝手に代用されてしまうと、3で用意したアルゴリズムでの有効性
(いかによりよい色へどのくらいの回数で収束するかなど)を確認したいのに
別のところで収束する要因がうまれてしまうことになってしまいかねないからです。

No. 1112 # gongo [E-mail] 2000/08/23 (水) 19:30:47
@68user様
カラーマップの内容を知るための例みたいなのが本に載っていたので
試してみました。以下のtmp[k]はXColor構造体です。
尚、この例はRGB各32階調カラーマップのカラーセル内の表示色値を得る
といったものだそうです。

-----------------------------------------------------------------------------
    cmap = DefaultColormap(dummy_dpy,dummy_screen);

    for(k=0; k<32; k++)
        {
            tmp[k].pixel = k | k << 5 | k << 10;
            tmp[k].pad = 0;
            tmp[k].flags = DoRed | DoGreen | DoBlue;
            XQueryColor(dummy_dpy,cmap,&tmp[k]);
        }
-----------------------------------------------------------------------------

で、結果的に

-----------------------------------------------------------------------------
Red=0 Green=0 Blue=0 Pixel=0
Red=2114 Green=2114 Blue=2114 Pixel=1057
Red=4228 Green=4228 Blue=4228 Pixel=2114
Red=6342 Green=6342 Blue=6342 Pixel=3171
〜省略〜
Red=61306 Green=61306 Blue=61306 Pixel=30653
Red=63420 Green=63420 Blue=63420 Pixel=31710
Red=65535 Green=65535 Blue=65535 Pixel=32767
-----------------------------------------------------------------------------

といったようにPixel値が32767まできました。
ということは私の環境では 32*32*32=32768色 が
カラーマップにエントリされているようです。
実際 Red=61306 Green=4228 Blue=6342 などのように
色を指定したところ、XAllocColorを通してもRGB値が
変化しませんでした。

TrueColorということでカラーマップを書き換えられないので
この範囲内でうまくやりくりするしかないのでしょうか・・・。
XCreateColormap と XInstallColormap について
本を見てみましたが、まだよくわかりません。

No. 1113 # にゃ 2000/08/23 (水) 22:11:47
>あほらしくて泣きそうです。
なるほど。やはりopenの返り値は常にチェックすべきなのですね。(^_^;

しかし、こういうライブラリを作っておくと便利そうですね。
勉強になりました。

No. 1114 # 68user 2000/08/24 (木) 00:43:20
えっと、手短に返答をば。

@has
> {}でくくればいいなんて、なんか不思議な感じがします。
そうか、よく考えてみれば、変な仕様なんだな。
でも、ちょっと試してみましたが、next/last/redo が
そのまんま使えるわけでもないようで。


@gongo さん
> ということは二桁で表現するというのは本来0から65535なものを
> 大雑把にわけているということでしょうか。
です。ちと調べてみたところ、rgb:e/8/2 ってのは
    e は 14/15 なので、ffff の 14/15 = 61166
    8 は 8/15 なので、ffff の 8/15 = 34952
    2 は 2/15 なので、ffff の 2/15 = 8738
で、rgb = 61166/34952/8738 になるようです。

> 確かプライベートカラーセルは取得できなかったような気がします。
これはやはりできないようですね。

> こ、これってどこにあるのでしょうか。
例えば http://www.ring.gr.jp で「R6.4」などというキーワードで
探せば、http://ring.etl.go.jp/pub/X/opengroup/R6.4/tars/
行けます。

XFree86 など各種 X サーバというのは、(基本的には) これに X サーバの
実装を追加したものです。こっちのソースは例えばここ。
    http://ring.etl.go.jp/pub/XFree86/

> 近い色で勝手に代用されてしまうと、3で用意したアルゴリズムでの有効性
> (いかによりよい色へどのくらいの回数で収束するかなど)を確認したいのに
> 別のところで収束する要因がうまれてしまうことになってしまいかねないからです。
なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。


@にゃ さん
>なるほど。やはりopenの返り値は常にチェックすべきなのですね。(^_^;
ですね。ちなみにこれまでで一番はまったのは CGI やりはじめの頃。
    open(IN,"foo |");
ってのが動かない。理由は foo が core dump してたから、ってのです。
コマンドラインからは動くし、nobody 権限で動いていたから core が
できないので core 吐いてることがわからないという…。


@YAGI さん
> ロードアベレージ部の1分、5分、15分のところに表示される
> 0.09などといった値は何を基準に表示されるのでしょうか?
FreeBSD の w(1) から引用すると、
    平均負荷は、最近の1分、5分、15分間における実行キュー内の
    ジョブ数の平均値を表します。
です。すいませんが、わからなければ再度質問して下さい。
# これを説明し出すと長いんだわ、これが。

No. 1115 # gongo [E-mail] 2000/08/24 (木) 01:39:36
@68user様
いろいろありがとうございました。

>なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。

なので、カラーマップに存在する色だけを使って動くように
頑張ってみます。今後とも宜しくお願い致します。

No. 1116 # 68user 2000/08/24 (木) 02:17:51
>> なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。
> なので、カラーマップに存在する色だけを使って動くように
最初は TrueColor でも XCreateColormap/XInstallColormap で
いけるんじゃないか思いました。でも、手元のサンプルプログラムが
ことごとく動かないので、やっぱり TrueColor でもダメなのかと
あきらめかけました。ところが、X の設定を 8bpp (depth8) に
変えて PseudoColor にしても同じくサンプルプログラムが動きませんでした。

というわけで、サンプルプログラムがダメなのか、もともと
TrueColor だと不可能なのかはわかりませんでした。

ちなみに何をしたかったかと言うと、
    - netscape の起動時に -install オプションを付けると、
        マウスが netscape の中に入ったときだけカラーマップが
        変更され、netscape だけが色を独占できる
    - その代わり、netscape 以外の部分の色はちょっと変になる。
    - マウスを netscape から外すと、netscape の中の色が変になり、
        それ以外の色が正常に戻る
というようなやつです。

No. 1117 # gongo [E-mail] 2000/08/24 (木) 18:38:46
@68user様
> 最初は TrueColor でも XCreateColormap/XInstallColormap で
> いけるんじゃないか思いました。

私も本をみて XCreateColormap/XSetWindowColormap/XInstallColormap
といった感じで動かしてみようと思いましたが、うまくいきませんでした。
本の例をまねてXCreateColormapの2番目の引数(window)を
DefaultRootWindowにしたがまずかったのか、実行すると窓が画面左上に出て
動かせなくなってしまいました(ウィンドウマネージャが動いていない!?)。
窓の表示位置がおかしいのはともかくとして、肝心のRGB値がどうなったかというと
XAllocColorの後にやはり近い値に置き換えられたと思います。

しかも、プログラムを終了して、そのプログラムを書き換えようとmuleで
開いたらmuleが勝手に画面左上に行って動かせなくなってしまいました。
で、あわててXUninstallColormapをプログラムに書き加えて
再度実行したら元の状態に戻りました。
う〜ん、難しいです・・・。

それとちょっと思ったのですが、showrgbで表示される全ての色は本当に
カラーマップに存在するのでしょうか。結構数値が細かく変わっている
ところもあるので、本当にあるのかなぁと疑問に思いました。
それとも256*256*256を本当に表示できる環境を想定して
細かく用意されているのでしょうか。

No. 1118 # YAGI [E-mail] 2000/08/25 (金) 14:18:23
>68user様
レスありがとうございます。
大体のイメージは浮かぶ事が出来ました。
ただ、また質問となってしまうのですが、
その数値(0.01)はどれくらいの値になっていれば
高負荷がかかっているといえるのでしょうか?
やはり、1.00以上だと高負荷なのでしょうか?

No. 1119 # 68user 2000/08/25 (金) 21:55:26
以下の説明には多分何個・何十個もの嘘がありますが、「ここは
嘘かもしれない」と注釈を付け出すと、全部に注釈を付けるはめに
なるので、略。ツッコミは歓迎します。


まずは基礎知識。

プロセスにはいくつかの状態がありますが、簡略化して、以下の4つを考えます。

    実行状態   … まさに CPU がそのプロセスの処理をおこなっている状態
    実行可能状態 … CPU は同時に複数の処理をできないので、CPU が現在
                               実行しているプロセスの処理を終えるまで待っている状態
    入出力待ち  … ディスクに書き込む/読み込む命令を出した後、ディスク
                               コントローラからの「終わったよ」という知らせを
                               待っている状態
    sleep 状態  … sleep を使っているか、デバイスやソケットを見張っている
                               (listen や select や read している) が、まだデータが
                               届いていない) 状態

プロセスは必ず上記のうち1つの状態を取ります。


さて、本題。

load average というのは、ある瞬間の「実行可能状態のプロセスの個数」
の平均です。個数ですから整数なんですが、平均を取るので、0.12 などと
いった小数になります。

例えば
    0:00:00 の時点での実行可能状態のプロセス数が3
    0:00:01 の時点での実行可能状態のプロセス数が0
    0:00:02 の時点での実行可能状態のプロセス数が1
なら、load average は 4/3 = 1.33 です。これは3秒間だけプロセス数を
数えましたが、最近1分、5分、10分のそれぞれのプロセス数の平均を
取ったものが、top や uptime で表示される load average です。

つまり、
    - load average が 1 なら、常に CPU が何かしらの処理をしている。
        CPU が遊んでいる時間がない。
    - load average が 1 未満なら、実行可能状態のプロセスがない
        瞬間がある。その間、CPU は遊んでいる。
    - load average が 1 超なら、実行可能状態のプロセスが多く、
        待たされているプロセスがある。
ということです。

# あくまでも平均なので、本当はそうでない瞬間が多くあるでしょう。


だからといって、1 を閾値 (いきち) として負荷が低い/高いと
言っていいかというと、多分違うと思います。


なお、
    A.「変数を1ついじくって 1秒 sleep する」という処理を永遠に繰り返す
というプロセスと、
    B.「変数の内容を1増やし続ける」という処理を永遠に繰り返す
というプロセスでは、負荷が全く違います。

A は、実行可能状態から実行状態に移ると、変数を1ついじくって、
すぐに sleep 状態に入ります (実行可能状態でなくなる)。1秒経つと
再度 実行可能状態に移ります。

B は、実行可能状態から実行状態になると、変数の内容を1増やし
続けます。一定時間が経過すると、カーネルが強制的にプロセスを
実行状態から実行可能状態に戻します。

B のようなプロセスを実行すると、load average は大体 1 だけ
上がるはずです。なぜなら、B のプロセスは入出力待ちも sleep も
しないため、「常に実行可能状態になり得るプロセス」だからです。

たとえば C でもシェル上でもいいので、無限ループするだけの
プログラム
    % while (1)
    while ? end
を実行すると、load average が大体 1 上がり、もう1つ同じのを
実行すると さらに 1 上がるでしょう。

No. 1120 # CZ 2000/08/28 (月) 14:09:34
つかぬことをお聞きしますが,"リンク集のリンク集"のSSIはいつ動作するようになるのでしょうか。

No. 1121 # 68user 2000/08/28 (月) 17:04:12
おろ、いつのまにか止まってやがる (笑)。というか、SSI が効いてないのか…。
ウチに帰ったら直します。御指摘どうもです。

No. 1122 # 68user 2000/08/29 (火) 00:34:09
> SSI が効いてないのか…。
8/28 AM8:30 ごろから5時間ほど、SEGA BBS の過去ログの CGI に
199.172.149 あたりから怒涛のアクセスがあったようです。
apache のログを見ると、500 エラーが 9000件ほど記録されてました。
# トップページのカウンタも、壊れてもうた。

どうもそれ以来 apache の動作がおかしく、一部のページで SSI が
動作していないようです

CGI 側で同時起動の制限が必要なのかもしれませんね。

ま、こういうこともあるということで。

No. 1123 # とも [E-mail] 2000/08/29 (火) 06:18:52
皆様 始めまして。 ともと申します。
UNIX暦 3ヶ月の超初心者です。

スクリプトを書いておりますが、そのスクリプトのあるステップでどうしてもユーザーをスイッチしなくてはいけない事になってしまいました。
現在 su コマンドを使ってその部分だけわざわざパスワードを入れて、またスクリプトを実行するという 2スクリプト制になってます。
もしユーザーの変更も自動的にスクリプト上でできればとても楽なんですが、よい方法ありませんでしょうか?
当分はスクリプト自体にパスワードをハードコードしてもいいと思ってます。

どなたか お知恵をお貸しください!

とも

No. 1124 # 68user 2000/08/29 (火) 17:03:20
最も簡単なのは root 権限でスクリプトを動かし、適時 su で
特定のユーザ権限を得るか、su username command とすることです。

それが無理なら、suid なプログラムを作ればよいです。
    http://X68000.startshop.co.jp/~68user/unix/pickup?setuid

> 当分はスクリプト自体にパスワードをハードコードしてもいいと思ってます。
su は端末 (/dev/tty) からパスワードを読もうとするので、
標準入力などからデータを流し込むことは不可能です。

No. 1125 # 68user 2000/08/30 (水) 02:27:25
> 8/28 AM8:30 ごろから5時間ほど、SEGA BBS の過去ログの CGI に
> 199.172.149 あたりから怒涛のアクセスがあったようです。
今日も同じ時間帯に同じところから。うっとうしいのので、
SEGA BBS の CGI をしばらく止めます。

ところで、またカウンタが壊れました。/var/log/messages を
見るに、オープンしたファイル数が OS の最大値を越えたため
だと思われます。
# よく見ると、カウンタで open のエラーチェックを
# 全くしてなかった。そりゃ壊れるわな。

> su username command とすることです。
su username -c command でした。

No. 1127 # 戸川 [E-mail] 2000/08/31 (木) 15:38:36
シェルを創っているのですがSyslog(/var/log/messages) にログを出力したいのですがコマンドでできないのでしょうか?教えてください。
よろしくお願いします

No. 1129 # has 2000/08/31 (木) 17:57:02
以前から気になっていたことなんですが、
NTじゃなく一般のWindowsがTCP上で行っているサービスには、
どんなものがあるんでしょうか。
もし知っておられたら教えて下さい。
また、こういった類の情報はどうやったら入手できるものなのか、
よろしければあわせて教えて下さい。

No. 1130 # 68user 2000/09/01 (金) 00:11:30
眠い。ので、手短に。

netstat -a とか。少なくとも Win98 にはあります。
標準では netbios 関係くらいしか listen してないと思います。

logger(1) など。

No. 1131 # なむさむ 2000/09/01 (金) 11:18:27
「httptalker(http-client)について」
とてもわかりやすいサイトで
unixでいろいろできるんだなぁ、と感心してます
使い始めて三ヶ月位です(vinelinuxを使ってます
httptalkerでうまくget出来ないところがあるので
質問させてください
httptalker.pl -getに続けて
1:news.yahoo.co.jp/headlines/top/
2:username.hypermart.net/hoge/huga.html
この二つに関してですが1,2とも
wgetでは問題無く取れますが
httptalkerでは404や「そのページは存在しない」
となります。サイトにある
telnetでgetする方法だとでは1のみ問題無し
2ではやはり404となります
何か別の(httpdなどの)知識
が必要なのでしょうか?
何かアドバイスがあれば
よろしくお願いします

No. 1132 # やまま 2000/09/01 (金) 12:55:40
> なむさむ さん
うーむ、ハイマは、バーチャルホストがなんたら..
Host: username.hypermart.net(CRLF)
つければいいのかな。。

No. 1133 # なむさむ 2000/09/01 (金) 22:11:34
>やままさん
アドバイスありがとうございます
バーチャルホストについて勉強してみます
確かにhost付けてなかった・・・
ところで(CRLF)っていうのは
\r\nとか、そんな意味ですか?

No. 1134 # やまま 2000/09/01 (金) 22:53:12
バーチャルホストについては。
http://x68000.startshop.co.jp/~68user/net/http-4.html
ここにあったよ。

CRLFはUNIXなら\r\nでいいみたいです。

No. 1135 # 68user 2000/09/02 (土) 01:37:03
hypermart は Host ヘッダです。

> 1:news.yahoo.co.jp/headlines/top/
こっちは yahoo の WWW サーバが悪いです。

WWW サーバの返すヘッダとボディの間のセパレータが
CR LF LF (もしくは CR LF で、最後の LF はボディの
一部かもしれない) となっているので、httptalker が
ボディ部もヘッダの一部だと解釈しています。

まぁ、セパレータが CR でも LF でも CR LF でも
認識できるようにするのがダウンローダとしては正しい道でしょう。

No. 1136 # とも 2000/09/02 (土) 02:21:20
su についてのご返答ありがとうございました。 早速挑戦してみます。

No. 1137 # なむさむ 2000/09/02 (土) 14:57:43
あ゛・・・きちんと読んでなかった
取り敢えずhost付けてやってみたら
上手く行きました
yahooの方はちょとむつかしくて
ヘッダーの役割とかがいまいち解ってないので、
もう一度きちんと読んでからやってみます
取り敢えずありがとうございました

No. 1138 # has 2000/09/02 (土) 19:35:18
@68user
> netstat -a とか。
> 標準では netbios 関係くらいしか listen してないと思います。
なるほど、どうもありがとうございました。

No. 1139 # 68user 2000/09/03 (日) 03:08:06
ところで やままさんへ。

1時間に一度くらいこのページにリンクチェックをかけておられる
ようですが、このページは Last-modified を GMT で出しています。
しかし、そちらのページでは JST として扱っているようで、
常に 9時間前に更新されたものと見なされています。

No. 1140 # カワエ [E-mail] 2000/09/03 (日) 19:47:49
はじめまして、カワエといいます。今受験生です。
私は将来プログラマーになりたいのですが、PCを買ってまだ半年、まともに触ったこともない超初心者です。
プログラマーの具体的なことについても知らず、ネットで検索したりしているのですが、
他の掲示板で「大変だ」「引退が早い」「プログラミングは趣味にしておくべきだ」等の発言をよく見ましたが、実際のところどうなのでしょうか?
それと、やはり女性差別があったりするのでしょうか?
68user様、プログラマーの方、教えてください。

No. 1141 # 68user 2000/09/03 (日) 22:24:40
あらら、進路相談ですか。

ゲームプログラマになりたいのなら、ここより
    http://www.lares.dti.ne.jp/~yagiyama/
で聞くのがいいでしょう。

でなくて、いわゆる SE を目指すならば
    http://village.infoweb.ne.jp/~watany/selink/index.htm
を読むといいかもしれません。

僕は一応 SE ですが、社会人一年目なので、軽々しくアドバイス
するのはやめておきます。

No. 1142 # カワエ [E-mail] 2000/09/04 (月) 01:57:44
有り難うございます。
では、そっちに行ってみることにします。

No. 1143 # ぽち [URL] [E-mail] 2000/09/04 (月) 11:15:52
すみませんが、HPの紹介をさせてください。

ゲーセンはゲーマーだけの物って誰が決めた!!
もっとゲーセンを楽しもう!!をテーマに
ゲームセンターのゲームをゲーマーのみならず
カップルや女の人も楽しめるように、
情報をセレクト&紹介するページです。
内容は音ゲーの手ほどきや僕のホームグラウンドの
ゲーセンの最新機種入荷情報などです。
是非おいでください。
この書き込みが掲示板の意に反する内容でしたら、
お手数ですが削除してください。

No. 1144 # みちこ [URL] 2000/09/07 (木) 04:57:14
はじめまして。
インフォシークからとんできました。
今、一生懸命UNIXのことを書いたHPを作っています。
ここに書いてあることがとっても役立ちました。
また参考にさせていただきます。

学校でunixを使っていて、けっこうはまってきました。
家はまだウィンドウズですが・・・
もしよろしかったら私のHPにも足を運んでください。
けっこう頑張って勉強しています。

No. 1145 # 68user 2000/09/07 (木) 09:30:39
> 今、一生懸命UNIXのことを書いたHPを作っています。
ほほぅ、一番オジサンっぽいコマンドが cal ですか (笑)
僕は cpio と vi じゃないかと思います。なんとなく。

No. 1146 # gongo [E-mail] 2000/09/08 (金) 20:18:26
@68user様
どうも、gongoです。

Xウィンドウ・システムのことで質問があります。
以前見ていただいたプログラムなどで画面に表示される窓を
なんらかの形で保存して、texなどにはりつけたいと考えております。
そこで画面を保存するにはどのようにしたらよいのでしょうか。

xwd というコマンドを用いると窓の内容を保存できるようなのですが
自分の環境ではこの方法で保存した .xwd ファイルを xv で
表示しようとすると真っ黒になっていました。
で、他のマシンでもやってみたところ、中には窓を取り込めるものも
ありました。しかし、そのマシンだと今度は以前見ていただいたプログラムが
期待通りに動きません(カラーマップのインデックスがすくない模様)。

自分のマシンと xwd がうまくいったマシンでは OSは一緒です。
ちなみにOSはFreeBSD 2.2.8Rです。インストールした人間が違うので
ひょっとすると何かX関連で細かい設定がまずいのかもしれませんが
そこら辺の確認の仕方もよくわかりません。
なにか良い方法はないでしょうか。

また xwd 以外に窓を取り込む良い方法はないでしょうか。

よろしくお願い致します。

No. 1147 # gongo [E-mail] 2000/09/09 (土) 01:24:04
@68user様
度々すみません、gongoです。

>また xwd 以外に窓を取り込む良い方法はないでしょうか。

自分で書いておいてあれなのですが、xvの機能でGrabというのが
あるようなので試してみます。

No. 1148 # 68user 2000/09/09 (土) 15:55:36
> 自分の環境ではこの方法で保存した .xwd ファイルを xv で
> 表示しようとすると真っ黒になっていました。
原因や正しい回避方法は知りません。ただ、display や xwud で
見ると正しく表示されるので、僕は特に困ってないです。

おそらく xwd 形式で保存しておく必要はないのではないでしょうから、
(TeX に貼るということなので)
    % convert foo.xwd foo.eps
しておけばいいでしょう。

> xvの機能でGrabというのがあるようなので試してみます。
あと、import ってのもあります。display, convert, import は
ImageMagick に含まれています。

No. 1149 # gongo [E-mail] 2000/09/09 (土) 23:17:32
@68user様
xvのGrabで保存でき、表示もうまくできました。

>% convert foo.xwd foo.eps
こちらについても試させていただきます。

>ImageMagick に含まれています。
このImageMaickというのは何なのでしょうか。
標準でインストールされるもの(?)なのでしょうか。

何はともあれなんとかTexにはれそうです。
ありがとうございました。

No. 1150 # 68user 2000/09/10 (日) 00:00:56
> 標準でインストールされるもの(?)なのでしょうか。
されないです。FreeBSD なら ports か packages でインストール
しましょう。結構有名なプログラムなので、NetBSD でも Linux でも
パッケージは作成されているはずです。

No. 1151 # gongo [E-mail] 2000/09/10 (日) 00:37:06
@68user様
>FreeBSD なら ports か packages でインストールしましょう。
なるほど、わかりました。
あぁ、でも勝手にマシンに入れちゃうとまずいかも・・・。
私のマシンではないので様子を見てインストールできたらやってみます。

No. 1152 # konan [E-mail] 2000/09/10 (日) 02:08:28
HTTP クライアントを作ってみよう(2)
http://www2.startshop.co.jp/~68user/net/http-2.html

のhttp-client.plを実行すると下記のエラーで止まってしまいます。
Use of uninitialized value in subroutine entry at http-client.pl line 14.
Use of uninitialized value in concatenation (.) at http-client.pl line 21.

対策方法をお知らせください。

perlはperl, v5.6.0 built for MSWin32-x86-multi-threadを使っています。
OSはWin98SEです

No. 1153 # 68user 2000/09/10 (日) 02:30:28
こちらの perl-5.6 では動いているので、おそらく 7行目の
    $port = getservbyname('http','tcp');
で値が取得できていないんでしょう。
    $port = getservbyname('http','tcp') || 80;
でどうですか。

No. 1154 # konan 2000/09/10 (日) 03:23:28
>$port = getservbyname('http','tcp') || 80;
>でどうですか。

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

ところでこのスクリプトを会社の2台のUNIXで走らせたら
1台は動作してもう一台はUse of uninitialized valueの
エラーで止まってしまいました。それではとWINDOWSでやって
みたら同じエラーで止まってしまいました。原因がわからないので
質問をさせて頂きました。WSによって動いたりそうでなかったり
する原因は何なのかな?っと言う新たな疑問がありますが
宜しければお知らせください。

No. 1155 # 68user 2000/09/10 (日) 03:29:44
man getservbyname すればわかりますが、この関数は
/etc/services (NIS を使っているなら ypcat services の
結果) を読むだけの関数なので、/etc/services がオープン
できないとか、ファイルはあるけど中身に
    http 80/tcp
というエントリがない、などというときポート番号の取得に
失敗します。

サンプルとはいえ、本来は getservbyname に失敗したら 80 に
決め打ちするか、あるいは die すべきですね。次回更新時に
直しておきます。

No. 1156 # konan 2000/09/10 (日) 23:50:34
お返事ありがとうございました。

perl http-client.plとするとうまく動作するのですが
ブラウザから起動するとInternal Server Errorとなります。
起動例(http://www.???.ne.jp/cgi-bin/http-client.pl)
もともとそういうスクリプトなのかもしれませんがスクリプト内
もしくは引数でわたされたアドレスのhtmlやjpg,gif等を
ブラウザに表示するのはどうしたらよいのでしょうか。
よろしくお願いします。

No. 1157 # 68user 2000/09/11 (月) 00:28:23
    #!/usr/bin/perl
    print "Hello world";
は CGI 経由では動きません。しかし
    #!/usr/bin/perl
    print "Content-type: text/html\n\n";
    print "Hello world";
は動きます。そういうことです。

No. 1158 # みちこ [URL] 2000/09/12 (火) 01:05:45
くだらないことですが・・・
HPを置いているサーバにbashのファイルがありますが、
これはunixシェルが使えるということなのでしょうか。

そして、Apacheを使うときにはDNSの設定を行う必要がありますか?
もしよろしければお答えください。
よろしくお願いします。

No. 1159 # 68user 2000/09/12 (火) 01:19:17
> HPを置いているサーバにbashのファイルがありますが、
どこにどういうファイルがありますか? /bin/bash や
/usr/local/bin/bash ですか? また、どうやってその
ファイルを見付けましたか?

> Apacheを使うときにはDNSの設定を行う必要がありますか?
ローカルでテスト用に使うのですか? なら必要ありません。
# ってこともないんだけど。自ホストさえ引ければ問題なし。

apache を使って web を一般に公開するにしても、普通に
telnet や nslookup が使えているなら、DNS の設定は不要
です (それは DNS が設定済ということだから)。

No. 1160 # みちこ [URL] 2000/09/12 (火) 04:04:37
ftpソフトでファイルを取得すると、
一覧のところに
.bash_logout
.bash_profile
.bashrs
というファイルが置かれています。
ちなみに、binディレクトリ内には何もありません。
(これはcgiが使えないということ?)
bashファイルに関しては所有者が私になっているので、
(rootではないということ)
・・・・どういうことなんでしょう。

なんか、よくわからない質問で申し訳ありません。

No. 1161 # gongo [E-mail] 2000/09/12 (火) 20:36:48
@68user様
どうも、gongoです。

X関連(というよりもC言語かもしれませんが)で質問があります。

label = XtVaCreateManagedWidget(name,・・・)

と書けば、labelというウィジェットを生成できますが
複数個のウィジェットを生成したい場合
for文などでこの文章を繰り返して生成することは可能でしょうか。

例えばlabel00,label01,label02,・・・、そしてname00,name01,name02,・・・
などのように変化させていくつもりで

unsigned char labelname[]="label00"
unsigned char widgetname[]="name00"

といったように最初のlabel00とname00をchar型の配列に入れて
for文で回るたびに数値のところだけを書き直すといったことを
やろうとしたのですが、どうもうまくいきませんでした。

for(i=0; i<NUM; i++){
labelname = XtVaCreateWidget(widgetname,・・・);
labelとnameの数字をカウントアップする;
}

といった感じでウィジェットを生成できれば簡単なのに・・・と思ったのですが
やはり個々に宣言しないとまずいのでしょうか。
labelnameのところは本来Widget型じゃないといけないからうまくいかない
のでしょうか。widgetnameのところは本来String型ですがこちらもよくわかりません。

また、同様にイベント処理でイベントハンドラを用いる時も
for文で回すことは可能でしょうか。

つまりは以前見て頂いたプログラムのようにlabelをいくつも用意し、
それぞれの窓にButtonPressをイベントハンドラとして登録するという一連の文を
書くと結構大変ですし、後々窓の個数を変える時のことを考えると
for文で回せたらよいなぁと考えた次第です。

何卒宜しくお願い致します。

No. 1162 # 68user 2000/09/12 (火) 22:45:18
@gongo さん
> label = XtVaCreateManagedWidget(name,・・・)
むむ? 前のソースではそこらへんをやっておられたと思いましたが…。
    Widget label[10];
    char name[256];
    for( i=0; i<sizeof(label)/sizeof(label[0]) ; i++ ){
        snprintf(name, sizeof(name), "name%02d", i);
        label[i] = XtVaCreateWidget(name, ...);
    }
ではダメですか?

> 最初のlabel00とname00をchar型の配列に入れて for文で
> 回るたびに数値のところだけを書き直すといったこと
はできません。C 言語では、変数名や関数名などのシンボルを
動的に生成することはできないからです。
# …という表現は正しいかな?

> unsigned char labelname[]="label00"
> labelname = XtVaCreateWidget(widgetname,・・・);
また、「labelname の*内容*」と「メモリ領域」には何の関係も
ないので、XtVaCreateWidget の戻り値を格納する領域がどこにも
ない、ということになります。


@みちこさん
> これはunixシェルが使えるということなのでしょうか。
一言で言えば、
    「~/.bash* がある、ということだけでは何とも言えない」
です。相手側に telnet サーバが上がっているか、IP アドレスにより
telnet の接続元を限定していないか、パスワードエントリが適切に
設定されているか、ログインシェルが適切に設定されているか、
などを全てクリアすればログインできるでしょう。

逆に言うと、プロバイダが客にリモートログインさせないように
するには、たくさんの方法があるということ。その情報がない
以上、ログインできるとも できないとも判断できません。

> ちなみに、binディレクトリ内には何もありません。
> (これはcgiが使えないということ?)
bin と CGI には関係はありません。

あと、質問の仕方がいまいちですね。例えば、「binディレクトリ」
というのは、/bin なのか、ホームディレクトリの bin なのか
判断ができません。何を書けばよいかがわからない、というのは
理解できますが、その場合は調べた情報を全て書いて下さい。

No. 1163 # 68user 2000/09/12 (火) 23:08:11
最近うちに届いたメール。

From: * <*@mti.biglobe.ne.jp>
Date: Sat, 2 Sep 2000 00:24:57 +0900
(内容なし)

From: * <*@da.mbn.or.jp>
Date: Wed, 6 Sep 2000 21:24:05 +0900
(内容なし)

From: * <*@calltoweb.com>
Date: Fri, 8 Sep 2000 12:43:55 +0900
(内容なし)

From: *@themis.dricas.com
Date: Sat, 9 Sep 2000 12:49:08 +0900 (JST)
(内容なし)

From: * <*@d7.dion.ne.jp>
Date: Sun, 10 Sep 2000 09:11:30 +0900
Subject: あの
ホームページみました。何とかしてください。

From: * <*@f7.dion.ne.jp>
Date: Sun, 10 Sep 2000 10:29:26 +0900
届きました?

From: *@nifty.ne.jp
Date: Tue, 12 Sep 2000 00:05:51 +0900 (JST)
このホームページはどうなっているんですか?

From: *@aol.com
Date: Tue, 12 Sep 2000 09:44:30 EDT
Subject: エラー表示ありとでました。
和議申請について   和議申請とは

この人たちにはコミュニケーション能力というものがないのだろうか。

好意的に解釈すると、「SEGA BBS 過去ログが見れません」
と言いたいのかとも思うのだが、本当にそうなのか。

うちにイタズラメールを送ろうという活動でもやっているのでは
ないか。あるいは、どこかの web をクリックするとここにメールが
送られてくるような仕組みになっているのではないか、とも思えてくる。

謎である。真実を知っている人がいたら教えてください。

No. 1164 # gongo [E-mail] 2000/09/12 (火) 23:36:04
@68user様
素早いお返事ありがとうございます。

>むむ? 前のソースではそこらへんをやっておられたと思いましたが…。
たしか前のではすべてのlabelに対してXtVaCreateManagedWidget()やXtAddEventHandler()などをやっていたと思います。(^^;

>Widget label[10];
>char name[256];
>for( i=0; i<sizeof(label)/sizeof(label[0]) ; i++ ){
> snprintf(name, sizeof(name), "name%02d", i);
> label[i] = XtVaCreateWidget(name, ...);
>}
snprintfというのが使ったことがないので明日調べて
試させていただきます。

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

No. 1165 # みちこ 2000/09/12 (火) 23:37:14
質問の仕方がうまくなくて、ごめんなさい。
これからもっと磨いていきますので、
よろしくお願いいたします。

初心者にはココに質問するのはちょっと高度なことなのでしょうか。
とかちょっと思ってしまった。
なにか超初心者向けのページがあったらご紹介ください。
ご迷惑おかけしました。

というわけで今日も本を読むばかりです。
コンピュータって難しい・・・
聞く人もいないのがホントにつらいところです。

No. 1166 # 68user 2000/09/13 (水) 02:00:14
> 質問の仕方がうまくなくて、ごめんなさい。
というところにさらに説教くさいことを書くのもアレですが、
回答をもらったときに「理解できたかどうか」「解決したか
どうか」をちゃんと書くことも重要です。

「ありがとう」と、お礼のみを書かれてもこっちは何も得る
ものがないわけですが、
    「〜が理解できた/できなかった」
    「〜と〜の関係がわからない」
    「言われた通りにやってみたら〜というトラブルが出たが、
        〜とすることで解決できた」
という返答が得られると、回答者が「こういう解説の仕方で
相手に理解させることができた」「この部分で嘘を言ってしまった」
「わかりにくい表現をしてしまった」などということに気づく
ことができます。

で、みちこさんは apache の件も bash の件も、解決したのか、
理解できたのか、を書いておられません。これでは回答した
僕には何のメリットもありません。

要は「お礼よりも結果報告」です。

これは初心者向けのコミュニティでも上級者向けのコミュニティでも
同じですので、今後は注意されることをお勧めします。

> なにか超初心者向けのページがあったらご紹介ください。
逆に、fj やメーリングリストなど、ここよりもずっとレベルの
高いところに行くのもいいでしょう。しばらく読み続ければ、
「よい質問の仕方とはどういうものなのか」がわかってくると
思います。


> @68user様
ところで、「様」はご勘弁を>gongo さん

No. 1167 # gongo [E-mail] 2000/09/13 (水) 17:41:55
@68userさん

> snprintfというのが使ったことがないので明日調べて
> 試させていただきます。

と思っていたら、マシンが起動しなくなってしまいました。
試す以前に修理手続きやら何やらやらなければ・・・。
D◯S/Vパラダイスというお店で去年の6月に購入したマシンなのですが、
昨日突然フリーズして以後起動しなくなりました。(泣)
HDDのランプとかはつくのですが一瞬HDDのカラカラって音が鳴って
それ以後進まなくなってしまいました。

それとsnprintfというのはsprintfのことでよろしいのでしょうか。
今日、本を見た感じではsnprintfというのがなかったもので。
どっちにしろsprintfも使ったことがなかったので
他のマシンで試してみます。

No. 1168 # gongo [E-mail] 2000/09/13 (水) 18:54:40
@68userさん

sprintf()を使ってやってみたらうまくいきました。
といっても、最初はうまくいかなくて
labelを生成するところで segmentation fault で
止まってしまったので、2番目の引数である sizeof(name) というのを
削除したら通るようになりました。

No. 1169 # みちこ [URL] 2000/09/14 (木) 00:03:30
>apache を使って web を一般に公開するにしても、普通に
>telnet や nslookup が使えているなら、DNS の設定は不要
>です (それは DNS が設定済ということだから)。

やはりDNSの設定はいらなかったようです。
Perlがうまくインストールされていなかったため、
動作しなかったようでした。

しかしながら、単にパソコンの調子が悪いだけだったかも、
という疑問も捨て切れません。
というのも、Apacheを立ち上げると、突然フリーズしたりするので。
詳しい理由はちょっと見当がつきません。


>相手側に telnet サーバが上がっているか、IP アドレスにより
>telnet の接続元を限定していないか、パスワードエントリが適切に
>設定されているか、ログインシェルが適切に設定されているか、
>などを全てクリアすればログインできるでしょう。

IPアドレスによってtelnetの接続もとの限定をしているかどうかは、
向こうに聞かないとわからないのでしょうか。
特にそのような項目はメール確認の時にはふくまれていなかったのですが。
またログインシェルが適切に設定されている、とはどういう状態をいうのですか。

>例えば、「binディレクトリ」
>というのは、/bin なのか、ホームディレクトリの bin なのか
>判断ができません。

おっしゃるとおりです。
私が言ったのはホームディレクトリのbinのことです。


少しはましになったでしょうか。
MLも探してみることにしました。
もう少しうまく質問できるようになったら
またこちらにこさせてください。
お世話になります・・・

No. 1170 # 68user 2000/09/14 (木) 00:38:48
@gongo さん
> それとsnprintfというのはsprintfのことでよろしいのでしょうか。
失礼ながら、man の見方はご存知でしょうか? man snprintf です。
日本語訳はこちら。
    http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=printf&dir=jpman-3.1.0%2Fman&sect=3
なお、(FreeBSD なら) section 3 の日本語訳は現在の jman には
含まれていないので、web 上でしか見られません。

@みちこさん
> IPアドレスによってtelnetの接続もとの限定をしているかどうかは、
> 向こうに聞かないとわからないのでしょうか。
基本的にはそうですが、まぁ実際に telnet で接続して
みればわかる場合もあります。

Connection refused とか Connection closed by foreign host とか、
言われたら、無理ということです。
# Connection refused だからといって、IP アドレスによる
# 制限をかけている、とは断言できませんが。

あと、こういうことはプロバイダに確認すべきことです。
ちゃんとお金を払っているのでしょうから「telnet 接続は
可能か」と堂々と問い合わせましょう。

> またログインシェルが適切に設定されている
/etc/passwd (あるいは /etc/master.passwd, /etc/shadow など) の話です。
    username:*:1001:1001:HOGEHOGE:/home/username:/bin/csh
    username:*:1001:1001:HOGEHOGE:/home/username:/nonexistent
前者はログインできますが、後者は /nonexistent というシェルは
存在しないので、結果的にシェルが起動せずログインできません。

No. 1171 # gongo [E-mail] 2000/09/14 (木) 02:50:38
@68userさん
>> それとsnprintfというのはsprintfのことでよろしいのでしょうか。
>失礼ながら、man の見方はご存知でしょうか? man snprintf です。
manの見方は知っていましたがほとんど使ったことがなく、C言語辞典の
ようなものにも載っていなかったものでてっきり近くに載っていた
sprintfだと思っていました。

>snprintf(name, sizeof(name), "name%02d", i);
お教えいただいた日本語マニュアルHPの方を見ました。
で、読んだ結果snprintfの前にprintfもなんだか
わからなくなってきてしまったので、"name%02d"の部分について
確認させてください。まず、「%d」と書けば整数を表示させると
思いますが、その前の「2」というのは整数二桁の精度ということですか?
あと、その前の「0」はiが一桁の時、01、02、・・・のように「0」を
いれてくれるということでしょうか。

そしてsizeof(name)についてですが、これがあるsnprintfと、
ないsprintfの違い(両方ある必要性?)がいまいちよくわかりません。
snprintfではsizeof(name)の容量を超えるものを
一番目の引数のnameに入れることを許さない
ということなのでしょうか??う〜ん・・・。

No. 1172 # ケイ 2000/09/17 (日) 19:00:32
はじめまして。
Perlで質問があります。
パケットを送るときにその容量を
どうやって指定するのですか?
例えば1000バイトをUDPで送りたい場合
どうすればいいんでしょうか?
そのパケットの作成方法がわかりません。
よろしくお願いします。

No. 1173 # 68user 2000/09/18 (月) 05:14:57
@gongo さん
> manの見方は知っていましたがほとんど使ったことがなく
わからなければ、とにかく man です。まずマニュアルを読まないと、
理解できる/できないというレベルにさえたどり着けませんから。

> printfもなんだか わからなくなってきてしまったので、
ま、これは宿題ということで。いろんな値を %d, %2d, %02d で
表示させてみればわかるでしょう。

# printf(3) は、よく使うわりにわかりにくいマニュアルの
# 代表だと思うので、あまり気にしなくてよいと思います。

> これがあるsnprintfと、ないsprintfの違い
snprintf だと、適切な値を第二引数に与えれば、いかに
生成される文字列が長くても、その領域を越えて書き込む
ことはありません。要は、バッファオーバーラン対策です。

strncat/strncpy/strlcat/strlcpy も同じです。

@ケイさん
> パケットを送るときにその容量をどうやって指定するのですか?
> 例えば1000バイトをUDPで送りたい場合どうすればいい
> んでしょうか?
C の send/sendto と違い、perl の send では長さを与える
必要はありません。perl 君がよきにはからってくれます。

> そのパケットの作成方法がわかりません。
まさか IP データグラムを自前で作る、とかいう話じゃないですよね?

No. 1174 # gongo [E-mail] 2000/09/18 (月) 20:27:25
@68userさん
> ま、これは宿題ということで。いろんな値を %d, %2d, %02d で
で、やってみたところ %d は左寄せで0,1,2,・・・というようになり、
%2d は二桁分書く場所を確保しつつ、値が一桁なら十の位を
空白で埋め(見ため右寄せ)、%02d は二桁分書く場所を確保しつつ、
値が一桁なら十の位を0で埋めていました。

> snprintf だと、適切な値を第二引数に与えれば、いかに
> 生成される文字列が長くても、その領域を越えて書き込む
> ことはありません。要は、バッファオーバーラン対策です。
なるほど、わかりました。
プログラムは snprintf でうまくいきました。

No. 1175 # konan 2000/09/19 (火) 01:05:07
68user-sanこんばんは、
HTTPクライアントのサンプルコードを少し変更してある特定のサイトの
CGIに任意のデータを渡しリードしたHTMLを表示するCGIファイルを作り
ました。リードしたHTMLをブラウザに出力する前にリンク先等を変更
して出力したいのですが良い方法がありましたらお知らせください。
例)リードしてきたHTMLのファイル等のリンク先が
./hogehoge/hoge/hoge1.jpgの場合ブラウザに出力する前に
./hoge_hoge/hoge1.jpgに変更してブラウザに出力する。

No. 1176 # hsj [E-mail] 2000/09/19 (火) 01:50:30
@konanさん
68userさんでなくて申し訳無いですが・・・
#しかも多分役に立たない内容です。スミマセン
ただのテキストのやり取りなワケですから、
いったん読み込んだHTMLをブラウザに渡す前に
内容を書き変えてやれば良いだけですよね?
そう言う話でなくて、その書き換えのやり方を聞いてらっしゃるのなら
それは答えようの無い話だと思います。
それを考えるのがプログラマの仕事なワケですから。

No. 1177 # ケイ 2000/09/19 (火) 22:22:08
>まさか IP データグラムを自前で作る、とかいう話じゃないですよね?
IPデータグラムって要はパケットのことですよね?
自前で作ることになるのかな?よく分かりませんが
例えば、適当なゴミパケットを送りたい時はどうすればいいですか?
そのゴミパケットの作り方を教えて頂きたいです。
別に中身のあるデータじゃなくていいんです。

No. 1178 # 68user 2000/09/19 (火) 22:49:34
@konan さん
> ./hogehoge/hoge/hoge1.jpgの場合ブラウザに出力する前に
> ./hoge_hoge/hoge1.jpgに変更してブラウザに出力する。
s|\./hogehoge/hoge/|\./hoge_hoge/|g とかそういうことですか?

@hsj さん
> 68userさんでなくて申し訳無いですが・・・
言うまでもないですけど、どなたでもご自由に回答して
いただいて結構でござんす。

@ケイさん
普通、パケットを自前で作ると言えば
    GET /index.html HTTP/1.0
というようなアプリ層のプロトコルに、TCP ヘッダを付けて
TCP セグメントを作ったり、さらに IP ヘッダを付けて
IP データグラムを作ったりすることを指すような気がします。

こういうレベルの処理は、普通 OS がやってくれるものです。

> 例えば、適当なゴミパケットを送りたい時はどうすればいいですか?
こういうアプリケーション層のプロトコルは、クライアントと
サーバが協調して動けばいいので、クライアントとサーバ
両方を作るならば、プログラマが勝手に決めればよいです。
    send(SOCKET, 'hoge', 0, pack_sockaddr_in(1234,inet_aton('10.0.0.1')));
というふうに。


ところで UDP の解説って需要あるのかしら。Perl/Tk で IP Messenger
    http://www.asahi-net.or.jp/~VZ4H-SRUZ/ipmsg.html
を作りかけたんだけど、途中で飽きちゃってそのまま…
(実用レベルではありません)。UDP の解説を書こうとしたんですが、
あんまり読みたい人もいないかなと思って、未着手です。

ちなみにこの IP Messenger を作ろうとすると、UDP は理解できるわ、
ブロードキャストもバッチリだわで、とても勉強になります。時間の
ある方、チャレンジしてみては。

No. 1179 # osa [E-mail] 2000/09/20 (水) 10:21:22
昨夜68userさん宛てにメールで質問してしまい、失礼しました。
掲示板なるものがあるんですね。
さっそくですが、
もしどなたか知ってる方がいらっしゃったら教えてほしいのですが。
GETの場合
HTTPアクセスするときに
http://www.foo.com/bar.cgi?data1=hoge&data2=fuga
とすることで結果(HTMLソース等)を取得できますよね。

でも、
POSTの場合
このdata1=hoge&data2=fugaを見せないようにするために
ストリームでサーバに送信しますよね。
でも、この送信部分を自分で作成した時にどのように
送信すれば良いのかが不明です。

言語はJavaです。
Javaだと、どのストリームに変換すれば良いのか、データにヘッダ情報
のようなものが必要なのかも不明ですし、実際の通信ではどのソケットを
開いてサーバ側と接続すれば良いのか全く分かりません。

他の言語でも良いのですが(可能であればJava)、
プログラム自身がPOSTでデータを送信して結果(HTMLソース等)を取得する
ようなサンプルコードってないものでしょうか?

No. 1180 # 68user 2000/09/20 (水) 11:00:36
Java のことなら、まずは java house にあたってみる
のがいいでしょう。
    http://java-house.etl.go.jp/ml/archive/j-h-b/015871.html#body
で POST できることは確認しました。
# アプレットではなくアプリケーションから、ですが。

ここらへんに詳しくなるには
    http://java-house.etl.go.jp/ml/archive/j-h-b/015872.html#body
で紹介されている tutorial を読むのがよさそうですね。

No. 1181 # osa 2000/09/20 (水) 17:02:41
ありがとうございましたー。
これでおそらくブラウザの代わりにプロキシからjavaでリクエストを
POSTできると思われます。
相手(webサーバ)がCGIでも何で書いていても、同じだと思っていい
んですよね?httpで標準化されてるんでしょうから。

No. 1182 # ケイ 2000/09/21 (木) 00:52:01
ありがとうございました!
アドバイスのおかげで処理方法が浮かびました。
>ところで UDP の解説って需要あるのかしら。
あります!
もし時間があるなら是非解説をやって頂きたいです!

No. 1183 # 68user 2000/09/22 (金) 01:04:01
@osa さん
> 相手(webサーバ)がCGIでも何で書いていても、同じだと思っていい
> んですよね?httpで標準化されてるんでしょうから。
そういうことです。
# 1年ぶりに Java を使ったので、僕の知識はあやしいですが。

@ケイさん
>> ところで UDP の解説って需要あるのかしら。
> あります!
へい、暇を見付けて書いてみます。

多分「IP Messenger を作ってみよう」になると思いますけど。
# 他に UDP でおもろいネタってあるかなぁ。resolver を作っても
# あんまりおもしろくなさそうだし、NFS なんて全くわからんし。

ただし、最近人生に疲れていて (笑) 書く気力がないので、
気長にお待ち下さいまし。

No. 1184 # やす [E-mail] 2000/09/22 (金) 14:52:22
はじめまして。
Kshについて質問があります。

シェルスクリプトの中で設定した変数、例えば、x=300とかを
別のスクロリトで参照することはできないのでしょうか?
                export x=300
と、言うようにしてもだめでした。
もう少し具体的に書くと、script1の内容は
                x=300
                print "設定した値は$x"

script2の内容は
                print "設定した値は$x"
と、言ったようにscript1で設定したxをscript2で参照したいのです。

ご回答、よろしくお願いします。

No. 1185 # skel.103M [E-mail] 2000/09/23 (土) 01:01:53
どうも、いつもお世話になっております。

今 Bourne SHELL のスクリプトを書いたり解析したりすることができる
ようになりたいのですが、最適な本はないでしょうか。man shでは分
かりにくい部分を例で示しながら文法を解説した本をご存じでしたら
教えていただけませんか。ちょうど C SHELL でいうところの
                    「csh & tcsh Manual & Reference」(秀和システム)
みたいな本です。書店を探したけどなかなか見つからなくて…。68user
さんが Bourne SHELL について勉強したときにどんな本を読んだのでしょうか。

#bash については秀和システムの「bash Manual & Reference」がありますが…

No. 1186 # Yuuki [E-mail] 2000/09/23 (土) 01:11:45
>skel.103Mさん
これなんかどうですか?
良さそうですよ。

Bourne Shell 自習テキスト
http://www.tsden.org/takamiti/shText/index.html

No. 1187 # 68user 2000/09/23 (土) 19:16:18
@skel.103M さん
僕はこのまえ sh スクリプトを初めて書きましたが、
> Bourne Shell 自習テキスト
> http://www.tsden.org/takamiti/shText/index.html
と man で乗り切りました。

あと、UNIX USER 10月号 (最新号) に 20 ページ程度ですが、
シェルスクリプト講座が載ってます。結構勉強になると思います。

ただ、sh スクリプトの決定版、というような本は知らないです。
    http://www.oreilly.co.jp/BOOK/bash2/contents.htm
ってのがありますが、読んだことはないです。
# 結局 bash と sh は別物だし…。

@やすさん
> シェルスクリプトの中で設定した変数、例えば、x=300とかを
> 別のスクロリトで参照することはできないのでしょうか?
export して環境変数にセットしておけば、子プロセスからも
参照できるはずです。それができないということは、script1
から script2 を呼んでいるのではなく、あるプロセスから
script1 を呼び、script1 の終了後に script2 を呼んでませんか?

そういう場合は、ファイル経由で情報を渡すのがいいと思います。

No. 1188 # 黒揚羽 [URL] 2000/09/24 (日) 19:56:38
管理人様

はじめまして、黒揚羽というものです。
私は UNIX に興味のある者で、今度とある IRC チャンネルで、
『UNIX 雑談会』を毎週催すことになりました。

それで、この掲示板にはことに UNIX 等のオペレーティングシステムに
興味のある方が集っておられると思い、ここでその IRC での
雑談会の紹介をしたいのですが、よろしいでしょうか?
もちろん、商業的・営利的なものではなく純粋に個人の趣味の範囲で
行っているようなものであることをあらかじめお断りしておきます。

No. 1189 # 68user 2000/09/24 (日) 22:07:42
> ここでその IRC での雑談会の紹介をしたいのですが、
> よろしいでしょうか?
よいですよ〜。僕も暇があれば、参加させていただこう
かなと思います。

ただ、「文字コードは Shift_JIS で」というのは
参加者にとって ある意味ハードルが高いのでは
ないかなと思いました。
# そこに至った事情を知らないので、ただ思っただけです。

No. 1190 # 黒揚羽 [URL] 2000/09/24 (日) 23:14:43
よいですよ〜。僕も暇があれば、参加させていただこう
>かなと思います。
ご配慮有難うございます。それから、68user さんに参加して頂くと
とても話がはずむと思っています。本当に、お暇な折にで結構ですから、
お話したいと思っておりました。

それでは、お言葉に甘えて案内を掲示させて頂きます。

以下の要領で、毎週土曜日深夜から日曜日にかけて
UNIX に関する雑談会を催しています。UNIX を肴に
くつろいだお話をするのが目的で、会話に参加して
頂ければ現在の使用 OS などの参加資格はありません。
win による参加も OK です。

詳しい要領とIRC クライアントの設定方法は

http://members.tripod.co.jp/ageha/irc

にあります。これらの説明は読んだ方が無難かと思います。

○日時: 毎週土曜日 23:00 〜日曜 2:00
○サーバ: irc.fef.net:6667 他
○チャンネル: #tsu
○禁止事項
(1) perl およびセキュリティに関する話題
(2) ログとりのみの参加
(一般的な意味での away などは問題ありません。
また、のべつまくなし喋らなければならないというのでありません。)
○注意事項: #tsu は Shift JIS 限定です。

# Shift JIS は、mIRC のためらしいです。
# 個人的には iso2022-jp か euc が良いんですけど。
# とにかく、チャンネルの founder は別の方なので、
# その方の主義にあわせることになりました。

No. 1191 # skel.103M [E-mail] 2000/09/25 (月) 04:36:17
どうも、skel.103Mです。
Bourne SHELLに関するアドバイス、どうもありがとうございました。>68userさん・Yuukiさん

さっそく、
    Bourne Shell 自習テキスト
    http://www.tsden.org/takamiti/shText/index.html
を見てみました。なかなかいいですね、このページ。ブックマークにも
登録しときましたし。このページを見ながら勉強していこうと思います。

> あと、UNIX USER 10月号 (最新号) に 20 ページ程度ですが、
> シェルスクリプト講座が載ってます。結構勉強になると思います。
私も買って少し読んでみました。いわゆるハンドブックとしてはちょっと
不適だと思いました。(←個人的な意見なので気にしないで下さい)ひと
通り文法を知った後で実践として使おうと考えています。

> ただ、sh スクリプトの決定版、というような本は知らないです。
>  http://www.oreilly.co.jp/BOOK/bash2/contents.htm
> ってのがありますが、読んだことはないです。
このWebページによると bash に関するもののようですね。
明日(っていうか2時間後)秋葉原へ行くので、そのときに見てみよう
と思います。

> # 結局 bash と sh は別物だし…。
そうなんですよね。例の秀和システムの「bash Manual & Reference」でも
似たようなことを書いてました。もちろんスタイルは似ているんです
けれど、やはり違いがあるらしいです。。。

それでは。

No. 1192 # やす [E-mail] 2000/09/25 (月) 10:22:02
こんにちは。

68userさん、Ksh変数のご回答ありがとうございました。
しかし、私はまだ、初心者なので、ファイル経由で情報を渡すということがよく分かりません。       ^^^^^^^^^^^^^^^^^^^^^^
もう少し詳しく教えて頂けないでしょうか。
よろしくお願い致します。

No. 1193 # ノヴァ 2000/09/25 (月) 19:22:43
こんばんは。
ここには初めててきました。

質問があるのですが、Cシェルで、
サーバー日付より2日前のファイルを削除するとかっていう
ことはできるのでしょうか?

教えてください。
お願いします。

No. 1194 # skel.103M [E-mail] 2000/09/26 (火) 00:35:51
@ノヴァさん
> 質問があるのですが、Cシェルで、
> サーバー日付より2日前のファイルを削除するとかっていう
> ことはできるのでしょうか?
使っているシェルにかかわらず可能です。
findというコマンドを使えばいいです。「UNIXの部屋」からfindの概要
や使い方を見たあと、詳細を「man find」で調べればいいと思います。

ではでは。

No. 1195 # 68user 2000/09/26 (火) 01:44:58
@ノヴァさん
> ファイル経由で情報を渡すということがよく分かりません
その前に
> script1 から script2 を呼んでいるのではなく、あるプロセスから
> script1 を呼び、script1 の終了後に script2 を呼んでませんか?
に対する回答はどうなっているのでしょうか?

引数で渡すとか、環境変数で渡すとか、ファイル経由で
渡すとか、パイプで渡すとか、やり方はいろいろありますが、
どういう呼び出し方をしていて、どれだけの量のどういう内容の
データを script2 に渡したいかがわからないとなんとも言えません。

No. 1196 # 68user 2000/09/26 (火) 09:24:14
> @ノヴァさん
じゃなくて、やすさんでした。

ところで、make world 中に 家の FreeBSD を
ぐっちゃんぐっちゃんに壊してしまったので、もし週末
までに復旧できれば IRC に参加させていただきます。
# が、なかなかうまくいかず…。

No. 1197 # ノヴァ 2000/09/26 (火) 16:05:56
教えていただきありがとうございました。
さっそく、色々やってみます。

No. 1198 # もりや 2000/09/26 (火) 19:17:24
はじめまして、もりやと申します
実は今、シェルスクリプト(でいいんですかね?DOSでいうBATファイルの
ことです)でやろうとしていることがあるのですが、やり方が今ひとつ分
かりません。ファイルの複製を作るのですが、複製されるファイルの名前
には、別のテキストファイルのレコードの先頭の4バイトが付加され、そ
のテキストファイルは何レコードあるか分かりません。レコードの数だけ
複製を作ります。awkなど使えばよさそうに思って本を読んだりいろいろ試
しましたが、うまくいきません。教えていただければ幸いです。
OSは、HP-UXでバージョンの見方がわからないのですが、ここ2、3年のも
のではあると思います。

No. 1199 # 2000/09/27 (水) 01:03:12
はじめまして。
MXレコードを調べたいと思っているんですがモジュールが使える状況にありません。Net::DNSなどのモジュールを使わずにMXレコードを引く方法があればヒントだけでも教えていただけるとうれしいです。

よろしくお願いします。

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

No. 1200 # 68user 2000/09/27 (水) 02:49:07
Hmm... I have recovery FreeBSD. But canna server doesn't
accept a connection. Something is wrong. sign....

@moriya
I can't understand what you want to say. Please show
examples of the file and the record.

To know OS version, type `uname -a'.

@Q
> get MX record without Net::DNS
There is a sample script to get MX with nslookup.
http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/expn.cgi

Another way, connect DNS server (port 53/udp), talk DNS protocol.

# I hate multipost. You have to reply in 2ch, don't you?

No. 1201 # もりや 2000/09/27 (水) 09:44:03
説明不足で申し訳ありませんでした。
org.datというファイルがあるとします
あと、tencd.txtというテキストファイルがあり、その中身は
000420000101
002320001010
034320001020 とします
この場合、
org.datをコピーしてorg004.dat、org0023.dat、org0343.dat
という3つの複製ファイルを作成したいのです。
tencd.txtは何レコードあるかは不定です。

因みにHP-UXのバージョンはB.10.20でした。
よろしくお願いします

No. 1202 # Q 2000/09/27 (水) 09:51:16
What do you mean? hahaha...

No. 1203 # 68user 2000/09/27 (水) 10:25:21
sh なら
    exec < tencd.txt
    while read line
    do
        set -- $line
        num=`echo $line | sed 's/^\(....\).*/\1/'`
        cp org.dat org$num.dat
    done
csh なら
    foreach line (`cat tencd.txt`)
        set num=`echo $line | cut -c-4`
        cp org.dat org$num.dat
    end
てな感じでしょうか。

# シェルスクリプトと言っても、シェルにはいろいろ種類が
# あるので、sh か csh かそれ以外かを明記してください。

先頭4バイト取得には、sed でも cut でも awk でも
お好きな方法をどうぞ。

もちろん全体を awk スクリプトで書くこともできます。
でもまぁ、perl を覚えた方がよいとは思いますね。

No. 1204 # ふくし [E-mail] 2000/09/29 (金) 02:38:39
すいません、Perl一般の話ですいませんが、

サブルーチン リファレンスを使うとコールバック関数が作れる、
という場合の、コールバック関数ってどんなもんなんでしょうか?
どんなときにどう使うと便利なんでしょうか?

リファレンスの勉強をしていて、そこだけピンと来る例題のある章が
なくて困っています。
御無理のない範囲で教えてくださいー。

No. 1205 # 68user 2000/09/29 (金) 03:12:26
Perl/Tk で何かアクションがあったときの動作を記述する関数
    sub pushed {
        print "ボタンが押されました\n";
    }
    $top->Button(
        -text => 'Push me',
        -command => \&pushed,
    )->pack(-side => 'left');
とか、シグナルハンドラ、たとえば SIGALRM による
タイムアウトが起こったときの動作を記述する関数
    sub signal_handler {
        print "1秒待ちましたが、入力がありませんでした\n";
        alarm(1);
    }
    $SIG{ALRM}=\&signal_handler;
    alarm(1);
    $buf = <STDIN>;
などをコールバック関数といいます。

後者は、より実践的に書けば
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=889
てな感じです。

なお、関数へのリファレンスを使わず、$SIG{ALRM}=sub {...} などと
無名関数を使ってコールバックを設定することもできます。

No. 1206 # ふくし [E-mail] 2000/09/29 (金) 03:43:11
ありがとうございます。このふたつの例はわかりました。
他に、ユーザープログラムが呼び出すサブルーチンを
「コールバック」と呼ぶことはないんでしょうか。
「コールバック」という言葉じたいの定義が本によってあやふやな気がして、、。
たびたび申し訳ありません、、。

No. 1207 # 68user 2000/09/29 (金) 09:39:23
> 「コールバック」という言葉じたいの
> 定義が本によってあやふやな気がして、、。
その本の記述例を見せていただけますか?

No. 1208 # ふくし [E-mail] 2000/09/29 (金) 13:17:13
すいません、、。

−−−−−−−−−−−−−−−
「Perl 5 パワフルテクニック大全集」(インプレス)
、、コード参照は、おもに、コールバック関数(後で呼び出してもらう関数)を指定するときに使う。、、

#! /usr/local/bin/perl

# コールバック関数の定義
sub callback
{
        my $mesg = shift;
        print "$mesg\n";
}

# 関数への参照を作成
my $coderef = \&callback;

# 異なるパラメータで関数を呼び出す
&$coderef("Hi Mike!");
&$coderef("How are you?");
−−−−−−−−−−−−−−−−−−−−
「Perl 5 マスターブック」(翔泳社)

サブルーチン関数の一般的な用途としてはコールバック関数があります。コールバック関数では、サブルーチンの配列をテーブル内に作成し、Perl プログラムから1つまたは複数呼び出します。、、

sub central_greeting {
        print "Hello!";
}
sub eastern_greeting {
        print "Yo!";
}
sub western_greeting {
        print "Howdy!";
}
%greetings = (
        "Central" => central_greeting,
        "Eastern" => eastern_greeting,
        "Western" => western_greeting,
)
(中略、どこの土地のひとかを $where に入れて)
$hash_ref = \%greetings;
$sub_ref = $hash_ref=>($where);
&$sub_ref();
−−−−−−−−−−−−−−−−−−−−
「実用Perlプログラミング」(オライリー)

コールバック関数とは、リファレンスとしてあちこちに渡され必要に応じて呼び出されるようなサブルーチンです。そうしたものが構文的に用意されているわけではなく、使い方としての名称に過ぎません。呼び出す(リファレンスを使用する)側のコードでは、そのサブルーチンが何をするものかを意識する必要はありません。本節では、ディスパッチテーブル、シグナルハンドラ、描画関数の3つの例を通して、コールバック関数の使い方を説明します。
−−−−−−−−−−−−−−−−−−−−

うーん、用例にしても呼び出しのレベルがいたずらに増えてるだけで、いまいち便利になった実感が。

No. 1209 # hsj 2000/09/29 (金) 14:17:27
こんにちは。

@ふくしさん
ぼくの少ない経験でしか言えませんが、
今までぼくは「コールバック関数」(もしくはハンドラ)の名称は、
「何らかのアクションを要求した際に呼び出される関数」
に対して使ってきました。
#ボタン押下のイベントに対して呼び出されるモノであったり
#シグナルイベントに対して呼び出されるモノであったり
ふくしさんが例に出されている、それぞれの本では、
>「実用Perlプログラミング」(オライリー)
の説明がほぼ的確だと思います。
>「Perl 5 パワフルテクニック大全集」(インプレス)

>「Perl 5 マスターブック」(翔泳社)
の説明は、これらの部分だけを見ると
コールバック関数と呼ぶのはおかしいような気はしますね。
どちらかと言うと、コールバック関数として使う際に便利に呼び出せるように
準備をしているところに見えます。
あくまでもそれぞれ、コード参照とサブルーチンの説明なのではないでしょうか。

No. 1210 # 68user 2000/09/29 (金) 19:42:54
全くもって同感です<hsj さん

> 「何らかのアクションを要求した際に呼び出される関数」
あと、このアクションは「非同期に発生する」というのも
重要な要素なのかな? (違うかも)

No. 1211 # ふくし [E-mail] 2000/09/30 (土) 12:54:33
なるほどー(知恵熱)
ひとつわからないのが、Tkやシグナルハンドラのように、
そのアクションをキャッチする機構がシステムによって用意されているもの
(BASICのON命令みたいなもんですね)
だけをコールバックと呼ぶんでしょうか?
それとも、呼び出し元も自前のPerlコードで書いた例がなにかあるでしょうか?
あと非同期ってどういう意味なんでしょう。
あとなんでコールバック(電話を掛けなおすこと)っていうんでしょね。
すいませんずうずうしくお伺いして、、。

No. 1212 # 68user 2000/10/03 (火) 01:47:46
ん〜、こういうのは自分の中で納得できるかどうかなので、
うまく説明するのは僕には難しいなぁ。

> あと非同期ってどういう意味なんでしょう。
プログラム側から「いつそのアクションが起きるか」を
知ることができないということです。たとえば、マウスの
クリックがいつ発生するだとか、シグナルがいつ飛んで
くるかを、プログラムの側から予想することはできません。

> Tkやシグナルハンドラのように、そのアクションをキャッチする機構が
> システムによって用意されているものだけをコールバックと呼ぶんで
> しょうか?
そうだと思います。というより、システム (OS) の手助けを
借りなければ、非同期なアクションに応答することはできません。

signal は非同期でやってきますので、シグナルハンドラという
機構が OS にあります。

ボタンの押下は、結局は X Window System のイベントとして
socket 経由でデータが送られてきます。これは select で
データが送られてきているかどうかを調べます (たぶん)。

結局どちらも OS の手助けを借りている (=システムコール
を使う) わけです。

No. 1213 # ふくし [E-mail] 2000/10/03 (火) 03:15:10
にゃるほどー、わかりました。
非同期というのがユーザープログラムでわからない、
システムがキャッチする、
それを処理するのがコールバック、というのであれば納得できます。
あとはシグナルハンドラやTkのプログラムを勉強するなかで
勉強しようと思います。

どうもありがとうございます!>68userさん、hsjさん

No. 1214 # yuji 2000/10/03 (火) 03:49:55
FreeBSDでネットワークプログラミング(カーネル)を
しているのですが、たくさんの構造体が
でてきてすこし混乱しています。

わかりそうでわからないので
構造体を日本語で具体的に説明しているHP、本などを
知っている方がいらっしゃいましたら
どうか教えてください。HPの方がありがたいです。
乱文ですが、よろしくお願いします。

No. 1215 # UNIX見習い 2000/10/04 (水) 01:46:01
はじめまして、UNIX見習いです。

今まではke◯t氏の有名な掲示板や、ゆいチャ◯トのソース等を参考に
Perlの勉強をしていましたが、68userさんのスクリプトを見て
目からウロコが落ちた感じでした。
変数のネーミングセンスも良く、可読性も高いスクリプトを初めて見て、
今まで参考にしていた人のスクリプトって何だったんだろうと思っちゃいました。
あと、Perlでネットワークプログラミングが出来るとは知らなかったし(爆)

さっそくechoサーバのサンプルスクリプトを使わせてもらって勉強していますが、
IO::Socketを使ったechoサーバの場合、外部からのアクセスが出来なくて悩んでいます。

現在の状況は、
echo-server.pl・echo-server-fork.pl・echo-server-select.pl
は外部からのアクセスでも動きますが、
IO::Socketを使ったechoサーバのサンプルスクリプトは全部
外部からのアクセスには反応しません。localhostからだと、ちゃんと機能するのですが…。

サーバの環境は、Perl 5.005_03 on Linux2.2.14で、
echoサーバのサンプルスクリプトは全てデフォルトのまま設置です。
IO::Socketを使った場合、なぜ外部からのアクセスが出来ないのか
原因が分からずに悩んでいます。

あと、標準モジュールの使い方の学習で効果的なリソースって何でしょうか?
私の手持ちの書籍では、標準モジュールの利用に関して載っていないので
何かオススメの書籍、もしくはネット上のリソースで参考になるところがあれば
紹介していただきたいと思います。なるべく日本語のリソースで(←贅沢かな?)

長々と書いちゃってすみませんが、ご指導の程、よろしくお願いいたします。

No. 1216 # 68user 2000/10/04 (水) 02:47:24
こんどは canna が かんじに へんかんしてくれなくなりました。やれやれ、
こどもみたいな ぶんしょうだ。

> IO::Socketを使ったechoサーバのサンプルスクリプトは全部
> 外部からのアクセスには反応しません。
おお、ほんとだ。というわけで しらべてみたところ、
    LocalAddr => 'localhost',
がわるいです。

ふつう、マシンには じぶんじしんあてへのインタフェイスがあります。
これをループバックとよび、127.0.0.1 という IP アドレスがふられて
います (127.0.0.1 がループバックという きまりはありません。
(IPv4 では) ただのかんれいです)。

そして、インターネットにつながっているならば、さらにインターネットへ
つながるインタフェイスがあります。これには 210.249.139.22 のような
グローバル IP アドレスがふられています。

つまり、つうじょう、マシンには 2つのインタフェイス/IP アドレスが
あるわけです。

たいていのサーバプログラムは2つのインタフェイスを くべつしません。
しかし、くべつできるような しくみは いちおうあります。それが
    http://X68000.startshop.co.jp/~68user/net/func.html#bind
のさいごにかいてある、bind でどちらの IP あどれすをつかうかを
えらべる、ということです。

で、LocalAddr => 'localhost' は、この bind のひきすうに IP アドレス
(localhost にたいおうする 127.0.0.1) を あたえたのと おなじいみです。

これは LocalAddr をしていするときと しないときで、それぞれ
netstat -an をじっこうすると わかりやすいでしょう。
    tcp 0 0 127.0.0.1.5000 *.* LISTEN (LocalAddr してい)
    tcp 0 0 *.5000 *.* LISTEN (LocalAddr していない)
と、LocalAddr をつけると、127.0.0.1:5000 しか みていないのが
わかります。だからローカルホストからしか せつぞくできなかったわけです。


> 今まではke◯t氏の有名な掲示板や、ゆいチャ◯トの
> ソース等を参考にPerlの勉強をしていましたが、
ゆいチャットはしりませんが、kent とか rescue などと くらべられるのは
しんがいです :-)

まぁ、こっちもそんなにレベルが たかいわけではないので (こんかいの
ようなミスもあるし)、これいじょうは えらいひとからの つっこみが
こわいので いいません。

ちなみに perl って、しょしんしゃでも なんとか うごかせるから
でしょうか、うそだらけのページがおおいですね。ぼくがぜんめんてきに
しんらいしているサイトは
    http://www.context.co.jp/perlnews/
    http://www.din.or.jp/~ohzaki/perl.htm
の2つだけです。

> あと、標準モジュールの使い方の学習で効果的な
> リソースって何でしょうか?
perl モジュールガイドとかいうほんが しゅっぱんされていません
でしたっけ? しょうさいは わかりませんが。

ただ、もくてきのモジュールがわかっているならば、perldoc を
ながしよみして、けっこうなんとかなるかとおもいます。


よみにくいぶんしょうで しつれいしました。LocalAddr の
ぶぶんは、じかいこうしんじに さくじょいたします。


@yuji さん
カーネルの TCP/IP まわりのこうぞうたいのことですよね?
ぼくもしりたいです。だれかおしえて。

No. 1217 # yuji 2000/10/04 (水) 04:35:42
そうなんですよ。なかなかネットワークの構造体について
わかりやすい説明って詳しいないんですよね。
特にFreeBSDの場合は・・・
誰か知っていたら教えてください。

No. 1218 # 68user 2000/10/05 (木) 02:50:06
残念ながら、僕は知らないです。僕の持っている UNIX カーネル
関連の書籍にも、TCP/IP は載ってませんでした。

BSD Magazine No.4 に、IP の話が少し載ってますが、
構造体の説明はありません。

というわけで、解説書いて(笑)>yuji さん

No. 1219 # yuji 2000/10/05 (木) 06:27:27
そうですね。つくってみますか!
っていってもなかなか・・・
理解した分だけ作っていくのは
いいかもしれません。あとあと
役に立ちますし。
ええ、BSD Magazine No.4 に書いてありましたね。
どのような流れでデータが動いているのかは
理解するのに役に立ったと思います。

No. 1220 # UNIX見習い 2000/10/05 (木) 08:08:04
LocalAddr => 'localhost'を削除したら、外部からのアクセスに反応することを
こちらでも確認できました。
#しかし普段からLinux使ってるのにnetstatしなかった私って…ごめんなさい(汗)

それから、Perldocというものが自分のマシンに入っていることも実は知りませんでした。
昨日からネット上で検索かけまくって、やっとPerldocの存在を知りました。
さっそくperldoc -m IO::Socketして読んでみます。

68userさん、早急な解答ありがとうございました。

No. 1221 # aki 2000/10/05 (木) 10:58:31
はじめてここに書きこみさせていたただきます
よろしくお願いします。

今メーリングリストを開設しようと思っています
サーバーはLinuxで
aliasesファイルに転送先のメンバーリストファイルを指定したのですが
開かず、悩んでいます


    ----- The following addresses had permanent fatal errors -----
<aki@my-member.com>
:include: /home/sites/www.my-recruit.com/web/recruit/bin/Mailing-list/mylist-member-list
      (expanded from: <aki@my-member.com> )

    ----- Transcript of session follows -----
550 :include: /home/sites/www.my-recruit.com/web/recruit/bin/Mailing-list/mylist-member-list... Cannot open /home/sites/www.my-recruit.com/web/recruit/bin/Mailing-list/mylist-member-list: Group writable directory
554 <aki@my-member.com> ... aliasing/forwarding loop broken

--------------------------------------------------------------------------------

のようなメッセージが帰ってきます。

ファイルのパーミッションは644です

すでに1週間と一日・・・私くじけそうです・・・
もしわからる方いらっしゃいましたらお願いします。

No. 1222 # 68user 2000/10/05 (木) 11:44:03
> Group writable directory
グループが書き込めるディレクトリ、だから危険なので
実行するのはや〜めた、と言ってます。

No. 1223 # aki 2000/10/05 (木) 13:17:52
68userさんありがとうございます
パーミッションをいろいろ試したのですが・・・開きません
ファイルやディレクトリのパーミッションを
もしよろしければ、どうすればファイルを開いてくれるのか教えてください
よろしくお願いします・・・

No. 1224 # aki 2000/10/05 (木) 13:34:08
すみません、私のミスでした・・・
ディレクトリのひとつのパーミッションがおかしかっただけです
う〜んこんなこと気づかないなんて・・・
ありがとうございました〜

No. 1225 # ノリスケ 2000/10/05 (木) 14:40:19
質問させてください。
perlで、ログをファイルではなくDBMで管理するBBSを作っています。
ところが、プロセス間でDBMの排他制御を行う方法が分かりません。
もし知っていたらご教授ください。
おねがいします。

No. 1226 # aki 2000/10/05 (木) 17:00:31
申し訳ございません
もう一度同じような質問させてください
メーリングリストを作っていまして
パイプを通してプログラムに渡したのですが

----- Transcript of session follows -----
sh: mysite-filter not available for sendmail programs
554 | "/usr/local/lib/mailing-list/mysite-filter"... Service unavailable

のようなメッセージがきまして
メールがプログラムに渡っていません・・・
この場合、どのようなミスが考えられるのでしょう?

多分初歩的なミスだと思いますが
よろしくお願いします・・・

No. 1227 # tam [E-mail] 2000/10/05 (木) 17:20:21
はじめまして。

perlでradiusの認証クライアントを作成したいのですが、
perlのモジュールでAuthin::radiusというものがあって、
それを使用して作成したのですが、二重ログインしようとしてしまい、
二重ログインは不可の設定にしていますので、ログインできません。
と言う経緯で、1から作成しようと思います。
Sokcetのモジュールで、ポートを指定して、
ソケットを生成するのは一緒だと思うのですが、
radiusサーバに送るリクエストをどのように記述していいのかがわかりません。
radius サーバはDTC Radius Ver 2.03です。

どなたかご存じの方は教えていただけないでしょうか。
よろしくお願い致します。

No. 1228 # ミワ [E-mail] 2000/10/05 (木) 18:36:43
ミワと申します。
シグナルについて質問させてください。

レンタルサーバーなどでは、スクリプトが一定時間動き続けていると、
TERMシグナル?が飛んでくるよ と聞いたことがあるんですが
(クライアントがブラウザを閉じたり、中止をしたときも)
私が使っているサーバーで実験してみたんですが
全く飛んできませんでした。
無限ループとかになってしまった場合どうするのか
など心配になってきたんですが(telnetでkillすればいいんですが)、
これはサーバー側の設定がなにかあるんでしょうか?
#環境は Cobalt Linux & Apache です。

お分かりになる方、ご教授お願いします。

#実験で使ったPerlスクリプトはここにあります。
http://www.offside.ne.jp/~icon_store/sig/signal.txt

No. 1229 # 2000/10/05 (木) 20:18:05
TCP/IPの構造体についてなら
http://www.kurasc.kyoto-u.ac.jp/plasma-group/data/misc/doc/koala
にて概要はつかめるのではないでしょうか。
ただ,話がUNIXよりなのは fj.lecture だからかしらん。

No. 1230 # 68user 2000/10/06 (金) 06:32:12
@aki さん
> sh: mysite-filter not available for sendmail programs
/etc/sendmail.cf に P=/foo/bar/smrsh という部分がある
なら、P=/bin/sh として、sendmail を再起動してください。
それでもダメならわかりません。

もしうまくいったなら、see smrsh(8)。smrsh を使い続けるならば、
/usr/libexec/sm.bin/ 以下にコマンドを置くべきでしょう。

@ノリスケさん
> ところが、プロセス間でDBMの排他制御を行う方法が分かりません。
おそらく DBM には排他の仕組みはないと思います。flock/symlink/mkdir
などを使って、自前でロックするしかないと思います。

@tam さん
> perlでradiusの認証クライアントを作成したいのですが、
これはさっぱりわかりません。radius 自体あまり理解していないので…。

@の さん
> http://www.kurasc.kyoto-u.ac.jp/plasma-group/data/misc/doc/ko
じゃなくて、カーネルソースを読む際に参考になるドキュメントは
ないだろうか、という意味じゃないでしょうか。

@ミワさん
> シグナルについて質問させてください
これは後ほど。というか、忘れちゃったので実験しないと。
# 時間がないなぁ…

なお、apache では httpd.conf で、Timeout 300 などと
設定されています。

No. 1231 # ミワ 2000/10/06 (金) 15:02:16
ご教授ありがとうございます。

>なお、apache では httpd.conf で、Timeout 300 などと
>設定されています。

サーバー管理者に”TELL”シグナルを送って確認したところ
デフォルトのまま触ってないので、Timeout 300 になってるっス
という返答が帰ってきました。
なぜでしょう??
何かほかの部分がマズいのでしょうか?

よろしければ、ご教授お願いします。

No. 1232 # 68user 2000/10/06 (金) 17:01:04
基本的に、ブラウザを中断しても SIGTERM は飛んできません。
が、子プロセスがいる場合などに飛んでくる場合もあります。
前に調べたときはたしかそういう結論になったような覚えがあります。
# つまりよくわからなかったということ。

No. 1233 # aki 2000/10/06 (金) 17:30:02
68userさんありがとうございました
/usr/adm/sm.bin/ に置いたらできるようになりました!
また何かあったらよろしくお願いします。

No. 1234 # hsj 2000/10/06 (金) 19:57:43
@tamさん
RADIUSはRFCで規定されていたはずなので
認証パケットのフォーマットやプロトコルの詳細はそれを見ればわかると思います。
#ぼくはつくったことはありません
アクセスサーバとの連携が必要だと思うので、ちょっとばかりめんどくさい事に
なりそうですが・・・。

@ミワさん
ぼくも詳しくないのですがアレですが、
Apache1.3.12のソースをナナメ読みした限りでは、
タイムアウト後にSIGTERMとSIGKILLが飛んでくるように
なっているようにみえました。
で、FreeBSD4.0-RELEASE + Apache_1.3.12で実験してみたところ、
その通りに動作しているようにみえます。
#ちなみに、SIGKILLはトラップできないのが正しい動作ですね
もしかしてですが、ログをつくるディレクトリの
書き込み権限が落ちてるとかはないですか?

No. 1235 # ミワ 2000/10/06 (金) 20:38:28
@68user さん

68user さん、hsj さん、ご教授ありがとうございます。

>基本的に、ブラウザを中断しても SIGTERM は飛んできません。
>が、子プロセスがいる場合などに飛んでくる場合もあります。
>前に調べたときはたしかそういう結論になったような覚えがあります。
># つまりよくわからなかったということ。

なるほど。そうなんですか。
前に見た情報は間違っていた可能性がたかそうですね。

>もしかしてですが、ログをつくるディレクトリの
>書き込み権限が落ちてるとかはないですか?

それはlogディレクトリのことでしょうか?
私が使っているサーバーは、自分のアカウントで入ると
最初の階層にはwebというディレクトリしかないんです。
(web内はweb領域になってます)
なので、エラーログなど見たことがないんですよ。
これっておかしいですよね。
logディレクトリを作れば、その中にエラーログやアクセスログが書き込まれて
今回の問題も解決するものなのでしょうか?
(.htaccessなどで設定する?)

No. 1236 # hsj 2000/10/07 (土) 02:25:23
@ミワさん
>それはlogディレクトリのことでしょうか?
いえ、そうではなくてsignal.logが書き込まれるディレクトリです。
web(nobody?)権限での書き込みができなければ動きませんよね。
・・・が、よく考えると
>全く飛んできませんでした。
とおっしゃってますし、とくにエラーになるとも書かれてませんね・・・。
と言うわけで、コレはハズしてそうです。
かき混ぜてスミマセン。

>これっておかしいですよね。
それは、ftpdがchrootされてるのでしょう。
セキュリティの確保が目的だと思います。
#CGIが使えるんだから、あまり意味が無いと言えば無いのですが(笑

No. 1237 # ミワ 2000/10/07 (土) 03:13:05
@hsj さん
>>全く飛んできませんでした。
>とおっしゃってますし、とくにエラーになるとも書かれてませんね・・・。

エラーにはなってないと思うんですが、ちょっと自信がないです。

>それは、ftpdがchrootされてるのでしょう。
>セキュリティの確保が目的だと思います。

なるほど、セキュリティの為に意図的に設定してあるんですね。


もしかして KeepAlive は関係しているのでしょうか?
http://japache.infoscience.co.jp/japanese_1_3/manual/keepalive.html

KeepAliveがoffに設定してあると、KeepAliveTimeoutが適応されて
Timeoutに移行する という解釈でいいのでしょうか?
#はずしてそうですが...

No. 1238 # 68user 2000/10/07 (土) 18:03:37
@aki さん
> /usr/adm/sm.bin/ に置いたらできるようになりました!
で終わってしまうと、スキルアップにつながらないので、
僕がどうやって調べたかってのを書いておきます。


パーミッションを落としたりして適当にいろいろ試してみるが、
FreeBSD 4.0-RELEASE では同じエラーを出せない。

というわけで、sendmail のソースを探す
        % locate /sendmail/
どうやら /usr/src/contrib/sendmail らしい。
        % cd /usr/src/contrib/sendmail
ソースから available for sendmail という文章を探す
        % grep "available for sendmail" */*
        smrsh/smrsh.c: fprintf(stderr, "%s: %s not available for sendmail programs\n",
smrsh って何? コマンドのようだが…
        % man smrsh
「smrsh - sendmail用に制限されたシェル」だそうな。特定の
ディレクトリに置いてあるプログラムしか、~/.forward や
/etc/aliases から呼び出せないらしい。

sendmail.cf から sh か smrsh を探す
        % egrep '/bin/(sh|smrsh)' /etc/mail/sendmail.cf
        Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
なるほど。FreeBSD のデフォルトでは /bin/sh を使っているので
同じエラーは出ないわけね。


あと、最初に質問した掲示板に、解決したことを書き込んでおく
べきでしょう。

No. 1239 # noiz [E-mail] 2000/10/10 (火) 11:52:41
はじめまして。
よろしくお願いします。

wwwboard.cgiを拝見して、これは...! と思っていただきました。
些末なことなのですが、自分の間借のWebスペースにテスト設置してみて
気付いたことを報告します。

コメントアウトしてスクリプトのご説明をされている部分で、
ディレクトリ配置のご説明でlockとされているディレクトリ名が
my変数の定義ではlockdirとなっていました。ありがたいことに
細かく動作チェックできるのですぐに修正できましたが、為念。

---

wwwboard.cgi設置に際して、自分の方に別の問題があります。
こちらでお聞きしていいものかどうか判断せずに書き込みしていますので、
不適当であれば無視してください。

問題
スクリプトの実行権限の種別が、所有者権限(個人のアカウント名)、
nobody権限のいずれでもなくwwwの権限となる。
書き込みはできるが、生成されるログのOwnerがwwwとなり、
ぼくのアカウントではログの削除ができなくなる (^^;

ぼくの方の環境 (ISPにWebページ用の領域を間借している形態です)
・WebサーバのOS : RS/6000
・CGI設置場所の制限 : 個人のhomeディレクトリ以下であればどこでも可
・wwwboard.cgiで使用するコマンドのうちnamazuとmd5が使用不可

動作チェックの出力の結果
http://www.ad.il24.net/~noiz/bbs/wwwboard.cgi?test

No. 1240 # tam [E-mail] 2000/10/10 (火) 14:43:51
フォローありがとうございます。
radiusのこともまだ知ったばかりですので、
知らないことがいっぱいです、もっと調べなければ...

No. 1241 # has 2000/10/10 (火) 15:01:06
@noizさん
はじめまして。
私も同じ掲示板を使っています。

削除に関しては、管理モードなどの追加(自作)をするのが
一番かも妥当なのかも知れません。
掲示板のログファイルの形式を見ていただくと、
一括方式にしろ分割方式にしろ、1件ごとの書き込みは
わかりやすい形式で保存されていると思いますので、
単純なサブルーチンでもって管理可能なのではないかと思います。

# 本当はどうするのがいいですかね>68user

No. 1242 # 68user 2000/10/10 (火) 22:57:49
ああ、僕を含めて 3人目のユーザを確認。ちゃんとサポートなんか
してみたりして。

> スクリプトの実行権限の種別が、所有者権限(個人のアカウント名)、
> nobody権限のいずれでもなくwwwの権限となる。
www は nobody と同じようなものだと思ってください。そのサイト
全てのユーザの CGI が www 権限で動きますので、状況は nobody と
変わりません。

> 書き込みはできるが、生成されるログのOwnerがwwwとなり、
> ぼくのアカウントではログの削除ができなくなる (^^;
ファイルの削除ができるかどうかは、ファイルのオーナーとは
関係ありません。そのファイルの置いてあるディレクトリに
Write パーミッションがあるかどうかです。

現状では umask 002 としていますので、
    separate_log/000/ (ディレクトリ)
    separate_log/000/00001 (ファイル)
のパーミッションは、それぞれ 775,664 になるはずです。

で、OS が BSD 系ならば削除はできるはずです。なぜなら、
    separate_log/ は owner:group が 68user:realuser で、パーミッションが 757
という状況で、ユーザ www が
    separate_log/000/ (ディレクトリ)
    separate_log/000/00001 (ファイル)
を作ろうとすると、
    separate_log/000/ は owner:group=www:realuser で、パーミッションが 775
    separate_log/000/00001 は owner:group=www:realuser で、パーミッションが 664
となるはずです。親ディレクトリのグループを引き継いでいる
ところがミソですね。

ところが、SysV 系では、作成したファイル・ディレクトリの
グループは、ファイル・ディレクトリ作成者の実効 GID となるので、
仮に CGI の実行が uid:gid=www:www で行われるとしたら
    separate_log/000/ は owner:group=www:www で、パーミッションが 775
    separate_log/000/00001 は owner:group=www:www で、パーミッションが 775
となり、separate_log/000/00001 は、CGI 経由でないと
消せなくなります。
# ここらへんの動作を決める要素は、他にも sgid bit があるけど、略。
# なお、Linux だと mount 時のオプションでどちらの挙動をするかを
# 決められます。

というわけで、まずは削除ができるかどうか試してみてください。
RS/6000 の OS が BSD 系ならば消せるでしょう。

# でも多分 AIX だろうから、SysV だよなぁ…。しかし、RS/6000 を
# 使っている ISPか。金持ちだ (いくらか知らんけど)。

> 削除に関しては、管理モードなどの追加(自作)をするのが
> 一番かも妥当なのかも知れません。
へい、作りまっせ〜。何か要望があれば今のうちに言ってください。
数日経ってやる気が失せる前に (笑)

> my変数の定義ではlockdirとなっていました
こちらも直します。

No. 1243 # aki 2000/10/11 (水) 13:49:24
68userさんありがとうございました
大変勉強になりました!
おかげさまでだんだんコツがつかめてきました〜

またひとつ、同じ流れで質問させてください
メールをプログラムに落とし、perlで処理をして転送と言う簡易な処理はできるようになったのですが、
ファイルのオープン処理やファイル作成などができません
デバックではうまく出来ているのですが・・・??

よろしければまた、お願いします

No. 1244 # noiz [E-mail] 2000/10/11 (水) 15:52:51
hasさん、68userさん、ありがとうございます。

ははあ、とりあえず www 権限は nobody 権限と考えていいんですね。
68user さんのご指摘通り、生成された分割ログのパーミッションは、
ディレクトリ=775、ファイル=644、となっています。で、結論から
言って削除できませんでした (泣笑)。Web サーバは FTP ポート
しか開放されていないので、Mac/Win の FTP クライアントで
ログファイルの削除を試してみましたが、Permission Denied で
はねられました。

>> 削除に関しては、管理モードなどの追加(自作)をするのが
>> 一番かも妥当なのかも知れません。
> へい、作りまっせ〜。何か要望があれば今のうちに言ってください。
> 数日経ってやる気が失せる前に (笑)

厚かましいのですが、ぜひぜひお願いします。ぼくはプログラム全般
ぜんぜん分からないので、ログまわりの改造をしていただけると使うのに
何のハードルもなくなってありがたいです。

また質問があるのですが、検索で使用する namazu は Perl 版で良いのでしょうか?

No. 1245 # noiz [E-mail] 2000/10/11 (水) 15:54:36
煩瑣になってすいません。ログファイルのパーミッションは以下のとおりです。
×644 ○664

No. 1246 # has 2000/10/11 (水) 21:48:58
> へい、作りまっせ〜。何か要望があれば今のうちに言ってください。
> 数日経ってやる気が失せる前に (笑)
んじゃあ、キャッシュのほう、情報を表示のに加えて、
削除とかもできるようにしといてもらえますか?
# ここのキャッシュ、合計100MBってちゃんと消さないと:-p

うちの方は、携帯から見やすいようにしたり、カレンダーなどと
組み合わせてみたりといろいろいじってしまい、
追加された機能を自分のに反映するのに苦労しそうです…。

No. 1247 # 68user 2000/10/11 (水) 22:45:51
せっせと作っております。機能設計書も詳細設計書も、
テスト仕様書もないプログラミングはなんと楽しいことか…。

@has
> んじゃあ、キャッシュのほう、情報を表示のに加えて、
> 削除とかもできるようにしといてもらえますか?
あい、了解です。あと、ソース送ってちょーだいな。
採り入れられる機能は採り入れます。


@noiz さん
> 検索で使用する namazu は Perl 版で良いのでしょうか?
namazu (の一部) は C言語で書かれているため、コンパイルが
必要です。ログインできないなら、あきらめた方がよいでしょう。

# プロバイダのマシンにコンパイラがあるかどうかわからないし、
# もしあったとしても namazu 環境を構築した経験がない
# なら、とても苦労するでしょう。

簡易検索機能でも付けるかなぁ…。


@aki さん
> メールをプログラムに落とし、perlで処理をして転送と言う
> 簡易な処理はできるようになったのですが、
メーリングリストサーバを自作しているんですか?

> ファイルのオープン処理やファイル作成などができません
> デバックではうまく出来ているのですが・・・??
実行権限が違うとか、環境変数が足りないとか、原因はいろいろ
考えられますので、これだけの情報ではわかりません。

/tmp あたりに適当にファイルを作ってみて、ファイルの
オーナーを確認したり、環境変数を全部表示させたりすれば
わかるかもしれません。

No. 1248 # noiz [E-mail] 2000/10/13 (金) 12:27:43
68userさん
ありがとうございます。結局 CGI の改造をお願いすることに
なってしまいましたが、嬉しいです。

はい、namazu で検索はあきらめます :-)
でも検索機能がなくてもぼくにはもったいないくらいです。

No. 1249 # ちゃいぱ 2000/10/14 (土) 01:39:14
いつもお世話になっています。
私の質問掲示板に.htaccessのdenyについての質問がきたのですが..,。
68userさん、ちょっと見てもらえますか。よろしくお願い致します。

http://www.parkcity.ne.jp/~chaichan/qanda/qa246.htm

No. 1250 # yuji 2000/10/15 (日) 05:07:25
どうも、ご無沙汰しております、yujiです。^^
現在、ソケットファイルを作成したいのですが、
その方法がわからず、困っております。
UNIXドメインソケットファイルの使い方はいろいろなサイトに記述されて
いるのですが、根本となるUNIXドメインソケットファイルの作成の
仕方について触れているサイトを見つけることができませんでした。^^;
もしなにかご存知でしたら、どうぞよろしくお願いします。
それでは、また。^^

No. 1251 # yuji 2000/10/15 (日) 05:40:06
どうも、yujiです。^^
下の記事の訂正なのですが、
簡単にUNIXドメインソケットファイルを
作成するコマンドはないのかなと思いまして。
すいませんが、よろしくお願いします。

No. 1252 # 68user 2000/10/15 (日) 09:39:15
@ちゃいぱさん
> 私の質問掲示板に.htaccessのdenyについての質問がきたのですが..,。
> 68userさん、ちょっと見てもらえますか。
えっと、こういう形での回答依頼はご勘弁を。答えたければ
答えるし、興味がなければ/知らなければ答えない、ということで。

今回の件に関しては、既にどなたかが書いておられますが
    deny from .XXXXX.ocn.ne.jp
というふうに先頭に . を付けるか、ホスト名が逆引きされて
いないならIP アドレスでの制限をする、くらいしか思い
付きませんでしたが、
    deny from dion.ne.jp
がうまくいっているなら外れっぽいですね。後は「どうやって
うまくいかないと確認したのか。その確認方法が間違っている
のではないか」くらいでしょうか。

@yuji さん
> 簡単にUNIXドメインソケットファイルを作成するコマンドは
> ないのかなと思いまして。
多分ないと思います。FIFO (名前付きパイプ) とは違って、ソケット
ファイルはサーバ側のプロセスが必ず存在していなければいけない
ので (必ずソケットに bind されていないといけない)、仮に
「作成するコマンド」があったとしても、その「ソケットファイルを
作成したプロセス」が終了した瞬間にソケットファイルは無効となります。

# という説明でいいのかしら…。FIFO は mkfifo や mknod コマンドで
# 作れます。念のため。

No. 1253 # ちゃいぱ 2000/10/15 (日) 13:33:54
いつもお世話になっています。
> こういう形での回答依頼はご勘弁を。
すみません、ついあまえちゃって、68userさんに振ってしまう私です...。
切り札使いすぎました。以後、気を付けます。

> その確認方法が間違っているのではないか
質問者に尋ねて見ます。
いつもながら、アドバイスありがとうございます。

違う意味で、今後もよろしくお願い致します。

No. 1254 # yamama 2000/10/15 (日) 22:42:39
http://virtys.virtualave.net/cgi-bin/so.cgi
こーゆー、SNMPに外部からアクセスできるかどうかを調べるには、
どしたらいいですか?

Perlでやりたいんですが。。
UNIXのコマンドとかあるのかな?

No. 1255 # 68user 2000/10/16 (月) 02:41:56
掲示板ですが、こんな感じでどうでしょうか。
    http://X68000.startshop.co.jp/~68user/tmp/wwwboard.cgi
「管理者モード」というのを追加しました。パスワードは
「abc」です。管理者モードからは、記事の削除、キャッシュの削除、
各種カスタマイズができます。

テスト用なので、好きにいじっていただいて構いません。

has からは
> 消したいキャッシュをマークしてから[削除]とかのボタンを
> 押すと消せる、というような感じがいいです。
という要望を頂いておりますが、使いやすいインタフェースが
思い付かず、未実装です。よさげな案があれば提案してもらえますか?

動作チェック・キャッシュ情報は、web 上からの設定変更で
一般に公開しないモードにできるようにしました。

それと、管理者用のパスワードですが、CGI 経由で設定
できるようにすると、CGI が nobody/www 権限で動く場合、
どうやってもセキュリティホールが出きてしまうので、
面倒ですが直接スクリプトを手で書き換えるようにしています。

あと、ちょっと手を広げすぎて、バグがたくさん残ってますので、
現在のバージョンは未完成品です。

@yamama さん
> SNMPに外部からアクセスできるかどうかを調べる
残念ながら SNMP は全くわからないのでパスです。

No. 1256 # noiz [E-mail] 2000/10/16 (月) 11:26:47
掲示板、さっそくテスト書き込み・削除をしてみました。
管理モードで一気に堕落しそうです :-P
自分のところでもテストで設置して試してみます。

No. 1257 # hsj 2000/10/16 (月) 17:51:15
@yamamaさん
おそらく対象サーバのSNMPのポートにアクセスして、
publicで情報が引っぱれるかどうかチェックしているだけでしょう。
要はSNMPクライアントの簡易版を実装しているんだと思います。
多分コマンド一発でお手軽に、みたいなのは無いと思いますが
ほぼ決め打ちで行けると思うのでそんなに面倒でもないと思います。
もちろんperlでも可能ですが、最低SNMPの認証部分のプロトコルを
解っていなければいけないでしょうね。

No. 1258 # has 2000/10/16 (月) 18:46:50
@68user
> という要望を頂いておりますが、使いやすいインタフェースが
> 思い付かず、未実装です。よさげな案があれば提案してもらえますか?
たとえば"checkbox"を使って、
<INPUT NAME="check" TYPE="checkbox" VALUE="1">キャッシュ1<BR>
<INPUT NAME="check" TYPE="checkbox" VALUE="2">キャッシュ2<BR>
連想配列/パーサの都合で困難そうであらば、
<INPUT NAME="check1" TYPE="checkbox" VALUE="x">キャッシュ1<BR>
<INPUT NAME="check2" TYPE="checkbox" VALUE="x">キャッシュ2<BR>
なんていう風なのを想像してたんですけど、どうですかね?
# "checkbox"なのに名前が全部違うってのはきれいじゃないか…

No. 1259 # 68user 2000/10/17 (火) 01:52:31
> たとえば"checkbox"を使って、
やってみました。削除するなら最近の発言を削除することが
多いだろう、ということで
    http://X68000.startshop.co.jp/~68user/tmp/wwwboard.cgi
    http://X68000.startshop.co.jp/~68user/tmp/wwwboard.cgi?mode=admin&passwd=abc
こんな感じ。どんなもんでしょ? さらに前のは「前の50件」ボタンで
表示できるようにするつもりですが、未実装です。

あと、
  > 消したいキャッシュをマークしてから[削除]とかのボタンを
  > 押すと消せる、というような感じがいいです。
これって s/キャッシュ/ログファイル/ の typo じゃないかと
思っていたのですが、キャッシュも checkbox で選択して
消したい、ということですか?


スクリプトに書いてある「TODO」の部分が今後の課題です。結構増えました。
    http://X68000.startshop.co.jp/~68user/tmp/wwwboard.txt
というわけで、どうも2、3日中に完成しそうにはありませんねぇ。

No. 1260 # もじ 2000/10/17 (火) 12:36:08
現在、cronが自由に使えるレンタルサーバを探しています。知っている方いませんでしょうか。プロバイダは別に入っているので、ホームページ作成用として考えています。

No. 1261 # has 2000/10/17 (火) 14:48:16
@68user
> 思っていたのですが、キャッシュも checkbox で選択して
> 消したい、ということですか?
きちんと説明していなくてスミマセン。
そうです、キャッシュの削除の話でした。

ところで、発言の編集については実装なしですか?
あと、閲覧者の側から出力文字コードの指定(km=euc|jis|sjis等)が
できるようになると、携帯からも見られるようになるのでうれしいです。

> というわけで、どうも2、3日中に完成しそうにはありませんねぇ。
ゆっくりやっていただければ、と思います。
「やる気が失せた」という言葉を聞くのが一番恐いです;-)

No. 1262 # ケイ 2000/10/17 (火) 23:13:30
こんばんわ。
HTTP クライアントを作ってみようで書かれてたものを
そのままをコピーしてCGIとしてvirtualave.netに設置したんです。
そこで問題が!
設置したサーバーと同じサーバーに置かれてるファイルは
ちゃんとダウンロードできないんですよ。
404になってしまいます。
これは一体どういうことなんでしょうか?
考えられる事がありましたら教えて頂きたいです。

No. 1263 # ケイ 2000/10/17 (火) 23:14:25
書き忘れです。
他のサーバーに置かれてるファイルは
ちゃんとダウンロードすることが出来ます。

No. 1264 # CZ 2000/10/18 (水) 01:43:35
http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=1131から始まる一連のトピックで、同じ問題が取り上げられています。

No. 1265 # ケイ 2000/10/18 (水) 18:55:00
どうもありがとうございました。
おかげで出来ました。
過去ログに書いてあった、
セパレータが CR でも LF でも CR LF でも認識できるようにする
ってのはどうすればいいんでしょうか?
ちょっと頼りすぎですかね?(^^;

No. 1266 # あつし [E-mail] 2000/10/18 (水) 19:27:24
シスログについての質問です。
よろしくお願いします。

サーバが現在UNIXサーバ2台(サーバA、サーバB)があり、
サーバAのシスログの一部をサーバBに転送するように
syslog.confの設定を行なっています。
こうすると、サーバBに転送されるログのうち
日本後でメッセージが記述されたものは
文字化けを起こしてしまいます。
転送されないログに関しては日本語のメッセージも
うまく読むことができるのですが、、

もともと日本のメッセージを書く事自体間違って
いるのでしょうか?

解決策をしっておられる方がいましたら
よろしく御願いします。

No. 1267 # 68user 2000/10/19 (木) 00:11:13
@has
> ところで、発言の編集については実装なしですか?
> あと、閲覧者の側から出力文字コードの指定(km=euc|jis|sjis等)が
> できるようになると、携帯からも見られるようになるのでうれしいです。
キャッシュファイルを作るようにした時点で、「シンプル」なんて
形容詞はどこかに飛んでいってしまったので、こうなったら全部
実装しまっせ。

文字コードの指定ってのは、どういう風にするのがよいですか?
携帯から文字コードを指定するときに、どういうインタフェースに
したらよいか、いまいち想像できんです。

@あつしさん
> 日本後でメッセージが記述されたものは文字化けを起こしてしまいます。
UNIX と言ってもいろいろありますが、OS は何ですか?
エンコーディングには EUC/JIS/SJIS などがありますが、
どれを使っていますか? 他のエンコーディングにしても
ダメですか? あと、どういうふうに化けますか?

> もともと日本のメッセージを書く事自体間違っているのでしょうか?
どうなんでしょうねぇ。個人的には気持ち悪いので日本語は使い
ませんが、いまどき 8bit スルーじゃない syslogd もどうかと思います。

# あっちの人たちも 8bit 目が立ってる iso-8859-1 (Latin-1) を
# 使ったりしないのかしら。

No. 1268 # 68user 2000/10/19 (木) 02:14:04
おっと見逃してた。
> セパレータが CR でも LF でも CR LF でも認識できるようにする
> ってのはどうすればいいんでしょうか?
    m/^\r\n$/ and last; # 改行のみの行ならループを抜ける
で、CR (\r) LF (\n) がくるとヘッダの終了とみなしています。
なので、CR か LF のみの行でもヘッダの終了とみなすように
すればよいです。
# chomp して last if $_ eq '' でもいいんですが。

No. 1269 # 超初心者 [E-mail] 2000/10/19 (木) 10:28:35
はじめまして。
私は今、Redhat linux6.2を使用し、パスワード変更プログラムを作成しています。
expectスクリプトをCGIより起動させ、コマンドレベルでユーザーアカウントを変更しようとしているのですが、簡単すぎるパスワードだと変更することができません。端末から普通にコマンドを入力しても拒否されるpasswdコマンド。これを簡単なパスワードでも受け入れられるようにするにはどうしたらいいのでしょうか。ぜひお教えください。

No. 1270 # has 2000/10/19 (木) 12:29:13
@68user
> 文字コードの指定ってのは、どういう風にするのがよいですか?
> 携帯から文字コードを指定するときに、どういうインタフェースに
> したらよいか、いまいち想像できんです。
携帯の場合、sjisであれば日本語として表示することができるので、
USER_AGENTなどから携帯からのアクセスかどうか判定して、
勝手にsjisにしてくれる(私の場合は表示形態も切り替えている)、
ってのも便利かと思いますが、
wwwboard.cgi?km=sjis
とかって指定するのでもいいかと思います。

No. 1271 # hsj 2000/10/19 (木) 15:54:45
@68userさん
HTTPはResponseヘッダとボディの間はCRLFで区切るって
規定されてませんでしたっけ。
#さっきnews.yahoo.co.jpのうち一つで試してみたら、
#ちゃんとCRLFで区切られてました。
ちょっとだけ気になったので。
#もちろん、内容のわかっている規定違反をしているサーバには
#対応しておくべき、というのが正しい道なのはわかります。
#できれば歩きたくない道ですが(笑

@超初心者さん
おそらくPAMでcracklibが有効になっていると思われるので、
これを無効化するか、パスワード変更プログラムをsuid rootすれば
できるようになるでしょう。
その辺を調べてみてください。
ただ、セキュリティ的には間違いなく「改悪」なので
止めておくことをお勧めします・・・。

No. 1272 # 超ビギナー 2000/10/19 (木) 16:34:45
ほんとしょうもない質問ですみません。
Print Screen機能を使って画面を印刷したいんですが、
どうしたらいいのでしょうか。
教えてください。

No. 1273 # 伊藤 2000/10/19 (木) 18:59:10
-u 同一内容の行は1度しか表示しない。

% cat sample | sort
abc
def
def
ghi
% cat sample | sort
abc
def (同じ行は一度しか表示しない)
ghi



2回目に-uが入ってないのでは
初心者なので違っていたら済みません。

No. 1274 # 68user 2000/10/20 (金) 07:15:36
> 簡単すぎるパスワードだと変更することができません。
root なら「パスワードが簡単すぎるぞ」と怒られても、再度
同じパスワードを入力すればムリヤリ変更できますが、一般
ユーザでは hsj さんの書かれたようなことをしない限り、
無理でしょうね。

> HTTPはResponseヘッダとボディの間はCRLFで区切るって
> 規定されてませんでしたっけ。
です。
    http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=1135
の書き方はちょっとアレなので、書き直すと、
    http://news.yahoo.co.jp/headlines/top/
のヘッダ/ボディのセパレータは LF になってます。

00000000 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0a |HTTP/1.0 200 OK.|
00000010 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 |Content-Type: te|
00000020 78 74 2f 68 74 6d 6c 0a 43 6f 6e 74 65 6e 74 2d |xt/html.Content-|
00000030 4c 65 6e 67 74 68 3a 20 31 39 31 30 33 0d 0a 0a |Length: 19103...|
00000040 3c 68 74 6d 6c 3e 0a 3c 68 65 61 64 3e 0a 3c 21 |<html>.<head>.<!|

> Print Screen機能を使って画面を印刷したいんですが、
Print Screen キーを押したら、xwd コマンドを実行するように、
ウィンドウマネージャを設定するのが一番簡単そうです。

> 2回目に-uが入ってないのでは
ですね。御指摘どうもです。次回更新時に修正しておきます。

No. 1275 # 超メール初心者 [E-mail] 2000/10/20 (金) 13:11:21
はじめまして。
今、procmailを用いて転送制限の設定を行っているのですが
添付ファイル付きのメールを転送しない設定ができません。

ある雑誌に載っていた方法を試したのですが、どうもうまくいきません。

:0 c
* !Content-Type:.*multipart
!転送先メールアドレス

資料に目を通した限り、うまくいきそうな感じがするのですが
間違いなり、さらにうまい方法があるならばお教えください。
お願いします

No. 1276 # 超メール初心者 [E-mail] 2000/10/20 (金) 13:18:44
追記します。
下記の例は、添付ファイルがついていた場合
メール転送しないという意味で書いています

No. 1277 # 超初心者 [E-mail] 2000/10/20 (金) 16:16:55
68userさん、hsjさん。返信ありがとうございます。
やはりそうですか・・・。
さすがにセキュリティを下げると問題があるので、コマンドレベルから
やることは破棄せざるをえなくなりました。
その代替となると、passwdコマンドのソースを研究するしかないのかもしれませんね。どこかにそんなことを詳しくのっている場所はないでしょうか?
現在自分自身でも検索中です。

No. 1278 # hsj 2000/10/20 (金) 21:45:44
@68userさん
スミマセン、ぼくの確認方法が正しくなかったようです。
確実な方法で確認したところ、確かにnews.yahoo.co.jpは
LFしか返してきませんね。はー

>  http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=1135
> の書き方はちょっとアレなので、書き直すと、
>  http://news.yahoo.co.jp/headlines/top/
> のヘッダ/ボディのセパレータは LF になってます。
こっちの意味は取り違えてなかったんですが(苦笑

@超初心者さん
いやそうではなくて、ユーザが任意の文字列を選ぶ際に、
その文字列のパスワードとしての強度を(ある程度)判定してくれる物を
取り除いてしまうこと自体が「改悪」だと言う意味です・・・。

No. 1279 # ケイ 2000/10/21 (土) 00:34:11
お礼が遅れてすいませんでした。
てっきり頼り過ぎたので無視されたと
思って掲示板を見てませんでした(^^;
なるほど、良く分かりました。
ありがとうございました

No. 1280 # 68user 2000/10/21 (土) 15:25:40
> 超初心者
> 超メール初心者
> 超ビギナー
こういうハンドルはやめてください。そこまで匿名性を
求めるならば、www.2ch.net などを利用してください。

> 今、procmailを用いて転送制限の設定を行っているのですが
> 添付ファイル付きのメールを転送しない設定ができません。
まずは ~/.procmailrc の先頭に LOGFILE=$HOME/procmail-log
などと書いて、ログを取りましょう。原因究明はその後です。

> passwdコマンドのソースを研究するしかないのかもしれませんね。
まぁそうなりますが、passwd は人間様が対話的に使うコマンド
なので、*BSD ならスクリプト向きの pw コマンドってのが
あります。これは root での使用を前提としているので、
指定したパスワードをそのまま設定してくれます。Redhat
Linux にも、その手のコマンドがあるかもしれません。

で、以下のようなスクリプト
    #!/usr/bin/suidperl
    $username=$ARGV[0];
    $newpasswd=<STDIN>;
    chomp($newpasswd);
    echo $newpasswd | pw usermod -n $username -h 0
を passwd_change という名前で保存して、
    # chmod 4755 passwd_change
    # chown root passwd_change
しておけば、誰でも
    % echo newpasswd | passwd_change username
で変更できます。

もちろんこのままでは、セキュリティもへったくれもないので
何かしらの制限を付けないといけません。

@has
文字コードの件、了解です。

No. 1281 # Madstar [E-mail] 2000/10/22 (日) 02:40:11
どうも皆さん始めまして。

私は最近Cygwinでプログラミングの勉強を始めました。
Linuxのことはまだほとんどわからないので2つ同時に
勉強しなければならないので大変です(^_^;)

で、インターネットで拾ってきたいろんなサンプルソースを
コンパイルして遊んでるんですが、LinuxとWin32での
ソースレベルでの互換性に疑問があります。

たとえば、あるサンプルソースの場合、シリアルポートにアクセス
するのに

#makefile
SERIALDEVICE = /dev/ttyS0

#tool.c
/* setup serial port */
void open_serial(char *devicename)
{
        struct termios newtio;

        dfd = open(devicename, O_RDWR | O_NOCTTY);
        if (dcfd < 0) {
    perror(devicename);
    exit(-1);
        }

        open_serial(SERIALDEVICE);

という具合にデバイスをオープンしているのですが、
このソースをWin32アプリとしてコンパイルしても当然(?)動きません。

で、SERIALDEVICEの部分を COM1 に変えて見たのですが、これも
動きませんでした。

他のファイルやソースを眺めてみても、良くわからないのですが、
この場合、Win32で動作させるにはどのようにすべきなのでしょうか?

No. 1282 # 雅人 2000/10/23 (月) 00:40:25
ども、はじめまして。雅人と言います。
質問なのですが
掲示板をつくろう(1)でperlを書くならEUCで書くべきと
書かれてたのでSJIS(CRLF)からEUC(CRLF)に変換したところ
逆に文字化けが起こってしまいました。
ローカルな環境(win95)でもアップロード先(virtualave.net)
でも文字化けが起こってしまいます。
これの原因とは一体なんなのでしょうか?
よろしくお願いします。

No. 1283 # 宗佑 [E-mail] 2000/10/23 (月) 11:16:10
超メール初心者あらため宗佑です。

procmailの転送設定、自己解決しました。
記述が足りなかっただけでした。
うーん、奥が深いですね、メール転送。
これからスクリプトを徐々に複雑にしていこうと思います。

でもprocmailを記述しているHPって少ないものなんですね。
載っている例も基本的なものです。
私も自分で試している途中ですが、procmailの達人みたいな例の
載っているHPをどなたかご存知内でしょうか?
お願いいたします

No. 1284 # 68user 2000/10/23 (月) 22:30:07
@雅人さん
> ローカルな環境(win95)でも
メモ帳などのエディタで化ける、ということならば
EUC を読めるエディタを入手して下さい。

> アップロード先(virtualave.net) でも
ブラウザの文字コード設定を「日本語 EUC」として直るならば、
CGI の出力する日本語部分が短かすぎるため、ブラウザが
文字コードを正しく解釈していないのでしょう。その場合は、
    print "Content-type: text/html\n\n";

    print "Content-type: text/html; charset=EUC-JP\n\n";
として下さい。

@宗佑さん
> でもprocmailを記述しているHPって少ないものなんですね。
> 載っている例も基本的なものです。
確かに少ないですね。僕もあまり見かけたことがありません。
ただ、基本的なところをわかっていれば procmailrc(5) と
procmailex(5) でなんとかなることも多いです。

@Madstar さん
うーん、さっぱりです。シリアルポートの操作さえしたことがないので…。

No. 1285 # 68user 2000/10/24 (火) 00:21:28
>  print "Content-type: text/html; charset=EUC-JP\n\n";
> として下さい。
というより、Content-type ヘッダには EUC-JP/Shift_JIS/ISO-2022-JP
などの charset を付加 *すべき* です。

僕のところの CGI プログラムには一部にしか付いていませんが、
これは悪い CGI の見本です。必ず charset を付けましょう。

No. 1286 # 雅人 2000/10/24 (火) 00:46:24
どうも、ありがとうございました!
無事できました。

No. 1287 # 海苔王 2000/10/24 (火) 16:51:10
みなさん、はじめまして。海苔王と申します。
現在、ソラリス7でサーバーを構築しています。
apache,sendmail,popper と動かしてきて、昨日までは
メールが動いていたのですが、突如、受信ができなくな
ってしまいました。電八で出たエラーは以下のとおりです。 +OK QPOP (version 3.0.2) a ******starting.
C: USER ***
S: +OK Password required for ******
C: PASS ********
S: -ERR [SYS/TEMP] maillock error 3: '/usr/mail/*****'

といった内容でした。sendmail.def からいろいろ見直したのですが、
うごきませんでした。どうかアドバイスお願いします。

No. 1288 # 68user 2000/10/24 (火) 23:44:09
チェック項目を思い付くままに。
    1. /var/log/messages や /var/log/maillog に詳細なエラーは出ていないか
    2. /usr/mail/ のパーミッションがおかしくなったのではないか (ls -ld /usr/mail)
    3. /usr/mail/ にロックファイルらしきものは残っていないか (ls -lA /usr/mail)
    4. ディスクの残り容量は (df -k)。i-node space が枯渇していないか (dk -ki)
    5. ソースから grep maillock して、エラー箇所を捜し出す
あと重要なのが、全ユーザでメールを取得できないのか、
一人だけメールを取得できないのかってこと。全ユーザなら
1,2,4 あたり。一人だけなら 3 をチェック。

ってな感じでしょうか。

No. 1289 # Madstar 2000/10/26 (木) 00:25:25
>うーん、さっぱりです。シリアルポートの操作さえしたことがないので…。

残念です(T_T)

まぁシリアルポートなんて今更余り使わないですよねぇ(^_^;)
いろいろ検索かけてるんですが、さっぱりです。

No. 1290 # mm 2000/10/26 (木) 00:51:17
>まぁシリアルポートなんて今更余り使わないですよねぇ(^_^;)
DOS時代には、awkで
print "AT" > "AUX"
みたいな感じでモデムとお話してましたが、
Windowsではどうなんだろう…試してません(^^;

No. 1291 # hsj 2000/10/26 (木) 01:22:13
> シリアルポート
ぼくの当てにならない記憶によると、
winでシリアルポートを開くときはAPIのCreateFile()を使うはずです。
その辺を調べてみてください。
で、この辺のソースはwin系と*nix系での互換性を維持するのは
難しいところだと思います。
ぼくはCygwinは使ったことありませんが、おそらくopen()を実装するのに
このAPIを使ってると思うので、もしかしたら開けるかもしれません。
が、結局フラグが違うでしょうからあまり意味無いと思います・・・。
#そもそもLinuxのopen()ってシステムコールですしね

No. 1292 # ありしあ 2000/10/26 (木) 16:37:09
初めまして。
Perlの勉強をし始めたばかりなのですけど、ソケットを使ったクライアントプログラムの作り方とか…全くの初心者な私にはすごく解りやすくて、それに読みやすかったです。

全部説明しよとう難しくなってるサイトや、簡単に説明しようと補足説明が抜けてるサイトも多いですけど、このサイトの説明はとても解りやすいです。
えっと感想をここに書いて良い物かどうか解りませんが、本当に参考になりました。ありがとうございます。

No. 1293 # NoiR 2000/10/26 (木) 21:48:01
少なくともNTであれば
C:\> type CON > COM1
といった方法でシリアルポートとお話できます。
parityやbaud rate、タイムアウト等の設定は、MSDOSと同じ
modeコマンドで行います。
Windows95/98のことは知りませんが、似たようなものだと思いますよ。

No. 1294 # 68user 2000/10/27 (金) 00:19:20
@ありしあさん
お褒めの言葉ありがとうございます。でもありがたくは思いますが、
もっとありがたいのは「ここは間違っている」「ここの記述が
理解しにくかった」などの指摘です。もちろん「こういうサンプル
プログラムがあるとよい」とか、単なるタイプミスのご報告でも
大歓迎です。

何かしら気づいた点がありましたら、よろしくお願いします。

と言っておきながら、これまでいくつかプログラムの不具合や
記述ミスのご指摘を頂きましたが、忙しくて web に反映できず、
誠に申し訳なく思っています。手元にあるファイルは修正して
いますので、暇ができ次第更新するつもりです。

# なのに、また忙しくなってきてしまった…。

No. 1295 # 宗佑 [E-mail] 2000/10/27 (金) 09:51:22
procmailについてあるツールformailについての
質問です。

formailを使用して自動返信設定を作成中なのですが
from句を任意で指定したアドレスに変更して、返信したいのです。

今の状態を見るとユーザー名+サーバーのドメイン名といった具合になってしまいます。
これを"xxx@xxx.yyy.zzz"といった指定したメールアドレスをfrom句に入れて自動返信したいのです。そういった方法はあるのでしょうか?
よろしくお願いいたします

No. 1296 # 宗佑 [E-mail] 2000/10/27 (金) 16:59:39
追記です。

現在、procmailの設定は

:0 h c
* !^FROM_DAEMON
* !^X-Loop:your@own.mail.address
| (formail -r -A"Precedence: junk" \
-A"X-Loop: your@own.mail.address" ; \
cat resmsg) | $SENDMAIL -t

これだと、送信者名がUNIXのユーザー名になってしまう。
最後の$SENDMAILで送信しているから当然なのですが・・・
ので、この送信者をxxx@xxx.yyy.zzzとしたいのです。
なにとぞ、よろしくお願いします。

追伸
どなたか、linuxサーバー(Redhat 6.2)で使用可能なお勧めの
自動返信ツールをご存知でしたら教えてください。

smtpにはsendmail8.9.3を使用しています。

No. 1297 # やまま 2000/10/27 (金) 17:08:48
むにむに。。思ったこと。

link-check.pl

114-115行目。
        &check_link(SITES=>[@sites],
     MAX_CHILDRED=>20);

138-143
        if ( defined $args{SITES} ){
    @sites = @{$args{SITES}};
        }
        if ( defined $args{MAX_CHILDREN} ){
    $max_children = $args{MAX_CHILDREN};
        }

MAX_CHILDRED -> ?

No. 1298 # 海苔王 2000/10/27 (金) 18:52:20
>68user 様
アドバイスありがとうございました。
どうやら容量の枯渇が原因でした。
余計なものを移動したら、動くようになりました。
ありがとうございました。

No. 1299 # ありさわ [E-mail] 2000/10/27 (金) 19:41:12
Perlのネットワークプログラムで、サーバーとの接続が
切れた状態を検出したいのですが、LANケーブルがつながった状態で
通信できなくなった状態は検出してPerlプログラムを終了出来るのですが
LANケーブルを引きぬくことによって、通信できなくなった状態はどのようにして検出したらよいのですか?

一応、Perlの中でPingをうって帰ってきた値を見て検出しようと
したのですが、Perlの中のPingはRoot権限でないとエラーに
なってしまいます。
Root権限以外でPingを実行する方法か、あるいは違う方法を
知っていたら教えて下さい。お願いします(v_v)

No. 1300 # 68user 2000/10/28 (土) 04:43:23
@宗佑さん
> "xxx@xxx.yyy.zzz"といった指定したメールアドレスを
> from句に入れて自動返信したいのです。
これは、単に From ヘッダが xxx@xxx.yyy.zzz になっていれば
いいのですか? それとも envelope from が xxx@xxx.yyy.zzz と
なっていて、例えば転送途中でメール送信に失敗した場合、
エラーメールが xxx@xxx.yyy.zzz に送られることを意図して
いますか?

前者ならただ単に From: を置換するだけなので、formail -i や
formail -I でできそうです。後者なら sendmail -f xxx@xxx.yyy.zzz
でしょうか。

なお、僕は formail を使ったことはありませんし、できるか
どうか試してもいません。


@やままさん
> MAX_CHILDRED -> ?
む、typo ですね。直しました。御指摘ありがとうございました。


@ありさわさん
ケーブルを抜いた状況だとどうなるんですかね。多分僕なら一定時間で
タイムアウトさせて unreachable かどうかを判断すると思いますが、
本当はどうすべきなのかは わかりません。

それはそれとして、以下は ping で判断するという前提の話。
ping は ICMP プロトコルを使いますが、これは root 権限が
ないと実行できません。その証拠に ping コマンドは root に
suid されています。
    % ls -l /sbin/ping
    -r-sr-xr-x 1 root wheel 195956 Jul 27 23:31 /sbin/ping*
というわけで、素直 (?) にping コマンドを使うのがいいのでは
ないでしょうか。

No. 1301 # rosegarden 2000/10/30 (月) 01:00:45
>ケーブルを抜いた状況だとどうなるんですかね。多分僕なら一定時間で
>タイムアウトさせて unreachable かどうかを判断すると思いますが、
>本当はどうすべきなのかは わかりません。

OS 依存ですが、ifconfig -a とすると表示されることがあります。
下は FreeBSD の場合です。

dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
                inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
                inet6 fe80::xxx:xxxx:xxxx:xxxx%dc0 prefixlen 64 scopeid 0x1
                ether xx:xx:xx:xx:xx:xx
                media: autoselect (none) status: no carrier
                supported media: autoselect 10baseT/UTP <full-duplex> 10baseT/UTP none

no carrier というのがケーブルが抜けたことを意味していると思っても
だいたいあたっているはずです。一方、Solaris のように抜けた瞬間に
/var/adm/messages などに記録されるものもあります。

Solaris がでたついでなので、

>1. /var/log/messages や /var/log/maillog に詳細なエラーは出ていないか

Solaris の場合 sendmail のログは通例 /var/log/syslog に記録され、
BSD の /var/log/messages にあたるものは /var/adm/messages です。

No. 1302 # ありさわ [E-mail] 2000/10/30 (月) 11:48:01
No.1299の ありさわ です。
いろいろご回答いただきありがとうございます。
掲示板に書き込みしたのが初めてだったので、
返答が有ったことにチョット感激してます。

この件については結果的に、僕の技術不足で違う方法によって
対処をすることになりましたが、今後のためにこの件について
前の書き込みで説明が足りなかった分の説明をさせていただきます。

切断を検出して子プロセスをKillする一連の作業は
コマンドラインからではなくPerlプログラム内で行いたいです。
ついでに何を作成したかというと、ここのサンプルプログラムを
利用してネットワーク対戦のロビーサーバーを作成しました。

Q.LANケーブルを抜いたらどうなるのか?
まずこれは、クライアント側のLANケーブルを抜いた時のことです。

※LANケーブルを抜いた時の様子
・最初にケーブルがつながった状態でサーバーに接続をしにいきます。
・サーバーはこのクライアントに対して子プロセスを作成します。
・接続が確立した状態でクライアントのケーブルを引きます。
・子プロセスはクライアントとの接続が切れたことを認識できず
    残ったままになります。
・この作業(嫌がらせ)を何度もされると子プロセスが溜まっていって
    結果、サーバーがダウンするんじゃないか?って思ってます。

あたたかいご回答、本当にありがとうございました。

No. 1303 # 宗佑 [E-mail] 2000/10/31 (火) 18:34:11
ありがとうございます。

formailによる自動返信完了しました。
errorメールに関しても、本文に細工をしてなんとか解決しています。
こういうことが、やりたかったのも、UNIXのアカウント名とメールアカウント名が、まったく一致しない仕様のシステムを使っているので、外部に対する送信者が誰であるかを混乱させないようにする目的があったからです。
ありがとうございました

No. 1304 # Taka@万年初心者 2000/11/02 (木) 21:22:20
はじめまして。
GOOで検索してきました。
perlの事について質問があるのですが。。。。

perlを使ってActiveXのDLLファイルを舐めようと思っているのですが、全くもって方法が解りません。
ここの過去ログや、その他色々探して見ましたがそれらしいものは見当たりませんでした。

どうぞお解りになる方がいらっしゃいましたら御指導宜しくお願いします。

No. 1305 # 68user 2000/11/03 (金) 05:33:47
@rosegarden さん
> OS 依存ですが、ifconfig -a とすると表示されることがあります。
なるほど、勉強になりました。どうもです。

@ありさわさん
> 子プロセスはクライアントとの接続が切れたことを認識できず
> 残ったままになります。
という用途なら、TCP のタイムアウトを待つか、自前で
タイムアウトの機構を作るのが普通のような気がします。

@Taka さん
> perlを使ってActiveXのDLLファイルを舐めようと思っているのですが
「ActiveX の DLL を舐める」の意味からして さっぱりわかりません。
google で検索すると
    http://www.union-net.or.jp/~cgifaq/Archive/msg13177.html
        Subject: [cgi:13180] Re: Perl からActiveX のDLL を呼び出すには
というのが引っかかりますが、現在サーバの容量オーバーにより公開を
中止しているようで。あと perl モジュールの Win32::COM ってのが
ありますが、関係あるのかなぁ…。
    http://www2s.biglobe.ne.jp/~cru/library/zddbbs/cgi-bin/wwwboard.cgi
に行くと、その道の偉い人が教えてくれるかもしれません。

No. 1306 # 上條 誠 [E-mail] 2000/11/03 (金) 13:06:29
初めまして。
上條と申します。

かなり困っております。
どなたかお知恵を拝借願います。
現在Windows98にFTPサーバソフトをインストールしてあり、カスタマイズチューンナップされた
シェルのないFreeBSDにファイルをダウンロードさせたいのです。
FreeBSD側のコントロールはTelnetでコマンドを入力することにより、FreeBSD側は指定された
IPのFTPサーバに(この場合Windows98)接続をしてダウンロードを開始する仕組みなっています。
この際のFTPサーバへの21番にどういったコマンドが流れているのか不明ですが、様々なFTPサーバソフトを
試した結果、NDMTというコマンドがFTPサーバソフト側で処理できないこと、winftpdeamonの
コミュニケーションタイムがオーバーになるというエラーが出て、FTPサーバ側で切断をしてしまいます。
一度、Win98+wftpdでの成功例を聞いたことがありますが、色々設定を変えてみましたが、うまくいきません。

接続の形態としてはルータ支点に同ノード内の10BASE-T接続です。
Freebsd側とは全てのPORTで接続は出来ます。
プロトコルはTCP/IPを使用しています。

もっとも最初からLinuxやFreeBSDにFTPサーバをたてることが出きれば問題なく接続できることは
マニュアルに明記してあるのですが、私がFTPをたてるだけの技術がないことと、本日中という時間の中で
手元に使用できるLINUXなどがなく、大変困っております。
詳しい説明でなくても結構ですので、何か妙案がございましたら、どなたかお教えいただけないでしょうか。

よろしくお願いいたします。

No. 1307 # rosegarden 2000/11/03 (金) 15:33:00
AnHTTPD で HTTP 使ってダウンロードするのは?
FreeBSD の方は標準コマンドの /usr/sbin/fetch で落せますよ。

FreeBSD の 4.0-RELEASE 以降だと ftp クライアントの類は
passive mode で動作しますが、これはチェックしました?
passive mode をオフにするには /etc/login.conf
の default エントリで FTP_PASSIVE_MODE という環境変数を
セットしているから、そのファイルを書き換えて、NO にすれば
良いですよ。

思い付くのはこれだけですね。カスタマイズされているのだから、
これ以上答えようがないですね。

No. 1308 # rosegarden 2000/11/03 (金) 15:38:03
> FreeBSD の方は標準コマンドの /usr/sbin/fetch で落せますよ。

失礼、/usr/bin/fetch ですね。

それから wget でも良いかも知れません。
もっとも、FreeBSD がわで IPv6 の設定(デフォルト)してあると最近の
wget は IPv4 のオプションつけないと no route to host って
エラーを出すこともありますが。

No. 1309 # rosegarden 2000/11/03 (金) 15:39:32
> FreeBSD の方は標準コマンドの /usr/sbin/fetch で落せますよ。

失礼、/usr/bin/fetch ですね。

No. 1310 # いえろーばっくす [E-mail] 2000/11/03 (金) 17:02:09
はじめまして。
時々68userさんのページ拝見させていただいてます。
いろんなことが書いてあってとてもためになります。

場違いかもしれないんですがXについて少々よろしいでしょうか?
このページでHello World のソースをとってきて、
gcc -o test test_hello_world.c -I /usr/X11R6/include
  -L /usr/X11R6/lib -lX11 -lm
とコンパイルしたところ、正常に動作したのですが、
右上のバツボタン押してもちゃんと終了してくれず、
X connection to :0.0 broken (explicit kill or server shutdown).
と、怒られてしまいます。
ちなみにVine Linux2.0CRを使用しております。
あと、右上のバツボタンがそのHello Worldのみに関しておかしい
表示になってしまいます。
と、いうか自分で書いてみたやつは全部なんですが。
もし心あたりがあったらご教授いただけませんでしょうか?
お願いします。
でわまた寄らせていただきます。

No. 1311 # 68user 2000/11/04 (土) 00:10:57
@いえろーばっくすさん
> X connection to :0.0 broken (explicit kill or server shutdown).
これはクライアント側の Xlib が出力しているメッセージです。

# 個人的には、あまり気にするほどのメッセージではないと
# 思っています。

よくわかってませんが、多分ウィンドウマネージャの「×」を
押すと、X サーバとのコネクションが切断されるのでしょう。
X クライアントは、コネクションが切断されたので X サーバと
通信できなくなり、エラーとなって終了しているわけです

つまり、「×」ボタンを押すと X クライアントのプロセスが直接
kill されるわけではないということです。

これを直したいなら、まず
    Atom a1,a2;
アトムを宣言します。次に
    a1 = XInternAtom(display, "WM_PROTOCOLS", False);
    a2 = XInternAtom(display, "WM_DELETE_WINDOW", False);
    XSetWMProtocols(display, window, &a2,1);
とすれば、「×」ボタンを押すと、ClientMessage イベントが
送られてきます。後は switch 文の中で
    case ClientMessage:
        if ( event.xclient.message_type == a1 && event.xclient.data.l[0] == a2 ){
            XCloseDisplay(display);
            exit(0);
        }
        break;
とすればいいでしょう。

「×」を押しても終了しないアプリや、終了する前に後始末を
するアプリを作るときは、こういうふうにします。


@rosegarden さん
> FreeBSD の方は標準コマンドの /usr/sbin/fetch で落せますよ。
FreeBSD なら ftp コマンドでも落とせますね。
    % ftp http ://foo.bar.com/hoge.html
    % ftp ftp ://foo.bar.com/hoge.tgz
などなど。Solaris にもこういうコマンドがあればいいのに。

@上條さん
> 私がFTPをたてるだけの技術がないことと
シェルがないということなので今回は無理かもしれませんが、
ftp サーバを立てるだけなら、/etc/inetd.conf に
    ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
と書いて、kill -HUP `cat /var/run/inetd.pid` でおしまいです。
# FreeBSD のデフォルトでは、ftpd は使用可能です。

anonymous ftp サーバなら、さらに (FreeBSD なら) jman ftpd に
書いてあるとおりにやればよいです。


「ネットワークプログラミングの基礎知識」に「HTTP の並行アクセス」
    http://X68000.startshop.co.jp/~68user/net/http-parallel-1.html
というページを置きました。お暇な方、ご笑覧くださいませ。

No. 1312 # mm 2000/11/04 (土) 02:01:53
perl CGIの実行権限について質問させて下さい。
CGI内部でこれを調べる方法を探してて、
ここの掲示板のソースを参考にさせてもらおうと思ったのですが、
ここでは、(getpwuid($>))[0]で、実行権限が誰かを表示してますよね。
これを -o $script_name の検査で、
直接、所有者権限か(真の場合)、それとも他の権限か(偽の場合)を
検査することはできないのでしょうか?


@ActiveX の DLL を舐める
ウチのURLが出てるなぁ…でも、私宛じゃない(笑い)

これ、単にDLLの内部データを読み出したいだけじゃないんでしょうか?
(そういう、ツールがあったと思う)
それなら、perlで注意するのは、binmodeを使うことくらいでしょう。
後は、DLLのバイナリ構造をどこかで調べればいい(私は知らないですが)。

No. 1313 # 68user 2000/11/04 (土) 02:58:09
おそらく -o $filename は
    $> == stat($filename)->uid ? 1 : 0
と同じだと思うので、それで問題ないと思います。

getpwuid を使ったのは特に意味はないので (強いて言えば
-o の存在を知らなかったから)、今後は
    if ( -o $0 ){ 所有者権限 }
で判別しようかと思います。

No. 1314 # mm 2000/11/04 (土) 12:23:02
>と同じだと思うので、それで問題ないと思います。
UIDとかは自信がないので、ありがとうございました。
ウチもそれで行きます♪

No. 1315 # rosegarden 2000/11/04 (土) 14:42:47
> FreeBSD なら ftp コマンドでも落とせますね。
これは知りませんでした。勉強になりました。
> などなど。Solaris にもこういうコマンドがあればいいのに。
Solaris は /usr/local/bin に GNU コマンドとか BSD コマンドとか
インストールしないと日常的な作業は確かに辛いですね。

No. 1316 # たかぽん 2000/11/06 (月) 15:08:26
UNIXの/var/adm/crashディレクトリについての質問です。
最近仕事でHP−UNIXを使用しているのですが、/var/adm/crash
ディレクトリに、「core〜」、「bounds」のディレクトリが作成されて
しまい、/var の領域が100%になってしまいます。
「core〜」については、削除しても良いと本に載っていたのですが、
「bounds」については、削除してよいか分からないです。
どなたかご存知の方いらっしゃいましたら、お教えください!
よろしくお願いします!

No. 1317 # 68user 2000/11/06 (月) 15:47:58
HP-UX は知りませんが、マニュアル savecore(1M) には
> savecore saves the core image in the file
> dirname/hp-core.n and a copy of dumpsystem, which contains the
> namelist, in the file dirname/hp-ux.n. The trailing n in the path
> names is a number that increases by one every time savecore is run in
> that directory. This number is kept in the file dirname/bounds, which
> is created if it does not already exist.
とあるので、消してもいいんでないでしょうか。

No. 1318 # みーたん 2000/11/06 (月) 16:04:29
「SSLプログラミング」に関する質問です。

サーバー・クライアント間でSSL通信を行っている状態のものに、
「プロキシプログラム」なるものを両者の中間に介在させた場合
について・・。

サーバー・クライアントの「メッセージのやりとり」をログファイル等に
出力したいのですが、当然この両者は「暗号」によるデータのやりとりを
している為に「メッセージ」に関しては???と言った状態です

この暗号を「解読」と言った事は出来ないものでしょうか?

No. 1319 # いえろーばっくす [E-mail] 2000/11/06 (月) 16:04:44
どうも。いえろーばっくすです。
68user様、windowの件ありがとうございました。
今やってみたところちゃんと閉じることができました。
ボタンの表示もちゃんと直りました。
これからもいろいろと質問することがあるかもしれませんが、
どうぞよろしくお願いします。

No. 1320 # M.K 2000/11/06 (月) 19:25:00
はじめまして。

日付,時間,なまえ,・・・
日付,時間,なまえ,・・・
日付,時間,なまえ,・・・

といったようなログから当日分のみを抜き出し他のファイルに保存する。
といったようなバッチを作りたいのですが、
UNIX初心者でさっぱりわかりません。どなたか教えていただけませんか?

No. 1321 # 68user 2000/11/06 (月) 21:22:52
@みーたんさん
盗聴できるかということならば、無理です。なぜなら SSL は
公開鍵と秘密鍵を使うから。盗聴によって公開鍵を盗めても、
秘密鍵はクライアント・サーバそれぞれが保持していますので、
データは守られます。
# という説明でわかってもらえるかしら。

@M.K さん
sh スクリプトで書きたいとか、perl を使いたいくらいは
書きましょうよ。こちらがサンプルを書いても、「いえ、
そうじゃなくて…」という返事はもらいたくないので。

まぁ 一言でいうと、date コマンドで現在日時を取得し、それを
キーとして grep です。date と grep のマニュアルを読みましょう。

No. 1322 # HAMA 2000/11/07 (火) 01:08:55
はじめまして。

当方cshシェル環境にてUNIXを利用しております。
その環境設定で「カレントディレクトリをプロンプトに追加」というのがありますが、
ディレクトリの移動によって「今現在どこに居るか」というのを表示させたいのです。

set prompt = "`whoami`@`hostname -s`[\!][`pwd`]%"

のように `pwd` をつけてもsourceコマンドによって.cshrcを再有効に
した時点でのカレントディレクトリが格納されたまま変化してくれません。

ディレクトリの移動に応じてプロンプト上に表示されるカレントディレクトリを
逐次変化させるためにはどの様に.cshrcを書き換えれば良いのでしょうか?
`pwd`の部分を$cwdとかに変えてもダメだったし...ほとほと困っております。

参考までに、現在の.cshrcの内容を書いておきます。

alias dir 'ls -alF'
alias less 'jless'

setenv LANG japanese
setenv EDITOR vi
setenv PAGER less
setenv BLOCKSIZE K
setenv EXINIT 'set showmode'
setenv LESSCHARSET japanese

set prompt = "`whoami`@`hostname -s`[\!]%"

なお、FreeBSD3.4R上での環境です。
どうかよろしくお願いします。

No. 1323 # つかさ 2000/11/07 (火) 05:27:26
C言語を覚えたいのですが
どなたかC言語を教えに来ていただけませんでしょうか。
兵庫県姫路市
ho-muzu@mui.biglobe.ne.jp
メールください。

No. 1324 # rosegarden 2000/11/07 (火) 07:43:30
> ディレクトリの移動によって「今現在どこに居るか」というのを表示させたいのです。

とりあえず、こんなんでどうでしょうか? テストは tcsh でやったので、
断定的なことは言えませんが、古い csh と互換性のある構文を使っています。

alias sp 'set prompt=`whoami`@`hostname -s`\[`pwd`\] '
alias cd "cd \!* ; dirs -l ; sp"
alias pushd "pushd \!* ; sp"
alias popd "popd ; sp"

ポイントは set prompt の alias をシングルクォートで囲むところですかね。
あと、cd, pushd, popd のごとに prompt の set をするということですね。
4.1-RELEASE 以降だと /bin/csh は tcsh なので、もっと簡単に出来ます。
たしか %/ とかいうのを使えば、良いだけだったと思います。

No. 1325 # HAMA 2000/11/07 (火) 09:18:00
rosegardenさんへ>

>ポイントは set prompt の alias をシングルクォートで囲むところですかね。
>あと、cd, pushd, popd のごとに prompt の set をするということですね。

なるほど。cdコマンドを使うたびにset promptするんですね。
ためしてみたところ、確かに出来ました。

>たしか %/ とかいうのを使えば、良いだけだったと思います。

これは知りませんでした。tcshの利用が可能なマシンがあるので
試してみましたが、ホントですね。うーん、こっちの方が簡単だなぁ。

でもメインのマシンはシェルの変更を許可してくれないので、
alias方式で行きます。どうもありがとうございました。

No. 1326 # 68user 2000/11/07 (火) 10:15:40
> でもメインのマシンはシェルの変更を許可してくれないので
僕は sh・csh のような非人間的なシェルを使うのは耐えられない
ので、そういうときは勝手に tcsh を入れて、~/.cshrc に
    if ( ${?tcsh} == 0 ) then
        exec /usr/local/bin/tcsh
    endif
などと書いてます。

前にちょっとはまったことを書いておきますと、これをするなら
~/.cshrc に setenv TERM vt100 などと書いてはいけません。
普通にログインするときはいいのですが、もし端末がない場合
(rsh を使う場合など) は、tcsh が端末があると勘違いして
入力待ちになってしまい、rsh が効かなくなるからです。

Solaris などで、デフォルトだと TERM=kterm になってしまい、
さらに /etc/termcap に kterm のエントリがないため、vi や
emacs を実行すると文句を言われるので仕方なく setenv TERM vt100
と書いている人もいると思いますが、それをするなら
    if ( ${?TERM} ) then
        setenv TERM vt100
    endif
と書けばいいです。これなら rsh のときは TERM が設定されません。

No. 1327 # FTPについて調べている者 2000/11/07 (火) 13:01:58
はじめまして。今UNIXにおいてのプロセス間通信として、
FTPをモデルとして調べていて、ここのHPにたどりつきました。
ものすごく参考になってます。で、聞きたいことがあります。
聞きたいことは、FTPクライアントのプログラムでのことですが、
C言語版での、GET及びPUTなのですが、GETの場合は、Perl同様に
soketより手に入れたデータをfopen関数を用いてのそのデータをGetしたファイルと同じ名前で保存することでGETされるのですか?PUTも同様ですか?
また、FTPサーバーでは、LESTやGETやPUT
のプログラム上では、どのような動きをしてるのでしょうか?
自分なりには、イメージがあるのですが自信がないので教えてもらい
たいです。
こちらの勝手なお願いですが、今週中までに返事を掲示板のほうでいただけると大変助かります。

No. 1328 # たん 2000/11/07 (火) 14:41:10
初歩的な質問ですが,
AIXを触り始めたのですが,
telnetでrootのログオンを許容しているのを
やめたいのですが,
設定ファイルがわかりません。
どのファイルにその設定が書いてあるのでしょうか?

あと,tcshをmakeするとEUCコードで作成されてしまいますが
AIX用(SJIS)での作成方法もご存知の方,お教え願います。

よろしくお願い致します。

No. 1329 # 68user 2000/11/07 (火) 15:55:40
> telnetでrootのログオンを許容しているのをやめたいのですが,
AIX は管理したことも使ったこともありませんのでわかりません。
init, pam, login, tty, ttys などのマニュアルを探してみてください。
    FreeBSD なら /etc/ttys
    Solaris なら /etc/default/login
    Linux なら /etc/security
あたりなので、/etc の下に片っ端から grep かけてみる
のもいいでしょう。
    cd /etc; egrep -i 'secur|root|login' * */* */*/*


> soketより手に入れたデータをfopen関数を用いてのその
> データをGetしたファイルと同じ名前で保存する
そうです。C でも perl でもやることは同じです。

> FTPサーバーでは、LESTやGETやPUT
> のプログラム上では、どのような動きをしてるのでしょうか?
コマンド用コネクションから RETR hoge が送られてきたら、
データコネクションを確立し、hoge のファイルを fopen して
データコネクションに hoge の内容を流します。

コマンド用コネクションから LIST/NLST が送られてきたら、
データコネクションを確立し、/bin/ls の結果 (別に ls を
使わなくてもいいけど) をデータコネクションに流します。

> 自分なりには、イメージがあるのですが自信がないので
> 教えてもらいたいです。
自分なりのイメージを書いた上で、それが合ってるか間違ってるか
たずねるのがスジというものでしょう。

No. 1330 # かりり 2000/11/08 (水) 04:44:11
質問というか、ご意見頂きたいです。
掲示板が荒らされたなら、制限したり削除できますが
メールが大量に届いたり本文が最悪なタグの羅列だった場合
どうすればいいんでしょうか?明日も変なメールきそうで
カナリ、不安です。これって警察に言えたりするものなのでしょうか?
迷惑防止条例とか。

http://www.alles.or.jp/~tll/toc/hino.html

No. 1331 # ppa 2000/11/08 (水) 11:56:14
Perlの質問です。

2000/10/01の三日まえを表示したいのですが
どのようにやれば良いでしょうか?

宜しくお願いします。

No. 1332 # 68user 2000/11/08 (水) 13:28:05
> 2000/10/01の三日まえを表示したいのですが
Time::Local で time_t 形式に変換し、3日分の秒数を引いてから、
再度 localtime で年月日の形式に戻します。
    use Time::Local;
    $time = timelocal(0,0,12,1,10-1,2000-1900);
    $time -= 60*60*24*3;
    ($sec,$min,$hour,$day,$mon,$year) = localtime($time);
    printf "%4d/%02d/%02d",$year+1900,$mon+1;


> メールが大量に届いたり
メールが何通届いていて、それぞれサイズはどれだけか、という
ことは、メール本文を取得する前に調べることができます。
また、これはメールサーバにもよりますが、あるメールの先頭
何行のみを取得、ということもできます。そういう機能を持つ
メーラーを探してみてはどうでしょうか。
    % telnet メールサーバ名 110
    USER your_user_name
    PASS your_password
    LIST (メール一覧とサイズ表示)
    TOP 1 3 (1通目のヘッダと本文3行のみを表示)
    QUIT (終了)

> 本文が最悪なタグの羅列だった場合
Windows はよく知らないんですが、HTML メールが送られて
きたら、HTML として開くか plain text として開くかを
確認してきませんか? 聞いてこないなら、まともなメーラーに
かえましょう。

No. 1333 # M.K 2000/11/08 (水) 14:13:23
68userさん > こないだは説明が足りずに済みません。助かりました。
またしても質問なんですが、
sh スクリプトで2つのファイルの内容が完全に一致した場合に
aというファイルに 日付,"一致"(文字列)を出力して、
一致しなかった場合には 日付,"不一致"(文字列)を出力したいんですが
全然わかりません。よろしかったら教えてください。

No. 1334 # 68user 2000/11/08 (水) 15:21:31
ファイルの比較には cmp か diff を使います。一致
したかどうかはコマンドの戻り値を見ればよいですが、
sh なら $? で参照できます。あとはマニュアルを
よく読んでみてください。

No. 1335 # as 2000/11/08 (水) 16:35:03
No.1269で、超初心者さんがやってたのと同じように、CGIからexpectスクリプト
を呼び出して、他のマシンにtelnetしてパスワードを変更するシステムを作って
いるんですが、telnetで戻ってきた文字が一部うまくexpectに渡されないようで
途中で止まってしまい、上手くいきません。

そこで$|=1にして出力を見たら、以下のところで止まっている事が分かりました。

spawn telnet server
Trying xxx.xxx.xxx.xxx ...
Connected to server.xxx.xxx.
Escape character is '^]'.

”Escape character is '^]'.”の後に、CRLFが来るんですが、それから先が上手
くexpectに渡されていない(?)ようです。

HTTPdがCRLFだから止めてしまっているんでしょうか?
それってHTTPdの仕様なんでしょうか?
exec 'expect';の後のprint文はexpectのtimeout後に出力されます。

どこで止めてしまってしまっているかを調べる方法や解決方法など、アイディア
がありましたら教えてください。

No. 1336 # 68user 2000/11/08 (水) 22:25:40
僕は expect 使ったことありませんのでわかりませんが、せっかく
perl を使っているんですから、Net::Telnet モジュールでやって
みてはいかがでしょう。
    use Net::Telnet;
    $t = Net::Telnet->(Timeout=>10, Prompt => '/\w+?@\w+?: /');
    $t->open('hostname');
    $t->login('yourname', 'password');
    @lines = $t->cmd("/bin/ls -l");
    print @lines;
    $t->close();
言うまでもないかもしれませんが、Prompt のところは適切に
変更しないと動きません。詳しくは perldoc Net::Telnet をどうぞ。

No. 1337 # 68user 2000/11/08 (水) 23:17:49
うーん、むずかしい…。全然理解してないことがよくわかった。
すごく汚くて変な書き方ですがこんな感じ。

    use Net::Telnet;
    $username='yourname';
    $oldpasswd='secret1';
    $newpasswd='secret2';
    $t = new Net::Telnet (Timeout => 5, Prompt => '/\w*? /', Dump_Log => 'telnet-log');
    $t->open("localhost");
    $t->login($username, $oldpasswd);
    $t->prompt('/Old password:/');

    $t->cmd("/usr/bin/passwd");

    $t->print("$oldpasswd\n");
    ($prematch,$match) = $t->waitfor('/[a-zA-Z ]+:/');
    print "[$prematch] [$match]\n";

    $t->print("$newpasswd\n");
    ($prematch,$match) = $t->waitfor('/[a-zA-Z ]+:/');
    print "[$prematch] [$match]\n";

    $t->print("$newpasswd\n");
    ($prematch,$match) = $t->waitfor('/[a-zA-Z ]+:/');
    print "[$prematch] [$match]\n";
    $t->close();

適当に $match の結果に応じて、パスワードが違うやら、
新しいパスワードが短いやら出力すればいいのかな。
expect の方がすっきり書けるような気も。

No. 1338 # 68user 2000/11/08 (水) 23:42:20
やっぱ僕がやるとしたら pw コマンドの wrapper 作って、
それを root に suid するなぁ。passwd の挙動を
全て把握するのは厳しい。

No. 1339 # as 2000/11/09 (木) 16:08:59
結局、68userさんのおっしゃる通りpasswdの挙動を全て把握するのは
厳しいので、telnetされる側のServerにID,Passwordを変数として受け
取って、passwdファイルを直接編集するperlを置き、それをCGI(Perl)
からtelnetして、rootで実行させるようにしました。

結局何故expectで動作しないのかは不明なままですが、要求を満たす
物は出来ました。

アドバイスありがとうございました。

No. 1340 # rosegarden 2000/11/10 (金) 02:48:35
私の場合、次のような感じのスクリプトで動きます。
一応、ログインしてコマンド実行程度なら、大丈夫のようです。
環境は perl 5.00503 + Expect-1.08 + FreeBSD 4.2-BETA です。

#!/usr/bin/perl

use Expect;

my $user = 'rose';
my $password = 'password';
my $prompt = 'host\{rose\}\d+\s';

my @cmdlist = (
        'ls -alF',
        'ps -auxw',
        'exit',
        );

my $telnet = Expect->spawn("telnet localhost");

$telnet->expect(30,"login: ") || die "NO login prompt";
print $telnet "$user\r";

$telnet->expect(30,"assword:") || die "NO password prompt";
print $telnet "$password\r";

my $match = $telnet->expect( 30,
        "closed by foreign host",
        "-re", $prompt
        );

die "refused by server\n" if $match == 1;
die "NO shell prompt, ".$telnet->exp_error()."\n" unless $match;

foreach $cmd ( @cmdlist ) {
        print $telnet "$cmd\r";

        my $match = $telnet->expect(
                30,
                "closed by foreign host",
                "-re", $prompt
                );
        last if $match == 1;
        die "NO prompt after command\n" if $telnet->exp_error();
}

$telnet->hard_close();
exit;

No. 1341 # 素人 2000/11/10 (金) 11:29:00
最近Unixを始めたのですが、サブルーチンの作り方がわかりません。
(呼び方、書き方)
簡単な例を教えていただけると幸いです。

No. 1342 # ミング [E-mail] 2000/11/10 (金) 14:03:27
awk scriptを使って下の様なことがしたいのですが、方法を教えて下さい。

Input File1:
10 abcde
9 bcdef
12 cdefg

Input File2;

3 abcde
5 cdefg
12 defgh

ファイル1と2を比較し、$2の内容が同じ場合、file1 と file2 の $1 $2 を output file の $1 $2 $3 $4に出力する。 比較して見つからない
場合はスペースを出力する。

Output file

10 abcde 3 abcde
12 cdefg 5 cdefg
3 abcde
                  12 defgh

よろしくお願いします。

No. 1343 # 68user 2000/11/10 (金) 16:48:24
> サブルーチンの作り方がわかりません。
言語がわからないと何とも言えません。

> awk scriptを使って下の様なことがしたいのですが
    #!/usr/bin/awk -f
    BEGIN{
        while (getline< ARGV[2] >0 ){ hash[$2]=$1 }
        while (getline< ARGV[1] >0 ){
            if ( hash[$2] ){ print $1,$2,hash[$2],$2 }
            else { printf "%s %s \n",$1,$2 }
            delete hash[$2]
        }
        close(ARGV[2]);
        while (getline< ARGV[2] >0 ){ if ( hash[$2] ){ print $1,$2 } }
    }
FreeBSD の awk と Solaris の nawk では動きましたが、
Solaris の awk では動かず。

うーん、awk らしくない…(笑) まぁ awk スクリプトを
書いたのは4年ぶりくらいなので、これで勘弁して下さい。
# 見本求む。

No. 1344 # 素人 2000/11/10 (金) 17:17:12
すみません。
Perlです。

No. 1345 # rosegarden 2000/11/10 (金) 18:26:57
> # 見本求む。

見本かどうか分かりませんが、私は次のように書きました。

#!/usr/bin/awk -f

{
        array[$2] = sprintf("%s %s", array[$2], $1);
}
END {
        for( key in array ){
                split(array[key], tmp);
                if( 2 in tmp )
                        printf("%s %s %s %s\n", key, tmp[1], key, tmp[2]);
                else
                        printf("%s %s\n", key, tmp[1]);
        }
}

起動は
% awk -f script file1 file2
としてください。連想配列に記録して、最後に出力という感じです。
ただし、次のような $2 が同じだが $1 が違う値を含む形式のデータは
仮定していません。

10 abcde
11 abcde

どちらかを捨てるようになっているかと思います。実際にはデータの形式の
チェックが要るかと思います。あと出力の順が不定になります。出力の
順番に依存する処理には向きません。動作チェックはしていません。
多分、本家の awk じゃ無理かな。動作チェックは gawk でやっています。

No. 1346 # mm 2000/11/11 (土) 02:57:30
># 見本求む。

単なるバリエーションということで…

    #!/usr/bin/awk -f
    NR == 1 { f = FILENAME }
    f == FILENAME { hash[$2]=$1 }
    f != FILENAME {
        if ( $2 in hash ) {
            print hash[$2], $2, $1, $2
            delete hash[$2]
        }
        else
            print $1, $2
    }
    END {
        for (r in hash)
            print hash[r], r
    }

No. 1347 # 68user 2000/11/11 (土) 15:18:07
もう他人の書いた awk スクリプトを見ても意味がわからん (笑)

> Perlです。
で、どういう処理をするサブルーチンの例を見たいのですか?
あと、素人とか初心者とかいうハンドルはやめてください。

それから、誰に向けて言うわけでもないですが、回答をもらっても
返事をする気がないなら、最初から質問しないでね。

No. 1348 # ミング [E-mail] 2000/11/12 (日) 00:33:45
沢山の回答、どうもありがとうございます。
あとお礼が遅くなってどうもすいません。
試してみてから出そうと思っていたのですが、家にUNixがないので
月曜になってしまいます。

このページを発見して間もないのですが、これから色々質問することもある思うので、その時はまたよろしくお願いします!

No. 1349 # 68user 2000/11/12 (日) 03:16:38
行頭のスペース、全角スペースを &nbsp; に置換するように
してみました。
        if ( m/^(<BR>)?(\&gt;|>)/ ){
                $_ = qq(<FONT COLOR="$color{QUOTE}">$_ </font>);
        }
の後に
        s|^( +)|'&nbsp;&nbsp;' x length($1)|e;
        s|^( +)|'&nbsp;' x length($1)|e;
を追加しただけです。

現状でこれをしちゃうとまずい UA ってありますっけ?

No. 1350 # KL 2000/11/12 (日) 03:16:47
こんにちは、はじめての書込ですが...
http://tsu.virtualave.net/TSU/whimsy.html
今週上のようなのをやることになったので
お時間のある方はどうぞ。(ちなみに日本語コードが
前のようなSJIS固定から、普通の日本語チャンネルと
同様のJISになってます)
GUIクライアントは、FreeBSDだとportsにGTK+使うXchat
の日本語化版があるそうです。
Linuxだとhttp://dns.manabi.gr.jp/~blend/の辺りが
よいかと(FreeBSDでこれrpmから出して使う場合は
GNU makeが要ります)。
いずれにせよJISになったので一般に配布されている
日本語化パッチの類が簡単に使用できるようになりま
した。

No. 1351 # 福井在住の中学一年生の女の子 [E-mail] 2000/11/12 (日) 11:25:52
えっと、早い話が「エポ」の場所教えて下さい!!
sachiyo@viola.ocn.ne.jp までメールで教えて下さいっす!

No. 1352 # へにか [URL] 2000/11/12 (日) 12:23:29
どうも、おひさしぶりです。

> 現状でこれをしちゃうとまずい UA ってありますっけ?
現状の解釈が、わからなかったので、手元のブラウザで
調査しました。

OK
  win98 IE2 IE4 w3m(cygwin)
  FreeBSD Nestcape3 chimera w3m
NG
  win98 Netscape3

とりあえず、こんな感じです。

※ ディスク容量が足りなくなって、だいぶuninstall
        したので、この程度位までしか調査できませんでした。

No. 1353 # rosegarden 2000/11/12 (日) 19:00:10
> 68user さん

> 行頭のスペース、全角スペースを &nbsp; に置換するように
> してみました。

おかげで助かります。今まで、unexpand して投稿していましたが、
インデントが崩れるのが悩みの種でした。

どうもありがとうございます。

No. 1354 # AKIKO34 2000/11/12 (日) 19:29:36
DATを初期化するコマンドって、UNIXでありますか??

No. 1355 # mm 2000/11/13 (月) 01:37:07
> 行頭のスペース、全角スペースを &nbsp; に置換するように
> してみました。
やっぱ、これが一番現実的みたいですね。

ウチでやらなかったのは、当時、使ってたWin95 NN4.1 が
カット&ペーストで全角スペースに変換してたからだけど、
今のNN4.73では、ちゃんと半角になります。

ところで、
        タブ
も変換して貰えると助かるんですが…

No. 1356 # 68user 2000/11/13 (月) 02:27:45
> NG win98 Netscape3
なるほど。よく知らないんですが、&nbsp; が中黒になる
んでしたっけ? UNIX 系の NN3 も表示できないと思って
いたんですが、OK なんですね。では、Win+NN3 環境は
残念ながら泣いていただく、ということにします。

> ところで、タブも変換して貰えると助かるんですが…
tab stop はいくつがお好みですか? (僕は4です)
でもこれをやるなら、書き込み時に置換しないと
いけないので、
    TAB が発見されました。tab stop=4 だと以下のように表示されます。
    [OK TAB=2にする TAB=8にする]
てな感じ? (笑)

ところで行頭以外のスペースを &nbsp; に置換するのって
意味ありますかね?

> DATを初期化するコマンドって、UNIXでありますか??
テープ関係はよく知りませんが、mt erase あたりではダメでしょうか。

> http://tsu.virtualave.net/TSU/whimsy.html
僕も何度かおじゃまさせていただきました。お暇な方はどうぞ。

No. 1357 # へにか [URL] 2000/11/13 (月) 08:13:58
>&nbsp; が中黒になる
そうです。目も当てられないです。

>UNIX 系の NN3 も表示できないと思って
少なくとも、Version 3.04 [ja_euc]はそうでした。

No. 1358 # へにか [URL] 2000/11/13 (月) 08:32:10
すいません、追加です。
winで確かめたNetscapeは、Version 3.01です。
.01と.04の差か(不明)? ←信じられん

※ win+NN3は、サポート外でいいと、思います。
        ほとんどNN4/IE4以上だろうし・・・

No. 1359 # デサント [URL] 2000/11/13 (月) 14:47:54
どなたかP内部のCPUやメモリーやモデムなどに詳しい方
色々教えて下さい。
仕事上、自らバージョンアップをしたいと考えていますのでよろしくお願いします。
またこのURLは現在の仕事上のものです。
興味がある方はアクセスしてください。

No. 1360 # ミング [E-mail] 2000/11/13 (月) 16:09:40
No.1343,1345、1346の例を参考にやってみたのですが、SolarisのAwkでは動きませんでした、、、、

そこで、InputFile1の$2だけをInputFile3にcopyして、InputFile2の$2を、InputFile4にCopyし、単純にINputFile3、と4を比較し、同じ内容はOutputFile1へ、違う内容はOutputFile2へ出すようにするのであれば、Awkでもできるでしょうか?

No. 1361 # 68user 2000/11/13 (月) 20:59:42
nawk では動きませんか。
# &nbsp; の話はまた明日…。

No. 1362 # mm 2000/11/13 (月) 21:31:14
>tab stop はいくつがお好みですか? (僕は4です)
基本的には、私も4です…でも、最近は2なんてことも…(^^;

>てな感じ? (笑)
インデントさえあれば、結構見易くなると思うので、
1個でもいいんじゃないでしょうか?(笑い)


>1346の例を参考にやってみたのですが、SolarisのAwkでは動きませんでした、、、、
The AWK Proramming Language 準拠のスクリプトが動かないなんて、どんなAWKだ(笑い)

No. 1363 # いえろーばっくす [E-mail] 2000/11/13 (月) 22:11:07
こんばんわ。またXについてわからないところが出てきました。
EXPOSEイベントについてです。

例えば、windowの一部が画面の外側に出ている状態で、
そこからwindowを現在ある位置から移動したとき、
EXPOSEイベントがたくさん飛んで来るようで、
飛んで来た回数だけ再描画されてしまいます。
この再描画を一回だけで終わらせる方法はないでしょうか?
自分で書いてみたのは全部書くと長いので
省略して書くとこんな感じです。

while( done == 0 )
{
        XNextEvent( display, &event );
        switch( event.type )
            {
              case Expose:
                  if( myevent.xexpose.count == 0 )
                      {
                        .....
                        .....
                        .....
                        .....
                        }
                  break;
                  
                  case ....
                        ....
                        ....
                        ....
                        ....
    
}

いつもお世話になります。
ご教授おねがいします。

No. 1364 # xmaru 2000/11/13 (月) 22:18:10
はじめまして。某企業でイントラネットの担当をしています。
本日、某ソフトメーカーのホームページ作成ツール(Go**ve ver5)を
導入したのですが、コンテンツをFTPでサーバにアップしようとしても
接続するのですが、既存のファイル名やディレクトリ名が、一切表示されないのです。
しかたなく、ユーザサポートに電話しても、「そんな馬鹿な・・・」と
冷たく言われる始末。。。

押し問答の末、担当者が「ブラウザから ftp://(username):(password)@(server)/(directory) と
入力すると、何が表示されますか?」というので、やってみると
アクセス権表示(rwxr--r--)しか表示されないのです。

担当者曰く、「本来は、ファイル名やタイムスタンプが表示されるべきですが、
サーバの設定がおかしいみたいですね!」と冷たい回答。

サーバ担当者に問い合わせても、「他のホームページ作成ツールじゃ、
問題なくFTP出来ますから、そのツールのバグじゃないですか?」と
言われました。

ちなみに、マシンはSun, OSはSolaris 2.6, WWWはNetscape Enterpriseです。

何を調べればよいか、見当もつきません。
よろしくご教示ください。

No. 1365 # rosegarden 2000/11/13 (月) 23:06:23
> ちなみに、マシンはSun, OSはSolaris 2.6, WWWはNetscape Enterpriseです。

server 側の ftpd は Solaris 付属の ftpd ですか?
Solaris の ftpd のファイルリスト表示って癖があったように思います。
Fetch という Mac の ftp クライアントでもファイル一覧は
まともに表示されなかったことがありました。
これは、日本語版の Fetch なら対応しているんですが。

LIST か NLIST か詳しいことは忘れましたが、その表示が変わっていて
少なくとも古い Solaris の一部にはそういう癖があるので、別の
ftpd 入れて見て試されては? NcFTPd とか UW_ftpd とか。

> SolarisのAwkでは動きませんでした、、、、

今度試してみます。

No. 1366 # 68user 2000/11/14 (火) 02:41:14
手抜きして、表示時に TAB を変換することにしてみました。
    s|^(\t+)|'&nbsp;&nbsp;&nbsp;&nbsp;' x length($1)|e;


> 「ブラウザから ftp://(username):(password)@(server)/(directory) と
> 入力すると、何が表示されますか?」というので、やってみるとアクセス
> 権表示(rwxr--r--)しか表示されないのです。
rosegarden さんのおっしゃるとおり ftpd の問題なんでしょうが、
考えられるのは
    ・NLST だとファイル一覧がうまく取れないのかもしれない。
    ・inetd が LANG=ja で実行されているため、inetd から呼ばれる
        ftpd も LANG=ja になり、日付が日本語になってしまう (11月14日など)
てなところでしょうか。

で、他の ftp サーバを相手に試してみるとか、その ftp サーバに
ftp -d で anonymous login して、プロトコルを見てみる (うまく
いく ftp サーバとプロトコルの内容を比較する) などなど。

ちなみに ftp のファイル一覧の形式は、RFC で規定されていません。
一般的には ls -l の表示形式であることが多いですが、ls -l の
形式にすべしとはどこにも書いてありません。


> 例えば、windowの一部が画面の外側に出ている状態で、
> そこからwindowを現在ある位置から移動したとき、
> EXPOSEイベントがたくさん飛んで来るようで、
うーん、状況がよくわからんです。
    http://X68000.startshop.co.jp/~68user/xprogram/xlib-3.html
のように、ウィンドウ内に子孫ウィンドウを作ってますか?
子孫ウィンドウで Expose イベントに対応していないため、
上位のウィンドウにイベントが上昇伝播していて、その
結果複数のイベントが飛んできていませんか?

もしそうなら、子孫ウィンドウでも XSelectInput して、
イベントが飛んできたら、どこ宛 (親ウィンドウ or 子
ウィンドウ) のイベントかどうかを判定し、適切な
ウィンドウを再描画すればよいです。どのウィンドウ宛かは
event.window でわかります。

1つのウィンドウでも発生するなら、
    Expose が飛んできたとき、XCheckTypedEvent で
    さらに別の Expose イベントが飛んできていないか
    調べる。
という方法があります。
    case Expose:
        while (1){
            if ( ! XCheckWindowEvent(display, window, ExposureMask, &event) ){
                break;
            }
てな感じ。ただし、根本的な解決方法かどうかはわかりません。

No. 1367 # ミング [E-mail] 2000/11/14 (火) 11:41:48
昨日間違って /var/adm のfileと subdirectoryをすべて削除してしました。、、、、、それが何なのか分からず、後でほかのUnixからコピーすればいいと思って昨日そのままShutDownしてしまったのですが、今朝起ち上げる時にcannot create car/adm/utmp or utmx. Failed to write of untmx entryというエラーが出て起ち上げられません。Ultra5+Solaris1.1.2なのですが、CDRomからそのDirectoryだけInstallする方法はありますか?

No. 1368 # rosegarden 2000/11/14 (火) 15:27:55
Solaris 2.5.1 以降のことしか分からないんですが、
> 昨日間違って /var/adm のfileと subdirectoryをすべて削除してしました。
そこにあるのはログファイルの類だけです。sulog とか loginlog とか
messages とかです。ログファイルが決定的な意味を持たないのなら問題ないです。
どっちにしても、CD-ROM にあったとしても元には戻りません。

utmp とか utmpx とかはログインとかの記録を保持するファイルです。当然
boot した時間や shutdown した時間も記録するので、それで文句を言うのでしょう。
私はこれを更新する際には実にアバウトに

# cat utmp > utmp
# cat utmpx > utmpx

とかで済ませています(環境は Solaris 2.5.1 ですが)。だから空のファイルが
あれば問題ないかと思います。空のファイルを作っておけば良いだけなので、
スイッチをいれた直後に L1+a で ROM モニタモードに移行してから、
boot -s して、/var をマウントして touch コマンドあたりで空のファイルを
作れば良いかと思います。あるいは、起動時に utmp がないと文句を言われて
止まった時に CTRL-C とか打ち込んでもブートの続きが始まるかも知れません。

CD-ROM にこだわるのなら、やはりスイッチいれた直後に L1+a で ROM モニタ
モードに移行してから、OK プロンプトに boot cdrom すれば CD-ROM から
たちあがあります。Solaris 1.1.2 は知らないのですが、2.5.1 以降だと
Openwin が使えて、cmdtool なんかも好きなだけ使えます。で、適当な
ところに手動で /var をマウントしてからコピーすれば良いかと思います。

参考までに Solaris 7 のインストール CD-ROM の /var は次のように
なっています。tar でコピーするとか、
手動で同じもの作っても問題ないんじゃないでしょうか?

# ls -alRF /tmp/root/var/adm

total 8
drwxrwxr-x  4 root   sys  2048 Jul 31 1999 ./
drwxr-xr-x 16 root   sys  2048 Jul 31 1999 ../
-rw-------  1 kmem   kmem   0 Jul 31 1999 aculog
drwxrwxr-x  2 tty    tty  2048 Jul 31 1999 log/
drwxrwxr-x  2 tty    tty  2048 Jul 31 1999 passwd/
-rw-rw-rw-  1 operator kmem   0 Jul 31 1999 spellhist
-rw-r--r--  1 root   kmem   0 Jul 31 1999 utmp
-rw-r--r--  1 root   kmem   0 Jul 31 1999 utmpx
-rw-rw-r--  1 tty    tty   0 Jul 31 1999 wtmp
-rw-rw-r--  1 tty    tty   0 Jul 31 1999 wtmpx

./log:
total 4
drwxrwxr-x 2 tty  tty 2048 Jul 31 1999 ./
drwxrwxr-x 4 root sys 2048 Jul 31 1999 ../

./passwd:
total 4
drwxrwxr-x 2 tty  tty 2048 Jul 31 1999 ./
drwxrwxr-x 4 root sys 2048 Jul 31 1999 ../

# 長くってすみません

No. 1369 # ミング [E-mail] 2000/11/14 (火) 16:35:21
rosegadenさん
回答どうもありがとうございます。
おっしゃる通り、空のファイルを作っただけで起ち上げに成功しました!
あーよかった。

L1というのはKeybordについているのですか?
その他色々わからないTerminologyがあるのですが、その辺は
またゆっくり調べてみます。

ご指導どうもありがとうございました!

No. 1370 # CoreFighter 2000/11/14 (火) 23:09:58
はじめまして
実は今Linuxでデーモンプログラムの勉強をしてるのですけど、
よくわかりません。
デーモンプログラムってループして実行時に&でバックグラウンド
でいいんでしょうか?
HP探しててもサンプルソースが見つからないし‥
よろしかったら教えて下さい。お願いします。

No. 1371 # 68user 2000/11/14 (火) 23:33:01
> デーモンプログラムの勉強をしてるのですけど
まずはここを読んで下さい。結構面倒です。
    http://www.race.u-tokyo.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC16
実行時に明示的に & でバックグラウンドにしなくても、
自力でデーモンとして常駐 (って UNIX ではあんまり
言わないか) するのが望ましい挙動です。

ところで Netscape6 が出ましたね。
    http://www.netscape.com/index.html

No. 1372 # CoreFighter 2000/11/15 (水) 08:12:19
68user さんありがとうございました。
自分はデーモンについての知識がまだたりませんね。
HPを見て勉強します。

No. 1373 # PerlによるPOP3クライアントで質問です。 [E-mail] 2000/11/15 (水) 09:38:10
お忙しいところすいません。初めまして、はぴおと申します。
ネットワークプログラミング大変分かりやすく、勉強させて
いただいております。
このサイトを参考にPerl(CGI)でPOP3クライアントをつくったのですが、
一つだけ分からないことがあります。
色々な本やサイトを見ても、FROMヘッダーにはメール送信者の名前と
メールアドレスが入ると思うのですが、自作POP3クライアントで
メールを受信した場合、FROMヘッダーにはメール送信者名しか入りません。
同じメールをOutlookで受信してみると、同じメールでもちゃんとFROM
ヘッダーに、メールアドレスが付加されてました。

以下自分の推測なのですが、色々と理由を自分なりに考えてみました。
・自作POP3クライアントが正しくメールを受信できていない。
・正しくメールを受信できているが、ほかにやらなければいけないこと
    がある

昨日一日、色々なサイトをまわったり、本を調べたり、MLで聞いて
みたりしましたが、分かりませんでした。
藁にもすがる思いでココに書き込んでます。
どうかご意見をお聞かせ下さい。
それでは宜しくお願いします。

以下参考になるか分かりませんが、私の環境です。
-OS: WIndows2000
-Perl : ActivePerl Build 620
-apache_1_3_12_win32

はぴお
lovex@bd.mbn.or.jp

No. 1374 # なおこ 2000/11/15 (水) 11:23:08
初めて投稿させていただきます。

UNIX歴2か月の初心者で 今初めてシェルプログラミングに挑戦してます。
作成したいものは、lastcommで前日のログ履歴を出し、管理者宛にメールを
送るというものなのですが早速つまずいてしまいました。

現在の日付(MON,DAY)を取得するまではできるのですが、”前日”をどうやって表現すればいいのかわからず困っています。
DAYを-1しようとしたのですがうまくいきません。
以下のように記述しています。
どなたかご存知の方、ご教授お願いします。

LANG=C; export LANG
BUF=
set `date`
echo $2 # "Nov"と表示されます
echo $3 # "15"と表示されます
expr $3 -1 > $BUF # expr: syntax errorになります

No. 1375 # いえろーばっくす [E-mail] 2000/11/15 (水) 13:02:14
68userさんいつも助けていただいて感謝です。
    case Expose:
                  while (1){
                          if ( ! XCheckWindowEvent(display, window, ExposureMask, &event) ){
                                  break;
                          }

これを使ってみたところちゃんと一回だけ描画してくれました。
こんな関数もあったんですね。
勉強不足で申し訳ありません。
根本的に解決できなくても動いてくれれば
とりあえずは解決したと思っておきます。
本当にありがとうございました。
またお世話になるかもしれないですが、
そのときはよろしくお願いします。

No. 1376 # book 2000/11/15 (水) 14:33:39
初めましてbookと申します。

UNIXのgccで作成したライブラリを、CCでコンパイルを行う時に
使用できるのか調査しています。

gcc -c share_test.cc
ar cr libtestshare.so share_test.o
ranlib libtestshare.so

CC test_gcc.cc -L. -ltestshare
現状は、ライブラリ内の関数を呼び出す箇所で、
コンパイルエラーになってしまいます。

そもそも、このような使い方が出来るのかどうか、
ご存知の方がいらっしゃいましたらご教授ください。
よろしくお願いします。

No. 1377 # 68user 2000/11/15 (水) 15:56:06
> ”前日”をどうやって表現すればいいのかわからず困っています。
> DAYを-1しようとしたのですがうまくいきません。
> expr $3 -1
expr $3 - 1 です。- と 1 の間にスペースが必要です。
しかし、これだと毎月1日に実行すると 0日となって
しまうので、根本的にまずいです。というわけで、-v
オプションを使いましょう。
    % date -v-1d
で1日前の日付が得られます。ただし、Solaris などの
date には -v オプションはないので、sh でやるなら
perl などを呼び出すのがいいでしょう。
# なので、最初から perl で書くのも手です。

> 現状は、ライブラリ内の関数を呼び出す箇所で、
> コンパイルエラーになってしまいます。
どういうエラーが出るのかちゃんと書きましょう。
FreeBSD と Solaris ではこの方法でうまく動きました。
あと、これは static link 用のライブラリですので、
拡張子は .so より .a が適切でしょう (違うかなぁ?)

> 自作POP3クライアントでメールを受信した場合、
> FROMヘッダーにはメール送信者名しか入りません
pop は、ただ単にヘッダとボディを送信するだけです。
From がどうだとか Subject がどうだとか、そういう
データ内部には立ち入りません (基本的には)。

Outlook で「メールのソースを表示」したものと、
自作 pop3 クライアントの出力の、From: 周辺を両方
見せて下さい。

No. 1378 # なおこ 2000/11/15 (水) 17:17:57
前日の日付取得の件

68userさん、ご教授ありがとうございました。
Solaris環境なのでシェルで作成するのはやめます。
perlも少し触ったことがあるのですがC言語の方が経験が長いので
Cで作成しようと思っています。
が、一般的 or perlの方が効率的なのでしょうか?

No. 1379 # はぴお [E-mail] 2000/11/15 (水) 17:34:12
68userさん、早速のレスありがとうございます。はぴおです。
ちょっと長くなってしまいますが、同じメールを自作POP3クライアントと
Outlookのそれぞれで受信したソースを載せておきます。
なんか"<"、">"の部分だけが読み込めてない感じです。
それではよろしくお願いします。

[自作POP3クライアント]
-------------------------------------------------------------
Received: from ns.ics.lan ([202.228.221.126])
by bd.mbn.or.jp (8.9.1/bd.mbn.or.jp-2.0) with ESMTP id RAA13962
for ; Wed, 15 Nov 2000 17:26:03 +0900 (JST)
Received: from kimura ([202.228.221.125])
by ns.ics.lan (8.9.3/3.7W) with ESMTP id RAA26374
for ; Wed, 15 Nov 2000 17:20:05 +0900
Message-ID: <000501c04ede$6249e4d0$5400a8c0@kimura>
From: "kimura"
To: "kimura"
Subject: test
Date: Wed, 15 Nov 2000 17:31:00 +0900
MIME-Version: 1.0
Content-Type: text/plain;
charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
X-UIDL: cde5eb4f8ec74762f85d10deccb2a5a3

test

[Outlook Express]
-------------------------------------------------------------
Received: from ns.ics.lan ([202.228.221.126])
    by bd.mbn.or.jp (8.9.1/bd.mbn.or.jp-2.0) with ESMTP id RAA13962
    for <lovex@bd.mbn.or.jp>; Wed, 15 Nov 2000 17:26:03 +0900 (JST)
Received: from kimura ([202.228.221.125])
    by ns.ics.lan (8.9.3/3.7W) with ESMTP id RAA26374
    for <lovex@bd.mbn.or.jp>; Wed, 15 Nov 2000 17:20:05 +0900
Message-ID: <000501c04ede$6249e4d0$5400a8c0@kimura>
From: "kimura" <lovex@bd.mbn.or.jp>
To: "kimura" <lovex@bd.mbn.or.jp>
Subject: test
Date: Wed, 15 Nov 2000 17:31:00 +0900
MIME-Version: 1.0
Content-Type: text/plain;
    charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
X-UIDL: cde5eb4f8ec74762f85d10deccb2a5a3
Status: RO

test

No. 1380 # book 2000/11/15 (水) 18:21:55
68userさん、さきほどは説明不足ですみませんでした。

エラー内容と環境を書いておきます。
よろしくご教授お願いします。

gcc -c share_test.cc
ar cr libtestshare.so share_test.o
ranlib libtestshare.so

CC test_gcc.cc -L. -ltestshare

test_gcc.ccは読み込んだライブラリ内の関数を呼び出しているだけです。


######################
エラー内容
######################
未定義の 最初に参照している
シンボル ファイル
ShareTest::get(void) test_gcc.o
__builtin_delete ./libtestshare.a(share_test.o)
__rtti_user ./libtestshare.a(share_test.o)
ShareTest::~ShareTest(void) test_gcc.o
ShareTest::ShareTest(void) test_gcc.o
ld: 重大なエラー: シンボル参照エラー。
a.out に書き込まれる出力はありません

######################
使用環境
######################
Kernel Architecture is sun4u
OS Name is SunOS
OS Version is 5.6
OS Distribution is Japanese Solaris 2.6 HW:2 s297s_hw2smccDesktop_09b SPARC
Kernel Version is SunOS Release 5.6 Version Generic_105181-17
                                                  [UNIX(R) System V Release 4.0]

No. 1381 # 68user 2000/11/15 (水) 20:30:33
> gcc -c share_test.cc
> CC test_gcc.cc -L. -ltestshare
ああ、CC って typo かと思っていたら、C++ なのか…。
# C++ は完璧に忘れたなぁ。Hello world さえ作れないです。

おそらく gcc と CC でクラス/メソッドのシンボル名の
命名規則が違うのが理由だとは思うのですが、意図的に
gcc と Sun の CC を混在して使っているのですか?
gcc (g++) か CC に統一できない理由があるので、調査
しているということですよね?

もしそうなら、すいませんがわかりません。gcc の
オプションで指定できるのかもしれませんが…。

> なんか"<"、">"の部分だけが読み込めてない感じです。
もしかして CGI として動かして HTML を吐いていませんか?
んでもって < > & を (&lt; &gt; &amp; に変換せず) その
まま出力していたりしませんか? 根拠は以下の通り。

1. received の <〜> も出力されていない
          for ; Wed, 15 Nov 2000 17:26:03 +0900 (JST)
          for ; Wed, 15 Nov 2000 17:20:05 +0900
2. でも Message-ID は出力されている。
          Message-ID: <000501c04ede$6249e4d0$5400a8c0@kimura>
      タグは英文字から始まる。数字が先頭にくることはない。

> が、一般的 or perlの方が効率的なのでしょうか?
僕なら間違いなく perl でやりますが、まぁそれはお好きな方で。
ちなみに sh からだと
    set `perl -e 'print scalar(localtime(time()-60*60*24))."\n"'`
です。

No. 1382 # rosegarden 2000/11/15 (水) 23:14:33
> % date -v-1d
> で1日前の日付が得られます。ただし、Solaris などの
> date には -v オプションはないので、sh でやるなら
> perl などを呼び出すのがいいでしょう。

このオプションは知りませんでした勉強になりました。

> Solaris環境なのでシェルで作成するのはやめます。

あきらめるのは早いです。

#!/bin/sh

LANG=C
set `date`
year=$6
mon=$2
date=$3

if [ `expr $year % 4` = "0" ] ; then
        is_leap="YES"
fi
if [ `expr $year % 100` = "0" ] ; then
        is_leap="NO"
fi
if [ `expr $year % 400` = "0" ] ; then
        is_leap="YES"
fi

date=`expr $date - 1`

if [ "$date" = "0" ]
then
        case $mon in
                Jan)
                        mon="Dec"
                        date=31
                        ;;
                Feb)
                        mon="Jan"
                        date=31
                        ;;
                Mar)
                        mon='Feb'
                        if [ "$is_leap" = "YES" ]; then
                                date=29
                        else
                                date=28
                        fi
                        ;;
                Apr)
                        mon="Mar"
                        date=31
                        ;;
                        # 以下略
                        *)
                        ;;
        esac
fi

echo The yesterday is $mon $date.

なんていう面白味も芸もないスクリプトなら Solaris でも動くんじゃないかと
思いますよ。

もっとも、

> 作成したいものは、lastcommで前日のログ履歴を出し、管理者宛にメールを
> 送るというものなのですが早速つまずいてしまいました。

この用途なら、日付の計算は不要で前々日分までの lastcomm のログの
バックアップをとっておいて、前日分との差分を diff でとるという方法もあります。
(ただし、lastcomm のログなので、GB 単位になってもおかしくないのですが。)
FreeBSD なんかのセキュリティチェックは全部前日分までのバックアップと
本日分のログの差分抽出でやっていますね。

# また長くなりすみません。

No. 1383 # 68user 2000/11/16 (木) 01:12:04
> あきらめるのは早いです。
うーん、ごもっとも。恥ずかしながらこういう
方法には全く気づきませんでした。

No. 1384 # book 2000/11/16 (木) 09:22:00
68userさん、ご教授ありがとうございました。

gccのオプション調べてみます。

No. 1385 # はぴお [E-mail] 2000/11/16 (木) 17:15:35
こんにちは、はぴおです。
68userさんレスありがとうございました。
非常に恥ずかしい話ですが、68userさんのおっしゃる通りです。
何で気が付かなかったんだろうか???
ありがとうございました!
HTTP、SMTP、POP3ができたので、今度はFTPをやろうかと
思います。

No. 1386 # CoreFighter 2000/11/18 (土) 00:47:46
お世話になります。
実は今、C言語でCGIの勉強をしているのですけど、
CGIのデバッグってどうやるんでしょうか?

もしかして、動作確認はいちいちブラウザで確認するしかないのですか?
つ、つらい‥

なにか、効率的なデバッグ方法を知っていらしたら
教えて下さい。お願いします。

No. 1387 # 68user 2000/11/18 (土) 03:09:00
> もしかして、動作確認はいちいちブラウザで確認するしか
> ないのですか?
まさか :-)

CGI というのはインタフェースです。

ブラウザからの情報を、環境変数と標準入力経由で
プログラムに引き渡すインタフェース。それが CGI。

だから、
    % env REQUEST_METHOD=GET QUERY_STRING='hoge=1&fuga=2' ./foo.cgi
とか
    % set content='number=123&str=%21%22%23'
    % echo -n $content | env REQUEST_METHOD=POST CONTENT_LENGTH=`echo -n $content|wc -c` ./foo.cgi
とかとか、
    #ifdef DEBUG
    #define INPUTFILE_FOR_DEBUG "debug.txt"
    {
        char tmp[128];
        struct stat sb;
        setenv("REQUEST_METHOD", "POST", 1);
        stat(INPUTFILE_FOR_DEBUG, &sb);
        sprintf(tmp, "%d", sb->st_size);
        setenv("CONTENT_LENGTH",tmp , 1);
        freopen(INPUTFILE_FOR_DEBUG, "r", stdin); /* この使い方合ってるっけなぁ… */
    }
    #endif
とかとかとか。

No. 1388 # ぷに辻 2000/11/19 (日) 15:09:31
こんにちは。
掲示板のファイルに書きこむ部分で、
「web と CGI のひみつ」の「掲示板を作ろう (2)」の最後にある
テンポラリファイルに書き込んでからrenameする方法いいなと思ったのですが、
これだとrenameするときに衝突する可能性ありますよね?

http://www.wakusei.ne.jp/twn/wwwlng.cgi?print+200003/00030031.txt

ここにあるcheck-lockスクリプト(いつもありがたく使わせていただいてます m(_ _)m )
でやってみようと思うのですが、うまくrename時の衝突を回避する方法があればご教授ください。

No. 1389 # Yuuki [E-mail] 2000/11/20 (月) 06:40:09
http://x68000.startshop.co.jp/~68user/net/sample/echo-server-1.c
このコードのバグを見つけました。
コンパイルして動かすとacceptで失敗するのでこっちの設定が
悪いんだろうと思ってFreeBSD関連のメーリングリストを
検索していたら原因がわかりました。
connected_socket = accept(listening_socket....
の上に
len = sizeof( sin );
が必要です。
バグの理由は
http://home.jp.FreeBSD.ORG/cgi-bin/showmail/FreeBSD-users-jp/43141
です。

No. 1390 # hemo [URL] 2000/11/20 (月) 19:05:25
はじめまして。
No.1389の指摘のついでですが

len = sizeof(peer_sin);

は、いらなんじゃないですか?
バグの理由でも書かれてるとおり
acceptの第3引数は、入出力両用ですので
帰ってきた値をそのまま使うのが正しいと思うのですけど。

No. 1391 # 68user 2000/11/20 (月) 20:11:38
> len = sizeof( sin );
> が必要です。
なるほど、確かに FreeBSD 4.2-BETA で動かすと accept に
失敗していました。これまではたまたま動いていたわけですね。
修正しておきます。ありがとうございます。

> len = sizeof(peer_sin);
> は、いらなんじゃないですか?
こっちの getpeername のは必要だと思います。以下 getpeername(2) より。
      Getpeername() returns the name of the peer connected to socket s.
      The namelen parameter should be initialized to indicate the amount
      of space pointed to by name. On return it contains the actual size
      of the name returned (in bytes). The name is truncated if the
      buffer provided is too small.


> これだとrenameするときに衝突する可能性ありますよね?
えっと、あの例では rename は使っていません。あの後 排他処理に
ついて書くつもりでしたが、時間がなくて全く手を付けていません。

> うまくrename時の衝突を回避する方法があればご教授ください。
もし rename でやるとしても、それ以前に複数のプロセスが
tmp_file へ同時に出力しようとする可能性があるので、あの
部分全体を排他する必要があります。

で、方法ですが、適当なロックファイルを用意して排他処理を
行えばよいです。flock でも symlink でも mkdir でも rename でも
何を使っても構いません。

No. 1392 # ぷに辻 2000/11/20 (月) 22:58:33
返事どうもありがとうです。

> えっと、あの例では rename は使っていません。

よく見てませんでした。申し訳ないです。。

> もし rename でやるとしても、それ以前に複数のプロセスが
> tmp_file へ同時に出力しようとする可能性があるので、あの
> 部分全体を排他する必要があります。

なるほど。そこで、お教えいただいた通りにちょっと改造してみました。

# 毎回違う名前で作る
$tmp_file = 'bbs'.$$.'.tmp';

open(TMP_OUT,"> $tmp_file");
print TMP_OUT "発言者: $from<BR>\n";
print TMP_OUT "$now_date $host<BR>\n";
print TMP_OUT "$message<HR>\n";

open(IN,"$data_file");
while (<IN>){
    print TMP_OUT $_;
}
close(IN);
close(TMP_OUT);

# tmp_file の内容を $data_file にコピーするだけ
#open(TMP_IN,"tmp_file");
#open(OUT,"> $data_file");
#while (<TMP_IN>){
# print OUT $_;
#}
#close(TMP_IN);
#close(OUT);

# コピーのかわりに、$data_fileにrename
# その前に排他処理。
$lock_file = 'bbs.lock';
touch($lock_file);
open(IN,"$lock_file");
flock(IN, 2);
rename($tmp_file, $data_file);
close(IN);
unlink($lock_file); # 必要ない??

これで完璧ですか??
読みこみ専用でオープンしてるのにflock()のオペレーションが「2」って
どうなんですかね。ちゃんと書きこみモードでオープンしなきゃだめですか??
改善点があればご教授くださいませ。
長文すみませんでした。

No. 1393 # hemo [URL] 2000/11/21 (火) 08:01:23
>> len = sizeof(peer_sin);
>> は、いらなんじゃないですか?
>こっちの getpeername のは必要だと思います。以下 getpeername(2) より。

失礼しましたぁ。。勘違いです。
きっちりしたサイズを指定しなくてもよかったんですね。
小さい場合は切り詰めるって仕様も最初は意味不明でしたが、
よく考えると最低でもアドレスファリは所得できそうなので有用ですね♪

No. 1394 # ふくし [E-mail] 2000/11/21 (火) 18:00:08
いつもすいません、ふくしです。
LDAP の使い方でこんなことができるかどうかどなたか相談に乗ってください。

Microsoft Exchange Server のアドレス帳で、集団のアドレス
(営業部 <markettng@nantoka.org とか)があって、
そこに送るとたくさんのひとに
(yamada.tarou@nantoka.org、satou.hanako@nantoka.net、、)に
行くようになっているとき、組織名を渡してこの構成員一覧を返す
アプリケーションを作ろうと思っています。

Exchange は LDAP を受け付けるときいたので、
Perl に Net::LDAP をインストールして、
サンプルをいじって使ってみたのですが、
marketting というメール アドレスが「ある」ことはわかるところまで
いったのですが、その内容まではわかりません。

ご存じの方がいらっしゃいましたら、よろしくお願いします。

No. 1395 # has 2000/11/22 (水) 17:22:26
ちょっと前にHTTPのセパレータの話がありましたが、
どうも最近の携帯の中には、\r\nにしか対応していないものもあるようで、
友人からの「携帯からアクセスできない」との苦情に対応方法がわからず、
「まさか」と思いつつもこれまで\n\nとしてきたセパレータに\r\nを加えてみたところ、
ちゃんと読んでくれるようになりました。

これはうちのサーバの設定の仕方がおかしいんでしょうか。
(普通は\r\nに勝手に変換してくれるものなんですか?)
それともCGIの方で正式な\r\nに対応すべきなんでしょうか。

No. 1396 # YOU [E-mail] 2000/11/24 (金) 02:30:54
どうもこんにちは、
Winsock初心者のYOUと申します。
ソフトバンクの、「Winsock2.0プログラミング」という本を
買ってきたのですが、手始めに、サンプルのCH02->Hostinfo
をビルドしようとすると、以下のようなエラーが出てしまいました。
プロジェクトへのリンク等には、特に何も指定していません。
どうすれば、解決出来るのでしょうか。

--------------------構成: Win - Win32 Debug--------------------
リンク中...
Hostinfo.obj : error LNK2001: 外部シンボル "_WSACleanup@0" は未解決です
Hostinfo.obj : error LNK2001: 外部シンボル "_WSAStartup@8" は未解決です
Hostinfo.obj : error LNK2001: 外部シンボル "_inet_ntoa@4" は未解決です
Hostinfo.obj : error LNK2001: 外部シンボル "_WSAGetLastError@0" は未解決です
Hostinfo.obj : error LNK2001: 外部シンボル "_gethostbyaddr@12" は未解決です
Hostinfo.obj : error LNK2001: 外部シンボル "_gethostbyname@4" は未解決です
Hostinfo.obj : error LNK2001: 外部シンボル "_inet_addr@4" は未解決です
LIBCD.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です
.\Debug/Win.exe : fatal error LNK1120: 外部参照 8 が未解決です。
link.exe の実行エラー

Win.exe - エラー 9、警告 0

よろしくお願いします。

No. 1397 # Elmo [E-mail] 2000/11/24 (金) 18:16:44
はじめまして。Elmoです。
telnetでポート80を指定して、”GET”と”Host:”を実行するシェルスクリプト(bash)を作成したいのですが、どうやって、シェルからGETとHost:を実行すればいいのかわかりません。ちなみに、”echo”とパイプを使用してみましたが出来ませんでした。
わかる方、教えて下さい!!

No. 1398 # 68user 2000/11/24 (金) 19:43:07
has 殿へ。11/25 (土) に行けたら行きます。仕事次第。
では手短に。

> (普通は\r\nに勝手に変換してくれるものなんですか?)
apache だと変換してくれないですね。

> それともCGIの方で正式な\r\nに対応すべきなんでしょうか。
です。でもうちではやってません。いけませんなぁ。

> LDAP の使い方でこんなことができるかどうかど
LDAP は勉強しようとしたことはありますが、どうやっても
LDAP サーバをあげられず断念しましたので、わかりません。
でも、get_values とかでダメですかねぇ。

> .\Debug/Win.exe : fatal error LNK1120: 外部参照 8 が未解決です。
僕は Windows の開発環境を持っていないので、わかる方に
おまかせします。

> 読みこみ専用でオープンしてるのにflock()のオペレーションが「2」って
> どうなんですかね。ちゃんと書きこみモードでオープンしなきゃだめですか??
試してませんが、心配ならば open(IN,"> $lock_file") と
すればいいでしょう。

あと、ロックを開始する場所は
    open(TMP_OUT,"> $tmp_file");
です。rename の部分だけロックすると、ファイルは壊れませんが
同時に発言しようとしたとき、一方の発言が反映されないです。

それから、失敗する可能性のある場所では、エラーチェックを
必ずしましょう。例えば、OS によってファイルを同時にオープン
できる数というのは決まっているので、それを越える open は
失敗します。もし
    open(IN,"$lock_file");
が失敗したらその後の flock も無意味になり、ロックが働きません。

> telnetでポート80を指定して、”GET”と”Host:”を実行する
> シェルスクリプト(bash)を作成したいのですが
(sleep 3; echo "GET /index.html HTTP/1.0"; echo "Host: foo.bar.com") | telnet foo.bar.com 80
てな感じで。

No. 1399 # 68user 2000/11/24 (金) 19:45:23
改行が足りてない。
    (sleep 3; echo "GET /index.html HTTP/1.0"; echo "Host: foo.bar.com"; echo ) \
        | telnet foo.bar.com 80
でした。

No. 1400 # ちか 2000/11/25 (土) 00:24:12
はじめまして。
プログラミングは超初心者で、ここで質問して回答してもらえるのかどうか
もわからないのですが、もし答えていただけるならば教えてください。
HTMLにJPGやGIFを貼り付けているのですが、マウス右クリックで
「画像を名前をつけて保存」ってできてしまいますよね。これを保存できな
くする方法ってあるんですか?拡張子を変える、とか。
よろしくお願いします。

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