トップページ⇒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 あたりに
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で飛ばす
071170603/03/15 20:10ID:1k1hrfmM
>>710
すみません
>printで画面に表示する部分をファイルに出力に改造して、
これの具体的な書き方を教えてください。
それから受け手のhtmlファイルですけど、何か準備は要りますか?
0712nobodyさん03/03/15 20:16ID:???
なんでわざわざhtmlのファイルを作りたいの?
0713nobodyさん03/03/15 20:18ID:???
>>711
自分でスクリプト書くスキルないのならKent-Webとか
CGIスクリプト配布サイトにあるの使っては?
下のが記事部分をHTMLファイルで出力してるタイプ。
http://www.kent-web.com/bbs/sunbbs.html?
071470603/03/15 20:20ID:1k1hrfmM
>>712
本来の目的は、掲示板cgiが生成して表示した掲示板のhtmlでは検索エンジンが
拾って来れないようなので、それを拾ってこれるようにするためです。
0715nobodyさん03/03/15 20:25ID:???
>>714
>拾って来れないようなので、

例えばgoogleとか拾ってくれます。
071670603/03/15 20:27ID:1k1hrfmM
>>715
いや、URLの末尾がxxx.cgiになっているものは拾ってきてくれないようですが。
0717nobodyさん03/03/15 21:26ID:???
ログファイルへの書き込みの後に画面表示のために
print "文字"; てのがあるはずだが、その部分を
open(FH,">$htmlfile"); print FH "文字"; close(FH) て感じにする。
そのままだと画面表示されないので、Locationで作成したHTMLにジャンプするって感じだな。
index.htmなどからリンクをはる時には $htmlfileにリンクをはれば良い。
ファイルロックするとかLocationを使いたくない時は自分で考えれ。

上からの流れをまとめるとこういう感じだ。
自分でできないと思ったら、あきらめるか>>713のところのを使うとよい。
0718nobodyさん03/03/15 22:26ID:???
>714
ロボット避けのMETAタグとかの勉強をした方が早いと思う。
0719nobodyさん03/03/15 22:28ID:5hlN9xGB
>>703
どうもありがとうございます。
おかげさまで前進することができました。
072070603/03/15 23:44ID:1k1hrfmM
>>717
うがー
>print "文字"; てのがあるはずだが、その部分を
>open(FH,">$htmlfile"); print FH "文字"; close(FH) て感じにする。
毎行こうするわけですか。かなりめんどい・・・

当分、諦めるかな・・・ 気が向いたら>>713も検討してみます。

>>718
ロボット避けのMETAタグは使用していないでし。
0721nobodyさん03/03/16 00:22ID:???
select FH;
0722nobodyさん03/03/16 00:25ID:???
open FH, '| tee filename';
select FH;
072370603/03/16 01:04ID:???
どうもお騒がせしましたが、とりあえず所期の目的を達成しました。
単にフレームのhtmlファイルをこしらえて、そこにcgiを流し込んだの
です。htmlファイルにはキーワードをしっかりと仕込みました、はい。

いろいろとお教えいただきありがとうございました。
0724nobodyさん03/03/16 02:01ID:0/UJ/9KJ
Perlで
+-2003
+-03
| +-16
| | +-0.dat
| | +-1.dat
| +-18
| +-0.dat
| +-1.dat
+-05
+-04
+-0.dat
とかなっているディレクトリ構成で、CurrentDirが今2003にいたと
して ./2003/03/ 配下の全データ(サブディレクトリ、ファイル)を
削除しようとした場合、みなさんどんなソース書きます?

やっぱ一番下までディレクトリ見に行って、ファイルを全部消して
からぽちぽちとディレクトリを消していかねばならんのですか?

なんか おぉ〜 っていうソースないですか?
0725nobodyさん03/03/16 02:04ID:0/UJ/9KJ
すまそ。ずれちった。
+-2003
  +-03
  | +-16
  | | +-0.dat
  | | +-1.dat
  | +-18
  |   +-0.dat
  |   +-1.dat
  +-05
    +-04
     +-0.dat
ね。
0726nobodyさん03/03/16 02:12ID:???
unlink '03';
0727nobodyさん03/03/16 02:13ID:???
UNIXコマンドを使う手もあるが、つかえない鯖も多いから、再起呼び出しで削除用のサブルーチン作った方がいい。

