68user's page 掲示板

Prev< No. 1379〜1389> Next  [最新発言に戻る] [過去ログ一覧]
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
です。

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