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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/03/26 22:47ID:44KxXtaW
CGIの運用に関する質問スレッドです。

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

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

過去ログ・関連スレッドは >>2-5 あたりに
0005403/03/27 02:52ID:q8+u0yHc
4GETされた・・・
0006nobodyさん03/03/27 08:09ID:???
>>1-4 スレ立て乙でやんす。
0007nobodyさん03/03/27 16:12ID:iTCmw4qj
質問です。
今、オリジナルのアクセスログを作っていて、
回線速度の統計を取りたいのですが、
うまい方法ありませんか??

今、JAVAで試していたのですが、
1回目は良いのですが、2回目以降にキャッシュが効いて、
超高速の人ばかりになってしまいます・・・(汗;

何か良いアイデアがありましたら、ご教授ください。
お願いします。
0008nobodyさん03/03/27 16:28ID:???
Java とキャッシュがどう関係あるんだかわからん。
Servlet ってこと?

どのみちスレ違い。
回答を求めるなら、計測しようとしている「回線速度」とやらを
おまい自身の言葉で定義してからにしる。
0009nobodyさん03/03/27 16:35ID:???
>>8
どの道分からない。の方が素直で良いな。
0010803/03/27 16:47ID:???
>>7
どの道分かりません。
0011nobodyさん03/03/27 17:41ID:OfSB210s
こんなコードってもっと簡単にできると思うんですが、
どういう風に書いたらいいですか?

if ($value eq "hoge") {
forearch (@hogehoge){
ながーーい処理
}
} elsif ($value eq "foo") {
forearch (@foofoo) {
上のと同じ処理
}
}
0012nobodyさん03/03/27 17:44ID:???
>>11
連想配列作って、

$rensou["hoge"]に@hogehogeを
$rensou["foo"]の@foofooを持たせて、

foreach($rensou[$value])
0013fusianasan03/03/27 17:46ID:???
>>11 たぶんね。たbybん

if($value eq 'hoge') {
 &shori(@hogehoge);
} elsif ($value = "foo") {
 &shori(@sikosiko);
}

sub shori {
 foreach $i (@_) {
  ながーいしょり
 }
}
0014nobodyさん03/03/27 17:47ID:???
>>11
その長い処理はサブルーチンには出来ないの
00151103/03/27 17:49ID:???
なんかわかった気がしますありがdです

# {}←こうですよねぇ?
0016nobodyさん03/03/27 17:50ID:???
あ、いっぱいレスしてくれてたんですねthx
えっと、できるだけサブルーチンにしたくないんです
皆さんのを参考に色々やってみます
0017nobodyさん03/03/27 18:37ID:???
>>16
「サブルーチンにしたくない」という理由がわからん。
面倒だから?
0018nobodyさん03/03/27 18:57ID:???
>>17
機能分割と呼ぶのもバカらしいが同じ処理を同じ関数の2箇所で行わなければいけない。
虚しい。
0019nobodyさん03/03/27 19:24ID:???
>>18
>同じ処理を同じ関数の2箇所で行わなければいけない
ん?その「同じ処理」をサブルーチンにすればいいのでは?
0020nobodyさん03/03/27 20:19ID:???
>>19
理解できんところは評価しないって悪い癖だよ。
0021nobodyさん03/03/27 23:22ID:???
>20
オレにはあんたのいってることが理解で金。
ので評価もできない。
0022nobodyさん03/03/28 00:18ID:???
全く同じ処理があるなら、
そこは抽出してサブルーチンにリファクタリングするのが、
怠惰なプログラマーの行き着く手法じゃないのか?
それが嫌だと言う理由がよくわからん。

>>16はこたえてくれんのか。
00231603/03/28 01:06ID:???
えっと、私は16までしかレスしてません

で、サブルーチンにしたくないって言ったのは、
特に理由はないです。
なんとなく流れで、
「できればここをサブルーチンにしたくない」
ってこと・・・ないですね。私だけですよね

で、できればサブルーチンじゃない方向で
っていう理由です。しょうもない理由ですいません
0024nobodyさん03/03/28 01:14ID:???
もうね、あ(ry
0025nobodyさん03/03/28 01:17ID:???
>>23
バグに悩んだ経験がないからそういう風に思うんだろうな。

「よく似ているがほんのちょっと違うソース」によるバグとか経験したら、
絶対にそんなことは言えなくなると思うんだがな。

まあ、お前の人生だ好きにしろ。他人の経験から出た教訓を踏み潰すのもお前の自由だ。
0026nobodyさん03/03/28 06:56ID:???
>>23
同じ処理をサブルーチンにせずに2回書くことのメリットは?
とりあえずいくつか書いてください。
ちなみに俺は一つも思いつきません。冗談ではなく。
0027nobodyさん 03/03/28 07:53ID:???
処理の規模にもよると思うがな・・・
0028nobodyさん03/03/28 09:41ID:???
>>27
ちゃんとレス嫁。>>11 >ながーーい処理
0029nobodyさん 03/03/28 09:45ID:???
>>28
そらすまんこって
つまりsubの使い方を勉強汁という事だな。
逆参照でもいいけどや・・・
0030nobodyさん03/03/28 09:51ID:???
>>29
subは知ってるんだって。
ちゃんとレス嫁。>>23 >>16
0031nobodyさん 03/03/28 09:52ID:???
最初からこの質問は無意味だってこったな
0032nobodyさん03/03/28 11:20ID:???
>>29
CGI is Perlか、おめでてぇな。そんな奴がさっきまで偉そうに何かほざいてたわけか。
0033nobodyさん03/03/28 11:28ID:???
>>32
>>11の質問はPerlだろ?何を寝ぼけたことを…。
0034nobodyさん 03/03/28 12:05ID:???
>>32
誰がそんな事言ったよ。何か勘違いしてないか(w
0035nobodyさん03/03/28 15:13ID:???
>>34
多分>>32はスレタイと>>29の「sub」を見て舞い上がっちゃったんだと思います。
「CGI=Perlじゃない」というのを言いたくて言いたくて仕方ないんだと思われ(それしか知らないから
0036nobodyさん03/03/28 17:38ID:???
みなさん助けていただけないでしょうか?

apple,青森,40
orange,愛媛,20
strawberry,茨城,30
↑これがそれぞれ
@fluit = ('appe','orange','strawberry');
@from = ('青森','愛媛','茨城');
@price = (40,20,30);
こんな感じに配列に入ってるとき、たとえば下のようにすると、、、、

foreach (sort { ($price[$b] <=> $price[$a]) || ($a cmp $b) } 0 .. $#price) {
 print "$fluit[$_],$from[$_],$price[$_]\n";
}

apple,青森,40
strawberry,茨城,30
orange,愛媛,20
↑こうなると思うんですが、
ソートする条件をフォームから指定させたいんです。
たとえば、($FORM{'jyouken'} eq "fluit")ならfluitでソートって感じに・・・

どのようにすればいいでしょうか?(説明へたですいません)
0037nobodyさん03/03/28 17:44ID:???
>>36
スレタイと>>1を読め
0038nobodyさん03/03/28 17:58ID:???
perlですけど、ここはperlだめなんですか?
0039nobodyさん03/03/28 18:00ID:???
1 名前:nobodyさん 投稿日:03/03/26 22:47 ID:44KxXtaW
CGIの運用に関する質問スレッドです。

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

※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
  ↓
【Perl】初心者コーナー Part21
http://pc2.2ch.net/test/read.cgi/php/1047980851/l50
0040nobodyさん03/03/28 18:02ID:???
perlの質問いっぴい出てるのにだめなのか・・・
0041nobodyさん03/03/28 18:13ID:???
答える側がスレの趣旨を理解しないまま回答してるから、
質問する側も各スレの>>1さえろくに読まずに安易に質問する。
0042nobodyさん03/03/28 18:18ID:???
>>41
いや、そこで発言を止めるなって。

↓はい、CGIに関する次の質問どーぞ。
0043nobodyさん03/03/28 18:26ID:???
このスレの質問の半分はperlでできている
0044nobodyさん 03/03/28 18:33ID:???
>>36
コレどっちかというとスクリプトのもんだいやね
にしても、データの構造が悪いなぁ

@data= (
{fluit=>'apple',from=>'青森',price=>40},
{fluit=>'orenge',from=>'愛媛',price=>20},
{fluit=>'strawberry',from=>'茨城',price=>30}
);

@data = @data[sort{$data[$a]->{$FORM{select}} cmp $data[$b]->{$FORM{select}] } 0 ..$#data];

for (0 .. $#data) {
  print "$data->[$_]->{fluit},$data->[$_]->{from},$data->[$_]->{price}\n";
}

自分ならこんなふうに組むかなぁ・・・
0045nobodyさん 03/03/28 18:35ID:???
>>44訂正・・・
for (0 .. $#data) {
  print "$data[$_]->{fluit},$data[$_]->{from},$data[$_]->{price}\n";
}
0046nobodyさん03/03/28 18:43ID:???
>>44-45
Perl スレで答えてやれや
0047nobodyさん03/03/28 21:29ID:???
遅レスだが、やはり>>16は何か勘違いしてると思う。

「同じ処理を二つ書いてなんとも思わない」と言うことは、
「二つ書いても三つ書いても同じ」と言うことであり、
つまり「ソースはコピペするもの」と言う風に発展しそうだ。

コピペ厨がまともなプログラマーとは誰も思わない訳で。
やれやれ。

>>16 がどんな主義主張だろうと俺には関係ないが、俺の目の届かないところにいてくれると嬉しいな、と。
0048nobodyさん03/03/28 21:33ID:???
俺は未だに>>16

>で、サブルーチンにしたくないって言ったのは、
>特に理由はないです。
>なんとなく流れで、

のようなことを思った理由がすごくキニナル。
「サブルーチンが増えるから」とかそんな理由でもいいから何か言って( ゚д゚)ホスィ…
0049nobodyさん03/03/28 21:33ID:???
>>47
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
0050nobodyさん03/03/29 00:31ID:???
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
このスレでは、CGIに関係無い主張は控えてもらえると嬉しいな、と。
0051nobodyさん03/03/29 00:33ID:???
>>47
結局のところ定石の意味を考えずに鵜呑みにするだけじゃ綺麗なコードは書けないと思うけどね。
0052nobodyさん03/03/29 02:33ID:???
>>50は何が気に食わなかったのだろうね。
0053nobodyさん03/03/29 12:22ID:???
>>52
春だからでは??
お休みの人も多いだろうし
0054nobodyさん03/03/29 13:47ID:21Lv88E2
>>26
じゃあいくつか

・処理速度が速い
・コピペするだけなので、コーディング時のタイピング数が少ない
・サブルーチン以外の手法を考察する機会を得る
0055nobodyさん03/03/29 13:52ID:???
>>54
>>50
0056nobodyさん03/03/29 14:01ID:???
>>54
・雀の涙。コンパイルやJIT時に最適化されて結局展開されたり。
・修正する箇所はn倍に。
・まぁ、同意。
0057nobodyさん03/03/29 14:05ID:???
最近春休みのせいにする輩が多いな。
0058nobodyさん03/03/29 14:23ID:???
>>57
あまり深く考えたくないし、追及したくないし、とりあえず春のせいにしときゃ楽じゃん。
0059nobodyさん03/03/29 14:37ID:???
エラーの原因を考えたくないときと一緒だな。
0060nobodyさん 03/03/29 14:59ID:???
なんでそんな必死なんだ(w
0061nobodyさん03/03/29 15:56ID:???
春だから
0062nobodyさん03/03/29 19:19ID:???
頼むから、
・怠惰
・短気
・傲慢
の三大美徳の意味を考えてくれよ……。

これはPerlのモットーかも知れんが、他の言語にも当てはまると思うし、
CGI作るのにも役に立つはずだし。
0063nobodyさん03/03/29 19:29ID:???
>>62
・怠惰:無気力
・短気:キレて先生刺したり
・傲慢:はったり
0064nobodyさん03/03/30 06:58ID:???
ローカルでCGI-perlの勉強をしている者でつ。
ドキュメントルートはD:\WWWでつ。
こんな場合、C:\WWWフォルダのファイルをオープンすることは可能でつか?
open(IN,"$file")||&error;
可能なら、$fileはどんな記述にしたらよいでしょう。
0065nobodyさん03/03/30 07:51ID:???
>>64
ドキュメントルートって HTTPサーバのでしょ?
CGI には関係無い。
なので普通に、
$file = "C:/WWW/hoge.txt";
でOK。


0066nobodyさん03/03/30 07:51ID:???
C:/WWW/hogehoge.fuck
0067nobodyさん03/03/30 08:02ID:???
>>64
>>65>>66 は、Windowsの場合ね。念のため。
#UNIX系使ってたら、そう言ってくれ。
0068nobodyさん03/03/30 10:03ID:???
>>65
\はエスケープしなきゃ。

$file = "C:\\WWW\\hoge.txt";
00696803/03/30 10:04ID:???
あ、よく見たら / 区切りか……ごめん。
うちの環境だと \ がバックスラシュになってるから早とちりしてもた。
00706403/03/30 10:06ID:???
> $file = "C:/WWW/hoge.txt";
できました。

$file = "C:\WWW/hoge.txt";って書いていたお馬鹿な漏れ!
さあ、笑ってくれぃ!
0071nobodyさん03/03/30 10:31ID:???
>>70
ワラ
0072nobodyさん03/03/30 11:21ID:???
ドキュメントルートがどーのこーの言ってたからアレだけど、
もし続きがあるなら Perl スレ逝け。
0073nobodyさん03/03/30 11:30ID:???
>>70
ahaha
0074nobodyさん03/03/30 11:37ID:???
>>70
$file = "C:\\WWW/hoge.txt";

なら動きそうだけどな。
0075nobodyさん03/03/30 15:55ID:YbjoSkMy
CGIについて厳密に記述してあるページを教えてください。

知りたいのは、例えば、GETの時のFormDataは環境変数に設定され、
POSTの時のFormDataは標準入力に送られる、というキマリゴトは
CGIのレベルの話なのか、単に、Apache等のいくつかのWebServer
の実装が、そうなっているだけという話なのか、というあたりが
きちっと書かれているページです。
0076nobodyさん03/03/30 15:56ID:???
>>75
ええ、Common Gateway Interfaceの仕様です。
0077nobodyさん03/03/30 16:01ID:???
HTTPの仕様じゃないかね。
0078nobodyさん03/03/30 16:05ID:???
>>77
はい?

GETは本文を評価しない。その代わりURLの後ろにパラメータをくっつけて送ることができる。
POSTは本文にデータを含むことができる。

httpのGETとPOSTっとこの程度の違いだと思われ。

OS依存の標準入力や環境変数なんて使うプロトコルじゃないよ。
0079nobodyさん03/03/30 16:27ID:???
>>75
この辺かな…。
ttp://cgi-spec.golux.com/
ttp://www.w3.org/CGI/
00807503/03/30 16:28ID:YbjoSkMy
>>79
ありがとうございました。
0081nobodyさん03/03/30 16:29ID:???
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
0082nobodyさん03/03/30 16:29ID:???
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
80 名前:75 投稿日:2003/03/30(日) 16:28 ID:YbjoSkMy
>>79
ありがとうございました。
           
00837503/03/30 16:51ID:???
The WWW Common Gateway Interface Version 1.1
http://cgi-spec.golux.com/draft-coar-cgi-v11-03-clean.html
を読んでみると、

1.4. Terminology
  metavariable
    A named parameter that carries information from the server to the script. It is not necessarily a variable in the operating-system's environment, although that is the most common implementation.

6.2. Request Message-Bodies
  As there may be a data entity attached to the request, there MUST be a system defined method for the script to read these data. Unless defined otherwise, this will be via the 'standard input' file descriptor.

ということなので、CGI1.1的には別に、環境変数じゃなくても、標準入力じゃなくても、いいみたい。
0084nobodyさん03/03/30 16:53ID:???
>>83
まぁ、だとしたらMACではCGIが使えないってことになるからなぁ。

最近、ネットワーク系の規格ってどんどんOS非依存になってきてるね。
0085nobodyさん03/03/30 16:56ID:???
>>84
Macはしらないんだけど、なぜ?
聞いてみたい。
0086nobodyさん03/03/30 16:59ID:???
>>85
標準入出力ないっしょ。それを理由にペンタゴンかどこかはセキュリティ向上のためにMACを採用しているところもあるらしい。
00878503/03/30 17:00ID:???
そうなんだ。
ありがd
0088nobodyさん03/03/30 17:32ID:2BSCR98U
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
★みんなの情報局★みんなのリンク集★ココ最高★
0089lanble03/03/30 21:03ID:yF9PwNLZ
Content-type: text/html
でhtmlファイルってことになるけど
shtmlファイルにするときは
Content-type: text/shtml
でいいの?
0090nobodyさん03/03/30 21:05ID:???
>>89
普通にhtmlで良いと思うけど。
クライアントに返すデータはすでにssiが評価された後のhtmlな訳で。
0091nobodyさん03/03/30 21:07ID:yF9PwNLZ
infoseekを使ってHPを公開しているわけですが
infoseekはshtmlだとバナー広告を表示しないんですよね
それをなんとかCGIで行いたいんですけど・・・何か方法
ありませんか?
0092nobodyさん03/03/30 21:10ID:???
SSI
0093nobodyさん03/03/30 21:14ID:yF9PwNLZ
execは禁止されているんですけど?
0094nobodyさん03/03/30 21:23ID:???
広告消すな。


はい次の質問どーぞ。
0095nobodyさん03/03/30 21:40ID:yF9PwNLZ
ブーブー(`ε´)
0096nobodyさん03/03/30 21:43ID:???
>>95
死ね
0097nobodyさん03/03/30 21:53ID:yF9PwNLZ
ぶっちゃけ方法ないだろ?
0098nobodyさん03/03/30 21:57ID:???
>>97

消えろ春厨
0099nobodyさん03/03/31 00:43ID:XMyQGev4
質問です。
BBSを改造したいのですが、頭に "> (>)" が来る文だけ
色を変えたいのですが、どのようにすればよいでしょうか?
よろしくお願いします。
0100nobodyさん03/03/31 00:49ID:???
>>99
情報不足。
それ以前にスレ違いなのでこっちに逝ってください。

【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
0101nobodyさん03/03/31 00:49ID:???
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
0102nobodyさん03/03/31 01:10ID:XMyQGev4
>>100
わかりました。
すみません。
ありがとうございます。
ついでにできてしまったようです。
凡ミスでした。
板汚し失礼しました。
0103nobodyさん03/04/02 11:13ID:iqBWaUXY
SSIからCGIを呼んでるんですけど、[an error occurred while processing this directive]のエラーが出てしまいます。
<!--#exec cmd="./xxx.cgi hoge" -->
<!--#exec cmd="./xxx.cgi?hoge" -->
<!--#exec cgi="./xxx.cgi hoge" -->
<!--#exec cgi="./xxx.cgi?hoge" -->
なぜでしょうか。
0104nobodyさん03/04/02 12:17ID:???
>>103
<!--#include virtual="./xxx.cgi"-->に変えてみな。
■ このスレッドは過去ログ倉庫に格納されています