68user's page 掲示板

Prev< No. 1344〜1384> Next  [最新発言に戻る] [過去ログ一覧]
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のオプション調べてみます。

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