自作CGIを評価するスレ
■ このスレッドは過去ログ倉庫に格納されています
0001Premature end of script headers : /this/thread
03/04/05 12:47ID:tIET0nhfよほどプログラムが短くないかぎりはアプロダにでもアップしてね。
0133nobodyさん
03/04/07 15:58ID:???0134nobodyさん
03/04/07 16:14ID:???じゃなきゃそんなモジュール作らんよ。
0136nobodyさん
03/04/07 22:42ID:???ソートの練習なんです。
いちおう漏れの思っている動作しているのですが,突っ込むところがあれば,後学のために色々教えてください。
ソースはこちら,
ttp://members.tripod.co.jp/angeldayan/
使ったデータはこちら
ttp://members.tripod.co.jp/angeldayan/data.txt
要 cgi-lib.pl です。
たいしたものじゃなくてごめんなさい。
初心者なんで,これでも1週間かかっちゃったんです。
よろしくお願いします。
0138nobodyさん
03/04/08 18:57ID:???myとかの使い方覚えたほうがいいかも
まだはじめたばかりなのならPHPもいいかもよ
でスクリプトに関しては
ファイルをアップロードするわけでもないんだし
自前でデコードしよう。
漏れも挑戦してみていいかい?
http://iwh11.hp.infoseek.co.jp/p/e/r/perldev/cgi-bin/upload/source/039.txt
PerlスクリプトなんでDOSから動かしてね
0141nobodyさん
03/04/08 20:25ID:???varsプラグマ(v5.6以降だと our)を使うのは、
use strict 'vars'プラグマを有効にした時に、
複数のパッケージである変数を別のパッケージから使いたい場合、等。
no strict は、場合によっては反則 ...
0142nobodyさん
03/04/08 23:45ID:???myの方が3,4倍遅かったのだけど…。メモリ消費は解らない。
014371
03/04/09 03:32ID:???cgi-lib使ったことないからあてずっぽうだけど、かなりソース書きなおす事になったねぇ
ttp://iwh15.hp.infoseek.co.jp/p/e/r/perldev/cgi-bin/upload/source/041.txt
014471
03/04/09 03:33ID:???if ($in{'rev'}){
my $script = 'http://' . $ENV{'SERVER_NAME'} . $ENV{'SCRIPT_NAME'};
ココ逆だな・・・
my $script = 'http://' . $ENV{'SERVER_NAME'} . $ENV{'SCRIPT_NAME'};
if ($in{'rev'}){
> myとかの使い方覚えたほうがいいかも
わかりました。勉強します。
> PHPもいいかもよ
perlと心中しまつ。
> ファイルをアップロードするわけでもないんだし
いやいや、今後画像をあぷすて貼り付けるつもりなので。。。
いつになるかわかりませんが。。。。。
>>144
うわぁ、ソースが綺麗でつ。
でも、動きません。。。。。
ローカルでは「ページを表示できません」で動きませんし、
サーバにあげてみた所、最初の画面は表示するものの、
情報のリンクのところが
http://サーバー名/$script?action=1&rev=1&n=0
って、$script そのままでつ。
結果は404でつ。
自分でも調べてみまつ。
0147nobodyさん
03/04/09 09:53ID:???> myの方が3,4倍遅かったのだけど…。メモリ消費は解らない。
根拠を示さずに結果だけ取り出して言われても…。誤解されないかな?
my の何のベンチマークを行なったの?
ループ・ブロック内で変数を宣言して、そのオーバーヘッドを測っていた
なんて事はないよね?それとも、ホントに変数の参照・代入が3〜4倍もかかったりした?
0148nobodyさん
03/04/09 10:12ID:???myのほうが遅いというのはちょっと信じがたいな。
ブロック外から参照される必要がないからシンボルテーブルにも
登録されないし、むしろ速くなるはずだが・・・
$html =<<'EOT'; を $html =<<"EOT"; でOKでした。
なお、ローカルで動かない件は、cgi-lib.pl へのパスが違っていたというアフォが原因。
0151nobodyさん
03/04/10 06:38ID:???確か、CGI.pmがサポートしてたはず・・・
標準モジュールだよ。
use CGI qw(:cgi-bin);
0153nobodyさん
03/04/10 10:43ID:ljl/7aqx-w と use strict 外して my も何も付けない場合とか、
our も試して見たけど。速度的には my < our < local って順番だったよ。
#! perl -w
use strict;
use Benchmark qw(:all);
my $count = 100;
my $code1="my \$code=1;"; map{$code1 .= "\$code++;\n"}(1..$count);
my $code2="local \$code=1;"; map {$code2 .= "\$code++;\n"}(1..$count);
timethese(1000,{
'Lexical' => sub {eval $code1},
'Dinamic' => sub {eval $code2}
});
----
Benchmark: timing 1000 iterations of Dinamic, Lexical...
Dinamic: 11 wallclock secs (10.60 usr + 0.00 sys = 10.60 CPU) @ 94.34/s (n=1000)
Lexical: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 467.29/s (n=1000)
0154nobodyさん
03/04/10 13:31ID:???追試。
--- bench ---
use strict; use Benchmark;
my $loop = 5000;
my $code1 = 'my $code = 1;' . '$code++;' x 100;
my $code2 = 'local $code = 1;' . '$code++;' x 100;
timethese($loop, { '1_my' => sub { eval $code1 }, '2_local' => sub { eval $code2 } });
---
● ActivePerl Build 522 on Win98SE
Benchmark: timing 5000 iterations of 1_my, 2_local...
1_my: 4 wallclock secs ( 4.45 usr + 0.00 sys = 4.45 CPU)
Global symbol "$code" requires explicit package name at (eval 5005) line 1.
2_local: 8 wallclock secs ( 7.75 usr + 0.00 sys = 7.75 CPU)
● Perl 5.005_03 on FreeBSD 4.8R
Benchmark: timing 10000 iterations of 1_my, 2_local...
1_my: 6 wallclock secs ( 5.62 usr + 0.01 sys = 5.62 CPU)
Global symbol "$code" requires explicit package name at (eval 10005) line 1.
2_local: 11 wallclock secs (10.92 usr + 0.02 sys = 10.94 CPU)
● Perl 5.8.0 on FreeBSD 4.8R
Benchmark: timing 10000 iterations of 1_my, 2_local...
1_my: 4 wallclock secs ( 4.74 usr + 0.00 sys = 4.74 CPU) @ 2108.73/s (n=10000)
2_local: 18 wallclock secs (17.20 usr + 0.00 sys = 17.20 CPU) @ 581.55/s (n=10000)
0155nobodyさん
03/04/10 18:05ID:???if ( ( my $aho = $query->param('hogehoge') ) eq 'hoge') {
$a =~ s/a/b/;
$nazoflag .= $a;
} else {
# $ahoは見える。
}
# $ahoは見えない。
while ( defined ( my $line = <IN> ) ) {
# $lineは見える
} continue {
# 見える
}
# 見えない
こういう場合のスコープについては、その制御構文の最後までに限定される。←あいまいだな…
0156nobodyさん
03/04/10 18:08ID:???これは、、sort用にこっそり、エラーにしないようになってるのかな。
追加、これはなかなか使える
foreach my $hoge (@list) {
}
0157nobodyさん
03/04/10 18:36ID:ljl/7aqx質問。continue って何?
0158nobodyさん
03/04/10 18:58ID:???0159nobodyさん
03/04/10 20:47ID:???こんな制御構文あったんだ。知らなかった。Thx >> 158
0160nobodyさん
03/04/10 20:58ID:???0162nobodyさん
03/04/11 00:36ID:???すみませんがちょっと漏れのスクリプトを見てください。
前回のソートの練習に加え、ページの分割もしてみますた。
いちおう漏れの思っている動作しているのですが,突っ込むところがあれば,後学のために色々教えてください。
なお、前回指摘された “myとかの使い方” は。。。。。(^^A
ソースはこちら,
ttp://members.tripod.co.jp/angeldayan/test.txt
使ったデータはこちら
ttp://members.tripod.co.jp/angeldayan/data.txt
要 cgi-lib.pl です。
たいしたものじゃなくてごめんなさい。
016471
03/04/12 22:26ID:???登録データの件数が増えるのならば
sortの cmp と <=>のルーチンを考えたほうがいいかも
foreach(@keys){
if($_->[$n] !~ /^\d*$/){
$num_flug =1;
last;
}
}
データ量増えていくと、cmpを使う場合処理が遅くなる。
if($n= 4){
if($rev){
@keys = @keys[ sort {$keys[$b]->[$n] <=> $keys[$a]->[$n]} 0 .. $#keys ];
}else{
@keys = @keys[ sort {$keys[$a]->[$n] <=> $keys[$b]->[$n]} 0 .. $#keys ];
}
}else{
if($rev){
@keys = @keys[ sort {$keys[$b]->[$n] cmp $keys[$a]->[$n]} 0 .. $#keys ];
}else{
@keys = @keys[ sort {$keys[$a]->[$n] cmp $keys[$b]->[$n]} 0 .. $#keys ];
}
}
みたいな感じかになろうか・・・
0166nobodyさん
03/04/12 22:53ID:???0168nobodyさん
03/04/12 23:21ID:???途中でダレたからかなり適当ですがいぢってみますた。
http://boobar.hp.infoseek.co.jp/refactoring/test.txt
さんくすでつ!
> データ量増えていくと、cmpを使う場合処理が遅くなる。
初耳でつ メモメモ 〆(・_・。)
>>168
全面的に書き換えてくださり、ありがとうございまつ!
感謝でつ!
乙でつ!
さっそくテストしてみまつた!
おー、動いているー。。 あれ(?_?)
データ件数は88くらいあるはずなのに、80までしか表示されない。。。
でもがんばってスクリプト読み下して自分で修正したいと重い松。
017271
03/04/13 04:57ID:???foreach(@keys){
if($_->[$n] !~ /^\d*$/){
$num_flug =1;
last;
}
}
lココの部分がどういう処理をしてたか説明してみそ
if($_->[$n] !~ /^\d*$/){ # $_の$n番目の値が数字ではなかったら、
$num_flug =1; # $num_flugに1を入れまつ
last; # foreachのループ抜けまつ
} # ifを閉じまつ
} # foreachを閉じまつ
これでいいでつか?
修正できましたぁ〜!
$lastpage++ unless @Record % $Pageview;
を
$lastpage++ if @Record % $Pageview;
0176nobodyさん
03/04/13 05:31ID:???>>169
>> データ量増えていくと、cmpを使う場合処理が遅くなる。
>初耳でつ メモメモ 〆(・_・。)
から、どうして
>>170
>初耳じゃなくて、そういうソースを組んでたから
>指摘したまでなんだけど・・・
のようなレスが付くのか良く分かりません。
cmp使うのが初耳だったんでしょ?なんで「初耳じゃなくて」なんだろう?
0177nobodyさん
03/04/13 05:32ID:???○cmp使うと遅くなるっていうのが初耳だったんでしょ?
017871
03/04/13 05:32ID:???つまり、該当データが文字列ばっかりだとループ終わるまで抜けない。
-> 次の処理にいくまで時間がかかるという事で cmp処理のときに時間がかかるという理屈。
あっ!
そういう意味だったんでつね。。。. (^^ゞ
んじゃ、メモを。。。消し消し. _□(. .。
018171
03/04/13 06:00ID:???ttp://kiteline.net/imgbbs/img/137.txt
この規模だと分ける意味がないとおもうんだけど・・・
改造さんくすでつ!
でも、穴が多いッスね。
次のページを押し続けれないし、
前のページが表示されないし、
順番が0-9の固定だし。。。
勉強のため漏れが修正したいと重い松が。。。
>>181さんの目から見て、>>168さんのソートは処理が重そうでつか?
>>168さんのソースは今まで漏れが出会ったことのない書き方だからちょっと苦戦しておりまつ。
おっと、>>168さんのソース、逆順ソートが出来ない。。。
あう〜
こちらも漏れが修正したいと重い松。
逆順ソートが出来ない件、修正しましたが。。。
$TableHeader .= qq|\t<th><a href="| . make_url(n => $_, action => 1) . qq|">$field{$_}</a></th>\n|
for sort { $a <=> $b } keys %field;
を
if ($Param{'rev'}){
$TableHeader .= qq|\t<th><a href="| . make_url(n => $_, action => 1,rev => 0) . qq|">$field{$_}</a></th>\n|
for sort { $a <=> $b } keys %field;
}else{
$TableHeader .= qq|\t<th><a href="| . make_url(n => $_, action => 1,rev => 1) . qq|">$field{$_}</a></th>\n|
for sort { $a <=> $b } keys %field;
}
っていうのにしましたが、もっと簡単になりまつか?
018571
03/04/13 06:58ID:???別にいい悪いはないと思いますけどね。
どんな記述も出来るのがperlですし・・・
自分が見やすければいいんじゃないでしょうか?
あと、自分的には不要な変数を極力使わないぐらいですか・・・
0186nobodyさん
03/04/13 07:34ID:???なんだこりゃ?
$TableHeader .= qq|\t<th><a href="| . make_url(n => $_, action => 1,rev => ($Param{'rev'} ? 0 : 1)) . qq|">$field{$_}</a></th>\n|
for sort { $a <=> $b } keys %field;
だろ?
サンクス!
こういう書き方は初めてなんで、かなり苦戦しておりまつ。
0188nobodyさん
03/04/13 16:20ID:???聞いてて疲れる
0189nobodyさん
03/04/13 17:03ID:???0190168
03/04/13 20:14ID:???直した。
http://boobar.hp.infoseek.co.jp/refactoring/test.0.0.2.txt
文法的に分からんトコは、駱駝本なり perldoc なり見てね。
「何でこういう処理が必要なのか分からない」ってトコは聞いて。
う〜、感涙!
実際、かなり省略した書き方なので、文法的にわかんないところばっかりでつ。
だからどんな処理をしているのかわかんなかったりして…(^^;
でも、がんばって自分で読み下して理解しまつ。
コメント文の多さに助かってまつ。
これからもご指導ご鞭撻のほどよろしくおながいしまつ。
>>188
あいた〜
苦情でつ!
このスレででつまつ使ってるのって漏れだけでつ〜
こういうの使ってみたい年頃なんでつ〜
(゙ `-´)/ ヤメレ! って言う声が多ければ考えまつ。
0192nobodyさん
03/04/14 05:17ID:???漏れの思っている動作は、
各Info ボタンを押すと昇順にも降順にもなる。
この際順番(ここではOrder)昇順なら小さい方から1、降順なら大きい方から1がいいんでつ。
でも>>190様、直さないでくださいね。
漏れがやるんでつ。
あと。。。
my @Field = qw(Info1 Info2 Info3 Info4);
っていう所。
my @Field = qw{Info1 Info2 Info3 Info4};
my @Field = qw|Info1 Info2 Info3 Info4|;
my @Field = qw(Info1 Info2 Info3 Info4(;
my @Field = qw)Info1 Info2 Info3 Info4);
my @Field = qw(Info1 Info2 Info3 Info4);
my @Field = qw\Info1 Info2 Info3 Info4\;
なんでもいいんでつね。
勉強になりまつた。
でも、
my @Field = qw(Info1 Info2 Info3 Info4);
で良くて、
my @Field = qw)Info1 Info2 Info3 Info4(;
でダメなのは納得いかなかったりして。。。(汗)
0194山崎渉
03/04/17 12:07ID:???0195マリモーマ ◆r6PDGT6Xd2
03/04/18 17:28ID:fPIUuruFhttp://ebrain21.com/~game/me/mai.cgi
0197nobodyさん
03/04/18 17:35ID:BrkP32Ds0198マリモーマ ◆r6PDGT6Xd2
03/04/18 19:34ID:fPIUuruF0199nobodyさん
03/04/18 21:18ID:???0200マリモーマ ◆r6PDGT6Xd2
03/04/19 13:29ID:kAGW5QYqできなくなるかも?
0201nobodyさん
03/04/20 00:47ID:???掲示板、見にく(ry
0202nobodyさん
03/04/20 04:29ID:???0203山崎渉
03/04/20 05:59ID:???( ^^ )< ぬるぽ(^^)
0204マリモーマ ◆r6PDGT6Xd2
03/04/20 10:12ID:xM5Zwmt0∧_∧
( ^^ )<じゃ どうすればいい?(^^)
0207マリモーマ ◆r6PDGT6Xd2
03/04/20 15:05ID:xM5Zwmt0(O_O) うう〜〜 わからないよ
0208nobodyさん
03/04/20 16:04ID:???0209nobodyさん
03/04/21 09:41ID:???・・・・とりあえず、他の掲示板とか見て回れ。
他の掲示板とか見たことあるだろ?
無駄なテーブル使いすぎ。
もっと、シンプルでいいと思うが・・・
それと、掲示板CGIの吐いてるHTML見たが・・・
HTML、間違ってないか???
改行ナシの、汚いHTMLでちゃんと読めんかったが・・・。
もうひとつ。
ひとつDLさせてもらってソース見たが・・・
謎な関数の名前ばかり。
関数作る悪い例として、そのまま本とかで出てきそうなのばかり。
後から拡張とかする時、関数の名前見ただけで、
どんな処理してくれる物か、判別できなくなる。
・・・と、いろいろつっこむ所多いが・・・
物自体は、結構良い物だと思う。
・・・たぶん。・・・きっと。 ・・・かもしれない。 ・・・だといいな。
0210マリモーマ ◆r6PDGT6Xd2
03/04/21 17:08ID:CNsFsGAeなるほど 参考にするよ ありがとう
0211nobodyさん
03/04/24 04:27ID:???CGIじゃないんだけど、Perlスクリプト内のコメントを削除するスクリプトを作りました。
使い方は、同封してるテキスト読んでも分かるけど、D&DでOKな、結構便利な感じです。
http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/997.lzh
評価お願いします。
また、改造してくれてアップしてくれる人は、
それ見て勉強したいと思いますのでお願いします。
0212bloom
03/04/24 04:29ID:vV02vP1k0213マリモーマ ◆r6PDGT6Xd2
03/04/24 05:40ID:0xA64jQFコメントが 笑った あと 抜いた行の 下の行を 上げたほうがいいかも
0214マリモーマ ◆r6PDGT6Xd2
03/04/24 05:49ID:0xA64jQFいいかな?
0215nobodyさん
03/04/24 05:53ID:x2ip/9xn0216動画直リン
03/04/24 06:29ID:vV02vP1k0217211
03/04/24 07:25ID:???>>214
ご感想、ありがとうございます。
そういう事で、少し改造してみました。
改行を消すかどうか、質問されるようになりました。
http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/998.lzh
もし、どなたでも改造したら、できればアップしてくださいね。
0218211
03/04/24 07:49ID:???HTML出力してて、色指定で#を使ってたら、それ以降が削られてました。。。
http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/999.lzh
・・・今度こそ・・・
0219bloom
03/04/24 08:29ID:vV02vP1k0220nobodyさん
03/04/24 10:23ID:???0221マリモーマ ◆r6PDGT6Xd2
03/04/24 16:32ID:0xA64jQF0222nobodyさん
03/04/24 16:38ID:???0223nobodyさん
03/04/24 16:48ID:???実は211のやつ見て無いんだが
書いて見たよ
先頭のタブとかは消さないようにした
一応自分の書いたスクリプトではきれいに
コメント部は消えた模様
0224223
03/04/24 16:52ID:???漏れの書いたスクリプトでは
誤作動しまくりだ
$hoge = '#000000';#hogehoge-
こういうのが
$hoge = '
になってるよ
0225223
03/04/24 16:53ID:???ってことね
0226211
03/04/24 17:06ID:???このコメント削除スクリプトは・・・
PerlでCGIをつくって、サーバに上げる時、
ソース内のコメント部分のファイルサイズが無駄なので作りました。
ちなみに、俺のCGIファイルで、23kあったのが、16kにまで落ちました。
自分のパソコン内で走らせるスクリプトなどについては・・・
コメント削除するメリットはありません。
>>225
どもども。
そう、後から気付いたんです。
シングルクォートで囲まれた#まで削ってしまうって・・・
これと言って、手がってもらえないので、自分のだけ修正してアップしてませんでした(ワラ
http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1004.lzh
これでどうです?
また一歩まともに近づいてるはずです。
>>223のソース、見せてもらいますね。
0227223
03/04/24 17:11ID:???意味は無いよ
コンパイル速度も変わらんしね
ただimgboard.cgiとかむかつくようなコメントが
たくさん載ってるやつには有効だ(ぷ
210KB→160KBになったよ
まぁ漏れ的には容量はどうでもいいが
うざすぎるコメント消すのが面白そうだったからなw
0228223
03/04/24 17:13ID:???それをimgboard.cgiで試したんだが
コンパイルエラーするよ
容量的には漏れより小さくなってるんだが
余計なところまで消しすぎでは?
0229211
03/04/24 17:21ID:???マジっすか!
なに消してるんだろ・・・
消しちゃいけない所、特定できません?
imgboard.cgiですか・・・
探してDLして、ためしてみます。
ちなみに、>>223の削除スクリプト試させてもらいました。
先頭にタブとかがあってのコメントは削除されない仕様ですね。
俺のは、とにかくコメントだと思われるような所は、すべて排除していく仕様なので・・・
失敗したら、文法エラーとかコンパイルエラーとか出ます。
って事で、どこで削除されたらいけない所が削除されてるのか調べてみます。
ありがとうございます。
0230223
03/04/24 17:51ID:???一箇所だけ修正
まぁ 文法一切見て無いので
バグいろいろあるんだが
直す気もないので
終了。
製作時間2分+30秒ですた。
imgboardはimgboard.cgiでぐぐると一番上にでてくるよ
0231223
03/04/24 17:53ID:???先頭にタブがあっても消えるはずだが
\t\t$hoge = 'hoge';#これはほげです
が
\t\t$hoge = 'hoge';
になるだけ 先頭のスペースやタブは削除しないってこと
7行プログラミングするわけでも無いしね
0232nobodyさん
03/04/24 18:00ID:???むかつくところがあるな
■ このスレッドは過去ログ倉庫に格納されています