68user's page 掲示板

Prev< No. 1345〜1440> Next  [最新発言に戻る] [過去ログ一覧]
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を貼り付けているのですが、マウス右クリックで
「画像を名前をつけて保存」ってできてしまいますよね。これを保存できな
くする方法ってあるんですか?拡張子を変える、とか。
よろしくお願いします。

No. 1401 # yamama 2000/11/25 (土) 11:38:29
> ちかさま。
表示してる時点で、保存もできます。。

保存しにくくするのなら、JavaScriptとかで、できそうだけど。

No. 1402 # フ−ミン [E-mail] 2000/11/25 (土) 19:26:44
はじめましてフ−ミンと申します。
CGIを初めたばかりで分からない事があるので質問させて下さい。
おそらくものすごく初歩的な事だと思うので悪いのですが…。

今「何とか度鑑定」みたいなのをPerlで作っているのですが、
色々なこういうサイトを参考にしても、質問が多くなってくると、
必然的に画面をスクロールしなくてはなりませんよね。
デザイン的にどうかと思っているのです。
そこで、質問を数ページに分ける方法を教えて頂きたいのです。
VALUE値を次のページまで持ち越すには多分、
INPUT TYPE=hiddenとかが関係しているのは分かるのですが、
具体的にどうしたらいいのか全く分からないのです。

こんな初心者ですみません。ヒント程度でもお答え頂ければ
幸いです。それでは失礼いたします。

No. 1403 # ちか 2000/11/26 (日) 01:10:22
yamamaさん、どうもありがとうございます。
printScreenされちゃうと終わりですよね(^ ^;
JavaScript ですか。勉強してみます。

No. 1404 # Nag 2000/11/26 (日) 02:14:16
>YOUさん
#include <windows.h>とか
#include <winsock.h>とか
ヘッダファイルをincludeしてますか?

No. 1405 # 68user 2000/11/26 (日) 21:13:23
> 今「何とか度鑑定」みたいなのをPerlで作っているのですが、
他の BBS とマルチポストしているのなら、その旨書くべき
だろうと僕は思います。答えを得たいために無節操にいろんな
ところで質問しまくるのは、回答してくれる人に失礼でしょう。

> マウス右クリックで「画像を名前をつけて保存」ってできて
> しまいますよね。
いろいろと保存しにくくする方法はありますが、
    http://www06.u-page.so-net.ne.jp/wa2/mugi/hp/jsindex.htm
ある程度知ってる人に対しては無力です。個人的には、
コピーしてほしくないものはインターネット上に置かない
のが一番だと思っています。

No. 1406 # フ−ミン [E-mail] 2000/11/26 (日) 22:21:43
>68userさん
まったくもってその通りです。
あせって、つい自分の事しか考えられなくなっていました。
反省しています。どうもすみませんでした。

No. 1407 # いえろーばっくす [E-mail] 2000/11/27 (月) 00:34:53
どうもこんにちわ。
最近Qtに手を出し始めたいえろーばっくすです。
ところが早速わからないことが出てきてしまって・・・・

QStringクラスのtoInt( bool *ok=0, int base=10 )関数
の使いかたをご教授ください。
QLineEditからtext()関数でQStringに読み込んだ値を
intに変換したいんですが、読み込んだ値を表示させても
必ず0にしかならなくて困ってます。

どなたかわかるかたいらしたらお願いします。

No. 1408 # TOM neko 2000/11/27 (月) 02:23:31
> 読みこみ専用でオープンしてるのにflock()のオペレーションが「2」って
  どうなんですかね。ちゃんと書きこみモードでオープンしなきゃだめですか??

読み込みモードで「2」だと、Solarisではflockが利かないようです。「1」なら大丈夫です。わたしのページですが、Perlの排他制御についてまとめてあります。
http://homepage1.nifty.com/glass/tom_neko/web/web_04.html

No. 1409 # hsj 2000/11/27 (月) 04:04:39
@YOUさん
もう解決してらっしゃるかもしれませんが・・・
wsock32.lib(もしくはws2_32.lib)をリンクしてみてください。
もうひとつ、WinMainが未解決だって言われてるのは、
プロジェクトをコンソールアプリでつくって
ソースがwin32アプリのものだからじゃないでしょうか。
win32アプリでプロジェクトをつくり直してみてください。

No. 1410 # Elmo [E-mail] 2000/11/27 (月) 10:51:17
お答え頂いてとてもありがとうございます。
さっそく
(sleep 3; echo "GET http://www.geocities.co.jp/.../rfc2068-ja.txt HTTP/1.0"; echo "Host:") | telnet www.geocities.co.jp 80
でやってみたのですが、telnet後、GET,Host:コマンドを実行せずにそのままtelnetを終了してしまいます。どうしてか、教えて下さい!!
どうぞよろしくお願いします。

No. 1411 # いえろーばっくす 2000/11/27 (月) 18:27:14
どうも。いえろーばっくすです。

この前の質問なんですが、なにやらtoInt関数以外のところで
つまづいてるっぽいことが発覚しました。
プログラムを最小単位にして確認してみたところ
ちゃんとtoInt関数は使えてました。
確認怠って質問してしまってすみませんでした。
まだ不具合は解消されてないのですが、
とりあえずがんばってみます。
板汚してすんませんでした。

No. 1412 # ぷに辻 2000/11/27 (月) 23:05:28
返事遅れてすみませんでした。
ファイル書き込み(排他処理)の件、勉強になりました。
あとでやってみようかと思います。
ありがとうございました。

No. 1413 # ちか 2000/11/27 (月) 23:16:44
68user殿

アドバイスありがとうございました。
教えていただいたサイトには「障害が多いのでやめます」って
書かれていました。ショック・・・。
ほかにどこかありましたら、アドバイスお願いします。

No. 1414 # 68user 2000/11/28 (火) 01:32:26
> telnet後、GET,Host:コマンドを実行せずにそのままtelnetを
> 終了してしまいます。
おろ、最後にも sleep が必要だった。んでもって、echo だけじゃ
改行が出ないのか。
    ( sleep 2 ; \
        echo "GET /index.html HTTP/1.0" ; \
        echo "Host: www.goo.ne.jp" ; \
        echo "" ; \
        sleep 2 ) | telnet www.goo.ne.jp 80
これでも不完全なような気がする。

まぁ、この方法では所詮完全なクライアントは作れません。
どうしても perl でなくて bash でやりたいなら、except
コマンドを使いましょう。

> 最近Qtに手を出し始めたいえろーばっくすです。
ちなみに Qt は全く知りません :-) じゃあ Gtk+ がわかるか
というと、こっちもわかりません。でも、Xaw がわかんないが
一番痛い。