ちなみに>1はちゃんと読んだか?
0728nobodyさん03/03/16 05:44ID:zuyh3uNE
チャットで、同じ文字が続くと文字を小さくしたいんですが、どうすればいいんでしょうか。

こんにちは!!!!!!!!!!!!!!!  だとか
あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお だとか。
0729nobodyさん03/03/16 06:25ID:???
>>728
言語すら書かずに質問ですか。
みなさん、こんなのにマジ回答しても徒労に終わりますよ。
0730nobodyさん03/03/16 06:30ID:???
>>728
if($string/hoge*{2}){print"small$text";}
0731nobodyさん03/03/16 11:12ID:???
Perlなんですけど

<input type="radio" name="test1" value="$c_data1">

<input type="text" name="test2" value="$c_data2" size=6 maxlengh="6">

↑みたいな感じでラジオとテキストボックスでデータの入力を
選択できる状態にして・・・。

もしも、テキストボックスに文字列が入っていたら
ラジオボックスのデータを無効にしてテキストボックスに入力された
データを保存しる。ってものをやってるんですけど・・・。
テキストボックスに特定の文字列が入っていたら。の処理はわかりますが
その文字列が予測できないんで、不特定多数になっちゃって特定できず
ifのカッコ内でどう処理すりゃいいかワカンネーんです・・。
こんな説明で判ってくれる人がいたらヨロヨロでつ・・。
0732nobodyさん03/03/16 11:31ID:???
つーわけで
0733nobodyさん03/03/16 13:08ID:bu9vx7r5
>>727
ありがとです。やっぱそうなっちゃうかな。

んで板の注意ありがと。
やっちまいました。逝ってきます(T-T)
073473103/03/16 13:15ID:???
解決しますた。
0735nobodyさん03/03/16 13:18ID:0oFKfJrd
女
http://homepage3.nifty.com/digikei/sample/sample.html
0736nobodyさん03/03/16 14:33ID:vu3Qqexl
perlで

if ($testが「TEST>>」から始まっていれば) {
 print "$testから「TEST>>」を抜いたもの";
}

ということをしたいんですが、正規表現がよくわからず、
思ったように動いてくれません。
どのように書けばよいのでしょうか?
0737nobodyさん03/03/16 14:58ID:???
if($test =~ /^TEST>>(.*)/){
  print $1;
}
0738nobodyさん03/03/16 15:50ID:???
>>737
何故同じ事をしてるのに無理なんだろうと思ったら、
>を>にデコードしてたからでした。
すいませんでした。
0739nobodyさん03/03/16 15:51ID:???
>>738
&>です
0740nobodyさん03/03/16 15:53ID:???
書き方忘れた・・・
&&gt;ってことです・・・
0741nobodyさん03/03/16 16:00ID:F4DlRSun
掲示板への最終書き込み時間をHPのトップページに表示したいのですが
教えていただけないですか?
0742nobodyさん03/03/16 16:17ID:???
>>741
やればできそう。
0743nobodyさん03/03/16 16:27ID:???
>>741
できるけど、お前には無理だからやめとけ。
そんな漠然とした質問じゃ、掲示板のログの最新時間を
書き出せとしか言いようがない。
0744nobodyさん03/03/16 16:36ID:KSrtergb
>>742>>741
教えてください
0745nobodyさん03/03/16 17:10ID:zuyh3uNE
Perlでフォームの内容を判断させるにはどういう命令を使ったらいいんでしょうか。
あほ が含まれてるだとか、判断したいんです。
0746nobodyさん03/03/16 17:11ID:???
正規表現
0747nobodyさん03/03/16 17:12ID:???
パターンマッチ
0748nobodyさん03/03/16 17:22ID:zuyh3uNE
正規表現?パターンマッチ?
0749nobodyさん03/03/16 18:15ID:???
以下のスレッドで。
【Perl】初心者コーナー Part19
http://pc2.2ch.net/test/read.cgi/php/1044717887/
0750nobodyさん03/03/17 02:07ID:???
メメント観た。
これは凄い。しかし難しい。
記憶などがテーマになってる映画だが、
観ている側も気を抜かず、正確に記憶しないと、
話がわからなくなる。
そんな気がした映画でした。

しかし、今まで観た映画の中で一番疲れたかも。
0751nobodyさん03/03/17 02:08ID:???
思いっきり誤爆スマソ
■ このスレッドは過去ログ倉庫に格納されています