68user's page 掲示板

Prev< No. 907〜1007> Next  [最新発言に戻る] [過去ログ一覧]
No. 907 # 68user 2000/06/08 (木) 20:59:16
> レイズナービデオに取って見ていた女
すいません、おそらく あなたが見たコンテンツは SEGA BBS の過去ログです。
SEGA BBS は http://www.sega.co.jp/sega/p_cafe/bbs.html でやってますので、
そこに書き込んでみて下さい。

  > XtMainLoopでだんまりになっているのに、画面が表示されないのです。
つまり、ボタンなどの簡単な部品を表示するだけのプログラムが
動作しない、と解釈していいですか? ソースが短いなら、見せて
もらえばわかるかもしれませんが、わからないかもしれません。

> 自分が起動かけてる状態で、どのリソースファイルを見に
> いってるのかも分からないんです。
truss コマンドで、どのファイルを open(2) しているか
わかるでしょう。

> /usr/libの下にはX11なるディレクトリはありません。
ディレクトリは環境依存なので /usr/X11R6/lib/X11、/usr/X/lib/X11 など
に置いてある場合もあります。

> ではapp−defaultsはというと、いくつものフォルダーに
> 存在しています。(ざっと40個位) はたしてどのファイルなのやら・・・・
app-defaults/KTerm は何のファイルかご存知ですか? kterm が
起動時に読み込むリソースファイルです。

なんで kterm が app-defaults/KTerm を読むかというと、kterm の
クラス名が KTerm だからです。そのクラス名というのは、
XtAppInitialize (古い Xt なら XtInitialize) の引数で指定します。

なので、「app-defaults/あなたの作ったプログラムのクラス名」という
ファイルが存在すればそれが読み込まれますし、存在しなければリソースが
空になるだけです。

> はたまたどんなマニュアルを購入すれば
Xt の本は結構あります。秋葉原などが近いなら、ちょっと覗いてみれば
結構見付かります。ただし、古い本が多いので、既に obsolete な関数
(例えばさっきの XtInitialize とか) を紹介していたりするのが難点。
あと、少し前の UNIX USER で、数回 Xt の説明が載ってました。

No. 908 # 68user 2000/06/08 (木) 23:49:29
> XtAppInitialize (古い Xt なら XtInitialize)
違った。XtAppInitialize も obsolete でした。少なくとも
X11R6.3 なら XtOpenApplication を使いましょう。

# From XtOpenApplication(3Xt)
#  XtAppInitialize and XtVaAppInitialize have been superceded
#  by XtOpenApplication and XtVaOpenApplication respectively.
#
# be supereded ≒ be obsolete と解釈してよいのだろうか?

No. 909 # james [E-mail] 2000/06/09 (金) 17:55:20
毎日どうもありがとうございます。感謝感謝です。

たくさんのコメントどうもです。
まず、app-defaultsファイルの件はtrussと言うコマンドで分かりました。


次に、XtOpenApplicationを使ってコーディングしてみましたが、(以下)
    disp=XtOpenApplication(app1,"xmfonts",NULL,0,&argc,argv,NULL,
        applicationShellWidgetClass,NULL,0);
パラメータの値がよく分かりません。でもこれでコンパイルしたところ
以下のようなエラーでコンパイル出来ません。
内のX11のバージョンは分かりません。
cc /export/home1/sakou/srclib/cstlib/xmfonts.c -c -g -I /usr/openwin/include -I /usr/dt/include
"/export/home1/sakou/srclib/cstlib/xmfonts.c", line 78: warning: improper pointer/integer combination: op "="
cc -o xmfonts xmfonts.o -lXm -lXt -lX11 -lm
Undefined first referenced
  symbol in file