No. 1415 # Elmo [E-mail] 2000/11/28 (火) 10:56:21
お教え頂き本当にありがとうございました。本当に感謝しています。
さっそくやってみたところ、大成功でした。
ただ、”不完全だ”というコメントが気になります。
manで、exceptコマンドをさがしてみたのですが、見つかりません。
そこで、簡単なexceptコマンドの使用例を教えて下さい。
あともう一点、
awkコマンドで、以下のように全角空白でsplit出来てしまうのですが、これは大丈夫なのでしょうか?
kanji_n = split ($44, kanji_name, " ")
gawkでなくても大丈夫ですか?
何度も申し訳ありません。よろしくお願いします。

No. 1416 # 68user 2000/11/29 (水) 01:53:54
> これでも不完全なような気がする。
これは多分勘違いです。シェルスクリプトでやる以上は、まぁ
ベストに近いでしょう (ベストだと言い切る自信はない)。

ただし、
> まぁ、この方法では所詮完全なクライアントは作れません。
この見解は正しいです。なぜなら telnet の接続に 2秒以上
かかったら、もうおしまいです。telnet を使う方法は、所詮
クライアントもどきでしかありません。

> exceptコマンドをさがしてみたのですが、見つかりません。
普通 expect は標準では入っていません。お使いの OS の
パッケージをインストールするか、ソースを手に入れて
コンパイルして下さい。で、まずは man をよく読みましょう。

ちなみに僕は expect は使ったことがないので、多分答えられ
ないと思います。

> awkコマンドで、以下のように全角空白でsplit出来てしまうのですが
うーん、それで動いているのならいいんじゃないでしょうか。
awk って言ってもいろいろ亜種があるので、なんとも言えません。

No. 1417 # kmk 2000/11/29 (水) 16:56:19
初めまして、kmkです。
質問があるのですが、PCからUNIXへftpする際に
2Gを超えるファイルがはじかれたのですが、
limitで見るとfilesizeは無制限で、datasize
が2Gチョイの制限になっていました。
マニュアルを見ても、なぜdatasizeでひっかかるのか
理由がわからないので、ぜひ教えてください。

