トップページ⇒php
1001コメント300KB

CGIだけど、なんか質問ある? Part 9

■ このスレッドは過去ログ倉庫に格納されています
0001ななし ◆E6qQ.htN7o 03/01/03 02:56ID:H5ub4PWW
CGIの運用に関する質問スレッドです。

※CGIは特定の言語に依存するものではありません。

※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
  ↓
【Perl】初心者コーナー Part18
http://pc.2ch.net/test/read.cgi/php/1037797479/l50

過去ログ・関連スレッドは >>2-5 あたりに
061159503/03/10 18:02ID:???
>>607
うわーーーーー!出来た!出来たよぅ!
もう涙が出そうにうれしい。。。
ほんとうにありがとうございました。感謝!
0612nobodyさん03/03/10 18:05ID:???
>>606
そのCGIにtelnetでHEADリクエストしてもちゃんとoctet-stream返って来るかい?
061359503/03/10 18:09ID:???
>>608-610
どうもありがとうございました。
608さんのおっしゃるとおり、
サーバーはパーミッションを自動で変更してくれたようです。
それで607さんの絶対パスについてのところを参照にCGIのパスをいじったところ、
DATファイルが反応するようになり、
GIFファイルも直したら反応するようになり、
サーバー上でカウンタが動くようになりました。

610さん、申し訳ありません。
サーバーエラーなのか、意図どおりに動かないのかすら判断できなかったのです。

みなさん、ほんとうにありがとうございました。
061460603/03/10 18:27ID:AgGCKLX9
612>>
telnetできないっす。
こりゃCGIの問題じゃなくって、サーバーの仕様とかかな?
・・・そういう仕様って、アリ?
061560803/03/10 18:30ID:AgGCKLX9
>>595
治りましたか。よかったよかった(^^)

