68user's page 掲示板

Prev< No. 886〜896> Next  [最新発言に戻る] [過去ログ一覧]
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です。何かいいアイディアや参考になるウェブサイト・本があればご教示ください。情報が足りなければご指摘ください。

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