No. 1418 # 68user 2000/11/29 (水) 23:25:57
Linux あたりなら、最近まで1つのファイルの最大サイズが
2GB まで、という制限があったそうですから、それじゃないで
しょうか。

FreeBSD だと 5GB くらいは作れたという報告はみかけましたが、
最大サイズはわかりません。ちなみにファイルシステムとしての
最大サイズは、Linux も FreeBSD も 1TB か 2TB (忘れた) です。

商用 UNIX だと 1ファイル 1TB くらいはいくのかな?
# でも Solaris2.6 だと最大 2GB だったような気も。

No. 1419 # kmk 2000/11/30 (木) 10:57:10
ありがとうございました。助かりました。
素直に、gzipで圧縮して、送ることにしました。
本当にありがとうございました。

No. 1420 # 68user 2000/11/30 (木) 17:41:57
ん、gzip で圧縮して送って、向こうで伸張できたのですか?
なら最大ファイルサイズは関係なかったですね。

No. 1421 # CoreFighter 2000/11/30 (木) 23:50:32
どうもお世話になります。

質問があるのですが、
プロセス中で動的メモリをmallocで取得して、そのプロセスが異常終了
(freeせずに)した時に取得した動的メモリは開放されるのでしょうか?

#聞いた話によると確保した動的メモリは開放されずにそのまま
#メモリに残ると聞いた事があります。

No. 1422 # 68user 2000/12/01 (金) 01:35:47
> 取得した動的メモリは開放されるのでしょうか?
UNIX では必ず解放されます。
# OS のバグがない限り

No. 1423 # komaDaDa [E-mail] 2000/12/01 (金) 17:09:04
複数個(MAX100個)のウインドウを開く為に
Display *display[100]
Widget top_level[100] の行列で宣言して
forループで,条件にヒットした場合のみ
XtRealizeWidget(top_level[i]);などと
コード化してみましたが,WINDOWが1つしか
表示しません.行列でwidgetを宣言するのに
問題があるのでしょうか??

No. 1424 # gixs 2000/12/02 (土) 03:36:38
>> 取得した動的メモリは開放されるのでしょうか?
> UNIX では必ず解放されます。

元の質問とは大きく外れますが、共有メモリ(ipcs -mで見える)だと残りますね。
単なるFYIですが。

No. 1425 # gixs 2000/12/02 (土) 03:44:52
詳細はコード見ないと指摘できませんが、

> 複数個(MAX100個)のウインドウを開く為に
> Display *display[100]

ここだけ見ても、Displayに対する誤解がある気がします。
DisplayはXサーバとの接続ポイントです。
(socketとは限らないですが)分かりやすく言えば、socketを100用意して、それぞれ独立にサーバにつなごうとしているようなものです。
# 原理的には可能ですが、100のイベントループを管理するプログラムを書くのは嫌ですね。