サーバーエラー>紛らわしいよね(笑)
061660603/03/10 18:32ID:AgGCKLX9
>>614
言葉がたりんかった。
Telnetできないのは、Telnet開放されてないから(^^;
0617nobodyさん03/03/10 18:33ID:???
>>616
Port:80 に telnet せよ、という意味じゃないの?
0618nobodyさん03/03/10 18:49ID:???
Win2000のtelnetなら23以外にもアクセスできるよな。
0619nobodyさん?03/03/10 20:23ID:???
>>485はなんで?
0620nobodyさん03/03/10 20:53ID:???
管理サイドの人間しかわからんのでわ?
0621nobodyさん03/03/10 20:58ID:???
>>619
規制されないリモートホストとポートをCGI串が吐いているからだろう
062260703/03/10 21:38ID:y6h+x0ia
>>595
おめでとう。(カメレススマソ)
0623nobodyさん?03/03/10 21:59ID:???
>>621
リモホはwww15.big.or.jpだし、80番ポートは空いてるよ
062461203/03/10 22:26ID:???
>>616
>>617です。

telnet www.hogehigehage.com 80

HEAD /unko.cgi HTTP/1.x
0625nobodyさん03/03/10 23:22ID:F/vwue5x
yukiwikiを実験で設置してみたのですが、いまいちだったので
FTPから丸ごと削除しようとしました。そうしたら、/diff/, /info/, /wiki/
というディレクトリ及びその中身のファイルが、Permission Deniedと言われ、
削除できずに残りました。どのようにすれば削除できるのでしょう?
0626nobodyさん?03/03/10 23:25ID:???
FTPクライアントが何かわからんけど
ディレクトリに書き込み権限がないんじゃないの?
062762503/03/11 06:17ID:???
自己解決しました。nobody権限のファイルがcgiによって作成されていたみたいです。
cgiによって作られたファイルはcgiからでないと削除できないと分かり、
ファイルをunlinkして回るcgiを作って走らせたところ、無事消えました。
0628nobodyさん03/03/11 09:12ID:???
>>627
otherに権限持たせれば出来ると思われ。
0629nobodyさん03/03/11 16:29ID:mYfv1t4y
本当に初歩的な質問だと思うんですが、
どれだけ調べてもヒントすら見つからないので、
全く見当違いなことを考えてるんだと思い質問させていただきます。

ディレクトリを作るのはmkdirですよね。
ならファイルを生成するのはどうしたらいいんでしょうか?

たとえばtestというディレクトリを作り、
その中にtest.datというファイルを作る
なんてことはどうすればできるんでしょうか?
0630nobodyさん03/03/11 16:35ID:???
取り敢えず下記でできる。
open(FILE,">>ふぁいる名");
print(FILE "でーた\n");
close(FILE);
0631nobodyさん03/03/11 16:39ID:???
>>629
Perlですか?
言語(or環境or状況)を書くように
0632nobodyさん03/03/11 17:41ID:04f/wl45
CGI配布サイトなんかに行くと、「軽い掲示板」「重い掲示板」っていう
表現がありますよね。処理が軽いとか。
この「軽い」「重い」って・・・?

設定項目(=変数)が多いと重い?
サブルーチンが多いと重い?
それとも行数が多いと重い?
コメントが含まれていると重い?

どんなんでしょ?(ちなみにPerlCGIで。)
0633nobodyさん03/03/11 17:47ID:???
>>632
レスポンスタイムが遅い。ターンアラウンドタイムが遅い。
0634nobodyさん03/03/11 18:06ID:???
>>632
>設定項目(=変数)が多いと重い?
>サブルーチンが多いと重い?
>それとも行数が多いと重い?
>コメントが含まれていると重い?

すべてNO
厳密に測定すれば差は出るだろうけど
0635nobodyさん03/03/11 19:32ID:???
>>632
プリントアウトした時の紙の重さじゃないの?
0636nobodyさん03/03/11 19:51ID:???
>>635
それを言うなら、仕様書の
0637nobodyさん03/03/11 19:56ID:???
作者の愛情の重みだよ。
0638nobodyさん03/03/11 20:03ID:???
無限ループは愛情があふれているんだね・・・・・・
0639nobodyさん03/03/11 20:08ID:???
>>638
藁
0640nobodyさん03/03/12 06:35ID:???
>>638
溺愛しすぎも良くないよね。
0641nobodyさん03/03/12 10:34ID:???
なごんだ
0642nobodyさん03/03/12 19:04ID:???
色んな所でKENT氏のlogを配列に入れてforeach()するのは悪いとあるんだけど、
どうしたら良いの?
while使っても大差ないと思うんだけど。
0643nobodyさん03/03/12 19:14ID:???
>>642
そう言うレベルの話じゃないと思う。
0644nobodyさん03/03/12 22:04ID:???
>>642
違いがわかるようになってから出直してください。
0645nobodyさん03/03/12 23:22ID:???
何で悪いかは理解してるのか?
もう春なんだなあ・・・
0646nobodyさん03/03/12 23:47ID:???
>>643-645
質問スレに馬鹿なレス返すな。
もう春なんだなぁ・・・
0647nobodyさん03/03/13 00:09ID:???
>>646
手本で納得できるレス返してみれ
0648nobodyさん03/03/13 00:15ID:???
cgiから別のcgiを起動して値を取得して処理する
ということをやりたいのですが、可能ですか?
0649nobodyさん03/03/13 00:16ID:???
>648
Perlならrequireで検索。
0650nobodyさん03/03/13 00:55ID:???
質問です
config.plに$test = test;を入れといて、
print.cgiにprint "$test";って入れて表示させる方法ってどうやるんですか?
よろしくお願いします(plの1;やcgiのヘッダーはできているとする)
0651nobodyさん03/03/13 01:08ID:???
>>650
普通にrequireすればいいんでないの?
0652nobodyさん03/03/13 06:33ID:???
>>651
なんかだめです
065364803/03/13 08:31ID:9FkJfCBr
>>649
ごめんなさい
もう少し詳しく書きます
別のcgiは別のサーバにあります。
で、POSTでそのcgiに値を渡し
そのcgiが(ブラウザに)出力する結果を元に
処理を行う、それをいくつか繰り返す

以上の事をcgiで行うことは可能でしょうか

0654nobodyさん03/03/13 08:59ID:???
>>653
可能
ただし、これ以上の質問は使っている言語専用スレで

> cgiで行うことは可能でしょうか
cgi の部分を、PerlなりPHPなり自分が使っている言語に
置き換えて読み返してみれば、すぐ解ることでしょが
0655nobodyさん03/03/13 09:09ID:Lbm4LPV1
見て
http://homepage3.nifty.com/digikei/
0656bloom03/03/13 09:18ID:+b8Vztun
http://www.agemasukudasai.com/bloom/
065763203/03/13 15:56ID:rD3WUou4
>>633
ちょっと質問悪かったかも。

重い・軽い・っていうのは、どういう作りによっておきるのか?
と、聞きたかったのです。
それで、設定項目が・・・なんてことを言ったのですが。

>>634
うーん、そっか。
んじゃあとりあえず、40KBとかあるスクリプトが必ずしも
重いとは限らないわけね。
0658nobodyさん03/03/13 15:58ID:???
>>657
>>634って結構眉唾。
0659nobodyさん03/03/13 16:38ID:xb4yxiHK
futomi's cgi cafe、のprofessional版を使用とすると
アクセス解析するページを見ると、×印が表示されます。
FAQの
http://www.futomi.com/library/faq/acc_faq.html#1
は見ました。
standard版だと上記の方法で×印が表示されないようには出来たんですが
professional版だと駄目でした。
サーバーはxreaの無料鯖を使ってます。
×を表示しないようにする方法を知ってる方がいたらぜひとも!
教えてください。
0660nobodyさん03/03/13 16:41ID:???
>>659
私は、このウェブサービスが、初心者向けサービスでないことを知っています。最低限必要な情報しか提供していないことを知っています。

私は、問題を自分で解決する努力をします。わからないことはまず自分で調べます。


(XREA 規約より)
0661nobodyさん03/03/13 16:45ID:???
>>659
ちゃんと設置できているなら広告のせいだろう
066265903/03/13 16:47ID:???
出来る限り調べたのですがどうしても分からなかった為。
やった事を書くのを忘れていたので書かせて頂きます。
自動広告表示が原因だと思うのですが
自動広告をやめてhtmlに直接タグを書いて広告を表示しても
×印が消えなかったです。
futomi's CGI Cafe のFAQではこれで×は消えると書いていたのですが
駄目でした。
検索エンジンでも調べてみましたが駄目で、
自分で言うのもあれですが努力はかなりしました。
出来れば解決方法が分かれば教えてください。
宜しくお願いします。
0663nobodyさん03/03/13 16:47ID:???
>>657
重い = 処理時間が長い
つまり効率的な処理ができていないものと言える。
(処理そのものが複雑な場合もあるが、それはとりあえず置いておく)

効率的な処理というのは、>>632で挙げられたことと全く関係がない
わけではないが、そこに大きな関係を見出すことは難しい。
また処理の方法というのは、ほとんどの場合幾通りものアプローチが
あるもので、どれが効率良いかは試験と経験でしかわからない。

というわけで、ネット上で配布されているようなものに関して言えば、
使ってみるかソースを読んで解析するかしないとわからないよ。
既ユーザに使用感を聞いてみるのが一番簡単な方法かもね。
0664nobodyさん03/03/13 19:07ID:ajLCHyyn
保守あげ
0665nobodyさん03/03/13 19:47ID:???
>657
>設定項目(=変数)が多いと重い?
設定項目が多くても、処理が少なければ軽い。

>サブルーチンが多いと重い?
サブルーチンが少なくても、全体の処理が多ければ重い。

>それとも行数が多いと重い?
たった1行でも無限ループになっていたらそっちの方が重い。

>コメントが含まれていると重い?
誤差の内。

結局は、計算機が計算を行なう回数と、ファイルアクセスなどを行なう回数及び時間に関わる。
結果として、>663さんの言うのが正しいわけだが。
どういう作りで、というなら、シンプルな方が軽い。
もちろん、下手な奴が作ればシンプルでも重くなるが。
あとはベンチマークでもやって自分で計るのが一番。
いうまでもないがローカルでな。
0666nobodyさん03/03/13 20:32ID:???
6666666666
0667nobodyさん03/03/13 21:37ID:???
しかし、4、50kbもあるソースなんて書く方が辛くない?
出来る範囲で分割させた方が管理しやすいと思うんだけど。
書き込みと表示を分けるとか。
0668nobodyさん03/03/13 21:40ID:???
>>667
関数作らずに平気で2000行とか書く人なんですよ。きっと。
0669nobodyさん03/03/13 21:49ID:0oN+bQDd
普通、1関数何行ぐらい?
0670nobodyさん03/03/13 21:57ID:???
平均10行未満 最長でも80行
一画面に収まらない関数を作った場合は再検討する。
0671nobodyさん03/03/13 22:26ID:???
インデントが4つ以上の深さになったら他のいい書き方がないか考えてみよう。

これについては、C-BOARDは強烈。画面をまたぐifのブロック。
0672nobodyさん03/03/13 23:58ID:???
私も、大体10〜20行ぐらいかな。
1ファイルは大体20kb以内。500行ぐらいが己の限界です。
2000行なんて書いてたら、思いついた所を探す時には、泣いちゃうよ〜。
0673nobodyさん03/03/14 00:05ID:???
>>672
>これについては、C-BOARDは強烈。画面をまたぐifのブロック。
あなたが挙げているインデントの増加という面ではこれはむしろその抑止に働いていると思う。


kbだから大体2KBってとこか。平均10文字で200行。微妙かも。
0674nobodyさん03/03/14 00:14ID:???
childシリーズってレンタル鯖で禁止されるほど禿負荷なんだよね。
0675nobodyさん03/03/14 15:39ID:d7q/oEUS
皆さん、コメントとかつけないのですか?
ちゃんとコメントつけると、私は数十行などすぐ逝ってしまいます。
0676nobodyさん03/03/14 15:46ID:???
>>675
君のソースを読んでみたい
0677nobodyさん03/03/14 15:53ID:???
>>675
コメントはルーチンの行数には数えないだろ
0678nobodyさん03/03/14 17:06ID:???
何行コメント書いてるの?
0679nobodyさん03/03/14 17:07ID:???
本文よりコメントの方が長かったら、それはそれですごいと思う。
0680nobodyさん03/03/14 17:15ID:???
やたらとコメントをつけないとわからなくなるようじゃ、
変数などの命名がヘタなんだろう。
068165703/03/14 17:29ID:Qg58BTXT
40KBのスクリプト・・・ウェブ管理CGIだから(笑)
ちなみに私がつくったんじゃないっす。そこまで技術力は(以下略)

>>663,665
あ、なあんだ・・・そういうことだったのか。

なんとなく、変数があるとそれを記憶するのにメモリを使う=重い
なんてこと思ってた・・・。
コメントは極力ないほうがいいのか、っていうのも、Perlが「上から」
見ていく言語だから、飛ばすものは無いほうが、なんてことを考えてた・・。
#行が増えると検索に時間がかかる、のと同じレベルで考えてました。

そっか。これで安心してコード書けそう。

>>675
私はせいぜい設定項目にコメントつけて、サブルーチンに
これは何をするヤツって書くぐらい。
シンプルな掲示板なら数十行まではいかない。
配布するつもりないから使用条件とか書かなくていいし。
0682nobodyさん03/03/14 18:02ID:???
>681
まだ勘違いしているようだが。
重いのとメモリ食うのははまた別。
0683nobodyさん03/03/14 20:29ID:i5QyaZbU
ソースを表示させるにはどうしたらいいのでしょうか?
以下のようなイメージで「ソース」をクリックすると、ページの
ソースが見えるようにしたいのですが、このままですと
当然CGIそのものが実行されてしまいます。

print '<a href="http://11.11.111.111/cgi-bin/hogehoge">ソース</a>';

教えていただけませんか。
0684 ◆dq7M./4Uw. 03/03/14 20:32ID:???
>683
ソースを.txtにして別途アップロードへれ。。。
0685nobodyさん03/03/14 20:32ID:???
>>683
拡張子をtxtとかにしろ
0686どーでもいい話だけど03/03/14 20:45ID:???
MIMEをtxtにしてもIEの馬鹿はHTMLと勘違いする時ある。ネスケは命令を忠実に守る。
なんなのIEは。
068768303/03/14 20:57ID:???
回答いろいろありがとうございます。

そうなんです。拡張子を.txtにしてもなぜかcgiが実行されてしまい
ます。ただし別ディレクトリに保存したら正しくソースが表示
されますが...できれば*.txtのファイルは別途作成せずに
やりたいです。
0688nobodyさん03/03/14 21:15ID:???
cgi-bin以下にあるファイルを全てCGIとして実行するように設定することがある。
cgi-binの中に画像ファイルを置いても表示されないことがあるのはそのタイプ。
apacheならScriptAliasってやつだね。

で問題のソースの表示だけど、
別ディレクトリにtxtで置くか、ファイルの中身だけを表示するCGIを別に作成する。
後者は下手なプログラムだと知らない人に遊ばれちゃうので注意が必要。
0689nobodyさん03/03/14 21:46ID:???
パスワードまで覗かれないでね。
069068303/03/14 21:53ID:0q8cRWlr
ありがとうございます。httpd.confにScriptAliasの指定がして
ありました。別ディレクトリに.txtをおくことにします。
0691nobodyさん03/03/15 02:42ID:Ch+qUXLE
ケントさんのデータ処理系スクリプトとかで、
ログを更新する際、
open(IN,"hoge.log");
@lines = <IN>;
close(IN);
push (@lines,"$d0<>$d1<>$d2<>$d3<>$d4\n");
open(OUT,">hoge.log");
@lines = <OUT>;
close(OUT);
って感じに一度全て配列に代入し、
配列に新しい値を加えた後、
ログファイルに書き込んでるんですが、

open(OUT,">>hoge.log");
print OUT "$d0<>$d1<>$d2<>$d3<>$d4\n";
close(OUT);
↑これじゃあだめなんでしょうか?
だめな理由とかあれば教えていただけないでしょうか?
0692nobodyさん03/03/15 02:48ID:???
>>691
配列に新しい値が加わっていないじゃないか
0693nobodyさん03/03/15 02:53ID:???
>>692
あ、そうですね。
でももう、その配列を利用しないのなら下のでもいいんですかね?

#即レスありが�dです。
0694nobodyさん03/03/15 02:59ID:???
>>693
ケントのは読み込んでからデータを追加してファイル丸ごと上書きだろ。

別に追加でも構わないけど、下のじゃロックもかけてないからダメだ。
0695nobodyさん03/03/15 03:08ID:???
>>694
追加でもかまわないんですね。
どうもありがとうございました。
あと、ロックですが、
前後に&lock;と&unlock;
してあるんで大丈夫と思います。
0696nobodyさん03/03/15 03:15ID:???
ケントのソースはあまり参考にしないほうがいいぞ
0697nobodyさん03/03/15 03:38ID:5hlN9xGB
初歩的な質問かもしれませんが、個人等で公開している
ドメイン検索エンジンは、通常どういった仕組みで作られて
いるのでしょうか。

検索してもこれといったものが見つからなかったため、
質問させていただきました。
すみませんが、どうか宜しくお願いします。
0698nobodyさん03/03/15 03:42ID:???
何を聞きたいのかよく分からんが、ネームサーバに問い合わせればいいんでないの?
0699nobodyさん03/03/15 04:08ID:???
それしかないよね
何を知りたいのだろう?
0700nobodyさん03/03/15 04:21ID:5hlN9xGB
>>698-699
説明不足ですみません。
お名前.comのような、.com等のドメインが空いているか
サーチするプログラムを自前で作りたいということです。
0701nobodyさん03/03/15 04:22ID:???
$xxがMD5のハッシュ値なら〜
見たいな事をしたいんですが、どのように書けばいいでしょうか?
0702nobodyさん03/03/15 04:26ID:???
>>700
ドメイン名を正引きすればいいだけ
0703nobodyさん03/03/15 04:27ID:???
正引きじゃねぇや、whoisだ
0704nobodyさん03/03/15 13:37ID:???
>>701
言語書いてないから適当に

/[0-9a-zA-Z+\/]*=*/
0705nobodyさん03/03/15 15:20ID:???
>>704
すいませんperlなんですけど、
/[a-fA-F\d]{32}/
↑これじゃあ見当違いですか?
0706nobodyさん03/03/15 18:05ID:sA3oWGif
この板が適切かどうか分からないんですけど、、、掲示板cgiに関する
質問です。
よく吐きだしたhtmlを直接表示させる掲示板cgiがありますけど、その吐きだした
htmlをいったんファイルとして保存して、そのhtmlを掲示板として表示させるように
するにはどうしたらいいんでしょ?
0707nobodyさん03/03/15 19:04ID:???
>htmlをいったんファイルとして保存して、そのhtmlを掲示板として表示させるように
そのまんま。
答え出てるじゃない。
0708nobodyさん03/03/15 19:16ID:???
ここでよいですよ。

> 吐きだしたhtmlをいったんファイルとして保存して、
> そのhtmlを掲示板として表示させるようにするにはどうしたらいいんでしょ?

htmlファイルを作る処理を終えたら、そのhtmlファイルに飛んだらいい話かと。
Perlなら print "location: URL\n\n";
070970603/03/15 19:57ID:1k1hrfmM
>>707
したいことの論理が正しいことは分かりましたが(w、具体的なやり方が
分からないのでし。

>>708
>htmlファイルを作る処理を終えたら、そのhtmlファイルに飛んだらいい話かと。
>Perlなら print "location: URL\n\n";
この行はどこに挿入したらいいんでしょうかぁ? フッター作成の後?
それともcgiの最終行ですか?
0710nobodyさん03/03/15 20:08ID:???
>>709
printで画面に表示する部分をファイルに出力に改造して、
その処理が終ったらLocationで飛ばす
■ このスレッドは過去ログ倉庫に格納されています