|
ここでははじめましてです。どぞよろしく。 早速質問ですみませんが、 ・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の質問ですいませんっ ではでは。 |
|
すいません、解決しちまいました、、。 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 になるんですけど。(^^;;; どなたか同様の経験を克服された方はいらっしゃいますか? 何回も聞いてすいません。 うーん、惜しい。惜しいんだけどなー、、、。 |
|
ホームページ開設のお知らせ・・・ ■残暑お見舞い申しあげます。さて、一風変わったサボテンホームページができましたのでご参笑ください。これで子供たちやご婦人方のサボテンファンがひとりでも増えれば幸いです。どうか今後ともいろいろご教示くださいね。 |
|
はじめまして、skel.103Mです。いつもこのホームページを参考にさせて いただいてます。 @ふくし さん >print "Content-type: text/html\n\n"; print "Content-type: text/html\r\n"; か print "Content-type: text/html\n\r"; にすれば動くかも、と思ったりしました。 |
|
IP unreachable な環境にいたので、しばらく書き込め ませんでした。で、ネット外でいろいろあって、これから しばらくは書き込まないと思います。ご了承ください。 とりあえずはこの掲示板はそのまま置いておきますが、 一時的に書き込み不可にするかもしれないし、しないかも しれないです。要は未定ってことです。 |
|
はじめまして。にゃと申します。 @ふくし さん おそらく接続がKeep-aliveのままに なっているのではないかと思います。 Connection: close というヘッダを追加して試してみてください。 ローカルでCGIのテストをするときはLinuxでApacheを動かしていますが、 こちらではCGIを動かすと自動的にこのヘッダを付けてくれるようです。 あとskel.103M さんも指摘されてますがヘッダの部分は 改行コードを"\r\n"にしたほうが良いかもしれません。 ヘッダの部分だけ書くとこんな感じかな? print "Connection: close\r\nContent-type: text/html\r\n\r\n" |
|
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 改行にした方がいいということですか? これも合わせてよろしくおねがいします。 質問ばかりで申し訳ありませんが、ご無理のない範囲でどうぞよろしくお願いします。 |
|
> これからしばらくは書き込まないと思います。 と言いながら、早々に復帰してみたり。 Windows も cygwin も詳しくありませんが、スクリプトの最後に close(STDOUT); を入れるとどうなりますか? でもまぁ、どの方法で解決したとしても挙動が変なわけで、 > 肝心のApacheがどうしてもインストールできません。 > 具体的な現象でいうと、makeで「no rule for targat all. stop」 をなんとかするか、別の WWW サーバを入れるのが 正しい道のような気もします。 |
|
68userさん> お忙しいところ、お返事ありがとうございます。 close(STDOUT); を早速入れてみましたが、ダメでした。 うーむぅApache以外のhttpdかー、考えませんでした。 どんなもんがあるんでしょうね(自分でも調べますが) とまれ、どうもありがとうございましら。 |
|
@gongo さん 作成したプログラムをそのまま投げてデバッグしてもらおうと するのはやめましょう。回答者の負担が大きすぎます。 例えば、color.dat を書き換えるとか、10個のウィジェットを使う、 なんてのは Xt の理解とは関係ないはずです。問題が発生する 最小限のプログラムを作ってから質問して下さい。 また、最小限のプログラムを作る過程で、自力で解決してしまう ともあるはずです。例えば前の fscanf の件は、ファイル操作部分を 切り離して定数化しようとしていたなら、自力で原因を突き止められて いたかもしれません。 あと、web にプログラムを置く際、改行コードを 0x0D に直しておくとか、 文字コードを EUC にしておくなどの気遣いがあるといいですね。 本題ですが、WidgetChoice の中に DrawOnWidget(label1,client_data,NULL); と書いてみるといかがですか。当方の環境では、選択したウィジェットの 色が label1 に反映されていました。 |
|
@68user様 本当に面倒ばかりおかけして申し訳ございませんでした。 今まで状況をどうやって伝えたらよいのかわからず 全部お見せするという形をとってしまいましたが、 これからは良く考えます。 で、プログラムについてですが、結局、68user様のご返事を いただく前に自分で試した方法でなんとかなりました。 方法としてはWidgetChoice()内でChangeColor()をやった後に Color()をやって、あとは再描画したいウィジェットについて XtUnmapWidget()とXtMapWidget()を行いました。 これによって新しい色が有効になってExposeイベントが 発生し再描画できました。 68user様がご提案してくださった方法についても実行してみます。 とにかく本当に御忙しいところすみませんでした。 何卒これからも宜しくお願い致します。 |
|
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 |
|
>Yuukiさん 情報ありがとうございます。 これも知っていて、インストールしてみたんですが、結局Cygwinとは共存できないんですよね? (Cygwin の / から始まるファイルシステムにDocumentRootを乗せてCygwinのPerlを実行することができない) 会社でFreeBSDのApacheを使っていて、もうだいぶUNIX用のCGIスクリプトを書いていて、 プログラム内のパス名とか全部UNIX風に書いてしまっているし、flockやsystemなどのUNIXコマンドも使っているので、 できればCygwinにApacheを入れたいんです。 あるいは、Windows用のApacheをCygwinで使う方法があるんでしょうか? 今は別のPCにLinuxを入れてハブでつないで作業してるんですけど、 やっぱりどうしてもノートに入れて出先でデバッグとかしたいので、 またmakeから再挑戦しています。 いずれにせよ、ありがとうございます。 |
|
はじめまして > 肝心の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 ---- △ここまで |
|
@ふくしさん ううっ、外してましたか。 一応答えられるところだけ。 >ちなみに、勉強用に使っているのはオライリーの「ねずみの本」ですが、 >これでは \n\n になっているんですが、\r\n が正式なんでしょうか? 確か調べたことのある範囲ではHTTPの1.0と1.1で ヘッダの改行はCR LF(\r\n)が正式だったと思います。 ただ改行が\nで不具合を起こした経験はないですし 多分問題はないと思います。 |
|
> 確か調べたことのある範囲ではHTTPの1.0と1.1で > ヘッダの改行はCR LF(\r\n)が正式だったと思います。 ですね。 > ただ改行が\nで不具合を起こした経験はないですし > 多分問題はないと思います。 ですね。WWW サーバ君が勝手に変換してくれます。 でも、少し前の apache ではどうやっても (\r\n を 出力しても) \n になってしまって、なんでかなぁと 思った記憶があるんですが、今やってみたら再現しない。 記憶違いか。 ところで、勝手に他人のリンク集にリンクチェック かけてしまうという、かなり無礼なページを作りました。 http://X68000.startshop.co.jp/~68user/links/ しかし、よいリンク集ってのは簡単には見付からないものだなぁ。 |
|
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が動くと使い道があると思うので御寛恕ください。 あらためてみなさんありがとうございます。(_ _) |
|
@ふくし さん 私の環境は Windows2000 + Cygwin-1.1.4 です Cygwinを使うなら、NT系の方がいいですよ。 特に、外部プロセスの呼び出し辺りは95/98だと怪しいから... おそらく、ふくしさんの問題も外部プロセス呼び出しに起因する問題でしょう。 Windows98で作業を行いたいのであれば、割り切って使うしかないと思います。 Netscape6だと</html>までを読み込んだ時点で表示してくれるようなので、 読み込みが完了しないことさえ気にしなければどうにかなるでしょう。 |
|
うーん、そうかぁ、、。 NTも2000も持ってないし、使いたいマシンはノートなんで、 あんまりネイティブ インストールしにくいものがあるんですよね。 (ハイバネの設定とかいろんなドライバーなど、めんどくさいので、、。 メーカー、サポートしてくんないし。 最近のノートは「プロダクト リカバリー ディスク」とか入ってるけど OSのディスクじたいついてこないんだもんなー、、、) プロセスの問題というのは納得がいきますね。 ということでどうやらCygwin固有の問題でだらだらと引っ張ってきたようですね。 どうもすいません。(_ _) NC6 を入れてみます。重ねてどうもありがとうございました。 |
|
たびたびすみません。 CGIがなかなか出てこない問題で、10分ぐらいたつと表示されると書いていたのは、 ApacheのTimeoutで表示が中断させられていたということがわかりました。 Timeoutをデフォルトの300(秒)から1とかにすると、見かけ上は1秒で表示されます。(^^;;; |
|
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で用意したアルゴリズムでの有効性 (いかによりよい色へどのくらいの回数で収束するかなど)を確認したいのに 別のところで収束する要因がうまれてしまうことになってしまいかねないからです。 |