No. 1426 # 68user 2000/12/02 (土) 12:51:21
補足ですが、Xt では XtDisplay(top_level) で Display * が
得られるので、Display を自前で用意する必要はありません。

    % grep XtDisplay /usr/X11R6/include/X11/*
    IntrinsicP.h:#define XtDisplay(widget) DisplayOfScreen((widget)->core.screen)

No. 1427 # Mie 2000/12/05 (火) 14:25:22
突然に書き込みで質問させていただく失礼をお許しください。
現在、ソケット通信(TCP/IP、マルチ)を行うプログラムを、
参考書などを調べながら作っております。
正直、概念などが良くわかっておりませんので、的外れな
物言いがあるかもしれませんが、御容赦ください。

現在、作成しようとしているシステム(X:仮名)では、
対向するYシステムと通信します。
また、Xシステム内部のプロセス間でも、クライアント・
サーバ間の通信を行います。
これらの通信に於いて、タイマを用意し、ヘルスチェックを
行おうとしていますが、この場合のタイマを、どのような形で
用意したものかで悩んでおります。
それぞれのプロセスの中から fork()したタイマで、上記のような
動作を行おうとしているのですが、この方法で大丈夫でしょうか?
(事前の知識がありませんもので、不安を感じております。)
あるいは、このような場合の、なにか、セオリーのようなもの
というのは、あるのでしょうか?
どうか、教えてくださいませ。

No. 1428 # AkiAki 2000/12/05 (火) 21:28:19
<AWKを使用した2つのファイルの文字列比較について>ご教授願います

サンプルファイルです...
<Input File1> <Input File2> <<Output File>>
X01 X01 X025
X02 X02 X03
X03 X025 X04
X04 X07 X05
X05 X08 X06
X06 X099 X099
X07 X09
X08 X10
X09
X10

Input File1の文字列と Input File2の文字列の比較をします
結果としてOutputFileの出力を得たいのですが...

条件(雑でスミマセン)
    InputFile1の文字列が InputFile2の各文字列と一致する=出力しない
    InputFile1の文字列が InputFile2の各文字列と一致しない=出力する
            このケースでは    
                            InputFile1だけに存在する文字列
                            InputFile2だけに存在する文字列 
            がありますが
            InputFile2内の文字列を優先し
            (例) InputFile1の”X02"を比較するとき InputFile2”X02”
                     は一致している => 出力しない
                    次のInputFile1の文字列”X03”を比較するとInputFile2の”
                    次行”である”X025"は一致していない (※)
                        => X025
                                  X03
                            の様にInputFile2の文字列”X025"を出力後InputFile1の”X03”を出力
                    InPutFile1の”X04 - X06"はInputFile2に含まれない =>そのまま出力
                  "X07 - X08"は双方含まれるので出力しない
                    X09 の処理は(※)と同様に
                        => X99
                                  X09
                            の順で出力します(数としての比較ではありません)
                    X10はInputFile2に含まれない =>そのまま出力


(AWK本も2冊買い込み(良い参照本があったら紹介願います)さらに同種質問の過去ログ”No. 1342”を参考(goo の"awk"検索でやっとこのHPにたどり着きました...)に考えてみたのですがどうしてもうまく作成出来ませんでした、AWK使いの方々:どうぞ宜しくお願いいたします)

No. 1429 # AkiAki 2000/12/05 (火) 21:39:29
No.1428の修正です
申し訳ありません、サンプルファイルのスペースがおかしく
なってました再送させていただきます。
<Input File1>____<Input File2>____<<Output File>>
X01________________X01________________X025
X02________________X02________________X03
X03________________X025_______________X04
X04________________X07________________X05
X05________________X08________________X06
X06________________X099_______________X099
X07___________________________________X09
X08___________________________________X10
X09
X10


Input File1の文字列と Input File2の文字列の比較をします
結果としてOutputFileの出力を得たいのですが...

条件(雑でスミマセン)
      InputFile1の文字列が InputFile2の各文字列と一致する=出力しない
      InputFile1の文字列が InputFile2の各文字列と一致しない=出力する
                        このケースでは    
                                                        InputFile1だけに存在する文字列
                                                        InputFile2だけに存在する文字列 
                        がありますが
                        InputFile2内の文字列を優先し... 以下例文です
                        InputFile1の”X02"を比較するとき InputFile2”X02”
                                         は一致している => 出力しない
                次のInputFile1の文字列”X03”を比較するとInputFile2の”
                                        次行”である”X025"は一致していない (※)
                                                    => 025
                                                              X03
    の様にInputFile2の文字列”X025"を出力後InputFile1の”X03”を出力
      InPutFile1の”X04 - X06"はInputFile2に含まれない =>そのまま出力
                                    "X07 - X08"は双方含まれるので出力しない
                                        X09 の処理は(※)と同様に
                                                    =>X099
                                                            X09
            の順で出力します(数としての比較ではありません)
                X10はInputFile2に含まれない =>そのまま出力


(AWK本も2冊買い込み(良い参照本があったら紹介願います)さらに同種質問の過去ログ”No. 1342”を参考(goo の"awk"検索でやっとこのHPにたどり着きました...)に考えてみたのですがどうしてもうまく作成出来ませんでした、AWK使いの方々:どうぞ宜しくお願いいたします)

No. 1430 # 68user 2000/12/05 (火) 22:09:00
そもそも
> ヘルスチェック
という言葉を初めて聞いたのですが (health check?)、文脈
からして正しく通信ができているかどうか調べ、一定時間
正常な反応がないならエラーにするという意味でいいですか?

目的にもよりますが、
    1. サーバマシンが生きていて、network reachable かどうかを
          調べるなら定期的に ping を打つ
    2. TCP スタックが生きていることがわかればいいなら、定期的に
          echo サーバに接続。
    3. サーバソフトウェアが生きていることを確認するなら、NOP の
          ような何も処理をせず返事を返すだけのプロトコルを実装し、
          それを使って定期的に確認。
    4. 該当スレッドが生きていることを確認するなら、select や
          alarm でタイムアウト処理をして、一定時間反応がなければ
          エラー、という処理をする。
ってなところです。どれがお望みですか? 当然 1 が簡単
ですが、信頼性のあるのは 4 ですね。


全然関係ないところに反応するのもアレですが
> AWKを使用した2つのファイルの文字列比較について
おお、化けてる。しかも元データは…
    http://X68000.startshop.co.jp/~68user/tmp/01428
    http://X68000.startshop.co.jp/~68user/tmp/01429
正しそう。掲示板のバグですね。どこらへんだろう。

さて、本題は…今日は体力の限界に達したので…また後程。
朝起きたら誰か親切な人が答えてくれてるといいなと思いつつ、
おやすみなさい。

# 気になるのは Input File1 と Input File2 の内容は、文字列
# としてソートされていることが保証されているか、ってとこ
# ですか。されているなら簡単。されていないなら…それでも
# そんなめんどくさいことじゃないかも。

No. 1431 # 68user 2000/12/05 (火) 22:34:32
ほうぼうで話題になってるのでご存知の方も多いでしょうが、FYI。
    WXG for Linux/FreeBSD http://www.ekotoba.com/
フリーソフトです。Canna プロトコルをしゃべりますので、
クライアント側の環境設定は必要ありません。

入れ換えるには cannaserver を殺して、/tmp の.iroha-unix や
.ki2-unix (kinput2 を使っている場合) を削除し、wxgserver を
実行するだけです。で、どれくらい賢いかと言うと…(fj で見かけた
ネタですが)、
    cannaserver
        貴社の貴社が貴社で帰社した。 (問題外)
        帰社で帰社したのは帰社の帰社です (ここまでダメだとすがすがしい)
    MSIME
        貴社の記者が汽車で帰社した。(正しい)
        汽車で帰社したのは記者の記者です。(まぁ惜しいか)
    WXG
        貴社の記者が汽車で帰社した。(正しい)
        汽車で帰社したのは貴社の記者です。(正しい)

うーん、すばらしい。まだバグっぽい誤変換もありますし、
単語登録に問題アリですが、十分実用に使えます。

A.I.SOFT に感謝しつつ、周りの環境を片っ端から WXG に
replace 中。

No. 1432 # KomadaDa [E-mail] 2000/12/06 (水) 12:14:56
No.1425,1426のアドバイスありがとうございます.
i = 0,1,2,,,100
display[i] = XtOpenDisplay(context2, NULL, NULL, "TestApp", NULL, 0, &argc, argv);
とコード化しているのですが,forで回しても,どうも同じwindowが
何度も開いている様です.第1引数が悪いのでしょうか.
もう一度だけお願いします.

No. 1433 # hayata 2000/12/06 (水) 14:12:12
traceroute.cgiを期待をかけてダウンロードさせていただきました。
なかなか上手く動かないので書き込みに参りました。
上記CGIと、environment.plもFTPしましてディレクトリも変更しました。
ところがscript Errで動きません。Redhat6.2では利用できないのでしょうか?
それともDNSやDHCP等が関係して出来ないのでしょうか?
恐らく初心者の私の待ちがいとは思いますが、ご指導宜しくお願いいたします。

No. 1434 # kei 2000/12/06 (水) 19:53:38
HP−UXでメモリ内のデータをソートしたいのですが、
サイズが大きいため無理なのかなと思っています。
sortコマンドではどれくらいの件数をソート出来るか
知っている方いませんか?

No. 1435 # mm 2000/12/06 (水) 21:39:41
> AWKを使用した2つのファイルの文字列比較について
diffの出力をawkで加工、ってのじゃダメなのかな?

No. 1436 # gixs 2000/12/06 (水) 21:54:18
> No.1425,1426のアドバイスありがとうございます.
全然通じていないような・・・
Displayを複数オープンする必要はありません。

100のXサーバと接続するクライアントには応用できるので、一応書いてみました。
XtAppContextは内部で複数のディスプレイ接続に対応していますね。
しかし、あくまで、複数のXサーバと接続するクライアントの為の仕組みであって、ひとつのXサーバ相手に、複数のディスプレイ接続は無意味です。

#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>

int main(int argc, char **argv)
{
    XtAppContext ac;
    Display *dpy[100];/* ridiculous example */
    Widget w[100];
    Arg arg[2];
    int i;
    char title[64];

    /* Xt initialization */
    XtToolkitInitialize();
    ac = XtCreateApplicationContext();
    XtSetLanguageProc(NULL, NULL, NULL);

    XtSetArg(arg[0], XtNwidth, 100);
    XtSetArg(arg[1], XtNheight, 100);
    for (i = 0; i < 100; i++) {
        /* ridiculous example */
        dpy[i] = XtOpenDisplay(ac, NULL, NULL, "TestApp", NULL, 0, &argc, argv);
        sprintf(title, "%d", i);
        w[i] = XtAppCreateShell(title, "TestApp", applicationShellWidgetClass, dpy[i], arg, 2);
        XtRealizeWidget(w[i]);
    }
    
        XtAppMainLoop(ac);
}

