T.T.さま> NC6試してみました。いいビルドに当たったのか、意外と安定しててビックリ。 ということで今回のソリューションとしては 「NC6でみて納得したら読み込み停止」で納得することにします。 すいません、今回の情報の公開について打ち合わせしたいことがあるので、 わたしあてに E-Mail いただけるでしょうか。お手間は取らせません。 他のみなさんも、情報をいただき大変ありがとうございました。 ここ数日でずいぶん物知りになりました。 今後もよろしくお願いいたします。 |
全然関係ない話題ですが、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/ からいろいろ辿って下さい。 |
ふくしさん 全然解決にはなってませんが、一応参考までに。 Content-Lengthヘッダ等でサイズを指定してやれば ブラウザの方で接続を切ってくれるようです。 まあ、あまり役には立たないかもしれませんが・・ |
> 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 だと 動く環境もありますが、動かない環境の方が多いと思います。 |
>にゃさん をーホントだ(^^)。 ではじぜんに Content-length を計測して、それをはさむ仕組みを考えればいいですね。 どうもありがとうございました。 |
@68userさん >暇な人は原因を考えてみてください。 perlは「何となく読める」ぐらいしかわからないのですが、 考えてみました。 原因がわかったとき脱力しました(笑 |
@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色ということはないと思うのですが・・・。 色に関してかなり頭の中が混乱しているのですが 何卒宜しくお願い致します。 |
質問なのですが… 皆様はじめまして。今回初歩的な質問なのですが、 どうしてもわからなく投稿させて頂きます。 UNIXコマンドでuptimeがあると思うのですが ロードアベレージ部の1分、5分、15分のところに表示される 0.09などといった値は何を基準に表示されるのでしょうか? 申し訳ありませんがお答え頂きたく思います。 よろしくお願いいたします |
@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などといった値は何を基準に表示されるのでしょうか? これは後ほど。というか、正しい & わかりやすい説明をする 自信がないので、誰か答えていただけるとありがたいです。 |
>68userさん あれー、会社のApache1.3.9と自宅に構築中のApache1.3.12は 期待通り(というか期待を裏切ってというか)Content-length:13 を返しますねー。 これって最近話題になった改○○ー○を勝手に変えてくれる問題ですか? |
@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というのはどこからわかるのでしょうか。 う〜ん、もう少し考えてみます。 |
いつもながらおかしな質問だったらごめんなさい。 perlでプログラムを作っていて、whileの中に置いたdo-whileの中で ある条件のときはlastでdo-whileを抜けようとしていたのですが、 うまくいきませんでした。 結局いろいろ調べているうちに、lastはdo-whileをループと見なして いないらしく、その外にあるwhileを抜けてしまっているということが わかったのですが、これはそういうものなのですか? |
@ふくしさん > 改○○ー○ ではないんです。答えを書いちゃうと - $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 さんはカラーセルを使って何をしようと 思っておられるんですか? |
>68userさん あそっかぁ、、ぼくはこれを動かすために cgi-bin を 733 にしました。(^^; >has さん 68user さんも書かれてますが、do の外側をさらに { } で囲むとあら不思議、 実行できるようです。 |
68user & ふくしさん、どうもありがとうございました。 {}でくくればいいなんて、なんか不思議な感じがします。 |
@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で用意したアルゴリズムでの有効性 (いかによりよい色へどのくらいの回数で収束するかなど)を確認したいのに 別のところで収束する要因がうまれてしまうことになってしまいかねないからです。 |
@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 について 本を見てみましたが、まだよくわかりません。 |
>あほらしくて泣きそうです。 なるほど。やはりopenの返り値は常にチェックすべきなのですね。(^_^; しかし、こういうライブラリを作っておくと便利そうですね。 勉強になりました。 |
えっと、手短に返答をば。 @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分間における実行キュー内の ジョブ数の平均値を表します。 です。すいませんが、わからなければ再度質問して下さい。 # これを説明し出すと長いんだわ、これが。 |
@68user様 いろいろありがとうございました。 >なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。 なので、カラーマップに存在する色だけを使って動くように 頑張ってみます。今後とも宜しくお願い致します。 |
>> なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。 > なので、カラーマップに存在する色だけを使って動くように 最初は TrueColor でも XCreateColormap/XInstallColormap で いけるんじゃないか思いました。でも、手元のサンプルプログラムが ことごとく動かないので、やっぱり TrueColor でもダメなのかと あきらめかけました。ところが、X の設定を 8bpp (depth8) に 変えて PseudoColor にしても同じくサンプルプログラムが動きませんでした。 というわけで、サンプルプログラムがダメなのか、もともと TrueColor だと不可能なのかはわかりませんでした。 ちなみに何をしたかったかと言うと、 - netscape の起動時に -install オプションを付けると、 マウスが netscape の中に入ったときだけカラーマップが 変更され、netscape だけが色を独占できる - その代わり、netscape 以外の部分の色はちょっと変になる。 - マウスを netscape から外すと、netscape の中の色が変になり、 それ以外の色が正常に戻る というようなやつです。 |
@68user様 > 最初は TrueColor でも XCreateColormap/XInstallColormap で > いけるんじゃないか思いました。 私も本をみて XCreateColormap/XSetWindowColormap/XInstallColormap といった感じで動かしてみようと思いましたが、うまくいきませんでした。 本の例をまねてXCreateColormapの2番目の引数(window)を DefaultRootWindowにしたがまずかったのか、実行すると窓が画面左上に出て 動かせなくなってしまいました(ウィンドウマネージャが動いていない!?)。 窓の表示位置がおかしいのはともかくとして、肝心のRGB値がどうなったかというと XAllocColorの後にやはり近い値に置き換えられたと思います。 しかも、プログラムを終了して、そのプログラムを書き換えようとmuleで 開いたらmuleが勝手に画面左上に行って動かせなくなってしまいました。 で、あわててXUninstallColormapをプログラムに書き加えて 再度実行したら元の状態に戻りました。 う〜ん、難しいです・・・。 それとちょっと思ったのですが、showrgbで表示される全ての色は本当に カラーマップに存在するのでしょうか。結構数値が細かく変わっている ところもあるので、本当にあるのかなぁと疑問に思いました。 それとも256*256*256を本当に表示できる環境を想定して 細かく用意されているのでしょうか。 |
>68user様 レスありがとうございます。 大体のイメージは浮かぶ事が出来ました。 ただ、また質問となってしまうのですが、 その数値(0.01)はどれくらいの値になっていれば 高負荷がかかっているといえるのでしょうか? やはり、1.00以上だと高負荷なのでしょうか? |
以下の説明には多分何個・何十個もの嘘がありますが、「ここは 嘘かもしれない」と注釈を付け出すと、全部に注釈を付けるはめに なるので、略。ツッコミは歓迎します。 まずは基礎知識。 プロセスにはいくつかの状態がありますが、簡略化して、以下の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 上がるでしょう。 |
つかぬことをお聞きしますが,"リンク集のリンク集"のSSIはいつ動作するようになるのでしょうか。 |
おろ、いつのまにか止まってやがる (笑)。というか、SSI が効いてないのか…。 ウチに帰ったら直します。御指摘どうもです。 |
> SSI が効いてないのか…。 8/28 AM8:30 ごろから5時間ほど、SEGA BBS の過去ログの CGI に 199.172.149 あたりから怒涛のアクセスがあったようです。 apache のログを見ると、500 エラーが 9000件ほど記録されてました。 # トップページのカウンタも、壊れてもうた。 どうもそれ以来 apache の動作がおかしく、一部のページで SSI が 動作していないようです CGI 側で同時起動の制限が必要なのかもしれませんね。 ま、こういうこともあるということで。 |
皆様 始めまして。 ともと申します。 UNIX暦 3ヶ月の超初心者です。 スクリプトを書いておりますが、そのスクリプトのあるステップでどうしてもユーザーをスイッチしなくてはいけない事になってしまいました。 現在 su コマンドを使ってその部分だけわざわざパスワードを入れて、またスクリプトを実行するという 2スクリプト制になってます。 もしユーザーの変更も自動的にスクリプト上でできればとても楽なんですが、よい方法ありませんでしょうか? 当分はスクリプト自体にパスワードをハードコードしてもいいと思ってます。 どなたか お知恵をお貸しください! とも |
最も簡単なのは root 権限でスクリプトを動かし、適時 su で 特定のユーザ権限を得るか、su username command とすることです。 それが無理なら、suid なプログラムを作ればよいです。 http://X68000.startshop.co.jp/~68user/unix/pickup?setuid > 当分はスクリプト自体にパスワードをハードコードしてもいいと思ってます。 su は端末 (/dev/tty) からパスワードを読もうとするので、 標準入力などからデータを流し込むことは不可能です。 |
> 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 でした。 |
シェルを創っているのですがSyslog(/var/log/messages) にログを出力したいのですがコマンドでできないのでしょうか?教えてください。 よろしくお願いします |
以前から気になっていたことなんですが、 NTじゃなく一般のWindowsがTCP上で行っているサービスには、 どんなものがあるんでしょうか。 もし知っておられたら教えて下さい。 また、こういった類の情報はどうやったら入手できるものなのか、 よろしければあわせて教えて下さい。 |
眠い。ので、手短に。 netstat -a とか。少なくとも Win98 にはあります。 標準では netbios 関係くらいしか listen してないと思います。 logger(1) など。 |
「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などの)知識 が必要なのでしょうか? 何かアドバイスがあれば よろしくお願いします |
> なむさむ さん うーむ、ハイマは、バーチャルホストがなんたら.. Host: username.hypermart.net(CRLF) つければいいのかな。。 |
>やままさん アドバイスありがとうございます バーチャルホストについて勉強してみます 確かにhost付けてなかった・・・ ところで(CRLF)っていうのは \r\nとか、そんな意味ですか? |
バーチャルホストについては。 http://x68000.startshop.co.jp/~68user/net/http-4.html ここにあったよ。 CRLFはUNIXなら\r\nでいいみたいです。 |
hypermart は Host ヘッダです。 > 1:news.yahoo.co.jp/headlines/top/ こっちは yahoo の WWW サーバが悪いです。 WWW サーバの返すヘッダとボディの間のセパレータが CR LF LF (もしくは CR LF で、最後の LF はボディの 一部かもしれない) となっているので、httptalker が ボディ部もヘッダの一部だと解釈しています。 まぁ、セパレータが CR でも LF でも CR LF でも 認識できるようにするのがダウンローダとしては正しい道でしょう。 |
su についてのご返答ありがとうございました。 早速挑戦してみます。 |
あ゛・・・きちんと読んでなかった 取り敢えずhost付けてやってみたら 上手く行きました yahooの方はちょとむつかしくて ヘッダーの役割とかがいまいち解ってないので、 もう一度きちんと読んでからやってみます 取り敢えずありがとうございました |
@68user > netstat -a とか。 > 標準では netbios 関係くらいしか listen してないと思います。 なるほど、どうもありがとうございました。 |
ところで やままさんへ。 1時間に一度くらいこのページにリンクチェックをかけておられる ようですが、このページは Last-modified を GMT で出しています。 しかし、そちらのページでは JST として扱っているようで、 常に 9時間前に更新されたものと見なされています。 |
はじめまして、カワエといいます。今受験生です。 私は将来プログラマーになりたいのですが、PCを買ってまだ半年、まともに触ったこともない超初心者です。 プログラマーの具体的なことについても知らず、ネットで検索したりしているのですが、 他の掲示板で「大変だ」「引退が早い」「プログラミングは趣味にしておくべきだ」等の発言をよく見ましたが、実際のところどうなのでしょうか? それと、やはり女性差別があったりするのでしょうか? 68user様、プログラマーの方、教えてください。 |
あらら、進路相談ですか。 ゲームプログラマになりたいのなら、ここより http://www.lares.dti.ne.jp/~yagiyama/ で聞くのがいいでしょう。 でなくて、いわゆる SE を目指すならば http://village.infoweb.ne.jp/~watany/selink/index.htm を読むといいかもしれません。 僕は一応 SE ですが、社会人一年目なので、軽々しくアドバイス するのはやめておきます。 |
有り難うございます。 では、そっちに行ってみることにします。 |
すみませんが、HPの紹介をさせてください。 ゲーセンはゲーマーだけの物って誰が決めた!! もっとゲーセンを楽しもう!!をテーマに ゲームセンターのゲームをゲーマーのみならず カップルや女の人も楽しめるように、 情報をセレクト&紹介するページです。 内容は音ゲーの手ほどきや僕のホームグラウンドの ゲーセンの最新機種入荷情報などです。 是非おいでください。 この書き込みが掲示板の意に反する内容でしたら、 お手数ですが削除してください。 |
はじめまして。 インフォシークからとんできました。 今、一生懸命UNIXのことを書いたHPを作っています。 ここに書いてあることがとっても役立ちました。 また参考にさせていただきます。 学校でunixを使っていて、けっこうはまってきました。 家はまだウィンドウズですが・・・ もしよろしかったら私のHPにも足を運んでください。 けっこう頑張って勉強しています。 |
> 今、一生懸命UNIXのことを書いたHPを作っています。 ほほぅ、一番オジサンっぽいコマンドが cal ですか (笑) 僕は cpio と vi じゃないかと思います。なんとなく。 |
@68user様 どうも、gongoです。 Xウィンドウ・システムのことで質問があります。 以前見ていただいたプログラムなどで画面に表示される窓を なんらかの形で保存して、texなどにはりつけたいと考えております。 そこで画面を保存するにはどのようにしたらよいのでしょうか。 xwd というコマンドを用いると窓の内容を保存できるようなのですが 自分の環境ではこの方法で保存した .xwd ファイルを xv で 表示しようとすると真っ黒になっていました。 で、他のマシンでもやってみたところ、中には窓を取り込めるものも ありました。しかし、そのマシンだと今度は以前見ていただいたプログラムが 期待通りに動きません(カラーマップのインデックスがすくない模様)。 自分のマシンと xwd がうまくいったマシンでは OSは一緒です。 ちなみにOSはFreeBSD 2.2.8Rです。インストールした人間が違うので ひょっとすると何かX関連で細かい設定がまずいのかもしれませんが そこら辺の確認の仕方もよくわかりません。 なにか良い方法はないでしょうか。 また xwd 以外に窓を取り込む良い方法はないでしょうか。 よろしくお願い致します。 |
@68user様 度々すみません、gongoです。 >また xwd 以外に窓を取り込む良い方法はないでしょうか。 自分で書いておいてあれなのですが、xvの機能でGrabというのが あるようなので試してみます。 |
> 自分の環境ではこの方法で保存した .xwd ファイルを xv で > 表示しようとすると真っ黒になっていました。 原因や正しい回避方法は知りません。ただ、display や xwud で 見ると正しく表示されるので、僕は特に困ってないです。 おそらく xwd 形式で保存しておく必要はないのではないでしょうから、 (TeX に貼るということなので) % convert foo.xwd foo.eps しておけばいいでしょう。 > xvの機能でGrabというのがあるようなので試してみます。 あと、import ってのもあります。display, convert, import は ImageMagick に含まれています。 |
@68user様 xvのGrabで保存でき、表示もうまくできました。 >% convert foo.xwd foo.eps こちらについても試させていただきます。 >ImageMagick に含まれています。 このImageMaickというのは何なのでしょうか。 標準でインストールされるもの(?)なのでしょうか。 何はともあれなんとかTexにはれそうです。 ありがとうございました。 |
> 標準でインストールされるもの(?)なのでしょうか。 されないです。FreeBSD なら ports か packages でインストール しましょう。結構有名なプログラムなので、NetBSD でも Linux でも パッケージは作成されているはずです。 |
@68user様 >FreeBSD なら ports か packages でインストールしましょう。 なるほど、わかりました。 あぁ、でも勝手にマシンに入れちゃうとまずいかも・・・。 私のマシンではないので様子を見てインストールできたらやってみます。 |
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です |
こちらの perl-5.6 では動いているので、おそらく 7行目の $port = getservbyname('http','tcp'); で値が取得できていないんでしょう。 $port = getservbyname('http','tcp') || 80; でどうですか。 |
>$port = getservbyname('http','tcp') || 80; >でどうですか。 うまくいきました。ありがとうございました。 ところでこのスクリプトを会社の2台のUNIXで走らせたら 1台は動作してもう一台はUse of uninitialized valueの エラーで止まってしまいました。それではとWINDOWSでやって みたら同じエラーで止まってしまいました。原因がわからないので 質問をさせて頂きました。WSによって動いたりそうでなかったり する原因は何なのかな?っと言う新たな疑問がありますが 宜しければお知らせください。 |
man getservbyname すればわかりますが、この関数は /etc/services (NIS を使っているなら ypcat services の 結果) を読むだけの関数なので、/etc/services がオープン できないとか、ファイルはあるけど中身に http 80/tcp というエントリがない、などというときポート番号の取得に 失敗します。 サンプルとはいえ、本来は getservbyname に失敗したら 80 に 決め打ちするか、あるいは die すべきですね。次回更新時に 直しておきます。 |
お返事ありがとうございました。 perl http-client.plとするとうまく動作するのですが ブラウザから起動するとInternal Server Errorとなります。 起動例(http://www.???.ne.jp/cgi-bin/http-client.pl) もともとそういうスクリプトなのかもしれませんがスクリプト内 もしくは引数でわたされたアドレスのhtmlやjpg,gif等を ブラウザに表示するのはどうしたらよいのでしょうか。 よろしくお願いします。 |
#!/usr/bin/perl print "Hello world"; は CGI 経由では動きません。しかし #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello world"; は動きます。そういうことです。 |
くだらないことですが・・・ HPを置いているサーバにbashのファイルがありますが、 これはunixシェルが使えるということなのでしょうか。 そして、Apacheを使うときにはDNSの設定を行う必要がありますか? もしよろしければお答えください。 よろしくお願いします。 |
> HPを置いているサーバにbashのファイルがありますが、 どこにどういうファイルがありますか? /bin/bash や /usr/local/bin/bash ですか? また、どうやってその ファイルを見付けましたか? > Apacheを使うときにはDNSの設定を行う必要がありますか? ローカルでテスト用に使うのですか? なら必要ありません。 # ってこともないんだけど。自ホストさえ引ければ問題なし。 apache を使って web を一般に公開するにしても、普通に telnet や nslookup が使えているなら、DNS の設定は不要 です (それは DNS が設定済ということだから)。 |
ftpソフトでファイルを取得すると、 一覧のところに .bash_logout .bash_profile .bashrs というファイルが置かれています。 ちなみに、binディレクトリ内には何もありません。 (これはcgiが使えないということ?) bashファイルに関しては所有者が私になっているので、 (rootではないということ) ・・・・どういうことなんでしょう。 なんか、よくわからない質問で申し訳ありません。 |
@68user様 どうも、gongoです。 X関連(というよりもC言語かもしれませんが)で質問があります。 label = XtVaCreateManagedWidget(name,・・・) と書けば、labelというウィジェットを生成できますが 複数個のウィジェットを生成したい場合 for文などでこの文章を繰り返して生成することは可能でしょうか。 例えばlabel00,label01,label02,・・・、そしてname00,name01,name02,・・・ などのように変化させていくつもりで unsigned char labelname[]="label00" unsigned char widgetname[]="name00" といったように最初のlabel00とname00をchar型の配列に入れて for文で回るたびに数値のところだけを書き直すといったことを やろうとしたのですが、どうもうまくいきませんでした。 for(i=0; i<NUM; i++){ labelname = XtVaCreateWidget(widgetname,・・・); labelとnameの数字をカウントアップする; } といった感じでウィジェットを生成できれば簡単なのに・・・と思ったのですが やはり個々に宣言しないとまずいのでしょうか。 labelnameのところは本来Widget型じゃないといけないからうまくいかない のでしょうか。widgetnameのところは本来String型ですがこちらもよくわかりません。 また、同様にイベント処理でイベントハンドラを用いる時も for文で回すことは可能でしょうか。 つまりは以前見て頂いたプログラムのようにlabelをいくつも用意し、 それぞれの窓にButtonPressをイベントハンドラとして登録するという一連の文を 書くと結構大変ですし、後々窓の個数を変える時のことを考えると for文で回せたらよいなぁと考えた次第です。 何卒宜しくお願い致します。 |
@gongo さん > label = XtVaCreateManagedWidget(name,・・・) むむ? 前のソースではそこらへんをやっておられたと思いましたが…。 Widget label[10]; char name[256]; for( i=0; i<sizeof(label)/sizeof(label[0]) ; i++ ){ snprintf(name, sizeof(name), "name%02d", i); label[i] = XtVaCreateWidget(name, ...); } ではダメですか? > 最初のlabel00とname00をchar型の配列に入れて for文で > 回るたびに数値のところだけを書き直すといったこと はできません。C 言語では、変数名や関数名などのシンボルを 動的に生成することはできないからです。 # …という表現は正しいかな? > unsigned char labelname[]="label00" > labelname = XtVaCreateWidget(widgetname,・・・); また、「labelname の*内容*」と「メモリ領域」には何の関係も ないので、XtVaCreateWidget の戻り値を格納する領域がどこにも ない、ということになります。 @みちこさん > これはunixシェルが使えるということなのでしょうか。 一言で言えば、 「~/.bash* がある、ということだけでは何とも言えない」 です。相手側に telnet サーバが上がっているか、IP アドレスにより telnet の接続元を限定していないか、パスワードエントリが適切に 設定されているか、ログインシェルが適切に設定されているか、 などを全てクリアすればログインできるでしょう。 逆に言うと、プロバイダが客にリモートログインさせないように するには、たくさんの方法があるということ。その情報がない 以上、ログインできるとも できないとも判断できません。 > ちなみに、binディレクトリ内には何もありません。 > (これはcgiが使えないということ?) bin と CGI には関係はありません。 あと、質問の仕方がいまいちですね。例えば、「binディレクトリ」 というのは、/bin なのか、ホームディレクトリの bin なのか 判断ができません。何を書けばよいかがわからない、というのは 理解できますが、その場合は調べた情報を全て書いて下さい。 |
最近うちに届いたメール。 From: * <*@mti.biglobe.ne.jp> Date: Sat, 2 Sep 2000 00:24:57 +0900 (内容なし) From: * <*@da.mbn.or.jp> Date: Wed, 6 Sep 2000 21:24:05 +0900 (内容なし) From: * <*@calltoweb.com> Date: Fri, 8 Sep 2000 12:43:55 +0900 (内容なし) From: *@themis.dricas.com Date: Sat, 9 Sep 2000 12:49:08 +0900 (JST) (内容なし) From: * <*@d7.dion.ne.jp> Date: Sun, 10 Sep 2000 09:11:30 +0900 Subject: あの ホームページみました。何とかしてください。 From: * <*@f7.dion.ne.jp> Date: Sun, 10 Sep 2000 10:29:26 +0900 届きました? From: *@nifty.ne.jp Date: Tue, 12 Sep 2000 00:05:51 +0900 (JST) このホームページはどうなっているんですか? From: *@aol.com Date: Tue, 12 Sep 2000 09:44:30 EDT Subject: エラー表示ありとでました。 和議申請について 和議申請とは この人たちにはコミュニケーション能力というものがないのだろうか。 好意的に解釈すると、「SEGA BBS 過去ログが見れません」 と言いたいのかとも思うのだが、本当にそうなのか。 うちにイタズラメールを送ろうという活動でもやっているのでは ないか。あるいは、どこかの web をクリックするとここにメールが 送られてくるような仕組みになっているのではないか、とも思えてくる。 謎である。真実を知っている人がいたら教えてください。 |
@68user様 素早いお返事ありがとうございます。 >むむ? 前のソースではそこらへんをやっておられたと思いましたが…。 たしか前のではすべてのlabelに対してXtVaCreateManagedWidget()やXtAddEventHandler()などをやっていたと思います。(^^; >Widget label[10]; >char name[256]; >for( i=0; i<sizeof(label)/sizeof(label[0]) ; i++ ){ > snprintf(name, sizeof(name), "name%02d", i); > label[i] = XtVaCreateWidget(name, ...); >} snprintfというのが使ったことがないので明日調べて 試させていただきます。 ありがとうございました。 |
質問の仕方がうまくなくて、ごめんなさい。 これからもっと磨いていきますので、 よろしくお願いいたします。 初心者にはココに質問するのはちょっと高度なことなのでしょうか。 とかちょっと思ってしまった。 なにか超初心者向けのページがあったらご紹介ください。 ご迷惑おかけしました。 というわけで今日も本を読むばかりです。 コンピュータって難しい・・・ 聞く人もいないのがホントにつらいところです。 |
> 質問の仕方がうまくなくて、ごめんなさい。 というところにさらに説教くさいことを書くのもアレですが、 回答をもらったときに「理解できたかどうか」「解決したか どうか」をちゃんと書くことも重要です。 「ありがとう」と、お礼のみを書かれてもこっちは何も得る ものがないわけですが、 「〜が理解できた/できなかった」 「〜と〜の関係がわからない」 「言われた通りにやってみたら〜というトラブルが出たが、 〜とすることで解決できた」 という返答が得られると、回答者が「こういう解説の仕方で 相手に理解させることができた」「この部分で嘘を言ってしまった」 「わかりにくい表現をしてしまった」などということに気づく ことができます。 で、みちこさんは apache の件も bash の件も、解決したのか、 理解できたのか、を書いておられません。これでは回答した 僕には何のメリットもありません。 要は「お礼よりも結果報告」です。 これは初心者向けのコミュニティでも上級者向けのコミュニティでも 同じですので、今後は注意されることをお勧めします。 > なにか超初心者向けのページがあったらご紹介ください。 逆に、fj やメーリングリストなど、ここよりもずっとレベルの 高いところに行くのもいいでしょう。しばらく読み続ければ、 「よい質問の仕方とはどういうものなのか」がわかってくると 思います。 > @68user様 ところで、「様」はご勘弁を>gongo さん |
@68userさん > snprintfというのが使ったことがないので明日調べて > 試させていただきます。 と思っていたら、マシンが起動しなくなってしまいました。 試す以前に修理手続きやら何やらやらなければ・・・。 D◯S/Vパラダイスというお店で去年の6月に購入したマシンなのですが、 昨日突然フリーズして以後起動しなくなりました。(泣) HDDのランプとかはつくのですが一瞬HDDのカラカラって音が鳴って それ以後進まなくなってしまいました。 それとsnprintfというのはsprintfのことでよろしいのでしょうか。 今日、本を見た感じではsnprintfというのがなかったもので。 どっちにしろsprintfも使ったことがなかったので 他のマシンで試してみます。 |
@68userさん sprintf()を使ってやってみたらうまくいきました。 といっても、最初はうまくいかなくて labelを生成するところで segmentation fault で 止まってしまったので、2番目の引数である sizeof(name) というのを 削除したら通るようになりました。 |