68user's page 掲示板

Prev< No. 1559〜1577> Next  [最新発言に戻る] [過去ログ一覧]
No. 1559 # 403 2001/01/13 (土) 11:54:07
通りすがってみました。(意味不明)

@HEAD
こういう奴もあったりする。

telnet www.yahoo.com 80
Trying 204.71.200.68...
Connected to www.yahoo.akadns.net.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.0 200 OK
Content-Length: 15629
Content-Type: text/html

<html><head><title>Yahoo!</title>
以下略

No. 1560 # debra [E-mail] 2001/01/13 (土) 12:13:56
はじめまして。ちょっとわからなくてききたいのですが・・・。
crontabに登録しようとしているのですがうまくいきません。
10 * * * * /home/〜(実行形式ファイルのフルパス)
と登録したところ、
>UX:crontab:警告:コマンドは /usr/bin/sh で実行されます.
というメッセージが出てきてしまいます。
どうしたらよいのでしょうか?

No. 1561 # rosegarden 2001/01/13 (土) 15:49:52
>>1560 debra
> >UX:crontab:警告:コマンドは /usr/bin/sh で実行されます.
> というメッセージが出てきてしまいます。
SHELL=/bin/sh とかいれてもだめですか?
/usr/bin/sh なんていう sh をもつシステムが思い当たらないので、
詳しいこと言えませんが。
man 5 crontab (*BSD, Linux)
あるいは
man -s 5 crontab (Solaris の場合)
すると書き方が大抵の場合かいてあります。
あるいは man crontab して SEE ALSO を見るとセクション番号が
分かるはずです。

No. 1562 # rosegarden 2001/01/13 (土) 15:52:34
4-stable のビルドしてますが、 make release の最中にまた
page fault 起こしました。make world しなきゃよかった。:-<
今回のは悪質で、backtrace がとれないです。
まあ、page fault なんで、もはや素人の出られる幕はありませんが。
% uname -v
FreeBSD 4.2-STABLE #0: Fri Jan 12 21:43:37 JST 2001
一回だけなので、年末のよりはましですが、私の環境で安定していたのは
FreeBSD 4.2-STABLE #0: Tue Jan 9 00:25:52 JST 2001
の奴ですね。これは、ちょうど、この前 68user さんが make world した
前後のと kernel はそんなに変わらないとおもいます。
当分の間 4-stable の make world は見合わせた方がいいです。

それから g++ も不安定ですね。ランダムに compiler internal error
が出ます。top コマンド見ているとメモリが少なくなった状況で
このエラーが出るようです。だから、libstdc++ とか groff の make
でこけることが多いです。しかも、失敗してから、もう一度 make
すると通ることもあるので、嫌になってきます。

次に多いのが、perl の library の make の失敗。これは原因がかなり
はっきりしていて、make world 始める前に /usr/obj 消しておくと
出食わしません。

# 三月に 4.3-RELEASE でるんだろうか?
# どうも 4.1-RELEASE よりは不安定になっている様な気がする。
# -current の方がよほど安定しているし ;-<

No. 1563 # yoshi [E-mail] 2001/01/14 (日) 16:11:26
お世話様です。
perl に ついてお伺いしたいのですが何方かご存知でしたら教えてください。
文字置換で下記のような物を実行するとエラー(ドキュメントにデータが無い)
とエラーが出て動作しません。どうも”ー”のキャラクターが原因のようです。
kk,mmの変数でtest変数文章を部分変換したいのですがココでつまずいています。

#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
$test = "ホームページの更新";
$kk = "ホームページ";
$mm = "掲示板";
$test =~ s/$kk/$mm/;
print $test;
-----------------------eof-------------------------

No. 1564 # 68user 2001/01/14 (日) 17:27:13
>>1562 rosegarden
最近の stable では、thread まわりのバグが fix されて、
mozilla5 が動くようになったそうですが、cvsup するのは
やめときます (笑)

>>1560 debra
>UX:crontab:警告:コマンドは /usr/bin/sh で実行されます.
「警告」っつーのが謎ですね。動作には影響ない?