No. 1437 # skel.103M [E-mail] 2000/12/07 (木) 20:49:07
#68user氏ではないですが。

@hayataさん
traceroute.cgiについて。
私自身 perl をやり始めたばかりなんでアレかのしれませんが、
・perlが存在するパスは?
        確認方法は「which perl」を実行したときの出力を見ることです。これ
        が「/usr/local/bin/perl」でなければ、perlが別のパスにインストール
        されているか、そもそもインストールされていない可能性があります。
        インストールされていない場合は実行不可能ですが、別のパスが出力
        された場合は、このスクリプト(traceroute.cgiとenvironment.plの両方)の
        最初の行
            #!/usr/local/bin/perl
        を修正する必要があります。例えば、「/usr/local/perl5/bin/perl」と表示
        された場合は、
            #!/usr/local/perl5/bin/perl
        とします。
・tracerouteが存在するパスは?
        確認方法は perl の場合と同様、「which traceroute」を実行したときの
        出力を見ることです。これが「/usr/sbin/traceroute」でなければ、ダウン
        ロードした environment.pl の
            $traceroute = "/usr/sbin/traceroute";
        という部分を修正する必要があります。例えば、「/bin/traceroute」と
        表示された場合は、
            $traceroute = "/bin/traceroute";
        とします。