XtOpenApplication xmfonts.o
ld: fatal: Symbol referencing errors. No output written to xmfonts
*** エラーコード 1
make: 致命的エラー: ターゲット `xmfonts' の構築用コマンドが失敗しました。

最後に、マニュアルは、地方にいるので書店にいってもX-windowsのマニュアル
なんてほとんど皆無です。
どんなマニュアルがあるかも分からないのでネット上で一生懸命探しているのですが
内容が分からないのと、価格がPCの物と比べて高価なのとでなかなか
自分では決められない状況です。

もう一つ、自分の無知さがまた一つ分かりました。
X-windowsのプログラムはXlibだけでもコーディング出来るのですか?
XツールキットとかMotifルーチンとかが無くても出来るのですか?
XツールキットとかMotifルーチンは簡単にコーディングするための
ライブラリーなのですか?
ほかにOpenGLとかXveiwとかも聞きますがそれらの位置関係が全く
分かっていない事が分かりました。(今まではすべて使って初めてプログラムが
完成する。と思っていました。それなのにサンプルプロは様々な関数を
使ってあるのでなぜ???って)

ではまた。byebye。です。

No. 910 # 68user 2000/06/09 (金) 22:35:15
すいません、Xt のつもりで書いてました。Motif なんですよね。
Xt* のくだりは無視して下さい。その他は後ほどまた書きます。

No. 911 # 68user 2000/06/11 (日) 00:58:18
> X-windowsのプログラムはXlibだけでもコーディング出来るのですか?
> XツールキットとかMotifルーチンとかが無くても出来るのですか?
> XツールキットとかMotifルーチンは簡単にコーディングするための
> ライブラリーなのですか?
答えは全て YES です。Xt も Motif も最終的には Xlib の API を呼びます。
    http://www.ainet.or.jp/~inoue/im/basic.html#api
が参考になるでしょうか。ただし、Xlib だけでやろうとすると
入力フォーム一つ作るのにも相当苦労するでしょう。

# この方のページはとても質が高いので、UNIX を使う人は
# 一通り目を通しておいた方がよいと思います。

ちなみに、
> 極端な話、Xlibを使わずソケットプログラミングで直接 X protocol を
> 話すXクライアントアプリケーションを作ることも原理的には可能です。
というのは、/tmp/.X11-unix/X0 に対して UNIX ドメインソケット経由で
X プロトコルを話すとか、ポート 6000 に対して X プロトコルを話す、
ということです。

> ほかにOpenGLとかXveiwとかも聞きますがそれらの位置関係が全く
僕もわかってません。なので、偉い人に聞いてきました。
    http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/log/200006/20000610.html
の (Jun 10 00:26)[go] を読んで下さい。
# …全然わかってなかったんだなぁ。

あと、OpenGL は 3D を描画するためのライブラリです。

> 最後に、マニュアルは、地方にいるので書店にいってもX-windowsの
> マニュアルなんてほとんど皆無です。
こっちも
    http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/log/200006/20000611.html
をどうぞ (6/11 07:00 あたりにならないと作成されません)。

> 次に、XtOpenApplicationを使ってコーディングしてみましたが
やはり Motif であっても XtOpenApplication を使うべきだとは
思いますが、お使いの openwin が X11R6.3 より古い規格に準拠して
いるのではないかと思います。

> 内のX11のバージョンは分かりません。
man X とすると、最後に
    X Version 11     Release 6.3
などと書いてあると思います。

以下、ひとりごと。Perl/Tk 800.xxx 系の日本語化パッチ。
    http://opinion.nucba.ac.jp/~tsutomu/perltk/jp-patch.html
やっと見付けられた…。

No. 912 # kasuga 2000/06/13 (火) 03:34:40
グラデゥウスの基盤手に入ったがどうしても無敵技で来ません
教えてください
4面でフォースフィールドつけながらクリアーして
そのあとまたはりなおすんですか??

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 913 # 参考になりました。 2000/06/13 (火) 14:36:51
私は課題研究という授業で
ゲーム業界についてというテーマで
いろいろ調べています。
その中で、ここが検索に引っかかりました。

日付から見てかなり前のものだったようですが、
中古ゲーム販売についての論争、
とても参考になりました。
当然、こんなテーマで調べているのですから
私自身ゲームもやりますし、
中古店も利用しています。
いろいろ考えさせられました。

参考といってもあの内容をそのまま引用したり
するわけではありません。
調べる範囲に中古市場を加えることを
視野に入れて・・・変な文章・・
とにかく、それを加えることを決めました。

報告書作成まで、日にちが余りないのですが
がんばってみようと思います。
勝手ながら少しばかりご挨拶をさせて
いただきました。

No. 914 # へにか@箇条書き [URL] 2000/06/14 (水) 23:02:08
おひさしぶりです。いつぞやは、お世話になり、ありがとうございます。

早速ですが、質問がございます。
echo-3.htmlには、
> このように SOMAXCONN を指定すると、 OS が許す最大値を意味します。
とあって、且つ、
> FreeBSD2.2.7 では /usr/include/sys/socket.h で
> #define SOMAXCONN 128
>と定義されているので、
とあります。

で、以下の1)と2)のどちらに解釈していいのか悩んでいます。
1) この例の128は、クライアントや言語に依らず(?)、OSによって
    一意に決定されるもの。
2) この例の128は、クライアントや言語に依って、決定されるもの。
    (∵128と書くということは、減らすのはもちろん、増やすのも可能?)
    (これが真なら、いじる方法はありうるでしょうか?)
なぜ、このような質問をするかというと、
a) 事の発端は、自作proxy( http://henika.virtualave.net/view.cgi?0 )
    で、 http://henika.virtualave.net/japanese/browsers.htm
    (厳密に言うとローカルマシン上でテストしてます)見に行くと、画像の
    枚数が多いせいか、全ての要求を受付てくれない(logで確認済み)。
b) でも、自作proxyを経由しないと、ちゃんと表示される。
c) そこで、SOMAXCONNをいじれないか?
と、思ったからです。

多分、いじれそうにないな、とは思っているのですが、もし、いじる
方法(perlのコンパイルを除く)をご存知でしたら、ご教授願いたく、
よろしくお願いします。

因みに、環境はwindows98, perl -vでは、
This is perl, version 5.005_03 built for MSWin32-x86-object
と表示されます(失礼ながら、windowsをご存知ではないのは、過去ログ
から、承知しておりますので、perlでいじれる方法、ということで、
お願いします)。

・・・とかいいつつ、delegateのように、delimiter(但し/-_-ではなく/)で
imgタグをproxy経由させないように改定してしまいましたが、気になって
気になって仕方がない・・・

No. 915 # へにか [URL] 2000/06/14 (水) 23:12:17
すいません、先の自作proxyは、あれ単体では動作しないので、
もし、眺めるのでしたら、お手数ですが、
http://henika.virtualave.net/view.cgi?0 を適当な名前に、
http://henika.virtualave.net/view.cgi?1 をfilter.plに、
http://henika.virtualave.net/view.cgi?2 をhtrans.plに
してください。

宜しくお願いいたします。

参照 http://henika.virtualave.net/japanese/proxy.htm

No. 916 # 68user 2000/06/14 (水) 23:24:55
> グラデゥウスの基盤手に入ったがどうしても無敵技で来ません
わからないです。というか、無敵技があったのか。
# ちなみに基盤じゃなくて基板です。

> 参考になりました。
と言っても、僕が書いた文章ではないので扱いには
お気をつけ下さい。まぁ、
> 参考といってもあの内容をそのまま引用したりするわけではありません。
ということなので、心配はしておりませんけど。


> 1) この例の128は、クライアントや言語に依らず(?)、OSによって
>  一意に決定されるもの。
です。

(FreeBSD では) この数はカーネル内部に書かれており、動的に数を
変更する仕組みもないので、一般ユーザでも root でも変えられません。
どうしてもというならカーネルの再コンパイルでしょうか。

とはいえ、他の UNIX 系 OS では動的に変更できたりする *可能性* はあります。
# ioctl とかで変更できても不思議ではないけど、できなくても不思議ではない。

> 画像の枚数が多いせいか、全ての要求を受付てくれない(logで確認済み)。
なお、FreeBSD では SOMAXCONN は128で、128*1.5=192 なので、待たせて
おけるクライアント数は最大 192 になります。しかし、本当にそれくらいの
コネクションが張られているのでしょうか? netstat で見ると ESTABLISHED に
なっているのが そんなにたくさんありますか?

あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん
接続してみればわかると思います。

なお、http://X68000.startshop.co.jp/~68user/net/echo-3.html には
> もし backlog 以上のクライアントが同時に connect してきた場合は、
> サーバは接続を拒否するか、何もレスポンスを返しません。
とありますが、おそらくこれは間違いで、拒否することはありません。
カーネルレベルで無視するだけで、サーバプログラム側はクライアントが
やってきたことすら検知できません。

一方クライアントからは TCP の 3way handshake の1発目の SYN に対する
返事が返ってこないので、そのうち SYN を再送、という挙動をすると思います。

No. 917 # 68user 2000/06/14 (水) 23:25:53
> ioctl とかで変更できても不思議ではないけど、できなくても不思議ではない。
ioctl はありえないですね。デバイスじゃないんだから。

No. 918 # へにか [URL] 2000/06/15 (木) 22:29:25
ご回答、ご指導、どうもありがとうございます。

>カーネルの再コンパイルでしょうか。

こ、この時点で、止めが刺された気がしました。A^^;
多分、windowsでもあてはまるのでしょう。

>しかし、本当にそれくらいのコネクションが張られているのでしょうか?
> netstat で見ると ESTABLISHED になっているのが そんなにたくさんありますか?

早速、試してみました。
netstatで、ESTABLISHEDとなった本数(数回やった場合の最大)を以下に示します。

Local Address = n:80 は、 2
Local Address = n:8080 は、 5
Local Address = n:15xx は、 7 (15xx=1500番台)

http://henika.virtualave.net/japanese/browsers.htm には、このページ+36枚画像
あるので、ブラウザと思われる1500番台が、想像ですが、20近くないとおかしいような
気がします。この時点で、SOMAXCONNの値は1桁台と推測しました。

この時点で、自動的に、
>あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん
>接続してみればわかると思います。
を、満たしてしまっているような気がします・・・

因みに、SOMAXCONNをperlで表示させると、 5 でした(以下を実行)。
use IO::Socket;
print SOMAXCONN;
(思いつきで試したので、あまり意味がないかもしれません・・・)
これが正しければ、待たせておけるクライアント数は、5+alphaで、先の推測には
合致してるなぁ、と思い込んでいます。

う〜ん、windowsって、少ないのかなぁ? なんかうそっぽいなぁ。

>カーネルレベルで無視するだけで、サーバプログラム側はクライアントが
>やってきたことすら検知できません。

なるほど。windowsでも同様であれば、当方の現象(全ての要求を受付てくれない)
も納得いきます(logにクライアントから要求されるはずのイメージ・ファイルが
要求されていないようになっている)。

>一方クライアントからは TCP の 3way handshake の1発目の SYN に対する
>返事が返ってこないので、そのうち SYN を再送、という挙動をすると思います。

申し訳ないのですが、このあたりは、まだよくわからないので、確かめられません。
今後の課題・勉強材料とさせてください。

No. 919 # 68user 2000/06/16 (金) 01:48:47
> これが正しければ、待たせておけるクライアント数は、5+alphaで、
> ...
> う〜ん、windowsって、少ないのかなぁ? なんかうそっぽいなぁ。
うーん、ちょっとうそっぽいですねぇ。いくらなんでも一桁ってのは…。

SOMAXOCNN が誤って5になってしまったから、それ以上接続できない
という可能性はないですか? backlog に 10 や 100 を渡すと
どうなりますか?

僕はこれ以上わかりませんが、もし Winsock に詳しい方が
おられましたら教えて下さい。

No. 920 # james [E-mail] 2000/06/16 (金) 16:46:58
お久しぶり(?)です。

色々情報をもらって少し頑張って見たつもりですが、もーイヤ!と言う感じです。
やっぱり自分にはX−windowのプログラム作成は無理なんでしょうか?
そんなに簡単に出来るとは思っていませんが、でもいまの状態では全く持って・・

でも一つだけ決めた事があります。それは、Xlibだけで作成するのはやめよう
と言う事。馬鹿げた事を、と思わないでください。この結論を出すのもとっても
大変な位にX−windowに関して無知なんです。

まだ迷っているのはMotifを使うか使わないかと言う事。
で、とりあえず何かを始めないと、と思い、XtとMotifをこだわらずに(
これがまた問題なのですが)サンプルプロをアレンジして、自分の作りたいアプリ
に近づけようと努力しました。が、もーイヤと言うかダメと言う感じです。

Xlibだけを使用したサンプルプロにイベント処理(具体的にはPointerMotionMask)
があったので、そのサンプルを加工して、画面に現在のカーソル座標を表示させる
所はOKになったのです。でもXtで作り直そうと思って関数を探して(これも
大変な作業です 自分には)XtAddCallback、XtAddEventHandlerを使おうと思ったまでは
良かったのですが、パラメータ中のイベントマスク名が何を見ても一部しか載って
いないのです。PointerMotionMaskに相当するベントマスク名が・・・・・・・!!

これじゃー全然はかどらないよ!!って訳です。
やっぱり絶対にマニュアル不足ですかね?
それともマニュアル以前の問題ですかね?
どう思われます? 率直な意見を教えてください。
(でも「あなたには無理です」と言う究極の意見は勘弁してください。首が
かかっているんです)

愚痴になってしまいました。ごめんなさい。
ここしか頼るところ無くって、申し訳無いと思っているのについ書かずに
いられないんです。

また来週元気出して頑張るぞ!!   じゃあまたネ!!

No. 921 # hsj 2000/06/17 (土) 04:45:06
はじめまして。
ずっとROMオンリーだったのですが、書きこんでみます:)

@へにかさん
>因みに、SOMAXCONNをperlで表示させると、 5 でした
winsock-ver1のSOMAXCONNはホントに5です。ネタじゃなく。
winsock-ver2になってはじめて0x7fffffffになりました。
思うに、perlはwinsock-ver1のヘッダを使っているのではないでしょうか。
さらに、テストされているブラウザはIEかネスケだと思いますが、
どうもブラウザ側が、5より多くのコネクションを張らないようですね。
これはおそらく、前述のwinsock-ver1にも対応させるためだと思われます。
#自信は無いです(笑
なので、プロキシ側でいくらbacklogを増やしても、
ブラウザ側が接続しに来てくれないんだと思います。

@jamesさん
XとMotifを使っての開発は、かなり昔にHPとSolarisで行った事があるのみなのですが、
#もうほとんど忘れています(苦笑
その時に非常に役に立った書籍として、
・日刊工業新聞社「X-Window Ver.11 プログラミング」
・日刊工業新聞社「OSF/Motifプログラミング 」
の2冊をあげてみます。
見た目がかなり初心者向けっぽいのですが、
なにもわからなかった頃から、だいぶ理解できてきた頃まで、
ずっと役に立ってくれました。
オススメです。
#ちょっと検索かけたら片方だけでてきました↓
http://www.pro.or.jp/~fuji/computerbooks/unix-x/osfmotif.nikkan.html

@68userさん
どうも、はじめまして。
いきなりでアレなのですが、:)
httpサーバがContent-Lengthを返してくれないコンテンツには、
クライアント側からどのように対処するべきでしょうか。
現状の自作proxy(この書き込みもコレ経由です)では、
サーバ側からの切断を待っている状態ですが、
どうもこちら側から切らなければいけないようで、
毎回タイムアウトで自分から切るハメになっています。
#例えば、下でへにかさんが示しておられるURLから示されているGIF画像もそうですね。
IEやらネスケやらのブラウザはやってくれているようなので方法はあると思うのですが、
探し方が悪かったのか見つかりませんでした。
なにか、普通こうするだろ、って言うような方法というのは有るのでしょうか?
もし知っていらっしゃったら、ぜひ教えてください。
よろしくおねがいします。

・・・でも、画像ファイルの中を見て長さを取得してたりしたらイヤだなぁ(笑

No. 922 # へにか [URL] 2000/06/17 (土) 12:15:50
68user様、hsj様、ご教授、どうもありがとうございます。

68user様>backlog に 10 や 100 を渡すとどうなりますか?

backlogを、思い切って128に増やして、netstat 1 で、1秒刻みで出力した結果を
以下に示します。
前回、netstatを、(間抜けなことに)手動で何回も実行した結果を示しましたが、
そのためか、前回とは異なる結果になってしまいました。すみません・・・

backlog = 128
Local Address = n:80 は、 7
Local Address = n:8080 は、 5
Local Address = n:14xx は、 12 (14xx=1400番台)

backlog = SOMAXCONN
Local Address = n:80 は、 8
Local Address = n:8080 は、 5
Local Address = n:15xx は、 12 (15xx=1500番台)
Local Address = n:ingreslock は、 1 (←ほとんど出ない)

上記の結果から、backlogを増やしても、大差ないみたいです。

hsj様のご示唆から考えて、proxyを経由しない場合を調査しましたので、以下に
示します(上記の結果に対応しています)。

Local Address = n:80 は、 5
Local Address = n:16xx は、 5 (16xx=1600番台)
(但し、Netscape3.0)

確かに、おっしゃるとおり、
hsj様> 5より多くのコネクションを張らない
ようですね。

でも、proxy経由しないほうが、ちゃんと画像が表示されるので、今、僕は
混乱の極みです(今までも混乱してますが)。
proxy経由すると、コネクションが張られっぱなしみたいなので、どうも、
backlogが怪しいわけではない??? となると、proxyが黒ですね。

hsj様>httpサーバがContent-Lengthを返してくれないコンテンツには、
hsj様>クライアント側からどのように対処するべきでしょうか。

このご質問が、良い示唆になって、ありがたいです。ここを対処すれば、

>へにか@箇条書き [URL] 2000/06/14 (水) 23:02:08
>a) 事の発端は、
{略}
>全ての要求を受付てくれない(logで確認済み)。

が、うまく解決できそうな予感がします。

追伸1:
だんだん、わかってきたような気がして(実際にわかってるかどうかはおいといて)、
嬉しいです。こちらの掲示板でお世話になって、よかった、と思っています。

追伸2:
明日(日曜)から、1週間(弱?)程度、出張に行ってきますので、書き込みが
遅れるかも知れません。色々アドバイス頂いているのに、大変申し訳ないです。

No. 923 # 68user 2000/06/17 (土) 13:07:57
@james さん
> それは、Xlibだけで作成するのはやめようと言う事。
賢明な選択でしょう。

> やっぱり絶対にマニュアル不足ですかね?
だと思います。この前のチャットのログや hsj さんの情報を
元にして何か本を買わないと苦しいと思います。

UNIX で GUI アプリを作るなら、Gtk+、Qt、Perl/Tk などの
選択肢もあります。入門書は結構出てます。ただ「困っても
その本を読めば絶対にわかる」といったレベルまで 徹底的に
解説した本はないですね。

ただ、仕事に使えるほど熟成しているかというと、ちょっと不安ですが。
# Gtk+ や Qt って、もう API の仕様は固まったのかしら?

@hsj さん
> winsock-ver1のSOMAXCONNはホントに5です。ネタじゃなく。
> winsock-ver2になってはじめて0x7fffffffになりました。
なるほど。どうもです。

> サーバ側からの切断を待っている状態ですが、
> どうもこちら側から切らなければいけないようで、
HTTP/1.0 なら常にサーバ側から切ってくれますので、
    while (<SOCKET>){ print }
でいけるはずです。

マルチスレッドなら select で待って、
    $len = read(SOCKET,$buf,8192);
    if ( ! $buf ){ 切断された } # $len==0 の方が better かな?
てな感じでどうでしょうか。


@へにかさん
> proxy経由すると、コネクションが張られっぱなしみたいなので、どうも、
> backlogが怪しいわけではない??? となると、proxyが黒ですね。
ですね。本来、proxy がやってきたクライアントをさくさく accept
していれば、SOMAXCONN が 1 でも影響は出ないはずですから。
うまくマルチスレッド化できているかどうか調べてみて下さい。

なお、
> Local Address = n:8080 は、 5
というのは accept 済のコネクションと accept 前の OS がキューイング
しているコネクション、両方の合計が 5 ということです。なので、
この調べ方はあくまでも目安にしかなりません。念のため。

厳密に調べたければ
> あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん
> 接続してみればわかると思います。
をやってみてください。

No. 924 # hsj 2000/06/18 (日) 07:23:19
@68userさん
>HTTP/1.0 なら常にサーバ側から切ってくれますので
はい、そのハズなのでそれを待っているのですが、
#ちなみにCでつくっています
どうも、なかなか切ってくれないようなのです・・・
・・・というのが疑問だったのですが、解決しました:)
つくった機能のうち、環境変数の追加と削除で、
深い考え無しに、「Connection: Keep-Alive」を追加していました。
さらに追い撃ちで、HTTP/1.0にもかかわらず、
httpdによってはコレを解釈してくれているようで。
基本に戻ってrfc2616ながめてて気が付きました・・・あぁマヌケ。
そこで、この環境変数を「Connection: close」に修正したところ、
期待通り、httpd側からサクサク切ってくれるようになりました。
なにはともあれ、ありがとうございました。

@へにかさん
もしかして、へにかさんのおっしゃっておられる、
「プロキシを通すとコネクションが張られっぱなしになる」というのも、
この辺りと関係がないでしょうか?

No. 925 # mark11 2000/06/18 (日) 16:10:42
はじめて書き込みます.UNIX初心者のものです.

ソース環境がひとつで2つのアプリを作っているのですが,
毎回できたオブジェクトを手作業で退避・圧縮しています.
この作業をmakefileに記述したいのですが,次の記述でよい
でしょうか.

BAKDIR2 = /tmp/backup2/

test2.o.gz: test2.o
        cp -p test2.o $(BAKDIR2)
        gzip $(BAKDIR)/test2.o

ご指導よろしくお願いします.

No. 926 # 68user 2000/06/19 (月) 00:36:46
> 深い考え無しに、「Connection: Keep-Alive」を追加していました。
なるほど。HTTP/1.1 まわりではまるのは よくありますよね。
# Host ヘッダを付けず HTTP/1.1 を使ってはまるとか。

> この作業をmakefileに記述したいのですが,次の記述でよいでしょうか.
よいように見えますが、そちらではうまく動いていないんですか?

No. 927 # とろと 2000/06/19 (月) 11:48:19
どっかのホームページを読み込んできて
タグ以外と、コメントを削除する
ということをやりたいんですが、

http://www.din.or.jp/~ohzaki/perl.htm

タグを削除する
というのがあったので、これをタグ以外を削除
にしてみたのですが、
コメントタグが消えてくれません、、

<!-- -->で囲まれている中身と、<!--、-->も消えてほしい。。

消したいんですが、どのように改造するといいで
しょうか?

---ソース---
$tag_regex_ = q{[^"'>]*(?:"[^"]*"[^"'>]*|'[^']*'[^"'>]*)*}; #'}}}}
$comment_tag_regex =
        '<!(?:--[^-]*(?:(?!--)-[^-]*)*--(?:(?!--)[^>])*)*(?:>|(?!\n)$|--.*$)';
$tag_regex = qq{$comment_tag_regex|<$tag_regex_>};
$text_regex = q{[^<]*};

$result = '';
while ($str =~ /($text_regex)($tag_regex)?/gso) {
    last if $1 eq '' and $2 eq '';
    $result .= $2;
}
------
あ、本当はとほほラウンジに書きたかったのですが、
書き込みできなかったので、、

No. 928 # hobbes 2000/06/19 (月) 18:10:26
こちらで質問をさせて頂きたいのですが、unix commandで、OS及びHWが
32bitか64bitと知るにはどの様なコマンドを打てばよろしいのでしょうか?
教えていただきたいと思います。

No. 929 # 68user 2000/06/19 (月) 20:04:37
> <!-- -->で囲まれている中身と、<!--、-->も消えてほしい
まずタグ以外を消して、再度 <!-- --> を消すような正規表現を
使うというのはダメですか。

# ちょっとその正規表現を読む気力がないので…。

> OS及びHWが32bitか64bitと知るにはどの様なコマンドを
> 打てばよろしいのでしょうか?
思い付くのは printf("%d\n",sizeof(int)); くらいですかねぇ。

これが「OS及びHW が32bitか64bit」という判断の基準として
ふさわしいかどうかはわかりません。

No. 930 # hobbes 2000/06/20 (火) 09:25:59
68userさん、

回答ありがとうございました。

No. 931 # 腐れ厨房 [E-mail] 2000/06/20 (火) 17:03:17
初めましてです。このサイトはとてもわかりやすく書かれていて嬉しいです。
ところでHTTPクライアントを作りたいのですが、その前にブラウザがどんな環境変数やデータを吐いてるか尻たいです。
tcpdump -i ul0
などとやってみましたが意味不明でしたです。
GET / HTTP/1.0
Referer: http://hoge/hoge
っていうようなテキストベースでのデータや相手の送信内容を知るにはどしたらいですか?

No. 932 # 68user 2000/06/21 (水) 00:04:18
http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=658
でいいですか。

あと、tcpdump の吐く hex データから tcp 部分を抽出する
スクリプトを作るというのも、TCP と IP の勉強になります。

No. 933 # wave 2000/06/21 (水) 15:45:13
質問させて下さい。

こちらのホームページで、アクセス状況をグラフ表示していますが、
これはどうやったら出来るのでしょうか。

DBからデータを取得し、グラフ表示をしたいのですが、具体的な
方法が分かりません。
何か参考に出来るのではと思い、お尋ね致します。
宜しくお願いします。

No. 934 # 68user 2000/06/22 (木) 02:23:58
1時間に一度 (cron で実行)
    http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/countup.hour

    http://X68000.startshop.co.jp/~68user/count/total.top
にその時点でのカウンタ値を追加し、さらに1時間に一度
    http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/make-count

    http://X68000.startshop.co.jp/~68user/count/out/day.top
を作成してます。

画像表示用 CGI は
    http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/view-count.cgi
です。

GIF の生成には fly コマンドを使っていますが、例の GIF 圧縮の
特許の問題で Unisys からクレームが付く可能性があります。png 版に
入れ換えようと思ってはいるのですが、なかなか時間が取れず
ほったらかしになってます。

画像データ生成が面倒なら、
    http://www2s.biglobe.ne.jp/~cru/library/zddbbs/cgi-bin/wwwboard.cgi
の投稿コードの画像のように、xbm (モノクロ) や xpm (カラー) 形式を
使う手もあります。xbm も xpm もただのテキストファイルです。

No. 935 # wave 2000/06/22 (木) 10:13:08
68userさん、ご丁寧に回答いただき感謝します。
参考にさせていただきます。
どうもありがとうございました。

No. 936 # ookubo 2000/06/22 (木) 13:37:01
初めて書き込みます。
皆さんにひとつ教えていただきたいことがあります。
実は、ある会社でメールサーバーを作ってるのですが外部からのリレー
を許可したいのです。
ところがSPAM対策も大事ということで行き着いた答えは
「POP before SMTP」です。
http://www.venus.dti.ne.jp/~phashim/fmv/POPbeforeSMTP.html
を参考にと思ったのですが、私のQpopperは
バージョン3.02すでにPOP認証のログを吐き出しています
これを利用すると書いてあるのですが
どのようにすればいいのでしょうか
どなたか、アドバイスお願いします

No. 937 # sawa [E-mail] 2000/06/22 (木) 15:26:54
はじめまして、UNIX始めて2週間くらいたちました。
で、いきなり躓いてしまい先輩方に教えていただきたい事が在ります。
cシェルで、複数件のファイルを一つずつ読みたいのですが、
どうしてもうまく行きません。
とりあえず、リストファイルを作ったまでは良いのですが、

ls -1 > TAR.list
awk 'substr($1,8,3)~ /tar/ {print}' TAR.list> TAR.result

そのファイルを頭から一件づつ読むやり方がわかりません。
何か良い方法が在ったら教えてください。

No. 938 # 68user 2000/06/22 (木) 21:37:44
@ookubo さん
> バージョン3.02すでにPOP認証のログを吐き出しています
という意味がわからないです。3.02 なので修正点が違うから
困っているということですか? 既に認証リストはあるので
POP before SMTP 用の無駄なログを吐きたくないということですか?

@sawaさん
> awk 'substr($1,8,3)~ /tar/ {print}' TAR.list> TAR.result
awk なんてすっかり忘れてしまったなぁ。最初見たとき
書き間違いかと思った。

> そのファイルを頭から一件づつ読むやり方がわかりません。
foreach fn (`cat TAR.list`)
    ls -l $fn
end
てな感じでいいですか? ファイル名に空白や *、? などを
許すなら、事前に sed あたりで変換しておく必要があります。
# まぁ、csh スクリプトでこだわっても仕方ないですけどね。

No. 939 # バグっ太 [E-mail] 2000/06/23 (金) 11:45:23
突然ですが質問させてください
初心者なんで的外れかもしれませんが・・・

あるサーバソフトを作成中ですが、そのサーバソフトが起動時に
読込む設定ファイルのパスってどうすればいいんですかねぇ・・・
fopenする時ってフルパス指定するじゃないですか(違います?)
でサーバソフトはInetdで起動されるんです。
だから何処で動いているかわかりませんよね
どーすればいいのかなぁ・・・ 教えてくださーい
inetd.confの起動時オプションですか???

No. 940 # TOMO [E-mail] 2000/06/23 (金) 11:58:46
お聞きしたい事があるのですが、
使っているOSは、FreeBSDで
viで作成したファイルをフロッピーディスクに
保存したいのですが、どのようにすればよろしいのですか?
あと、その保存したフロッピーをWin98でも見れるように
するには?
よろしくお願いします。

No. 941 # 68user 2000/06/24 (土) 03:56:02
> fopenする時ってフルパス指定するじゃないですか(違います?)
フルパス指定でもいいし、カレントディレクトリからの
相対パスでもいいです。

> だから何処で動いているかわかりませんよね
getcwd(3) でカレントディレクトリを取得して、
どこかに出力させてみればわかるでしょう。


> その保存したフロッピーをWin98でも見れるようにするには?
    - Windows98 でフォーマットして、mount_msdos して cp して umount
    - Windows98 でフォーマットして、mcopy file a:
どちらでもよいです。
    http://www.jp.FreeBSD.ORG/QandA/HTML/640.html

FreeBSD で DOS フォーマットしたいなら
    http://www.jp.FreeBSD.org/QandA/HTML/350.html

No. 942 # takuro [E-mail] 2000/06/24 (土) 15:42:13
こんにちは。初めて書き込みするtakuroという者です。
このbbsでは、ユーザー同士の疑問や知識の交換がされていると知って書き込みしたんですが、ページの趣旨にあっていない質問だったら、無視して下さい。
winzipの事なんですが、解凍する時に、パスワードを入れるように設定して圧縮したんです。そしたら、長い間そのファイルをほうっておいたせいで、パスワードを忘れてしまい、解凍できなくなってしまったんです。
中身は重要な物が入っているんですが、必要なときに取り出せなくなってしまって、大変なんです。どなたか、解決の方法を教えて下さる方、いらっしゃいませんか?メールでも何でもいいので、どうか連絡をよろしくお願いします。

No. 943 # @ 2000/06/24 (土) 23:02:43
>takuro
PikaZipとか??
http://nagoya.cool.ne.jp/pusa/

パスワードはどのくらいの長さ?
ローマ字の小文字なら、、速いかな、、(謎

No. 944 # ほうり幸正 [URL] 2000/06/27 (火) 17:42:43
航空機事故で検索していたらこの掲示板にたどり着きました。
「日航機墜落事故 東京大阪123便 新聞見出しに見る15年間の記録」
のホームページです。

No. 945 # 流れ星 2000/06/28 (水) 14:27:10
ネットワークに関して教えてください。
ホームルータ経由でISDN回線に接続し、モデムとつながれている端末にアクセスすることはできるのですが、モデムでつながれている端末はホームルータないの端末にアクセスすることができません。
ルーティングテーブルの設定が必要なのかと思いますが、どのように設定したらよいかわかりません。
ホームルータのグローバルアドレスとかみることとかできるのでしょうか。
これについて詳しい人がいたら、教えてください。よろしくお願いします。

No. 946 # has 2000/06/28 (水) 20:08:06
つまらない質問でごめんなさい。
perl 5.004_04について教えてください。

スクリプトの最初にifを書くと、その後のスクリプトが
どうであろうがCompilation errorになって実行できないのですが、
これはバグなんでしょうか?
もしバグだとしたら、広く知られたものなんでしょうか?
以下余分に長いサンプル(split.pl)です。

#!/usr/local/bin/perl
if(#$ARGV != 1) { die "Usage: split.pl keyword file\n"; }
$keyword = $ARGV[0];
$infile = $ARGV[1];
open(IN, $infile);
$prefix = "$infile-split-";
$suffix = "000";
$file = ">$prefix$suffix";
open(OUT, $file);
while($line = <IN>) {
        print OUT $line;
        if($line =~ /^\s*$keyword\s*$/) {
                $suffix = sprintf "%03d", $suffix+1;
                $file = ">$prefix$suffix";
                open(OUT, $file);
        }
}

No. 947 # 68user 2000/06/28 (水) 20:27:40
@has
> if(#$ARGV != 1) {
#$ じゃなくて $# っすね。

> これはバグなんでしょうか?
ちなみに (言うまでもないかもしれませんが) ちょっと前までの
stable は 5.005_03 です。今の perl5.6 はかなり buggy だとか
# と perl の偉い人が fj で言ってた。

あと、7/22 か 8/12 か 8/20 あたりにそちらに寄りますので、
もし居るならよろしく。


@流れ星
> ネットワークに関して教えてください。
NAT もルーティングも、ソフトウェア (FreeBSD) でしか
やったことがないので、アドバイスできません。

NAT かましてるかどうか、ルータの型番、モデムの端末が
LAN 内にあるのか外にあるのか、などを書いて fj.net.lan など
に投稿するといいでしょう。

# でも、最近のってほとんど http://ルータのIPアドレス/ で
# 設定できるんでないの?

No. 948 # kick 2000/06/29 (木) 06:25:19
はじめまして
perl(CGI)でAccessLogを取るScriptを
作っています。
HTTP以外の情報って取得できるのですか?
例えば、FTPなどのAccessLogとか...

No. 949 # 68user 2000/06/29 (木) 08:45:29
> 例えば、FTPなどのAccessLogとか...
無理です。FTP と HTTP は別物だから。

No. 950 # has 2000/06/29 (木) 14:40:11
@68user
>#$ じゃなくて $# っすね。
ふぇえ、おはずかしい。
真っ先に人のせいにしてしまうなんて…。

>今の perl5.6 はかなり buggy だとか
冷静に人のシステムを批判できる人って
やっぱ偉いですよね〜。

No. 951 # よしだ 2000/06/29 (木) 17:12:30
68userさん皆さんはじめまして
早速なんですが、CGIを自分のNTマシンで開発してUNIXの本番環境でTESTしているのですが、
先頭行の#!〜の記述がNTとUNIXで違うので毎回直しているのですが
面倒なのでNT側のアパッチで自己完結型を使わないでCGIを動かしたいのですが
なにか方法をご存知無いでしょうか?

No. 952 # 68user 2000/06/29 (木) 22:53:42
> 先頭行の#!
Windows 使ってないのでわからないです。

多分 Windows では #!/bin/sh というような書き方ができない、って
ことなんだろうと思いますが、もし単にパスが違うだけならやりようは
あります。もしそうなら再度質問して下さい。

No. 953 # よしだ 2000/06/30 (金) 09:33:40
> もし単にパスが違うだけならやりようはあります。
> もしそうなら再度質問して下さい。
すみません、おっしゃる通です
Windowsが #!C:/Perl/bin/perl で
UNIXが #!/usr/local/bin/perl です
どうにかなるでしょうか?

No. 954 # Netboy [E-mail] 2000/07/01 (土) 03:03:59
よしださん

Win機の
1.Apacheをインストールしたのと同じドライブに
2.\usr\local\bin\を掘って
3.Perl一式(Perl.exeとDLL類)を入れれば

#!/usr/local/bin/perlで参照できると思います.
お試しください.

No. 955 # YOSHI [E-mail] 2000/07/02 (日) 22:33:37
UNIX,CGI,ネットワークについての事ではないので、この掲示板の趣旨に合わない
かも知れませんが、下記の事についてどなたか知っていましたらお教え下さい。
実はMOについてですが、これまで認識していたメディアが急に認識されな
くなり、他のメディアで試しても同じ現象が出るようになりました。
クリーニングしても直りません。たまに認識する事もあり、なにがおかしい
のか見当もつかず、途方に暮れています。
何か方法があるでしょうか。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 956 # Netboy 2000/07/03 (月) 15:20:06
YOSHIさん
次のようなページをご紹介します.

MO掲示板:
http://www.zob.ne.jp/%7Ekanai/mo/bbs/bbs.pl

MOにこだわるページ:
http://www.zob.ne.jp/~kanai/mo/

MOS331E 遍歴:
http://www1.sphere.ne.jp/squilla/comp/mos331al.html
悪名高いオリンパスドライブの清掃方法です.

# 私もジャンクの331(Logitec LMO-230H)を手に入れ,
# 清掃して問題なく使っています.

参考まで.

No. 957 # ST 2000/07/04 (火) 23:25:09
現在、さくらインターネット<http://www.sakura.ad.jp>で専用サーバを借りています。OSはFreeBSD 3.4です。大した知識もないのに大丈夫かな、と思っていたところ、ついに困った事態になりました。

chsh -s
でログインシェルを変更したのですが、誤った名前を指定してしまったのです。それからというもの、スーパーユーザになろうとしても
su: +++: No such file or directory
と出てしまい、rootによる作業が一切できない状況です。

root権限で
chsh -s /bin/sh
でも実行できれば済むのですが、どうすればいいものやら。セキュリティホールを利用できないか、などと本気で考えましたが、そんな技量もありませんでした。

きちんと業者に頼むべきなのでしょうが、Telnetでできる作業は1万円、Telnetでできない作業は2万円と、勉強料としても学生にはかなり惜しくなる出費なのです。

何かいい方法があるなら教えていただけないでしょうか。

No. 958 # 68user 2000/07/05 (水) 00:09:14
> su: +++: No such file or directory
むぅ…多分無理だと思います。一旦 shutdown して
シングルユーザモードで再起動するしかないので
2万円コースだと思います。

あきらめきれなければ、
    http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/chat.html
で聞いてみて下さい。そこの方々が無理だと言ったら絶対無理です。


あと、回答してもらっても返答する気がないなら、最初から
書き込まないで下さい>返答する気のない人々

No. 959 # has 2000/07/05 (水) 02:52:42
またまたperlについてお聞きします。
連想配列をうまく使って、キーに対して文字列リストを
保持したいと思うのですが、何かよい方法はありますでしょうか。

現在は、文字列を共通のリスト配列に順に格納して、
キーに対する文字列リストの中の最初の文字列へのインデックスを
連想配列に格納する、という方法をとっています。

うまく伝わらないかもしれませんので、少々サンプルを書きます。
$store = 0;
foreach $file (@files) {
        open(IN, $file);
        @contents = <IN>;
        $index{$file} = $store;
        $numlines{$file} = $#contents + 1;
        @lines[$store..$store+$#contents] = @contents;
        $store += $#contents + 1;
}

No. 960 # 68user 2000/07/05 (水) 08:55:56
要は、ファイル名と行番号を与えると、その行が得られるデータ
構造は?、ということでいいですか?

なら、
    while (<IN>){
        $data{$file}{$line}=$_;
        $line++;
    }
とやってもいいし (perl4 的にするなら $data{"$file$line"})、
あるいは
    @contents=<IN>;
    $index{$file}=\@contents;
と、配列へのリファレンスをハッシュに入れてもいいと思います。
参照するときは
    $file = 'abc.txt';
    $line = 123;
    print ${$index{$file}}[$line];
とか (abc.txt の 123行目を表示。先頭が0行目)。

No. 961 # よしだ 2000/07/05 (水) 10:25:26
Netboyさんありがとうございました

> #!/usr/local/bin/perlで参照できると思います.
> お試しください.
試してみたんですが、
#!E:/usr/local/bin/perl だと動くんですが、
#!/usr/local/bin/perl だと駄目なので
どうもapachの自己完結型がドライブ名の指定が必要みたいでした、
結果は残念でしたけど、どうもありがとうございました。

>あと、回答してもらっても返答する気がないなら、最初から
> 書き込まないで下さい>返答する気のない人々
すみません、原因が解ったら書き込もうと思っていたので
返答が遅くなってしまいました
以後気をつけます。

No. 962 # Netboy [E-mail] 2000/07/05 (水) 11:48:16
よしださん

次のようなショートカットからApacheを実行してみてください.
'作業フォルダ'のパスにあるドライブ名が,Perlの参照先ドライブになります.
動作を確認後にオプションを追加して,サービスとして実行させてください.

リンク先:
e:\usr\local\sbin\apache\Apache.exe -f e:\usr\local\etc\apache\conf\httpd.conf -s

作業フォルダ:
e:\usr\local\sbin\apache

# 2つとも,Apache.exeがe:\usr\local\sbin\apacheにあるとき

- - - - - - - - - - - - - - -
参考になるURLをご紹介します:

NTでIISやApacheのPerlの参照の設定:
http://www.hi-ho.ne.jp/lina/httpd.html#apache-pl

Apacheのレジストリ操作,NTサービスとしての実行など:
http://www.apache.org/docs/windows.html

No. 963 # よしだ 2000/07/05 (水) 13:58:57
Netboyさん ありがとうございます
ApachとPERLのドライブを合わせる必要があったんですね、
おかげさまで思いどおりの動作をしてくれるようになりました
本当に色々とありがとうございました。

No. 964 # has 2000/07/05 (水) 14:22:25
@68user
どうもありがとうございました。
リファレンスというのを勉強しときます。

それと、こちらに来られるかもということですが、
予定を確認しておきます。

No. 965 # 68user 2000/07/06 (木) 01:11:33
@よしださん
> すみません、原因が解ったら書き込もうと思っていたので
> 返答が遅くなってしまいました
別に1週間くらいはいいと思いますよ。「わかりました。試してみます」
と書くより、試してから結果を書こう、というタイプの人もいるでしょうから。

それ以前の人に向けていったことなので、気になさらないで下さい。

> もし単にパスが違うだけならやりようは
> あります。もしそうなら再度質問して下さい。
cygwin 入れて #!/bin/sh で振り分け、とか言わなくてよかった (笑)


@has
> リファレンスというのを勉強しときます。
赤ラクダ本には載ってません (念のため)。でもって、青ラクダ本の
説明はわかりにくいです。ちなみに $hoge{fuga}{ura} ってのも
実はリファレンスです。

> 予定を確認しておきます。
いや、いつ行くかも未定なので、いつも通りに過ごしてて下さい。
雨降ったら行けないし :-)

No. 966 # へにか [URL] 2000/07/06 (木) 08:08:50
>あと、回答してもらっても返答する気がないなら、最初から
>書き込まないで下さい>返答する気のない人々

・・・すみません。
以前、telnetで30個ほど繋げたら、フリーズしてしまったので、
perlで繋げる方法を考えつつ、先に進んでいないのと、まだ、
bugの原因が不明(というか、お手上げに近い)ので、返事できない
状態でした。

返答が遅れてすみません。

No. 967 # 68user 2000/07/07 (金) 00:41:37
へにかさんに向けて言ったのでもありません :-)

No. 968 # yuji 2000/07/07 (金) 03:28:41
ご無沙汰しております、以前にお世話になったyujiです。(^^)
現在、FreeBSD 2.2.8-RELEASEのカーネルなどをPentium3に最適化させたいと
考えているのですが、この場合、どういった部分を変更すべき
なのでしょうか?

自分で調べてみたところ、
http://www.goof.com/pcg/index.html
に、Pentium用パッチ(pgcc)があるのですが、
gccが現在2.7.2.1でして。(^^;
portsコレクションを探してみたのですが、
pgcc2.95.1のものがあるみたいですが、
プルダウンメニューが3.0以上のみになっています。
PGCCは、EGCSのパッチということで、
2.7.2.1のような古いバージョンには、
使えないのかもしれませんが。(^^;

FreeBSD 2.2.8-RELEASEを用いて、
マシンの能力を最大限に引き出す方法はなにかありませんでしょうか?
どうぞよろしくお願いします。

No. 969 # ST 2000/07/09 (日) 20:43:16
お返事ありがとうございました。

>> su: +++: No such file or directory
>むぅ…多分無理だと思います。一旦 shutdown して
>シングルユーザモードで再起動するしかないので
>2万円コースだと思います。

管理会社に連絡したところ、今回のように原因がはっきりしていて復旧が容易な場合は1万円だそうです。まあ仕方がないと思います。これからはもっと慎重に作業をしなければ……。

No. 970 # ユウヤ 2000/07/09 (日) 22:17:58
携帯電話に対してこちらの電話番号を表示しないためにはどうすればいいですか?

No. 971 # mm 2000/07/10 (月) 18:30:29
perlでのサブルーチンの質問です。
お願いします。

#!/usr/local/bin/perl

$Z = 1;
&abc();
print "$Z$Y";

sub abc{
        &A();
        &B();
        &C();
}
sub A{
        if($Z == 1){
                $Z = $Z + 1;
                &C();
        }
}
sub B{
        $Z = $Z + 5 ;
}
sub C{
        $Y = "!";
}

こんなカンジなのですが結果を"2!"になるようにしたいのですが
どうすればよろしいでしょうか?
このまま実行すると"7!"になってしまいます。
教えてください。

No. 972 # 68user 2000/07/10 (月) 23:12:29
@yujiさん
> 現在、FreeBSD 2.2.8-RELEASEのカーネルなどをPentium3に最適化させたいと
> 考えているのですが
すみませんが、http://www.jp.FreeBSD.org/search.html#doc
キーワード pgcc で検索する、以上の情報はわかりません。

cvsweb で ports/lang/pgcc を見ると、2.2.8 時代は (pgcc 側の)
gcc->egcs の切り替え時期なようで、その時代の gcc 対応 pgcc は
ないと思います。最新の egcs を入れて pgcc パッチを当てるのは
ダメかなぁ。いろんなところではまりそうですけど。
# あ、最近のは a.out 形式吐けないんだっけ。

@STさん
> これからはもっと慎重に作業をしなければ……。
telnet 2つ開いて、片方はつなぎっぱなしにして いつでも
/etc/master.passwd を修正できるようにしておくとよかったですね。

@mmさん
# biglobe な mm さんとは別の mm さんですか?
> 結果を"2!"になるようにしたいのですがどうすればよろしいでしょうか?
    sub B{
        $Z = $Z + 5 ;
    }
の部分で $Z==7 になってほしい、でも &B から戻ると $Z==2 としたい、
ということなら、呼び出し側で &B($Z) として引数を渡して
    sub B{
        my ($abc)=@_;
        $abc = $abc + 5 ;
    }
とか ($abc は $Z としても同じ)、単順に変数名を変えて
    sub B{
        $X = $Z + 5 ;
    }
とか、って感じでいいですか。

望んでる答えじゃないかもしれないけど、なぜ 2! にしたいのか、
&A と &B ではどういう違いがあるのかを説明してもらわないと、
これ以上はなんとも言えません。

No. 973 # mm@biglobe 2000/07/11 (火) 01:23:29
私にも意味が分からないので、別人かと思われます。

ひょっとして、sub A {...} 中で &C(); を呼び出したら、
sub abc{...} 中の &C(); に帰って来る、と誤解されてるとか…?
# goto &NAME に関係あるのかとも思ったけど…

No. 974 # mm 2000/07/11 (火) 09:23:05
># biglobe な mm さんとは別の mm さんですか?
mm@biglobeさん、失礼しました。

説明不足ですみませんでした。

sub A の処理で $Z == 1 の場合sub C へ行きたいのです。
その後、sub B へは行かずに処理を終了させたいのですが、、、

No. 975 # Netboy [E-mail] 2000/07/11 (火) 17:29:50
もしかして

#!/usr/local/bin/perl

$Z=1;&abc;print "$Z$Y";

sub abc{ if (!&A){ &B; } &C; }
sub A{ if ($Z==1){ $Z++;return 1; } 0; }
sub B{ $Z+=5; }
sub C{ $Y="!"; }

な感じですか...? 文章のままだと

sub abc{ if (!&A){ &B;&C; }}
sub A{ if ($Z==1){ $Z++;&C;return 1; } 0; }

な感じです.関数の戻り値を使わないなら

sub abc{ &A; if ($Z!=2){ &B; } &C; }
sub A{ if ($Z==1){ $Z++; }}

延々と続きそうですね.こんな話題じゃ無さそうな気も...

No. 976 # mm@biglobe 2000/07/13 (木) 01:27:06
あれ?mmさんの反応がないなぁ…
Netboyさんの回答で、出尽くしてると思うんだけど。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 977 # (6)(8)user 2000/07/13 (木) 01:32:32
そーいや、名前に機種依存文字を入れると、何かが起こったっけ。
多分まだ なおしてなかったなぁ。
# 現在機種依存文字が見えない環境なので、勘で入力。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 978 # 68user 2000/07/13 (木) 01:41:20
そうか、名前の欄が
    <INPUT ... VALUE="<FONT COLOR="red">(6)(8)</FONT>user">
となってしまうんだった。今度直そう。

ところで、LASER5 Linux 6.0 でも /etc/services は pop-3 でした。

No. 979 # has 2000/07/14 (金) 20:06:55
@68user
名前に機種依存文字入れたときの不具合、
直ったら修正部分をおしえてください。
#うちのにも同じ不具合があるってことですよね?

No. 980 # 68user 2000/07/18 (火) 00:12:35
了解。でも、ちと忙しい日が続きそうなので9月頃になるかも…。

No. 981 # 智慧 2000/07/18 (火) 22:55:44
こんばんわ。ちょっとお聞きしたいことがありまして。。。
うちの掲示板はmmさん(ここにいる人かどうかはわかりませんが)が作った掲示板を使っているんですが、
crypt関数が使えなくて削除パスとかが出てこないんです。それで、サーバ管理者に連絡しましたら、

>弊社サーバーでも、crypt関数はもちろんご利用頂けます。
>ただし、サーバーの暗号処理にMD5方式を搭載しておりますので
>MD5以外のサルト係数を使用したスクリプトでは、そのままでは動作致しません。
>(cryptはサーバーのライブラリに依存している為)
>cryptをMD5方式のサーバーでお使いになるには、salt係数をMD5の
>$1$ 固定で指定する必要がありますので、スクリプト内の
>該当部分を書き換えてご利用ください。

と教えていただきました。でもどこをどう直せばいいのかさっぱりなんです。
忙しいと言っていますけどもし時間が空きましたら、教えていただけますでしょうか。お願いします。
ちなみにhttp://whitenight.org/etc/bbs/Readme/crypt.cgiにcryptを実行するCGIがあります。
ソースはhttp://whitenight.org/etc/bbs/Readme/crypt.txtにありますんで、どうかみてやってください。
長文すいませんでした。

No. 982 # mm@biglobe 2000/07/19 (水) 00:39:40
あっ、crypt.cgi はMD5には対応してないですね(^^;
MD5を使える環境にないので、詳しくは、68userさんのご助言を頂きたいのですが、
とりあえず、ソースの以下の行を削除して、

     if ( $salt !~ m%^[\./0-9A-Z]{2}$%i ) {
         print "<H2>エラー</H2>\n";
         print "SALTが不正です\n";
         exit(0);
     }

SALTの入力欄の2文字の前に「$1$」を挿入して実行してみて頂けます?

No. 983 # 68user 2000/07/19 (水) 00:53:19
まず OS 名は何ですか?

>>(cryptはサーバーのライブラリに依存している為)
僕の知る限りでは (少なくとも FreeBSD では) 誤りです。
なんにも考えずに salt を渡せば、ライブラリ (libcrypt) の
方で DES でも MD5 でも勝手に処理してくれます。

# ただ、FreeBSD 以外の環境 (例えば Linux で MD5 な環境) だと、
# ライブラリがそこまで対応しているかどうかはよくわからんなぁ。
# 明日試してみよう。

しかし、http://whitenight.org/etc/bbs/Readme/crypt.cgi
結果が $PassWord = ''; と空になるのは謎ですね。

> print crypt( $pwd, $salt );
これを
    print crypt( $pwd, "\$1\$$salt\$" );
とするとどうですか。あるいは
    print crypt('secret','ab');
だとどうなりますか。

No. 984 # 68user 2000/07/19 (水) 00:59:14
おっと少々かぶりぎみ。

crypt.cgi は FreeBSD (MD5) 上ではうまく動きました。FreeBSD の
libcrypt では
    crypt('secret','xx')

    crypt('secret','$1$xx$hogehoge')
は同じものとして扱われるからです。

ということは、智慧さんの環境ではそうではないということで
しょうから、$1$..$ を追加すればいけるんじゃないかと思います。

No. 985 # mm@biglobe 2000/07/19 (水) 02:05:30
あっ、なるほど。(最後の $ も忘れてた)
68user さんの指示に従って対処して下さい>智慧さん

No. 986 # 智慧 2000/07/19 (水) 03:22:16
>mm@biglobeさん
>68userさん
あ、ごめんなさい。
こんなに早くお返事してもらえるとは思ってもいませんで・・・。
じゃ今から早速やってみます。
レスありがとうございました。

No. 987 # 智慧 2000/07/19 (水) 03:42:20
あ、順々にやらせてもらったんですが、もう最初のmm@biglobeさんの言ったとおりに、
一部分削除して、
>$1$
これを前に入れて5文字で実行したらちゃんと生成されました!

>まず OS 名は何ですか?
あとこれは結局わからないです・・・(汗)

お手間を取らせまして・・・。ほんとどうもありがとうございました。

No. 988 # ちゃいぱ [URL] [E-mail] 2000/07/19 (水) 10:19:01
ラウンジでは、いつもお世話になっていました。ありがとうございました。
ラウンジで質問ができないので、こちらへ質問させてもらいます。

UNIXにおいてflockを使用するデメリットを教えて下さい。
また、flock使用のCGIを見つけるコマンドなど存在しますか?

自サイトでCGIをフリー配布していますが、使っている人から、プロバイダでflockは、やめてくださいと通知されたそうです。
よろしくおねがいいたします。

No. 989 # ちゃいぱ [URL] [E-mail] 2000/07/19 (水) 10:28:30
ついでに、もうひとつ。
私の vi では、テキストファイルに一行 1024バイト以上の行があるとき
途中で切れて、全部見れません。

このような場合、「編集できない」と「多少のデータ欠落」はOKですが、
とにかく、全体を見れて、検索できるような、コマンドってないですか?

No. 990 # 68user 2000/07/19 (水) 15:00:23
LASER5 Linux (標準で MD5) では、
    crypt('secret','$1$xx$') -> $1$xx$r/r0qx2Q7FpBQWOTZk2Nc. (MD5)
    crypt('secret",'xx') -> xxWAum7tHdIUw (DES)
となりました。こういう環境があるとは知らなかった。


> UNIXにおいてflockを使用するデメリットを教えて下さい。
NFS 環境下で flock が動作しないそうですが、僕のまわりでは
NFS 環境でも正常にロックできていたように見えました。

それ以外はわかりません。プロバイダが「使うな」と言うほどの
デメリットはないように思います。

> また、flock使用のCGIを見つけるコマンドなど存在しますか?
これは質問の意図がわかりません。

> 私の vi では、テキストファイルに一行 1024バイト以上の行があるとき
> 途中で切れて、全部見れません。
nvi という vi ファミリのエディタでは、その手の制限はなかった
ように思います。ちなみに FreeBSD の vi は nvi だったりします。

> とにかく、全体を見れて、検索できるような、コマンドってないですか?
nvi 以外だと less かなぁ。less で 1024バイト/行なファイルを
見られるかどうかは確かめてませんが。まぁ、fold してその出力を
眺めるっつーのもアリかもしれません。

No. 991 # いち 2000/07/19 (水) 15:18:25
大学では、UNIXを使っているので、いつもこのHPにはお世話になっております。
それで、質問があるのですが。

UNIXでは、Windowsなどから送られてくる添付ファイルを
受けとる事はできますか?
また、添付ファイルを送る事はできますか?
よろしければ、そのやりかたも教えて頂けると嬉しいです。

ちなみに、使用機種は、SunOS 5.6です。

No. 992 # ちゃいぱ 2000/07/19 (水) 17:05:05
>68userさんへ
foldコマンドでいけました!
ありがとうございました。

>>また、flock使用のCGIを見つけるコマンドなど存在しますか?
>これは質問の意図がわかりません。
ただ、プロバイダがどうやってflock使用のプロセスを見つけたのかなぁっておもったもので...。

では、これで、失礼いたします...。

No. 993 # 68user 2000/07/20 (木) 01:07:22
> プロバイダがどうやってflock使用のプロセスを
> 見つけたのかなぁっておもったもので...。
grep?

> UNIXでは、Windowsなどから送られてくる添付ファイルを
> 受けとる事はできますか? また、添付ファイルを送る事はできますか?
メーラー次第です。Mew や Wanderlust あたりなら
できますが、emacs の rmail とか mail コマンドでは
難しい…というか多分無理でしょう。

# Mew ... http://www.mew.org/index-j.html
# Wanderlust ... http://www.gohome.org/wl/index.ja.html

No. 994 # Netboy 2000/07/21 (金) 13:55:51
NFS上のファイルをflockすると,複数マシンから
同時にロックできてしまう(場合がある)と思いますが...

Perlで普通にflockを使っていると,たいがい
まともにロックできないうえ処理速度が遅くなります.

open (LOCK, "> $file")||&error
flock (LOCK,2)||&error

とか書いた時点で終わってます.2箇所直せば使えますけど
普通そんなこと気付きません.
あと,デッドロックの発生を検知するのが難しいです.

No. 995 # いち 2000/07/21 (金) 19:14:34
68userさん>

御回答ありがとうございました。
僕のメーラーはemacsのrmailなので、受けとれないみたいですね。
文章の添付ファイルならば、その文章は一応表示されますが。

それで、御紹介頂いた Mew と Wanderlust のHPに行ってみたのですが、
その2つの違いというものがよく解りません。
よろしければ教えて頂けますか。
用途は、添付ファイルを受けとるだけなので、それに適しているのは
どちらなのかというのも教えて頂けると嬉しいです。

あと、もう一つ質問なのですが、
あるファイルのシンボリックリンクを作った時に、
そのシンボリックリンクの元となるファイルから、
そのファイルのシンボリックリンクがどこに作られているかを
見つけ出す事はできますか?

なんか解りにくい文章ですみません。

No. 996 # 68user 2000/07/22 (土) 13:34:09
> それで、御紹介頂いた Mew と Wanderlust のHPに行ってみたのですが、
> その2つの違いというものがよく解りません。
両方ともメーラーなわけで、できることは自然と似てきます。
一応僕の思う特徴をあげると
    Wanderlust のいいところ
    ・見栄えがきれい (スクリーンショット参照)
    ・IMAP4 対応
    ・ニュースリーダの機能もある

    Mew のいいところ
    ・im と mew を入れるだけなので、インストールが簡単
        (Wanderlust だと semi やら apel やら入れて、さらに
        それぞれのバージョンにも気をつけなくてはいけない)
てな感じ。インストールに自信がないなら Mew の方がいいかも
しれません。

ちなみに「添付ファイルを受け取る」という一点に関して言うと、
Mew の方が使いやすいように感じます。

> そのファイルのシンボリックリンクがどこに作られているかを
> 見つけ出す事はできますか?
無理です。全ファイルを調べるしかないです。これはハード
リンクも同じです。

> NFS上のファイルをflockすると,複数マシンから
> 同時にロックできてしまう(場合がある)と思いますが...
んー、なるほど。複数マシンからの flock というのは全く
思いつきませんでした。一つの NFS クライアントマシンから
flock して、「ああ、NFS でもうまくロックできるのね」と
思ってました。

試してみたいけど、NFS 環境がないなぁ・・・

No. 997 # hum 2000/07/22 (土) 16:42:52
はじめまして。
勉強になるのでちょくちょく見させてもらっています。

crypt化した文字を復元することはできるのですか?

No. 998 # hum 2000/07/22 (土) 16:52:27
申し訳ないです。先ほどの追加です。

crypt化するのにperlでやっています。

#!/usr/bin/perl

$A ="AAAAAA"; #←crypt化する文字
$B ="BB"; #←KeyWord
print crypt ($A,$B);

No. 999 # 68user 2000/07/22 (土) 21:10:41
> crypt化した文字を復元することはできるのですか?
できないです。復元ができないようなアルゴリズムを採用している
からです。なので、辞書を使ったり、総当りで調べるしかありません。

ちなみに keyword じゃなくて salt と言います。

No. 1000 # mm@biglobe 2000/07/23 (日) 23:37:53
unixはぜんぜん知らないのですが、
flockに関しては以前から疑問があったので、
ちょっとお伺いします。

>とか書いた時点で終わってます.2箇所直せば使えますけど
>普通そんなこと気付きません.
open の時点で $file が破壊されるってことですね。
これは、確かにしっかりしたドキュメントが必要だと思います。

>あと,デッドロックの発生を検知するのが難しいです.
flock でデッドロックが発生したら、意味ないのでは…?
flock がセマフォを使ってるのか、別の何かを使ってるかは知りませんが、
デッドロックを回避できるからこそ flock の価値があるんではないでしょうか?
それとも、セマフォとかの待ち行列の状態が検知できないという意味でしょうか?

>Perlで普通にflockを使っていると,たいがい
>まともにロックできないうえ処理速度が遅くなります.
こういう文章を読んで、flockはダメだと勝手に判断して、
もっと酷い、訳の分からない排他制御手段を考える人が出て来るような気が…

ただ、flockを使えばOSが対象ファイルごとに待ち行列を
用意することになるんでしょうから、チャット等が沢山使われるサーバーでは、
リソースを大量に消費して、レスポンスも悪くなるような気はします。
先のプロバイダの制限は、そういうことを嫌ったのではないでしょうか?

No. 1001 # Netboy 2000/07/24 (月) 04:32:13
>open の時点で $file が破壊されるってことですね。
はい,あと引数'2'だと,待っている間何も出来なくなるので
マズイ,ということで2箇所...としました.
シグナル起こしはあてにならないということで.

>デッドロックを回避できるからこそ flock の価値があるんではないでしょうか?
デッドロックは起きます.
flockには価値なんかありません.BSDでの互換性だけです.
言葉遊びでなく,確率というか危険度と考えてください.

flockして成功したプロセスが無限ループに入ったとき,
解除にはたいがいプロセス殺しが必要です.うまく殺せるか
どうかは不確実なので,この時点でデッドロックといえます.
symlinkやmkdirでの排他処理だとまだ通常のファイル操作で済みます.

>それとも、セマフォとかの待ち行列の状態が検知できないという意味でしょうか?
はい,検知と制御ができません.同じ意味でfcntlやセマフォも
使うのは難しいです.OSリソースを隠れて消費し,工夫しないと
システム全体の速度が低下します.

OSに付属する排他処理機構を,よく検証せずに使うのはまずいです.

私の経験だと,
- いつどのプロセスが何をロックして
- それを参照する何個のプロセスがどれくらいの時間待機しているか
外から判るようにしなければだめな感じです.

>訳の分からない排他制御手段を考える人が出て来るような気が
他人の手法を参考のうえ,排他処理の仕組みを自分で考えるのは
結構なことだと思います.

No. 1002 # mm@biglobe 2000/07/24 (月) 22:32:46
>解除にはたいがいプロセス殺しが必要です.うまく殺せるか
>どうかは不確実なので,この時点でデッドロックといえます.
なるほど、もし解除できないということが起こるなら、
確かにデッドロックですね。
unixを触ったことがないため、そのヘンは、何となくシステムを
信頼していました(^^;

>flockには価値なんかありません.BSDでの互換性だけです.
う〜ん、それが現状だとすると、問題ありそう…

>言葉遊びでなく,確率というか危険度と考えてください.
確かに、私の先の書き込みは、スパゲッティを食べる哲学者のレベルでの
話かも知れません(^^;

>OSに付属する排他処理機構を,よく検証せずに使うのはまずいです.
検証する能力がない人間が下手なことをするよりは、
システムが用意した機能をそのまま利用した方がマシ、
というスタンスでいたのですが、少なくともflockに関しては、
考え直さないといけないみたいですね。

>symlinkやmkdirでの排他処理だとまだ通常のファイル操作で済みます.
今後は、作成時からの経過時間検査による解除機能付きsymlink/mkdirあたりで
検討してみたいと思います。

>他人の手法を参考のうえ,排他処理の仕組みを自分で考えるのは
>結構なことだと思います.
これは、あくまでもっと低次元の話です。
「他人の手法」を正確に理解し、問題点を的確に把握した上で、
「自分で考える」のであれば、仰る通りすばらしいことだと思います。

No. 1003 # 68user 2000/07/25 (火) 00:31:46
Netboy さんは、ノンブロッキングの flock なら OK、
という立場ですよね?

で、いくつか疑問があります。

> flockには価値なんかありません.
fcntl には価値がある、という話でしょうか。それとも
両方価値がない、という話ですか?

> flockして成功したプロセスが無限ループに入ったとき,
という状況って、起こり得ますか? (現象事態は
root が SIGSTOP 送れば容易に発生しますが)

Netboy さんは、どういうプログラムを想定しておられます?
ちなみに僕が考えたのは、カウンタとか web BBS とかです。

> Perl で普通にflockを使っていると,たいがいまともに
> ロックできないうえ処理速度が遅くなります.
僕の環境では「まともにロックできない」というのは
経験したことはありません (1000回カウントアップしたつもりが、
カウンタデータファイルを見ると998回しか実行されていない
というのはあった。原因は不明)。

それと flock は、symlink・mkdir よりは速かったです。
しつこいですが、僕の環境では、です。

# あと、排他処理はいつも symlink でやるので、flock を
# 使いこんだことはないです。

> 訳の分からない排他制御手段を考える人
http://www2q.biglobe.ne.jp/~terra/cgi/lockfile.htm (笑)

No. 1004 # mm@biglobe 2000/07/25 (火) 00:56:39
>http://www2q.biglobe.ne.jp/~terra/cgi/lockfile.htm (笑)
あはは、どもです。どこだったか忘れてました。

No. 1005 # Netboy 2000/07/25 (火) 04:54:43
>Netboy さんは、ノンブロッキングの flock なら OK、
>という立場ですよね?
はい.
動作環境を知っていて,使えると判断した用途にはOKです.
例えば常駐動作のサーバー用のスクリプトなんかにはいいですよね.

>それとも 両方価値がない、という話ですか?
いいえ,fcntlは意味があると思います.
POSIX準拠(?)+NFS対応だそうですし.
あれはOSの内部操作をそのまま出してくれているんですよね?
でもWin環境で互換性が無いので,あまり使いません.

>> flockして成功したプロセスが無限ループに入ったとき,
>という状況って、起こり得ますか? (現象事態は
>root が SIGSTOP 送れば容易に発生しますが)
次のようなものです.

- スクリプトの単なるバグ
- 作成中のスクリプトのテスト時
- 予期しないデータを与えられたスクリプト
- Perlインタプリタがコケたとき.OSリソース逼迫下.
- インタプリタのバグ.
- Apacheの設定ミス,管理者の不注意な設定変更.
- クラッキングを受けたサーバー

>Netboy さんは、どういうプログラムを想定しておられます?
>ちなみに僕が考えたのは、カウンタとか web BBS とかです。
私も同じです.
スクリプトのバグでは,機種/環境依存文字の訂正で
ある予期しない文字列のとき置換操作が止まらなくなる...など.

>僕の環境では「まともにロックできない」というのは
>経験したことはありません
それは68userさんだから(笑).
普通の人は下で書いたスクリプトみたいな感じです.
NFSを使っているプロバイダの場合,もっと状況は複雑になります.

>それと flock は、symlink・mkdir よりは速かったです。
う〜ん,負荷が掛かった時なんです,問題は.
デッドロックの自動検出と,flockの解除のための
pidの保存操作や予防措置も含めてください.

MMX233+FreeBSDで1000個の掲示板が同時動作で平均待ちプロセスが2〜4個
の状況('97のテレホ時)でflockを使うかどうか,です.

>訳の分からない排他制御手段を考える人
いや,いいんじゃないですか.誰もが通る出発点だと思います.
68userさんだって,miniBBSのアレとか,ほら,悪い思い出(笑).
混雑時の実用性や設置性を検証すると,面白いことになります.

No. 1006 # ちゃいぱ [URL] 2000/07/25 (火) 15:19:18
はじめに、flockについて質問した者です。

CGIをダウンロードした人にプロバイダ来たメールで、
やはり、「NFSがらみで、flockが利用不可能な状態」とのことでした。
CGIの方は、WIN95も考慮して、ロックファイルの有無で対処いたしました。

話は、変りますが、DNSサーバーについて知識として教えて下さい。
rlogin,ftp,telnetなどで、ホスト名を指定した時に、どのようにして、
DNSサーバーとやり取りをしているのですか?
DNSサーバーはhttpみたいなデーモンが動いているですか?(私の買った本には、この辺書いていなかった)

ちょっと、気になったので、よろしくお願い致します。

No. 1007 # 68user 2000/07/25 (火) 16:27:35
flock の件は後程。

> rlogin,ftp,telnetなどで、ホスト名を指定した時に、どのようにして、
> DNSサーバーとやり取りをしているのですか?
rlogin/ftp/telnet などは、ユーザからホスト名を受け取ると
gethostbyname(3) などを使って、ホスト名から IP アドレスを
得ようとします。

gethostbyname の内部では、ソケットを使って DNS サーバに
アクセスします。で、DNS サーバは UDP の port 42 を
listen していて (UDP だから listen という表現は変?)、
クライアントからの問い合わせに応じて IP アドレスを
教えたり、他の DNS サーバに問い合わせたり、見付から
ないよと答えたりします。

こういう問い合わせを行う DNS クライアント (この例では
gethostbyname) のことを resolver と言います。resolver は
概念的なもので、問い合わせを一手に引き受ける resolver
サーバのようなものがあるわけではありません。ただのライブラリです。
なので、自分で外部の 42/udp にアクセスする DNS クライアントを
書く事もできます。

> DNSサーバーはhttpみたいなデーモンが動いているですか?
UNIX 界で DNS サーバとして有名なのは bind です。
プログラム名は named。
# apache と httpd の関係と似ています。

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