>>1563 yoshi
CGI 経由でデバッグするのはやめましょう。まずはコマンドライン
からです。さすれば
    /z[y[W/: unmatched [] in regexp at a line 6.

    /ホームページ/: unmatched [] in regexp at a line 6.
というエラーが表示されることが確認できるでしょう。

というわけで「ホームページ」という文字列をダンプすると
    203 z 201 [ 203 200 203 y 201 [ 203
となります。「ー」の2バイト目が `[' と同じコードのため、
[] が正規表現として正しくない (']' で閉じていない) ということです。
対処法としては
    1. SJIS を使わない。スクリプトの文字コードを EUC にする。
    2. jperl を使う http://www.jp.FreeBSD.ORG/QandA/HTML/1218.html
です。他にも \Q〜\E で囲むだとか、quotemeta を使うなどの手は
ありますが、所詮小細工のレベルです。根本的には上のいずれかを
選びましょう。

No. 1565 # けんす 2001/01/15 (月) 00:55:54
ぽよぞーです。
さっそくやってみたのですが、、

http://www.kensu.com/zzztest/

できないっす、、なぜだ、、
HEADER.html、README.html置いてあるのに、
一覧には表示されてないし、、。(直指定で見れまぷ)
原因おわかりでしたらご教授くださいませ・・・

No. 1566 # けんす 2001/01/15 (月) 01:02:44
あ、すんません、追加で。
もしできたとして、
全部のディレクトリにこれ反映させるにはどうしたらいいですか??
mod_rewrite入ってるみたいなのでそれでできますか??
よろしくどうもー。

No. 1567 # yoshi 2001/01/15 (月) 01:18:41
>>1564 68user
スクリプトの文字コードを EUCにします。ありがとうございました

No. 1568 # けんす 2001/01/15 (月) 02:42:26
いろいろやってたら解決できました!

HeaderName /lib/HEADER.html
ReadmeName /lib/README.html

<FilesMatch "^(HEADER|README)\.html$">
        ForceType text/html
</FilesMatch>

http://www.kensu.com/.htaccess

強制的にtext/htmlにしたらうまくいきました。

全部のディレクトリに反映させるのも、上のとおり
ディレクトリも含めて指定したらすんなりできました。

img/,doc/など掘ってありますので見てみてください。

http://www.kensu.com/img/

何度も投稿して板汚してすんません、、>68userさん
ではでは

No. 1569 # 68user 2001/01/15 (月) 05:44:18
>>1568 けんす
> <FilesMatch "^(HEADER|README)\.html$">
> ForceType text/html
> </FilesMatch>
これは多分デフォルトで設定されていると思います (というか、
.html だから text/html になっているんじゃないかなぁ)。

> HeaderName /lib/HEADER.html
> ReadmeName /lib/README.html
書いてませんでしたが、HEADER/README は、一覧表示させたい
ディレクトリに置いて下さい。もちろん HEADER/README を
一ヶ所に集めたいなら今の設定で OK です。もしかして
> HEADER.html、README.html置いてあるのに、
同じディレクトリに置いてもダメでしたか?

あと質問なんですが、www.kensu.com の
    Server: Apache/1.3.12 (Unix) OCTO_3.0 PHP/4.0.0 FrontPage/4.0.4.3
OCTO って何ですか?

No. 1570 # E田 2001/01/15 (月) 18:55:05
すみません。
また教えて欲しいのですが、これは、Cの質問だと思うのですが、
もしかすると、関数自体が間違っているのかもしれないので、
どうか、教えてください。

下記のような関数を使いたいのです。
int write_sock( int sockfd, char *str )
{
        int write_len = 0;
        int count = 0;
        size_t bytes_sent = 0;
        char *buf;
        char str_buff[1024];

        sprintf( str_buff, "\r%s", str );
        count = strlen( str_buff );
        if( count <= 0 ){
        return( NG );
    }
        buf = str_buff;
        while( bytes_sent < count ){
                do{
                        write_len = write( sockfd, buf, count - bytes_sent );
                } while( ( write_len < 0 ) && ( errno == EINTR ) );
                if( write_len <= 0 ){
                        return( NG );
                }
                bytes_sent += write_len;
                buf += write_len;
        }
        return( OK );
}

この関数を呼び出して使うと、
        write_sock( sd, "test strings.\n" );
これはうまくいきました。
だから、ちゃんと動く関数かなと思っていました。
でも、こういう構造体を作って、
struct test_s {
        unsigned long test1;
        unsigned short test2;
        unsigned short test3;
        unsigned short test4;
        unsigned short test5;
} tes_s;
このようにデータをいれました。
    tes_s.test_1 = Data_1;
    tes_s.test_2 = Data_2;
    tes_s.test_3 = Data_3;
    tes_s.test_4 = Data_4;
    tes_s.test_5 = Data_5;
データはちゃんと入っているのを、printf()で確認しました。
この後、
    write_sock( sd, tes_s );
のように呼び出してみましたが、うまくいきませんでした。
char型のデータでないとソケットでは送れないので、なんとか
文字列にしようとしてみたのですが、文字列の連結として
構造体の各データをつなげる方法がうまくいきません。
    memcpy( tes_s, tes_s.test_1, sizeof(tes_s.test_1) );
    memcpy( &tes_s[4], tes_s.test_2, sizeof(tes_s.test_2) );
のようにやっても、tes_sの文字列に入っていないし、
    sprintf( tes_s[0], "%04d", tes_s.test_1 );
とやると、coreを出してとまってしまいました。
正しいやり方というのはあるのですか?
それとも、やっぱり関数が間違っているんですか?
どうかよろしくお願いします。

No. 1571 # けんす 2001/01/15 (月) 18:55:28
>>1569 68user
> これは多分デフォルトで設定されていると思います (というか、
> .html だから text/html になっているんじゃないかなぁ)。

> 同じディレクトリに置いてもダメでしたか?

http://apacheml.ecc.u-tokyo.ac.jp/cgi-bin/namazu.cgi?key=readme&submit=Search%21&whence=0&max=20&format=long&sort=score

なんかバグらしいです、、どうなんだろう、、。

> あと質問なんですが、www.kensu.com の
> Server: Apache/1.3.12 (Unix) OCTO_3.0 PHP/4.0.0 FrontPage/4.0.4.3
> OCTO って何ですか?

http://www.oc.to/ ここのサーバー借りてるのでちょっとわからないです、、

ついでに、、
ディレクトリーリストに表示されるアイコン集、みたいなページ
ご存知ないですか??
php,log,cgiとかが「?」じゃかっこわるいので・・・・

No. 1572 # rocky [E-mail] 2001/01/15 (月) 20:34:43
68USERさん、すばらしいサイトを公開なされていて本当に感謝しております。ネットワークプログラミングの基礎知識はWINDOWSのCHMファイルにコンパイルして手元に置いて大変参考にさせていただいております。(LWPメインの「WEBクライアントプログラミング」の百倍くらい助けていただいております。)

本日書き込みさせていただいたのは、質問と言うよりは要望なのですが、PERL5でHTTPクライアントを作る際、SSLで接続する方法を解説頂いたページを掲載して欲しいのです。お忙しいとは思いますがぜひ実現いただけましたら大変助かります。

それではお体にお気をつけて。
今後のご活躍を期待しております。

No. 1573 # CoreFighter 2001/01/15 (月) 23:08:50
        char TempBuf[10+5+5+5+5+1];

        /* TempBufを初期化 */
        memset(TempBuf, 0x00, sizeof(TempBuf));
        /* TempBufに設定 */
        sprintf(TempBuf, "%d%d%d%d%d",
                tes_s.test_1, tes_s.test_2, tes_s.test_3, tes_s.test_4, tes_s.test_5);

この時TempmBufの大きさは
longを整数にした時の最大桁数 + shortを整数にした時の最大桁数
shortを整数にした時の最大桁数 + shortを整数にした時の最大桁数
shortを整数にした時の最大桁数 + 改行(\r)
です。

No. 1574 # CoreFighter 2001/01/15 (月) 23:21:24
すいません。訂正です。
>この時TempmBufの大きさは
>longを整数にした時の最大桁数 + shortを整数にした時の最大桁数 +
>shortを整数にした時の最大桁数 + shortを整数にした時の最大桁数 +
>shortを整数にした時の最大桁数 + 改行(\r)
>です。
改行(\r)でなくてNULL文字(\0)でした。

No. 1575 # gixs 2001/01/16 (火) 03:00:49
> sprintf(TempBuf, "%d%d%d%d%d",
> tes_s.test_1, tes_s.test_2, tes_s.test_3, tes_s.test_4, tes_s.test_5);

この方針は、
>>1512 gixs
の最後で書いた、数値を文字列として渡す方法ですね。
(つまり、数値10を0x31 0x30のバイト列にしてしまう方法です)
受け手は、自前のパーサなりsscanf(3)なりで、パースして数値に戻します。

でも、"%d%d%d%d%d"ではパースできません。
ゼロ詰めで桁数を決め打ちするか、空白で区切るべきでしょう。

このように文字列で渡す方針が簡単なので、実用アプリならこうすべきですが、どうしても数値のままネットワーク上に流したいとのことなら、ネットワークバイトオーダに変換しながらmemcpy(3)(or memmove(3))します。

# 動かないコードでもいいように、疑似コード(エラー処理なし)。
# および、勝手に、uint32_t tes_s.test1; uint16_t tes_s.test2;ということにします。
char *p = buf;
uint32_t x32 = htons(tes_s.test1);
memcpy(p, &x32, sizeof(uint32_t));
p += sizeof(uint32_t);
uint16_t x16 = htons(tes_s.test2);
memcpy(p, &x16, sizeof(uint16_t));
p += sizeof(uint16_t);
...
write(sock, buf, p - buf);

受け手は、どういうbit数の数値がどう並んでいるかを知った上で、受けたバッファから数値を切り出していきます。

No. 1576 # gixs 2001/01/16 (火) 03:12:37
ひとつ訂正。
最初のhtons()はhtonl()。
# 掲示板への書き込みは難しいですね。他にもミスがあるかも。

No. 1577 # rererenore 2001/01/16 (火) 15:44:33
Perlで
                system関数||die"$!\n"||exit(0);
を使用すると「ファイル番号が違います」とエラーメッセージがでて以上終了を起こします。
こういったエラーの理由が分かるサイトなどありましたら教えて下さい。
またこのエラーの原因をご存知の方がいましたら原因を教えて下さい。
お願いします。

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