の2つをとりあえず指摘させていただきます。これ以外にも原因が考えられる
でしょうが、少なくともこの2つを確認し、しかるべき対処をしないと実行
できませんので。

あと、このスクリプトは、*これを実行したホスト*と指定されたホストの間の
ネットワークのつながりを調べますので、
        http://X68000.startshop.co.jp/~68user/Cgi-room/
から直接実行した場合とでは出力結果が異なります。

@68userさん
traceroute.cgiで気づいたのですが、
        http://X68000.startshop.co.jp/~68user/Cgi-room/
の「www.cs.gunma-u.ac.jpと指定のホストの間の」は誤りで、正しくは
「X68000.startshop.co.jp」ではないでしょうか。

それでは。

No. 1438 # lb 2000/12/08 (金) 00:05:19
はじめまして。lbと申します。
>AkiAkiさんへ
inputfile1, 2ともあのようにソートしてあるならば、

comm -3 inputfile1 inputfile2 | sed 's/[[:space:]]*//g'

で近い出力が得られるのではないでしょうか。awk じゃなくて
すみませんが、ようするにカラムの間の space を削除すると
いうことです。[:space:]という書き方がサポートされていない
場合は s/▲*//g にしてみてください。▲は キーボードのスペ
ース の入力です。

No. 1439 # skel.103M [E-mail] 2000/12/08 (金) 03:20:32
どうも、skel.103Mです。

No.1437の
> @68userさん
> traceroute.cgiで気づいたのですが、
> http://X68000.startshop.co.jp/~68user/Cgi-room/
> の「www.cs.gunma-u.ac.jpと指定のホストの間の」は誤りで、正しくは
> 「X68000.startshop.co.jp」ではないでしょうか。
は、正しくは
----------
@68userさん
traceroute.cgiで気づいたのですが、
                http://X68000.startshop.co.jp/~68user/Cgi-room/
の「www.cs.gunma-u.ac.jpと指定のホストの間の」は誤りで、正しくは
「X68000.startshop.co.jpと指定のホストの間の」ではないでしょうか。
----------
ですね。ミスしてしまいました、申し訳ないです m(__)m

No. 1440 # komadaDa [E-mail] 2000/12/08 (金) 11:30:10
No.1436
Display *dpy[100]; -> Display *dpy; に修正しました.
わざわざコードまで,書いてもらってありがとう.
参考にさせてもらいます.

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