68user's page 掲示板

Prev< No. 1057〜1152> Next  [最新発言に戻る] [過去ログ一覧]
No. 1057 # じょん 2000/08/08 (火) 12:06:08
68user さんありがとうございます。
アドバイスを元に、試行錯誤してうまくいきました
Apache って面倒ですね (^^;)

今後も、よろしくお願いします。 m(_'_)m 

No. 1058 # gongo [E-mail] 2000/08/08 (火) 20:14:01
@68user様
どうも、ご無沙汰しております。Xアプリケーション作成中のgongoです。
前回68user様に教えていただいた通り、イベントハンドラを用いて
線を描くことができました。そこで今度はXDrawLineだけではなく、
他のXlibの関数を用いて絵を描こうと思い実行してみたのですが
問題が生じてしまいました。前回のプログラムからちょこっと直したので
次のようになっております。
http://www.din.or.jp/~gongo/xtshirts.c (プログラム本体)
http://www.din.or.jp/~gongo/color.dat (色設定)
http://www.din.or.jp/~gongo/outline.dat (絵の輪郭のための座標)
http://www.din.or.jp/~gongo/polygon.dat (絵を塗り潰すための座標)
今回やろうとしたのは、
1.絵を描くための窓を白で塗りつぶす(最初のみ)
2.窓に影をつける(見た目を格好よくしたかったため)
3.全ての窓に同じ絵を描く
4.その絵に輪郭をつける
です。で、問題というのはこれらすべてはExposeイベントによって
処理されるようにしたのですが、どうも窓の名前(window1,window2など)
が表示されてしまいます。窓に何も描いていない場合でない限り
窓の名前は表示されないものと思っていたのですが、今回絵を描いても
窓の名前が表示されたりされなかったりします。Exposeを何度も起こして
(上に他の窓を持って来たりして)動作を確認していたのですが
窓の名前が表示されるときもさればそうでないときもあるため
原因がいまいちわかりません。

どうかよろしくお願い致します。

No. 1059 # 68user 2000/08/08 (火) 22:51:30
まず、
    - Window?? というのは Xt のラベル
    - その下の服やらなんやらは Xlib
です。

Xlib の方は Expose が発生すると再描画するように EventHandler を
設定しています。しかし、Xt の方は Xt が勝手に Expose を取得し、
再描画しています。

で、表示される/されないの現象を見るに、
    - Xlib の方は、ウィンドウの一部が露出しただけで常に
        再描画するようになっています。なぜならウィンドウ全体である
        form に Expose イベントハンドラとして、全ての Xlib な画像を
        再描画するように設定されているからです。
    - Xt のウィジェットの方は、自分自身のウィジェットが
        露出しない限り、再描画しません
なので、xtshirts のウィンドウの半分を別のウィンドウで覆い、
その後 xtshirts ウィンドウを露出させると、隠れていなかった
部分のラベルが消えます。これは、隠れていなかった部分の
ウィジェットは再描画しなかったのに、Xlib の方が再描画
してしまったからでしょう。

対策としては、
    - Xlib の方でも本当に関係ある Expose だけを拾うようにする。
    - Xlib の方で Expose を受けたら再描画し、その後 XClearArea
        (だったかなぁ?) で隠れてしまったウィジェットの方に
        Expose イベントを送る
でしょうか。あるいは重ね合わせを簡単に指定できる方法が
あるのかもしれません。

以上、Xt 素人の意見でした。大外しの可能性もありますので、
盲目的に信用しないで下さい。

ちなみに initflag の部分は
    - 結局一度しか実行されない (main だから)
    - コールバックやイベントハンドラは一度設定したら、ずっと
        その設定が残る (再設定しない限り)
なので、意味はないと思います。

No. 1060 # gongo [E-mail] 2000/08/09 (水) 03:23:55
@68user様
本当にありがとうございます!
どうしてあのような状況になったのかだいたい理解できました。

>form に Expose イベントハンドラとして、全ての Xlib な画像を

これについては最初は各ウィジェットごとにExposeイベント処理をしよう
かとも思っていたのですが、アプリケーションの見た目のために
意味もなくつけた影となる窓もXlibを用いて色を塗っていたため
全部のウィジェットについてExposeを設定するよりもformの方が
簡単かなぁと思ってしまったためです。

ご提案してくださった対策法につきましては2つ目の方がちょっと
まだわからないところがあるのでいろいろやってみたいと思います。

基本的にはXtのラベルには出てきてほしくないものなのですが・・・。

No. 1061 # gongo [E-mail] 2000/08/09 (水) 21:13:23
@68user様
Xtのラベルを表示させないようにするのは成功しました。
結局各ウィジェットごとにExposeイベントの処理を行うことにしました。
そこで次に各ウィジェットごとに服の色を変えようかと思い、
DrawOnWidgetの中でdrawgcの属性値を変えようとしたのですが
どうもうまくいきません。1つのGCを各ウィジェットに対して
属性値を変えつつ使い回すのは無理なのでしょうか。
どうしても最初の窓用に設定した色で全て塗りつぶされてしまいます。
プログラムはこちらです↓
http://www.din.or.jp/~gongo/xtshirts.c
http://www.din.or.jp/~gongo/color.dat
http://www.din.or.jp/~gongo/fixedcolor.dat
http://www.din.or.jp/~gongo/polygon.dat
http://www.din.or.jp/~gongo/outline.dat

まだ先の話ですが、いずれは1つの窓をクリックすることで
全ての服の色に影響を与え、再描画するようにしたいと考えております。
どうか宜しくお願い致します。

No. 1062 # 68user 2000/08/09 (水) 21:54:47
たぶん、DrawOnWidget の fscanf で、バッファオーバーランを
起こしています。そのため windownum が上書きされ、値が常に
0になってます。例えば POLNUM の数を増やすと動作しました。

開発初期段階のうちから
    if ( j >= sizeof(polpoints)/sizeof(polpoints[0]) ){
        オーバーラン
    }
というような自動チェックのコードを仕込んでおくこと
をお勧めします。

あと、デバッグは、もうちょっと注意深くやってみましょう。
XChangeGC 周辺で windownum や pixelnum[windownum] の
値を表示させるだけで、おそらく気づいたことでしょうから。

No. 1063 # 68user 2000/08/09 (水) 22:16:39
ちゃうな。POLNUM は正しいのか。というわけで、
    誤: fscanf("%d%*c%d%*c",&polpoints[j].x,&polpoints[j].y);
    正: fscanf("%hd%*c%hd%*c",&polpoints[j].x,&polpoints[j].y);
ですかね。XPoint のメンバ x,y は int でなく
short int です。

No. 1064 # gongo [E-mail] 2000/08/10 (木) 00:16:58
@68user様
お手数おかけ致しまして申し訳ございませんでした。
DrawOnWidgetに入った時点でwindownumがきちんと受け渡されて
表示されていたので、てっきり大丈夫なのだと思いこんでいました。
以後もう少し気をつけてデバック致します。

No. 1065 # masa 2000/08/10 (木) 00:59:15
よく参考にさせてもらってるのですが、発言ははじめてです。
よろしくお願いします。
今環境変数に興味を持っているのですが
UGTOPの「確認くん」で一部の携帯電話で
クライアントの電話番号が取得できる欄が
ありました。この環境変数名(HTTP_???)は何かご存知ですか?
もしかしてCLIENT_IPとかでしょうか?

No. 1066 # 68user 2000/08/10 (木) 01:24:48
> この環境変数名(HTTP_???)は何かご存知ですか?
    http://www.zdnet.co.jp/news/0003/29/ido.html
HTTP_X_UP_SUBNO だそうで。まぁおそらくデータの流れは
    携帯←→センタ←→WWWサーバ
でしょうから (かな?)、今はセンタ側で対応されてて、電話番号は
取れないのかも。

ところで、相変わらず http://www.ugtop.com/ って、Shift-JIS なのに
    Content-Type: text/html; charset=iso-2022-jp を
を出してますな。なので、うちでは化け化け。何か意図があるんだろうか。

No. 1067 # tt1 2000/08/10 (木) 13:29:07
はじめまして
perlで以下のことをやりたいのですが教えてください。

$aaa = 10000000;

これを 10,000,000 というようにしたいのですか?
1000の場合は、1,000 です。
どうすればよいですか?
よろしくお願いします。

No. 1068 # 68user 2000/08/10 (木) 14:00:07
> どうすればよいですか?
どうすればよいと思いますか?

# 考えるのがめんどくさい人はこちら。
#  http://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma

No. 1069 # R-N 2000/08/11 (金) 02:57:41
どうも、おひさしぶりです!
wrapperを使って色々テストしていたのですが、wrapperではエラー表示がなく
実際に実行すると得意の500 Internal Server Errorがでます。
ちょっと変なことをやってるんですが...。
(日付を数値で保存して差をみたかった)

#!/usr/local/bin/perl
$temp0 = 966500000;
$temp1 = localtime($temp0);
$temp2 = localtime(966000000);
print "$temp1/$temp2";

以上がテストした全文です。(属性は755)
この調子だとプログラムに組みこんでもエラーですよね?
日付表示もしたいのでlocaltime($temp0)とかしてみたんですが...。
何処がマズイのでしょうか?

No. 1070 # Syuichi.K [E-mail] 2000/08/11 (金) 05:16:14
> 空白の話
それはどういう不都合なのでしょうか?

ドラッグというのは、マウスでソースを選択する時の事です。

No. 1071 # 68user 2000/08/11 (金) 09:29:41
@R-N さん
> wrapperを使って色々テストしていたのですが、wrapperではエラー表示がなく
> 実際に実行すると得意の500 Internal Server Errorがでます。
Content-type ヘッダを出力していない、ってことかな。

@Syuichi.K さん
> ドラッグというのは、マウスでソースを選択する時の事です。
これはちょっと後ほど。というか、空白はなにかしらの
方法で画面に反映するようにするつもりではいます。

No. 1072 # R-N 2000/08/11 (金) 23:29:12
ぐはっ、そうでした...。
あいかわらず基本がおろそかでもうしわけない...。
ありがとうございました、でなおしてきまする。

No. 1073 # gongo [E-mail] 2000/08/12 (土) 19:07:46
@68user様
どうも、gongoです。
前回発言したときよりさらに進めて、今度は真ん中に表示される服を除く
服が選択されたときに、選択された服の色によって選択されなかった
他の服の色を塗りなおすということをやろうとしています。

そこで、あるウィジェットがマウスでクリックされるとWidgetChoice
という関数に入るようにして、その中でChangeColorという関数を
呼び出すことで色のRGB値を書いたファイルcolor.datを書き直すことに
しました。そして新たな色で再描画するようにExposeイベントを送る
ことにしました(ただし、まだ実験段階なのでlabel1だけ
書き直そうとしています)。

ところが、Exposeイベントを送っても新たなカラーで描き直されません。
XtRealizeWidgetではだめで、XtUnmapWidgetをやってからXtMapWidget
をやるとマウスでクリックした時に一瞬label1がチラッとするので
Exposeイベントは送られているような気がします。しかし、新たな色が
有効になりません。また、XClearWindowをやってみたりもしましたが
これだと服が消えてしまったままで再描画されません。

こういった場合は、DrawOnWidgetと同様のことをChangeColorの後に
書くべきなのでしょうか。できればExposeイベントを意図的に
起こすことで再描画してほしいのですが・・・。

どうか宜しくお願い致します。

No. 1074 # gongo [E-mail] 2000/08/12 (土) 19:12:17
@68user様
失礼しました。プログラムはこちらです↓
http://www.din.or.jp/~gongo/xtshirts.c
http://www.din.or.jp/~gongo/color.dat
http://www.din.or.jp/~gongo/outline.dat
http://www.din.or.jp/~gongo/fixedcolor.dat
http://www.din.or.jp/~gongo/polygon.dat
http://www.din.or.jp/~gongo/oldcolor.dat

宜しくお願い致します。

No. 1075 # gongo [E-mail] 2000/08/14 (月) 02:00:24
@68user様
よくよく考えると、maninに入ってすぐにColor()を呼び出したっきり
だからまずいのでしょうか。そうなるとExpose云々よりもまず
クリックしてcolor.datが書き直された後にColor()を呼び出すべき
なのでしょうか。う〜ん、お盆あけないと確認できません・・・。

No. 1076 # ふくし [E-mail] 2000/08/14 (月) 04:04:54
ここでははじめましてです。どぞよろしく。
早速質問ですみませんが、
・Cygwinで動くApacheのバイナリーパッケージを見かけた方か、
・CygwinでApacheのコンパイルに成功した方か
・Windows用ApacheでCygwinのPerlのスクリプトを動かす方法を知っている方は
いらっしゃいますか?
いつもは会社でFreeBSDでCGIの開発、メンテをしているのですが、
(一般ユーザーで管理者ではなく、UNIXくわしくありません)
夏休み家人のWindows98マシンで作業をしなければならなくなり、
Cygwin、Perl、Meadow(Emacsですな)は入れて快適に使えているのですが、
肝心のApacheがどうしてもインストールできません。
具体的な現象でいうと、makeで「no rule for targat all. stop」とか言われます。
成功した人のページ(男塾の塾長さんらしいです ^^;)のマネをしているのだが、、。
ActivePerlを使うのが常道らしいですが、会社に最終的には持っていくのでUNIX互換にしたいし、
DOS窓とかWindowsのエディターは慣れてないので憂鬱です。
ぶしつけで申し訳ありませんがよろしくお願いします、、。
ああっでもペケロクの部屋なのにPCの質問ですいませんっ
ではでは。

No. 1077 # ふくし [E-mail] 2000/08/14 (月) 13:53:34
すいません、解決しちまいました、、。
pastyというフランス人のサイト(http://persoweb.francenet.fr/~pasty/cygport/)に
B20(というCygwinのバージョン)用のバイナリーがあって、ぼくのはv1.1なんだけど、
動かしてみたら、動いた。
http://localhost/index.htmlに自分が書いたページ置いたら見えます。イエー!

ただ、ここでまた問題がー。
/usr/local/apache/cgi-bin/の下に自作のcgi、hello.cgiを

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
print "<html><body>聞こえますか</body></html>\n";

とか書いて動かしてみたんですが、奇怪な現象が、、。
ブラウザがページを一生懸命ロードするんですけど、
いつまでたってもロードがおわりません。
で、停止ボタンを押すと

聞こえますか>
================================================
転送を中断しました!

とか表示されて、ページのソースを見ると、

<html><body>聞こえますか</body></html>

と書いてある。ううん、動いてはいるようなんだけどなー。

コマンドラインで hello.cgi を動かしても、

Content-Type: text/html

<html><body>聞こえますか</body></html>

と出てくるし、Content-type のあとの改行を1個減らすと
ちゃんと Internal Server Error になるんですけど。(^^;;;

どなたか同様の経験を克服された方はいらっしゃいますか?
何回も聞いてすいません。
うーん、惜しい。惜しいんだけどなー、、、。

No. 1078 # CAcTus [URL] [E-mail] 2000/08/14 (月) 14:09:19
ホームページ開設のお知らせ・・・
■残暑お見舞い申しあげます。さて、一風変わったサボテンホームページができましたのでご参笑ください。これで子供たちやご婦人方のサボテンファンがひとりでも増えれば幸いです。どうか今後ともいろいろご教示くださいね。

No. 1079 # skel.103M 2000/08/15 (火) 17:58:45
はじめまして、skel.103Mです。いつもこのホームページを参考にさせて
いただいてます。

@ふくし さん
>print "Content-type: text/html\n\n";
print "Content-type: text/html\r\n";

print "Content-type: text/html\n\r";
にすれば動くかも、と思ったりしました。

No. 1080 # 68user 2000/08/16 (水) 21:53:20
IP unreachable な環境にいたので、しばらく書き込め
ませんでした。で、ネット外でいろいろあって、これから
しばらくは書き込まないと思います。ご了承ください。

とりあえずはこの掲示板はそのまま置いておきますが、
一時的に書き込み不可にするかもしれないし、しないかも
しれないです。要は未定ってことです。

No. 1081 # にゃ 2000/08/17 (木) 00:55:35
はじめまして。にゃと申します。

@ふくし さん
おそらく接続がKeep-aliveのままに
なっているのではないかと思います。
Connection: close
というヘッダを追加して試してみてください。
ローカルでCGIのテストをするときはLinuxでApacheを動かしていますが、
こちらではCGIを動かすと自動的にこのヘッダを付けてくれるようです。
あとskel.103M さんも指摘されてますがヘッダの部分は
改行コードを"\r\n"にしたほうが良いかもしれません。
ヘッダの部分だけ書くとこんな感じかな?
print "Connection: close\r\nContent-type: text/html\r\n\r\n"

No. 1082 # ふくし [E-mail] 2000/08/18 (金) 22:37:20
skel.103Mさん、にゃさん、お返事ありがとうございました。
\r\n も、\n\r も、\r\n\r\n も、\n\r\n\r もダメでした。(;.;)
ちなみに httpd.conf で KeepAlive Off にしています。
Telnet でたたいてみると(この発想がなぜかありませんでした ^^;)、

$ telnet localhost 80
Trying 127.0.0.1...
Connected to tokumei.kibou.catv.ne.jp.
Escape character is '^]'.
GET http://localhost/cgi-bin/test.cgi HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 18 Aug 2000 13:25:42 GMT
Server: Apache/1.3.12 (Cygwin)
Connection: close
Content-Type: text/html

<html>どうなんでしょうね</html>

とここまで表示して端末の動きが固まってしまい、
Ctrl-Z を押すと、

Connection closed by foreign host.
$

と出て終わります。
(ふつうの html を表示させるときは固まりません)

また、上のように、Connection: close は Cygwin でも挿入されるようですねー。
(KeepAlive On にしてみても挿入されました)

とまれ、どうもありがとうございます。
引き続き何かありましたらよろしくおねがいします。

ちなみに、勉強用に使っているのはオライリーの「ねずみの本」ですが、
これでは \n\n になっているんですが、\r\n が正式なんでしょうか?
あるいは Cygwin だから Windows 改行にした方がいいということですか?
これも合わせてよろしくおねがいします。

質問ばかりで申し訳ありませんが、ご無理のない範囲でどうぞよろしくお願いします。

No. 1083 # 68user 2000/08/18 (金) 22:57:32
> これからしばらくは書き込まないと思います。
と言いながら、早々に復帰してみたり。

Windows も cygwin も詳しくありませんが、スクリプトの最後に
    close(STDOUT);
を入れるとどうなりますか?

でもまぁ、どの方法で解決したとしても挙動が変なわけで、
> 肝心のApacheがどうしてもインストールできません。
> 具体的な現象でいうと、makeで「no rule for targat all. stop」
をなんとかするか、別の WWW サーバを入れるのが
正しい道のような気もします。

No. 1084 # ふくし [E-mail] 2000/08/19 (土) 00:02:31
68userさん>
お忙しいところ、お返事ありがとうございます。
close(STDOUT); を早速入れてみましたが、ダメでした。

うーむぅApache以外のhttpdかー、考えませんでした。
どんなもんがあるんでしょうね(自分でも調べますが)

とまれ、どうもありがとうございましら。

No. 1085 # 68user 2000/08/19 (土) 00:13:29
@gongo さん
作成したプログラムをそのまま投げてデバッグしてもらおうと
するのはやめましょう。回答者の負担が大きすぎます。

例えば、color.dat を書き換えるとか、10個のウィジェットを使う、
なんてのは Xt の理解とは関係ないはずです。問題が発生する
最小限のプログラムを作ってから質問して下さい。

また、最小限のプログラムを作る過程で、自力で解決してしまう
ともあるはずです。例えば前の fscanf の件は、ファイル操作部分を
切り離して定数化しようとしていたなら、自力で原因を突き止められて
いたかもしれません。

あと、web にプログラムを置く際、改行コードを 0x0D に直しておくとか、
文字コードを EUC にしておくなどの気遣いがあるといいですね。

本題ですが、WidgetChoice の中に
    DrawOnWidget(label1,client_data,NULL);
と書いてみるといかがですか。当方の環境では、選択したウィジェットの
色が label1 に反映されていました。

No. 1086 # gongo [E-mail] 2000/08/19 (土) 01:33:10
@68user様
本当に面倒ばかりおかけして申し訳ございませんでした。
今まで状況をどうやって伝えたらよいのかわからず
全部お見せするという形をとってしまいましたが、
これからは良く考えます。

で、プログラムについてですが、結局、68user様のご返事を
いただく前に自分で試した方法でなんとかなりました。

方法としてはWidgetChoice()内でChangeColor()をやった後に
Color()をやって、あとは再描画したいウィジェットについて
XtUnmapWidget()とXtMapWidget()を行いました。
これによって新しい色が有効になってExposeイベントが
発生し再描画できました。

68user様がご提案してくださった方法についても実行してみます。

とにかく本当に御忙しいところすみませんでした。
何卒これからも宜しくお願い致します。

No. 1087 # Yuuki [E-mail] 2000/08/19 (土) 02:44:05
Yuukiです。

ふくしさん
> 肝心のApacheがどうしてもインストールできません。
> 具体的な現象でいうと、makeで「no rule for targat all. stop」
ここのバイナリを使うっていうのはどうですか?
一番楽だと思います。

http://www.apache.org/dist/binaries/win32/
http://www.apache.org/dist/binaries/win32/apache_1_3_12_win32.exe

No. 1088 # ふくし [E-mail] 2000/08/19 (土) 05:57:25
>Yuukiさん
情報ありがとうございます。
これも知っていて、インストールしてみたんですが、結局Cygwinとは共存できないんですよね?
(Cygwin の / から始まるファイルシステムにDocumentRootを乗せてCygwinのPerlを実行することができない)

会社でFreeBSDのApacheを使っていて、もうだいぶUNIX用のCGIスクリプトを書いていて、
プログラム内のパス名とか全部UNIX風に書いてしまっているし、flockやsystemなどのUNIXコマンドも使っているので、
できればCygwinにApacheを入れたいんです。
あるいは、Windows用のApacheをCygwinで使う方法があるんでしょうか?

今は別のPCにLinuxを入れてハブでつないで作業してるんですけど、
やっぱりどうしてもノートに入れて出先でデバッグとかしたいので、
またmakeから再挑戦しています。

いずれにせよ、ありがとうございます。

No. 1089 # T.T. 2000/08/19 (土) 10:34:07
はじめまして

> 肝心のApacheがどうしてもインストールできません。
> 具体的な現象でいうと、makeで「no rule for targat all. stop」

この件ですが、試しにソース(1.3.12)を持ってきてコンパイルしてみました。
結果、多少の問題があるものの、以下手順でインストールまで出来ました。
・./configure --prefix=/usr/local/apache
・以下のパッチを当てる
・make EXTRA_LIBS=-lcrypt
・make install INSTALL=install.exe

ただ、「no rule for targat all. stop」ってエラーには遭遇しませんでした。
Makefileの作り方を間違えていませんか? >ふくしさん
また、下のhello.cgiも動いているようです。(^^;

---- ▽パッチ ここから
diff -ru old/apache_1.3.12/src/main/http_main.c new/apache_1.3.12/src/main/http_main.c
--- old/apache_1.3.12/src/main/http_main.c Sat Feb 5 21:01:54 2000
+++ new/apache_1.3.12/src/main/http_main.c Sat Aug 19 07:29:30 2000
@@ -116,7 +116,7 @@
  #endif
  #ifdef WIN32
  #include "../os/win32/getopt.h"
-#elif !defined(BEOS) && !defined(TPF) && !defined(NETWARE) && !defined(OS390)
+#elif !defined(BEOS) && !defined(TPF) && !defined(NETWARE) && !defined(OS390) && !defined(__CYGWIN__)
  #include <netinet/tcp.h>
  #endif
  #ifdef HAVE_BSTRING_H
diff -ru old/apache_1.3.12/src/support/logresolve.c new/apache_1.3.12/src/support/logresolve.c
--- old/apache_1.3.12/src/support/logresolve.c Wed Jan 26 13:36:02 2000
+++ new/apache_1.3.12/src/support/logresolve.c Sat Aug 19 09:09:00 2000
@@ -101,7 +101,7 @@
    * statistics - obvious
    */
  
-#ifndef h_errno
+#if !defined(h_errno) && !defined(__CYGWIN__)
  extern int h_errno; /* some machines don't have this in their headers */
  #endif
  
---- △ここまで

No. 1090 # にゃ 2000/08/20 (日) 00:03:43
@ふくしさん

ううっ、外してましたか。

一応答えられるところだけ。
>ちなみに、勉強用に使っているのはオライリーの「ねずみの本」ですが、
>これでは \n\n になっているんですが、\r\n が正式なんでしょうか?

確か調べたことのある範囲ではHTTPの1.0と1.1で
ヘッダの改行はCR LF(\r\n)が正式だったと思います。
ただ改行が\nで不具合を起こした経験はないですし
多分問題はないと思います。

No. 1091 # 68user 2000/08/20 (日) 00:26:16
> 確か調べたことのある範囲ではHTTPの1.0と1.1で
> ヘッダの改行はCR LF(\r\n)が正式だったと思います。
ですね。

> ただ改行が\nで不具合を起こした経験はないですし
> 多分問題はないと思います。
ですね。WWW サーバ君が勝手に変換してくれます。

でも、少し前の apache ではどうやっても (\r\n を
出力しても) \n になってしまって、なんでかなぁと
思った記憶があるんですが、今やってみたら再現しない。
記憶違いか。


ところで、勝手に他人のリンク集にリンクチェック
かけてしまうという、かなり無礼なページを作りました。
    http://X68000.startshop.co.jp/~68user/links/
しかし、よいリンク集ってのは簡単には見付からないものだなぁ。

No. 1092 # ふくし [E-mail] 2000/08/20 (日) 16:17:55
T.T.さん、ありがとうございました!

教えていただいた通りにビルドしたら、インストールできました!(^o^)/

ただし、CGI がなかなか表示されない問題はそのままです。まとめると、
・普通の HTML を表示すると、すぐ表示され、流星もすぐ止まる。
・CGI で text/plain だと(cgi-bin に入ってる TEST-CGI とか)
    表示はされるものの、流星は止まらない。
・CGI で text/html だと、表示じたい待たされる
です。

\r\n問題、Connection: close 問題、KeepAlive 問題も試しましたが、無効だったようです。

あと、apachectl stop でたまに死んでくれず、そうするとapachectl start で生き返ってくれない問題がありました。
これは、apache/logs/httpd.pid が消えずに残っているせいで、手動でぶち消してやると再度生き返りましたが、
同様の問題に遭遇された方はいらっしゃいますか?

ときに、T.T.さんはhello.cgiを無事動かされたそうですが、
WindowsはNTですか、98ですか? CygwinはB20ですか、v1.1ですか?
教えていただけると幸いです。

なんだか掲示板を私物化しているようで心苦しいですが、CygwinでApacheが動くと使い道があると思うので御寛恕ください。
あらためてみなさんありがとうございます。(_ _)

No. 1093 # T.T. 2000/08/20 (日) 23:17:31
@ふくし さん

私の環境は Windows2000 + Cygwin-1.1.4 です
Cygwinを使うなら、NT系の方がいいですよ。
特に、外部プロセスの呼び出し辺りは95/98だと怪しいから...

おそらく、ふくしさんの問題も外部プロセス呼び出しに起因する問題でしょう。
Windows98で作業を行いたいのであれば、割り切って使うしかないと思います。
Netscape6だと</html>までを読み込んだ時点で表示してくれるようなので、
読み込みが完了しないことさえ気にしなければどうにかなるでしょう。

No. 1094 # ふくし [E-mail] 2000/08/21 (月) 00:43:57
うーん、そうかぁ、、。
NTも2000も持ってないし、使いたいマシンはノートなんで、
あんまりネイティブ インストールしにくいものがあるんですよね。
(ハイバネの設定とかいろんなドライバーなど、めんどくさいので、、。
    メーカー、サポートしてくんないし。
    最近のノートは「プロダクト リカバリー ディスク」とか入ってるけど
    OSのディスクじたいついてこないんだもんなー、、、)
プロセスの問題というのは納得がいきますね。
ということでどうやらCygwin固有の問題でだらだらと引っ張ってきたようですね。
どうもすいません。(_ _)
NC6 を入れてみます。重ねてどうもありがとうございました。

No. 1095 # ふくし [E-mail] 2000/08/21 (月) 02:23:41
たびたびすみません。
CGIがなかなか出てこない問題で、10分ぐらいたつと表示されると書いていたのは、
ApacheのTimeoutで表示が中断させられていたということがわかりました。
Timeoutをデフォルトの300(秒)から1とかにすると、見かけ上は1秒で表示されます。(^^;;;

No. 1096 # ふくし [E-mail] 2000/08/21 (月) 14:01:31
T.T.さま>
NC6試してみました。いいビルドに当たったのか、意外と安定しててビックリ。
ということで今回のソリューションとしては
「NC6でみて納得したら読み込み停止」で納得することにします。
すいません、今回の情報の公開について打ち合わせしたいことがあるので、
わたしあてに E-Mail いただけるでしょうか。お手間は取らせません。

他のみなさんも、情報をいただき大変ありがとうございました。
ここ数日でずいぶん物知りになりました。
今後もよろしくお願いいたします。

No. 1097 # 68user 2000/08/21 (月) 23:07:24
全然関係ない話題ですが、FYI ということで。
> NC6試してみました。いいビルドに当たったのか、意外と安定しててビックリ。
僕も数日間使いましたが、一度も落ちませんでした。
1998 年の末に、NC4 のコードを捨てて再出発したときは
どうなることかと思いましたが、まぁよくもここまできたもんだ。

Mozilla5 の最新 Milestone は M17。Netscape Communicator 6 PR2 は、
これに Netscape 社が Plug in などの付加機能を付けたもの。

Mozilla5 は
    http://www.mozilla.gr.jp/download.html
から自分の OS 用アーカイブを落としてきて、
    % tar zxvf mozilla-*-M17.tar.gz
    % cd package
    % ./run-mozilla.sh
これだけで動きます。mozilla5 は ~/.mozilla を使うので、
~/.netscape の退避は必要ありません。

mozilla を使って http://www.mozilla.gr.jp/jlp/ を見て、
M17-langjajp-ja.xpi か M17-langjajp.xpi をクリックするだけで、
メニューなどが日本語化 (これをしなくても日本語ページは閲覧可)。

FreeBSD ユーザは (ports-current を追っかけているなら)
ports で入れるのもいいでしょう。
# http://www.gnome.gr.jp/~yatt/mozilla/index.html

まぁ元々重い上にデバッグ情報を吐くので、かなり重いです。
自分で build するなら HDD を 1GB くらいは 空けておいた
方がいいかもしれない。

興味を持ったなら、
    http://www.mozilla.gr.jp/
からいろいろ辿って下さい。

No. 1098 # にゃ 2000/08/21 (月) 23:19:00
ふくしさん

全然解決にはなってませんが、一応参考までに。
Content-Lengthヘッダ等でサイズを指定してやれば
ブラウザの方で接続を切ってくれるようです。
まあ、あまり役には立たないかもしれませんが・・
    

No. 1099 # 68user 2000/08/22 (火) 02:40:28
> Content-Lengthヘッダ等でサイズを指定してやれば
またまた全然関係ないんですけど、頭の体操でも。

お手軽に Content-length を出すにはどうすればいいかなと
考えてみて、
    http://X68000.startshop.co.jp/~68user/tmp/content-length.txt
というスクリプトを書きました。BEGIN と END の部分を挿入すれば、
どんな CGI スクリプトでも Content-length が出せるはずでした。

コマンドラインからだとうまく動きます。でも、web 経由だと
    http://X68000.startshop.co.jp/~68user/tmp/content-length.cgi
と、Content-length が後に出力されてしまいます。

暇な人は原因を考えてみてください。僕は1時間悩みました。

Windows だとちゃんと動くのかもしれない。UNIX だと
動く環境もありますが、動かない環境の方が多いと思います。

No. 1100 # ふくし [E-mail] 2000/08/22 (火) 11:25:13
>にゃさん

をーホントだ(^^)。
ではじぜんに Content-length を計測して、それをはさむ仕組みを考えればいいですね。
どうもありがとうございました。

No. 1101 # hsj 2000/08/22 (火) 15:14:38
@68userさん
>暇な人は原因を考えてみてください。
perlは「何となく読める」ぐらいしかわからないのですが、
考えてみました。
原因がわかったとき脱力しました(笑

No. 1102 # gongo [E-mail] 2000/08/22 (火) 17:38:14
@68user様
Xウィンドウでの色の扱い方についての質問です。

Xアプリケーション工房のXlib編(3)で、RGBの値を0から255の範囲で指定して
いらっしゃいますが、これはどうしてなのでしょうか。
XColor構造体のred、green、blueのメンバは色のRGB値が入りますよね。
そして実際これらのメンバはunsigned shortのはずだから0から65535までの
値になるはずなのになぜ0から255の範囲で指定していらっしゃるのでしょうか。

試しに自分で簡単なプログラムを作ってみて、
同じように値(例えば"rgb:00/00/F0")をいれて見たのですが、
結果的にXAllocNamedColor後に各RGB値を見たところ、Red=0 Green=0 Blue=63420
となっていたので、きちんとunsinged shortになっています。
よって動作としては問題ないと思うのですが、どうして0から255の範囲で指定して
いたものが勝手に0から65535の範囲に直されたのかがよくわかりません。
それとXAllocNamedColorの一番後ろの引数には指定した色の正確なRGB値が入る
とのことなので調べたところ、Red=0 Green=0 Blue=61680 となっていました。
ということは指定した色に最も近いRGB値が入ったということなのでしょうか。
(厳密に同じRGB値になってほしいのですが)

そもそも自分の環境が一体何万色中何色同時発色できるのかというのが
いまいちよくわかりません。RGBの各々の強度を8ビットで表現すると
組合せとして約1677万色(フルカラーというのでしょうか)になりますが
実際はどうなのでしょう。前述のようにXColor構造体のRGBの各メンバは
unsigned shortです。ということはRGBそれぞれが16ビットで表現されるので
組合せとしては大変な数になってしまいます。

また同時発色についてはカラーマップが問題となってくる(?)のでしょうか。
本には、同時に画面に表示できる色の数はプレーン数から決まる
と書いてありました。で、私の使用しているディスプレイの情報を調べたところ
---------------------------------------------------
*Information of Visual Class*
-visual class : TrueColor
-red_mask : 00007c00
-green_mask : 000003e0
-blue_mask : 0000001f
-bits_per_rgb : 5
-map_entries : 64

*Other Informations*
-depth :16
-the number of cells in the colormap : 64
-the number of planes : 16
---------------------------------------------------
となりました。プレーン数が16ということはカラーマップのエントリは
最大65536色まで作れる(ということは65536色同時発色できる!?)とも
思ったのですが、カラーマップのセルの数は64という情報まで出てきました。
いくらなんでも64色ということはないと思うのですが・・・。

色に関してかなり頭の中が混乱しているのですが
何卒宜しくお願い致します。

No. 1103 # YAGI [E-mail] 2000/08/22 (火) 17:59:11
質問なのですが…

皆様はじめまして。今回初歩的な質問なのですが、
どうしてもわからなく投稿させて頂きます。

UNIXコマンドでuptimeがあると思うのですが
ロードアベレージ部の1分、5分、15分のところに表示される
0.09などといった値は何を基準に表示されるのでしょうか?

申し訳ありませんがお答え頂きたく思います。
よろしくお願いいたします

No. 1104 # 68user 2000/08/22 (火) 18:13:29
@hsj さん
> 原因がわかったとき脱力しました(笑
僕と同じ思いをしていただいたようで、なによりです :-)

@gongo さん
> Xアプリケーション工房のXlib編(3)で、RGBの値を0から255の範囲で指定して
> いらっしゃいますが、これはどうしてなのでしょうか。
一言で言えば X の仕様です。X(1) に
    rgb:<red>/<green>/<blue>
            <red>, <green>, <blue> := h | hh | hhh | hhhh
            h := single hexadecimal digits
とあります。たぶん、rgb:f/f/0 = rgb:ff/ff/00 = rgb:ffff/ffff/0000 ですね。
ちなみに rgb 表記は X の色が指定できるところならどこでも使えます。
# Ex. kterm -background rgb:00/33/55

> 本には、同時に画面に表示できる色の数はプレーン数から決まる
> と書いてありました。で、私の使用しているディスプレイの情報を調べたところ
> -depth :16
depth って、1色ごとの bit 数じゃなかったかなぁ。
なので、この環境だと 256*256*256 で 1677万色
出…ないかなぁ。違うかなぁ。

正直カラーマップのことはわかってないので、ちょっと調べて
みますが、あまり期待しないで下さい。

@YAGI さん
> ロードアベレージ部の1分、5分、15分のところに表示される
> 0.09などといった値は何を基準に表示されるのでしょうか?
これは後ほど。というか、正しい & わかりやすい説明をする
自信がないので、誰か答えていただけるとありがたいです。

No. 1105 # ふくし [E-mail] 2000/08/22 (火) 20:35:27
>68userさん

あれー、会社のApache1.3.9と自宅に構築中のApache1.3.12は
期待通り(というか期待を裏切ってというか)Content-length:13 を返しますねー。

これって最近話題になった改○○ー○を勝手に変えてくれる問題ですか?

No. 1106 # gongo [E-mail] 2000/08/22 (火) 22:52:29
@68user様
カラーマップについては私も調べているのですが、
どうもよくわかりません。ただ、少なくとも私の環境では
ビジュアルクラスがTrueColorとなっているため
カラーマップを書き換える事ができないようです。

>とあります。たぶん、rgb:f/f/0 = rgb:ff/ff/00 =
>rgb:ffff/ffff/0000 ですね。
>ちなみに rgb 表記は X の色が指定できるところならどこでも使えます。
〜省略〜
>なので、この環境だと 256*256*256 で 1677万色

ということはrgbを二桁(00やF0)で表せば必ず指定した通りの色が
でるのでしょうか。そうなるとなぜ四桁(FFFFなど)で表現する方法も
あるのでしょうか。逆に四桁だとカラーマップにないという事態に
なる確立が高まってしまうのでしょうか。
それと256*256*256というのはどこからわかるのでしょうか。

う〜ん、もう少し考えてみます。

No. 1107 # has 2000/08/23 (水) 00:37:34
いつもながらおかしな質問だったらごめんなさい。
perlでプログラムを作っていて、whileの中に置いたdo-whileの中で
ある条件のときはlastでdo-whileを抜けようとしていたのですが、
うまくいきませんでした。
結局いろいろ調べているうちに、lastはdo-whileをループと見なして
いないらしく、その外にあるwhileを抜けてしまっているということが
わかったのですが、これはそういうものなのですか?

No. 1108 # 68user 2000/08/23 (水) 01:59:41
@ふくしさん
> 改○○ー○
ではないんです。答えを書いちゃうと
    - $tmp = "tmpfile.$$";
    + $tmp = "/tmp/tmpfile.$$";
です。あほらしくて泣きそうです。


@has
そういうものだと思います。perl では
    do { block } while (expr)
の do は直後のブロックを実行するための命令で、
while は修飾子です。要は
    foo if ( expr );
と同じ形なわけですね。これはループではないので
last も next も redo も使えません。まぁ、
    { do { block } while (expr) }
とすれば大丈夫ですが、そこまでして do〜while を
使いたいかという話になりますか。


@gongo さん
> ということはrgbを二桁(00やF0)で表せば必ず指定した
> 通りの色がでるのでしょうか。
じゃなくて、X の内部では RGB それぞれ16ビットだけど、
16ビット×3なんていちいち指定するのがめんどくさいだろうから、
    1. ユーザは色名 (red とか) で指定できる
    2. ユーザは rgb:x/x/x rgb:xx/xx/xx rgb:xxx/xxx/xxx という
         簡略化した形式で色を指定できる
とした、ということだと思います。どの指定方法でも
XAllocNamedColor の内部で RGB それぞれ 16ビットの
色情報に展開されると。
# X のソースを持ってるなら GetColor.c あたりを
# 追っかけると、展開方法はわかると思います。

> XAllocNamedColorの一番後ろの引数には指定した色の
> 正確なRGB値が入るとのことなので調べたところ、
> Red=0 Green=0 Blue=61680 となっていました。
ということは、rgb:00/00/f0 は rgb:0000/0000/f0f0 に
展開されたということですね。

で、その 16ビットに展開した色情報が本当に使えるかどうかは、
カラーマップや X サーバ次第、ということです。

> ビジュアルクラスがTrueColorとなっているため
> カラーマップを書き換える事ができないようです。
TrueColor だと XAllocColorCells でプライベートカラーセルを
取得できないんでしたっけ? もしできないとしたら XCreateColormap
と XInstallColormap を使うんですかね (わかってない)。

> depth って、1色ごとの bit 数じゃなかったかなぁ。
これは違いました。多分。depth は1ドットごとのビット数です。

ところで、gongo さんはカラーセルを使って何をしようと
思っておられるんですか?

No. 1109 # ふくし [E-mail] 2000/08/23 (水) 02:04:17
>68userさん
あそっかぁ、、ぼくはこれを動かすために cgi-bin を 733 にしました。(^^;

>has さん
68user さんも書かれてますが、do の外側をさらに { } で囲むとあら不思議、
実行できるようです。

No. 1110 # has 2000/08/23 (水) 14:37:10
68user & ふくしさん、どうもありがとうございました。
{}でくくればいいなんて、なんか不思議な感じがします。

No. 1111 # gongo [E-mail] 2000/08/23 (水) 15:57:01
@68user様

> じゃなくて、X の内部では RGB それぞれ16ビットだけど、
> 16ビット×3なんていちいち指定するのがめんどくさいだろうから、

ということは二桁で表現するというのは本来0から65535なものを
大雑把にわけているということでしょうか。だとしたら大雑把に
分けているやつぐらいカラーマップに必ずあってほしいものですが・・・。

> # X のソースを持ってるなら GetColor.c あたりを

こ、これってどこにあるのでしょうか。

> 取得できないんでしたっけ? もしできないとしたら XCreateColormap
> と XInstallColormap を使うんですかね (わかってない)。

確かプライベートカラーセルは取得できなかったような気がします。
XCreateColormap や XInstallColormap についてはまだちょっと
詳しいことがわかりませんので本を見てみます。

> ところで、gongo さんはカラーセルを使って何をしようと
> 思っておられるんですか?

色を正確なRGB値で自由自在に扱いたいと思っております。
そして最終的には色の探索をするようなプログラムを作りたいと考えております。

以前お見せしたプログラムでは中央に窓を1個、
周りに10個の窓を表示しました。
で、各窓にはいろいろな色の服を表示しました。

具体的には中央の窓の服をターゲットとして、
周りの10個の服からユーザーがターゲットに最も近いと思われる
1つの服を選び、それによってあるアルゴリズムを通して
10個の服の色のRGB値をターゲットの色に近づけるように
改善したいと考えております。

1.服の提示(各窓の描画)
2.ユーザーによる選択
3.あるアルゴリズムを通して10個の服の色のRGB値を改善

この1から3の操作を繰り返すことで、提示されている10個の服の色が
ターゲットの服の色に収束していくようにしたいと考えております。
また実験段階なのでターゲットを表示しますが、
最終的にはターゲットの表示をやめ、ユーザーが心に思い描いた色へ
収束するようなアプリケーションを作りたいと考えております。

ここで問題なのは正確なRGB値を入れてもその色がカラーマップにない場合です。
近い色で勝手に代用されてしまうと、3で用意したアルゴリズムでの有効性
(いかによりよい色へどのくらいの回数で収束するかなど)を確認したいのに
別のところで収束する要因がうまれてしまうことになってしまいかねないからです。

No. 1112 # gongo [E-mail] 2000/08/23 (水) 19:30:47
@68user様
カラーマップの内容を知るための例みたいなのが本に載っていたので
試してみました。以下のtmp[k]はXColor構造体です。
尚、この例はRGB各32階調カラーマップのカラーセル内の表示色値を得る
といったものだそうです。

-----------------------------------------------------------------------------
    cmap = DefaultColormap(dummy_dpy,dummy_screen);

    for(k=0; k<32; k++)
        {
            tmp[k].pixel = k | k << 5 | k << 10;
            tmp[k].pad = 0;
            tmp[k].flags = DoRed | DoGreen | DoBlue;
            XQueryColor(dummy_dpy,cmap,&tmp[k]);
        }
-----------------------------------------------------------------------------

で、結果的に

-----------------------------------------------------------------------------
Red=0 Green=0 Blue=0 Pixel=0
Red=2114 Green=2114 Blue=2114 Pixel=1057
Red=4228 Green=4228 Blue=4228 Pixel=2114
Red=6342 Green=6342 Blue=6342 Pixel=3171
〜省略〜
Red=61306 Green=61306 Blue=61306 Pixel=30653
Red=63420 Green=63420 Blue=63420 Pixel=31710
Red=65535 Green=65535 Blue=65535 Pixel=32767
-----------------------------------------------------------------------------

といったようにPixel値が32767まできました。
ということは私の環境では 32*32*32=32768色 が
カラーマップにエントリされているようです。
実際 Red=61306 Green=4228 Blue=6342 などのように
色を指定したところ、XAllocColorを通してもRGB値が
変化しませんでした。

TrueColorということでカラーマップを書き換えられないので
この範囲内でうまくやりくりするしかないのでしょうか・・・。
XCreateColormap と XInstallColormap について
本を見てみましたが、まだよくわかりません。

No. 1113 # にゃ 2000/08/23 (水) 22:11:47
>あほらしくて泣きそうです。
なるほど。やはりopenの返り値は常にチェックすべきなのですね。(^_^;

しかし、こういうライブラリを作っておくと便利そうですね。
勉強になりました。

No. 1114 # 68user 2000/08/24 (木) 00:43:20
えっと、手短に返答をば。

@has
> {}でくくればいいなんて、なんか不思議な感じがします。
そうか、よく考えてみれば、変な仕様なんだな。
でも、ちょっと試してみましたが、next/last/redo が
そのまんま使えるわけでもないようで。


@gongo さん
> ということは二桁で表現するというのは本来0から65535なものを
> 大雑把にわけているということでしょうか。
です。ちと調べてみたところ、rgb:e/8/2 ってのは
    e は 14/15 なので、ffff の 14/15 = 61166
    8 は 8/15 なので、ffff の 8/15 = 34952
    2 は 2/15 なので、ffff の 2/15 = 8738
で、rgb = 61166/34952/8738 になるようです。

> 確かプライベートカラーセルは取得できなかったような気がします。
これはやはりできないようですね。

> こ、これってどこにあるのでしょうか。
例えば http://www.ring.gr.jp で「R6.4」などというキーワードで
探せば、http://ring.etl.go.jp/pub/X/opengroup/R6.4/tars/
行けます。

XFree86 など各種 X サーバというのは、(基本的には) これに X サーバの
実装を追加したものです。こっちのソースは例えばここ。
    http://ring.etl.go.jp/pub/XFree86/

> 近い色で勝手に代用されてしまうと、3で用意したアルゴリズムでの有効性
> (いかによりよい色へどのくらいの回数で収束するかなど)を確認したいのに
> 別のところで収束する要因がうまれてしまうことになってしまいかねないからです。
なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。


@にゃ さん
>なるほど。やはりopenの返り値は常にチェックすべきなのですね。(^_^;
ですね。ちなみにこれまでで一番はまったのは CGI やりはじめの頃。
    open(IN,"foo |");
ってのが動かない。理由は foo が core dump してたから、ってのです。
コマンドラインからは動くし、nobody 権限で動いていたから core が
できないので core 吐いてることがわからないという…。


@YAGI さん
> ロードアベレージ部の1分、5分、15分のところに表示される
> 0.09などといった値は何を基準に表示されるのでしょうか?
FreeBSD の w(1) から引用すると、
    平均負荷は、最近の1分、5分、15分間における実行キュー内の
    ジョブ数の平均値を表します。
です。すいませんが、わからなければ再度質問して下さい。
# これを説明し出すと長いんだわ、これが。

No. 1115 # gongo [E-mail] 2000/08/24 (木) 01:39:36
@68user様
いろいろありがとうございました。

>なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。

なので、カラーマップに存在する色だけを使って動くように
頑張ってみます。今後とも宜しくお願い致します。

No. 1116 # 68user 2000/08/24 (木) 02:17:51
>> なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。
> なので、カラーマップに存在する色だけを使って動くように
最初は TrueColor でも XCreateColormap/XInstallColormap で
いけるんじゃないか思いました。でも、手元のサンプルプログラムが
ことごとく動かないので、やっぱり TrueColor でもダメなのかと
あきらめかけました。ところが、X の設定を 8bpp (depth8) に
変えて PseudoColor にしても同じくサンプルプログラムが動きませんでした。

というわけで、サンプルプログラムがダメなのか、もともと
TrueColor だと不可能なのかはわかりませんでした。

ちなみに何をしたかったかと言うと、
    - netscape の起動時に -install オプションを付けると、
        マウスが netscape の中に入ったときだけカラーマップが
        変更され、netscape だけが色を独占できる
    - その代わり、netscape 以外の部分の色はちょっと変になる。
    - マウスを netscape から外すと、netscape の中の色が変になり、
        それ以外の色が正常に戻る
というようなやつです。

No. 1117 # gongo [E-mail] 2000/08/24 (木) 18:38:46
@68user様
> 最初は TrueColor でも XCreateColormap/XInstallColormap で
> いけるんじゃないか思いました。

私も本をみて XCreateColormap/XSetWindowColormap/XInstallColormap
といった感じで動かしてみようと思いましたが、うまくいきませんでした。
本の例をまねてXCreateColormapの2番目の引数(window)を
DefaultRootWindowにしたがまずかったのか、実行すると窓が画面左上に出て
動かせなくなってしまいました(ウィンドウマネージャが動いていない!?)。
窓の表示位置がおかしいのはともかくとして、肝心のRGB値がどうなったかというと
XAllocColorの後にやはり近い値に置き換えられたと思います。

しかも、プログラムを終了して、そのプログラムを書き換えようとmuleで
開いたらmuleが勝手に画面左上に行って動かせなくなってしまいました。
で、あわててXUninstallColormapをプログラムに書き加えて
再度実行したら元の状態に戻りました。
う〜ん、難しいです・・・。

それとちょっと思ったのですが、showrgbで表示される全ての色は本当に
カラーマップに存在するのでしょうか。結構数値が細かく変わっている
ところもあるので、本当にあるのかなぁと疑問に思いました。
それとも256*256*256を本当に表示できる環境を想定して
細かく用意されているのでしょうか。

No. 1118 # YAGI [E-mail] 2000/08/25 (金) 14:18:23
>68user様
レスありがとうございます。
大体のイメージは浮かぶ事が出来ました。
ただ、また質問となってしまうのですが、
その数値(0.01)はどれくらいの値になっていれば
高負荷がかかっているといえるのでしょうか?
やはり、1.00以上だと高負荷なのでしょうか?

No. 1119 # 68user 2000/08/25 (金) 21:55:26
以下の説明には多分何個・何十個もの嘘がありますが、「ここは
嘘かもしれない」と注釈を付け出すと、全部に注釈を付けるはめに
なるので、略。ツッコミは歓迎します。


まずは基礎知識。

プロセスにはいくつかの状態がありますが、簡略化して、以下の4つを考えます。

    実行状態   … まさに CPU がそのプロセスの処理をおこなっている状態
    実行可能状態 … CPU は同時に複数の処理をできないので、CPU が現在
                               実行しているプロセスの処理を終えるまで待っている状態
    入出力待ち  … ディスクに書き込む/読み込む命令を出した後、ディスク
                               コントローラからの「終わったよ」という知らせを
                               待っている状態
    sleep 状態  … sleep を使っているか、デバイスやソケットを見張っている
                               (listen や select や read している) が、まだデータが
                               届いていない) 状態

プロセスは必ず上記のうち1つの状態を取ります。


さて、本題。

load average というのは、ある瞬間の「実行可能状態のプロセスの個数」
の平均です。個数ですから整数なんですが、平均を取るので、0.12 などと
いった小数になります。

例えば
    0:00:00 の時点での実行可能状態のプロセス数が3
    0:00:01 の時点での実行可能状態のプロセス数が0
    0:00:02 の時点での実行可能状態のプロセス数が1
なら、load average は 4/3 = 1.33 です。これは3秒間だけプロセス数を
数えましたが、最近1分、5分、10分のそれぞれのプロセス数の平均を
取ったものが、top や uptime で表示される load average です。

つまり、
    - load average が 1 なら、常に CPU が何かしらの処理をしている。
        CPU が遊んでいる時間がない。
    - load average が 1 未満なら、実行可能状態のプロセスがない
        瞬間がある。その間、CPU は遊んでいる。
    - load average が 1 超なら、実行可能状態のプロセスが多く、
        待たされているプロセスがある。
ということです。

# あくまでも平均なので、本当はそうでない瞬間が多くあるでしょう。


だからといって、1 を閾値 (いきち) として負荷が低い/高いと
言っていいかというと、多分違うと思います。


なお、
    A.「変数を1ついじくって 1秒 sleep する」という処理を永遠に繰り返す
というプロセスと、
    B.「変数の内容を1増やし続ける」という処理を永遠に繰り返す
というプロセスでは、負荷が全く違います。

A は、実行可能状態から実行状態に移ると、変数を1ついじくって、
すぐに sleep 状態に入ります (実行可能状態でなくなる)。1秒経つと
再度 実行可能状態に移ります。

B は、実行可能状態から実行状態になると、変数の内容を1増やし
続けます。一定時間が経過すると、カーネルが強制的にプロセスを
実行状態から実行可能状態に戻します。

B のようなプロセスを実行すると、load average は大体 1 だけ
上がるはずです。なぜなら、B のプロセスは入出力待ちも sleep も
しないため、「常に実行可能状態になり得るプロセス」だからです。

たとえば C でもシェル上でもいいので、無限ループするだけの
プログラム
    % while (1)
    while ? end
を実行すると、load average が大体 1 上がり、もう1つ同じのを
実行すると さらに 1 上がるでしょう。

No. 1120 # CZ 2000/08/28 (月) 14:09:34
つかぬことをお聞きしますが,"リンク集のリンク集"のSSIはいつ動作するようになるのでしょうか。

No. 1121 # 68user 2000/08/28 (月) 17:04:12
おろ、いつのまにか止まってやがる (笑)。というか、SSI が効いてないのか…。
ウチに帰ったら直します。御指摘どうもです。

No. 1122 # 68user 2000/08/29 (火) 00:34:09
> SSI が効いてないのか…。
8/28 AM8:30 ごろから5時間ほど、SEGA BBS の過去ログの CGI に
199.172.149 あたりから怒涛のアクセスがあったようです。
apache のログを見ると、500 エラーが 9000件ほど記録されてました。
# トップページのカウンタも、壊れてもうた。

どうもそれ以来 apache の動作がおかしく、一部のページで SSI が
動作していないようです

CGI 側で同時起動の制限が必要なのかもしれませんね。

ま、こういうこともあるということで。

No. 1123 # とも [E-mail] 2000/08/29 (火) 06:18:52
皆様 始めまして。 ともと申します。
UNIX暦 3ヶ月の超初心者です。

スクリプトを書いておりますが、そのスクリプトのあるステップでどうしてもユーザーをスイッチしなくてはいけない事になってしまいました。
現在 su コマンドを使ってその部分だけわざわざパスワードを入れて、またスクリプトを実行するという 2スクリプト制になってます。
もしユーザーの変更も自動的にスクリプト上でできればとても楽なんですが、よい方法ありませんでしょうか?
当分はスクリプト自体にパスワードをハードコードしてもいいと思ってます。

どなたか お知恵をお貸しください!

とも

No. 1124 # 68user 2000/08/29 (火) 17:03:20
最も簡単なのは root 権限でスクリプトを動かし、適時 su で
特定のユーザ権限を得るか、su username command とすることです。

それが無理なら、suid なプログラムを作ればよいです。
    http://X68000.startshop.co.jp/~68user/unix/pickup?setuid

> 当分はスクリプト自体にパスワードをハードコードしてもいいと思ってます。
su は端末 (/dev/tty) からパスワードを読もうとするので、
標準入力などからデータを流し込むことは不可能です。

No. 1125 # 68user 2000/08/30 (水) 02:27:25
> 8/28 AM8:30 ごろから5時間ほど、SEGA BBS の過去ログの CGI に
> 199.172.149 あたりから怒涛のアクセスがあったようです。
今日も同じ時間帯に同じところから。うっとうしいのので、
SEGA BBS の CGI をしばらく止めます。

ところで、またカウンタが壊れました。/var/log/messages を
見るに、オープンしたファイル数が OS の最大値を越えたため
だと思われます。
# よく見ると、カウンタで open のエラーチェックを
# 全くしてなかった。そりゃ壊れるわな。

> su username command とすることです。
su username -c command でした。

No. 1127 # 戸川 [E-mail] 2000/08/31 (木) 15:38:36
シェルを創っているのですがSyslog(/var/log/messages) にログを出力したいのですがコマンドでできないのでしょうか?教えてください。
よろしくお願いします

No. 1129 # has 2000/08/31 (木) 17:57:02
以前から気になっていたことなんですが、
NTじゃなく一般のWindowsがTCP上で行っているサービスには、
どんなものがあるんでしょうか。
もし知っておられたら教えて下さい。
また、こういった類の情報はどうやったら入手できるものなのか、
よろしければあわせて教えて下さい。

No. 1130 # 68user 2000/09/01 (金) 00:11:30
眠い。ので、手短に。

netstat -a とか。少なくとも Win98 にはあります。
標準では netbios 関係くらいしか listen してないと思います。

logger(1) など。

No. 1131 # なむさむ 2000/09/01 (金) 11:18:27
「httptalker(http-client)について」
とてもわかりやすいサイトで
unixでいろいろできるんだなぁ、と感心してます
使い始めて三ヶ月位です(vinelinuxを使ってます
httptalkerでうまくget出来ないところがあるので
質問させてください
httptalker.pl -getに続けて
1:news.yahoo.co.jp/headlines/top/
2:username.hypermart.net/hoge/huga.html
この二つに関してですが1,2とも
wgetでは問題無く取れますが
httptalkerでは404や「そのページは存在しない」
となります。サイトにある
telnetでgetする方法だとでは1のみ問題無し
2ではやはり404となります
何か別の(httpdなどの)知識
が必要なのでしょうか?
何かアドバイスがあれば
よろしくお願いします

No. 1132 # やまま 2000/09/01 (金) 12:55:40
> なむさむ さん
うーむ、ハイマは、バーチャルホストがなんたら..
Host: username.hypermart.net(CRLF)
つければいいのかな。。

No. 1133 # なむさむ 2000/09/01 (金) 22:11:34
>やままさん
アドバイスありがとうございます
バーチャルホストについて勉強してみます
確かにhost付けてなかった・・・
ところで(CRLF)っていうのは
\r\nとか、そんな意味ですか?

No. 1134 # やまま 2000/09/01 (金) 22:53:12
バーチャルホストについては。
http://x68000.startshop.co.jp/~68user/net/http-4.html
ここにあったよ。

CRLFはUNIXなら\r\nでいいみたいです。

No. 1135 # 68user 2000/09/02 (土) 01:37:03
hypermart は Host ヘッダです。

> 1:news.yahoo.co.jp/headlines/top/
こっちは yahoo の WWW サーバが悪いです。

WWW サーバの返すヘッダとボディの間のセパレータが
CR LF LF (もしくは CR LF で、最後の LF はボディの
一部かもしれない) となっているので、httptalker が
ボディ部もヘッダの一部だと解釈しています。

まぁ、セパレータが CR でも LF でも CR LF でも
認識できるようにするのがダウンローダとしては正しい道でしょう。

No. 1136 # とも 2000/09/02 (土) 02:21:20
su についてのご返答ありがとうございました。 早速挑戦してみます。

No. 1137 # なむさむ 2000/09/02 (土) 14:57:43
あ゛・・・きちんと読んでなかった
取り敢えずhost付けてやってみたら
上手く行きました
yahooの方はちょとむつかしくて
ヘッダーの役割とかがいまいち解ってないので、
もう一度きちんと読んでからやってみます
取り敢えずありがとうございました

No. 1138 # has 2000/09/02 (土) 19:35:18
@68user
> netstat -a とか。
> 標準では netbios 関係くらいしか listen してないと思います。
なるほど、どうもありがとうございました。

No. 1139 # 68user 2000/09/03 (日) 03:08:06
ところで やままさんへ。

1時間に一度くらいこのページにリンクチェックをかけておられる
ようですが、このページは Last-modified を GMT で出しています。
しかし、そちらのページでは JST として扱っているようで、
常に 9時間前に更新されたものと見なされています。

No. 1140 # カワエ [E-mail] 2000/09/03 (日) 19:47:49
はじめまして、カワエといいます。今受験生です。
私は将来プログラマーになりたいのですが、PCを買ってまだ半年、まともに触ったこともない超初心者です。
プログラマーの具体的なことについても知らず、ネットで検索したりしているのですが、
他の掲示板で「大変だ」「引退が早い」「プログラミングは趣味にしておくべきだ」等の発言をよく見ましたが、実際のところどうなのでしょうか?
それと、やはり女性差別があったりするのでしょうか?
68user様、プログラマーの方、教えてください。

No. 1141 # 68user 2000/09/03 (日) 22:24:40
あらら、進路相談ですか。

ゲームプログラマになりたいのなら、ここより
    http://www.lares.dti.ne.jp/~yagiyama/
で聞くのがいいでしょう。

でなくて、いわゆる SE を目指すならば
    http://village.infoweb.ne.jp/~watany/selink/index.htm
を読むといいかもしれません。

僕は一応 SE ですが、社会人一年目なので、軽々しくアドバイス
するのはやめておきます。

No. 1142 # カワエ [E-mail] 2000/09/04 (月) 01:57:44
有り難うございます。
では、そっちに行ってみることにします。

No. 1143 # ぽち [URL] [E-mail] 2000/09/04 (月) 11:15:52
すみませんが、HPの紹介をさせてください。

ゲーセンはゲーマーだけの物って誰が決めた!!
もっとゲーセンを楽しもう!!をテーマに
ゲームセンターのゲームをゲーマーのみならず
カップルや女の人も楽しめるように、
情報をセレクト&紹介するページです。
内容は音ゲーの手ほどきや僕のホームグラウンドの
ゲーセンの最新機種入荷情報などです。
是非おいでください。
この書き込みが掲示板の意に反する内容でしたら、
お手数ですが削除してください。

No. 1144 # みちこ [URL] 2000/09/07 (木) 04:57:14
はじめまして。
インフォシークからとんできました。
今、一生懸命UNIXのことを書いたHPを作っています。
ここに書いてあることがとっても役立ちました。
また参考にさせていただきます。

学校でunixを使っていて、けっこうはまってきました。
家はまだウィンドウズですが・・・
もしよろしかったら私のHPにも足を運んでください。
けっこう頑張って勉強しています。

No. 1145 # 68user 2000/09/07 (木) 09:30:39
> 今、一生懸命UNIXのことを書いたHPを作っています。
ほほぅ、一番オジサンっぽいコマンドが cal ですか (笑)
僕は cpio と vi じゃないかと思います。なんとなく。

No. 1146 # gongo [E-mail] 2000/09/08 (金) 20:18:26
@68user様
どうも、gongoです。

Xウィンドウ・システムのことで質問があります。
以前見ていただいたプログラムなどで画面に表示される窓を
なんらかの形で保存して、texなどにはりつけたいと考えております。
そこで画面を保存するにはどのようにしたらよいのでしょうか。

xwd というコマンドを用いると窓の内容を保存できるようなのですが
自分の環境ではこの方法で保存した .xwd ファイルを xv で
表示しようとすると真っ黒になっていました。
で、他のマシンでもやってみたところ、中には窓を取り込めるものも
ありました。しかし、そのマシンだと今度は以前見ていただいたプログラムが
期待通りに動きません(カラーマップのインデックスがすくない模様)。

自分のマシンと xwd がうまくいったマシンでは OSは一緒です。
ちなみにOSはFreeBSD 2.2.8Rです。インストールした人間が違うので
ひょっとすると何かX関連で細かい設定がまずいのかもしれませんが
そこら辺の確認の仕方もよくわかりません。
なにか良い方法はないでしょうか。

また xwd 以外に窓を取り込む良い方法はないでしょうか。

よろしくお願い致します。

No. 1147 # gongo [E-mail] 2000/09/09 (土) 01:24:04
@68user様
度々すみません、gongoです。

>また xwd 以外に窓を取り込む良い方法はないでしょうか。

自分で書いておいてあれなのですが、xvの機能でGrabというのが
あるようなので試してみます。

No. 1148 # 68user 2000/09/09 (土) 15:55:36
> 自分の環境ではこの方法で保存した .xwd ファイルを xv で
> 表示しようとすると真っ黒になっていました。
原因や正しい回避方法は知りません。ただ、display や xwud で
見ると正しく表示されるので、僕は特に困ってないです。

おそらく xwd 形式で保存しておく必要はないのではないでしょうから、
(TeX に貼るということなので)
    % convert foo.xwd foo.eps
しておけばいいでしょう。

> xvの機能でGrabというのがあるようなので試してみます。
あと、import ってのもあります。display, convert, import は
ImageMagick に含まれています。

No. 1149 # gongo [E-mail] 2000/09/09 (土) 23:17:32
@68user様
xvのGrabで保存でき、表示もうまくできました。

>% convert foo.xwd foo.eps
こちらについても試させていただきます。

>ImageMagick に含まれています。
このImageMaickというのは何なのでしょうか。
標準でインストールされるもの(?)なのでしょうか。

何はともあれなんとかTexにはれそうです。
ありがとうございました。

No. 1150 # 68user 2000/09/10 (日) 00:00:56
> 標準でインストールされるもの(?)なのでしょうか。
されないです。FreeBSD なら ports か packages でインストール
しましょう。結構有名なプログラムなので、NetBSD でも Linux でも
パッケージは作成されているはずです。

No. 1151 # gongo [E-mail] 2000/09/10 (日) 00:37:06
@68user様
>FreeBSD なら ports か packages でインストールしましょう。
なるほど、わかりました。
あぁ、でも勝手にマシンに入れちゃうとまずいかも・・・。
私のマシンではないので様子を見てインストールできたらやってみます。

No. 1152 # konan [E-mail] 2000/09/10 (日) 02:08:28
HTTP クライアントを作ってみよう(2)
http://www2.startshop.co.jp/~68user/net/http-2.html

のhttp-client.plを実行すると下記のエラーで止まってしまいます。
Use of uninitialized value in subroutine entry at http-client.pl line 14.
Use of uninitialized value in concatenation (.) at http-client.pl line 21.

対策方法をお知らせください。

perlはperl, v5.6.0 built for MSWin32-x86-multi-threadを使っています。
OSはWin98SEです

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