自作CGIを評価するスレ
■ このスレッドは過去ログ倉庫に格納されています
0001Premature end of script headers : /this/thread
03/04/05 12:47ID:tIET0nhfよほどプログラムが短くないかぎりはアプロダにでもアップしてね。
0448nobodyさん
03/08/31 02:27ID:6GeG39LLSAFE_MODEでさっそく引っかかったが
0449nobodyさん
03/08/31 02:54ID:???0450ガイキチ厨房
03/08/31 06:44ID:???PHPでカウンタを作ってみたのですが、どなたかご意見下さい。
http://popup3.tok2.com/home/program/cgi-bin/uploader/source/File:0011.txt
0451nobodyさん
03/08/31 11:38ID:???script書き始めなら上々の滑り出しだと思う。
■L38の $ip のダブルクウォートは意図不明。
■” と ’ が混在してるけど、このスクリプトで使われてる ” は上記をのぞいて ’ に統一可能。
■L41は、$newdata = $newcont . '<>' . $_SERVER['REMOTE_ADDR'] ; と書けば十分なのでは。
■関数名とレフトブラケットの間に半角スペースがあったり無かったりする。これは趣味だから
どう書いてもいいと思うが、普通は入れない。制御語(ifとかforとか)の後には入れる。そうすることで
関数と制御構造を見分けやすくする。カラーリング機能のないエディタではこの方が見やすい気もする。
いずれにせよ、どっちかに統一したほうがよいと思われ。
■切り詰めを忘れている。ので、現データが 13<>127.127.127.127 で上書きデータが、14<>25.25.25.25 だった
場合、14<>25.25.25.257.127 に。書き込んだ後で、ftruncate(); を使ってファイルを切り詰める必要あり。
0452nobodyさん
03/08/31 11:40ID:???ログファイルが壊れる(例えば 8424<>127.0.0.1420<>127.0.0.8420<>127.0.0.842の ように)から
入れたのなら、アイディアとしては◎だが、スマートな処理とはいえないかと。
■あと、排他制御にバグがあるのでは。
ロックがかかっていても、fopen(); も flock(); も、 warning や fatal error (noticeも) を吐かないため、
処理が続行する。排他制御になってもならなくてもこのスクリプトは処理を最後まで実行するので、flock(); は
ちゃんと働いてない。
実際には起こらないかも知れないが、論理上、ロックがかかっているために L32 の fgets(); が失敗して
$buf に false が入ってカウンターが0に戻る可能性がある。L26でロックが取れなかった場合、
つまり前のリクエストを処理中の可能性がある場合、書き込みをスキップするかスクリプトを終了
するかブロックモードで待機させる必要があると思う。http://jp.php.net/flockにあるとおり、flock(); は
失敗すると false を返す。
■同じ理由で、前のロックが邪魔してロックがかかっていないのに書き込みに進行してしまうことがある。
書き込みがいくつも重なると、dat の内容がが妙なことになる予感。ここらあたりを rewind(); が力技で
解消しているように見える。
0453nobodyさん
03/08/31 21:50ID:???0454nobodyさん
03/08/31 21:56ID:6GeG39LLhttp://s2.arigato3.net/~hon7/blog/
ハイブリッドP2Pによるトラックバックを考えてます
0455nobodyさん
03/09/01 00:56ID:???話はそれからだ
0456nobodyさん
03/09/01 01:41ID:???0457ガイキチ厨房
03/09/01 16:10ID:???詳しく指摘していただきありがとうございます。
とりあえず''に統一し、関数名とレフトブラケットの間のスペースを
制御構造のみ入れるようにしました。
また、書き込み処理を行った後に、
// ファイルを切り詰める
ftruncate($fp, ftell($fp));
という処理を加えました。
ロックのバグについてなのですが、Googleで調べたところ、
flockはデフォルトでブロックモードになっているらしいのですが、
http://itbtech.itboost.co.jp/perl/perl_06.php
よろしくお願いします。
0458ガイキチ厨房
03/09/01 18:57ID:???すいませんURL間違えました。正しくはこちらです。
http://itbtech.itboost.co.jp/php/php_04.php
0459nobodyさん
03/09/01 23:17ID:???0461nobodyさん
03/09/02 16:15ID:???ああごめん。Manualみたらおもっくそそう書いてあった、、。
flockでとまるから一般の環境なら多分大丈夫だね。
こっちの検証スクリプトの間違いなのでflockとrewindの話しはなかったことに。
秒間50リクエストくらいでは問題なかったです(php4.3.0 apache1.3.27 RHLinux)。
ftruncate ( $fp , ftell ( $fp ) ) ; は ( $fp , strlen ( $newdata ) ) ; なんちゅう書き方もある。
0462ガイキチ厨房
03/09/02 19:51ID:???なるほど、参考になりました。ありがとうございます。
0463nobodyさん
03/09/03 02:03ID:6rADPhxnWeb上で部の共有資産の貸し出し申し込み等の管理を行えるといいなぁ、と思いいろいろとCGIを探してはいるのですがなかなか見つかりません。
探しているのは、次のようなCGIです。
1.画面で借りたい物を選択・自分の名前・貸出期間等の入力、申し込み
2.画面上では「貸し出し中」等に表記が変化(それか削除されるなど、申し込みが行えない状態に変化)
3.sendmailが使えないサーバなので、申し込みがあったことをログに吐き出し、管理人が定期的にそれをチェックし貸し出す
こういうものです。
サーバはinfoseekのiswebでPerl、Python、Ruby、PHPが使えます。
ショッピングカートCGIを活用してもいいなと思ったのですが、sendmailを利用する物がほとんどで、上記のようにログにのみはき出す物はあったことはあったのですがシェアウェア(\15K!)でした。
それほど資産の数が多いわけでもなく、貸し出し回数もそんなに多くないので、15000円もかけるわけにはいきません。
出来れば無料、もしくは1〜2千円程度で利用できるCGIがありましたら、教えてください。
よろしくおねがいします。
0465sage
03/09/03 12:28ID:Udj8Y4pI463です
え〜と。
スレ違いだ、ということですか…?
…すいませんでした。
0466nobodyさん
03/09/03 13:26ID:???どっかに「こんなCGI探してます」的なスレあったハズだよ。
0467nobodyさん
03/09/03 13:44ID:???>スレ違いだ、ということですか…?
スレ違いじゃないと思うんだったら自作CGIへのリンク貼れよ。
自作CGIを評価するスレなんだからさ。
0468nobodyさん
03/09/03 18:02ID:???http://pc2.2ch.net/test/read.cgi/hp/1059878840/l50
Web製作板でつ。
0470nobodyさん
03/10/02 12:00ID:???0471nobodyさん
03/10/02 22:11ID:???複数プロセスでの10,000件書き込み耐久試験もクリアしたっぽいです。
ただ、ちょっと遅いように感じるのですがどでしょ?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
0472nobodyさん
03/10/02 22:50ID:???0473nobodyさん
03/10/07 02:23ID:86/MwT3yスタイルシートだけでWebデザインが可能です。
PHP4+MySQL
http://arigato3.s36.xrea.com/x/bbs.php
0475nobodyさん
03/10/07 04:42ID:???http://pc2.2ch.net/test/read.cgi/hosting/1065223105/
以後放置で。
0477手裏剣
03/10/07 06:29ID:???http://www.muzie.co.jp/cgi-bin/artist.cgi?id=a016219
0478nobodyさん
03/10/07 09:34ID:86/MwT3y0479nobodyさん
03/10/07 09:34ID:86/MwT3y片手間で1週間ぐらい
0480nobodyさん
03/10/07 18:52ID:???___Λ____
|知識ゼロのまま|
0481nobodyさん
03/10/07 21:30ID:???0482nobodyさん
03/10/08 10:35ID:???0483nobodyさん
03/10/19 04:34ID:faEGA12Q62 名前: 文責:名無しさん 投稿日: 2001/07/10(火) 12:21
小型盗聴器、電話盗聴、web(電子メール)盗聴、郵便物の開封、
集合住宅の隣に引っ越してきて壁に聴診器、または集音マイクを向ける。
関係者からの聞き込み、ごみあさり、ストーキングにより行動パーターンの把握、
行動パターンを調べた上での待ち伏せ。全部、人海戦術を使えば十分可能です。
323 名前: 文責:名無しさん 投稿日: 2001/07/30(月) 20:48
集団で盗聴なり、付きまといなり、身辺調査なりした後で、集めた個人情報を利用して、
メディアを通じて本人にしかわからないように「監視してる」とほのめかしたり。
待ち伏せや尾行などしておいて、本人の前で「監視してるぞお〜」と、嫌がらせをしてみたりする。
これを一定期間継続して繰り返す。
一定期間、上記の嫌がらせを繰り返すと、加害者がすでに嫌がらせをしていなくても、
被害者は、ずう〜っと嫌がらせが続けられてると思い込んでしまう。
(痴漢の被害者が、外であった人が全員痴漢だと思い込むのと同じ)
それと同じように、ここのスレッドに書かれている、盗聴した情報を二次利用する嫌がらせを
やっていないときでも、被害者は自分から自分と関わりがある
情報をメディアから探し出して自分に関係があるのではないかとこじつけてしまう(関係妄想)。
関係妄想を引き起こすように嫌がらせを行うそれ自体がマインドコントロールの一過程である。
被害者が関係妄想を引き起こした時点で今度は精神病にかかったと噂を流して、さらにからかう真似をする。
ノイローゼになるように追い込んで、更に自殺するように持っていこうとする。
被害者がこういった心理状態になるのを嫌がらせの関係者は経験的に知っているのだろう。
0484nobodyさん
03/12/07 15:31ID:ohQC6Gecここ
http://www.google.com/search?q=%E3%83%89%E3%83%A9%E3%82%A4%E3%83%9E%E3%83%86%E3%82%A3%E3%83%BC%E3%83%8B&ie=UTF-8&btnI=I%27m+Feeling+Lucky
0485nobodyさん
03/12/09 13:27ID:Dust1o+dパソコンと携帯3社兼用の掲示板で、スレッドまたはツリー表示でかつ
パスワードで入る人の管理が出来るCGIご存じありませんか?
スレッド、パスワードどちらかだけだとあったんですが・・・。
0486nobodyさん
03/12/10 13:25ID:/scbZ0TM0487SERA
03/12/10 21:19ID:cJpFW25/0488nobodyさん
03/12/12 00:32ID:???0489nobodyさん
03/12/19 17:18ID:s0hPhfIyこれはどうでしょうか?
デザイン以外は自分で作りました。
0491nobodyさん
03/12/20 01:11ID:A80S/toCCGIです。
サーバーサイドで動いているのでCGIです。
もっと勉強してください。
0493nobodyさん
03/12/20 01:26ID:m9BC3a2H0494nobodyさん
03/12/20 01:27ID:A80S/toCいま検索して調べたら
metaタグの後にtitleタグを書いてました。
0496nobodyさん
03/12/20 02:58ID:???CGIは動いたりしない。
0497nobodyさん
03/12/20 03:19ID:???悪代官が黄門様に無礼者と言ってるのを思い出しちゃったw
0498nobodyさん
03/12/20 10:48ID:rKU28so3CGIとはWEBサーバーがWEBブラウザからの要求に応じてプログラム
を起動するための仕組みです。
”CGIは動いたりしない。”
馬鹿か?
0499nobodyさん
03/12/20 10:49ID:rKU28so3俺は悪代官だよ~W~
0500nobodyさん
03/12/20 13:51ID:???0501nobodyさん
03/12/20 13:55ID:???0502nobodyさん
03/12/20 14:07ID:???インターフィエスの一仕様。
モジュールからプロセス作ることもできるが、
あれもCGI?
0503nobodyさん
03/12/20 18:53ID:FBPjlTLiどうせperl=cgiとか
まだ思ってるアフォだろ?
0504HTTP/1.1 200 OK
03/12/20 21:23ID:???とか書いてある本があった気がする
ほかの言語を使わなければいいだけの話なのに・・・
0505nobodyさん
03/12/21 00:57ID:???マジ?
それって、if ははほかの言語と混同するからやめれというのと同じことだよね
0506nobodyさん
03/12/21 15:53ID:???同じような理由でperlの$_(暗黙の代入)はなるべく使うなとか書いてる本もあったよ。
0508nobodyさん
03/12/22 15:58ID:???0510nobodyさん
03/12/26 20:54ID:???ハァ?
あたまのよわいのがなんにんか・・ って書いてあるが、どう読んだら何国の人になるんだ?
502,504,506,508が(ry
0511nobodyさん
03/12/26 21:46ID:???0513nobodyさん
03/12/31 15:09ID:OIDb7RDThttp://ssr.xrea.jp
けっこういい出来に仕上がったと思うけど、初めての人は操作にとまどうかも
0514nobodyさん
04/01/05 13:20ID:8h9t8BrG落としたYo
とりあえず使えそう・面白そうな物だったら、朴らせてもらうわ(w
0515nobodyさん
04/01/12 07:57ID:fR13iSUk0516nobodyさん
04/01/17 13:56ID:kOvCn6Hohttp://fine.tok2.com/home/moritomo/cgi/career/career_bbs.cgi
です。
0518nobodyさん
04/01/17 18:12ID:???0519nobodyさん
04/01/17 19:01ID:???http://fine.tok2.com/home/moritomo/cgi/accesstakelog.txt
http://fine.tok2.com/home/moritomo/cgi/admin_remote_log.txt
http://fine.tok2.com/home/moritomo/cgi/akusesu.txt
http://fine.tok2.com/home/moritomo/cgi/countlog.txt
http://fine.tok2.com/home/moritomo/cgi/hatugen.txt
http://fine.tok2.com/home/moritomo/cgi/newaccesslog.txt
http://fine.tok2.com/home/moritomo/cgi/newcount.txt
http://fine.tok2.com/home/moritomo/cgi/newdomain.txt
以下略
ヴァカですか?
0521nobodyさん
04/01/18 02:22ID:???0522nobodyさん
04/01/18 03:41ID:???・ここは見た目じゃなくコードを評価するスレだ。
・use strict; しろ。
・perlstyle 読め。
・デカいの持ってきても面倒だから読まんぞ。
…のどれかに該当していたら、まともなレスは返ってこない。
0523nobodyさん
04/01/18 21:22ID:???0524>>516
04/01/25 15:17ID:yPaa9elSForbiddenにしたみたいだけど、
せめてファイル名変えなよ。
0525nobodyさん
04/03/06 14:54ID:???if-elsifの書き方、
if{
..
}elsif{
..
}
より
if{
..
}
elsif{
..
}
の方が俺にとっては読み易いんだコンチクショー。
0528nobodyさん
04/05/09 20:52ID:???require 'axlog.pl';
AxLog::getlog('ログファイル名','ログ最大記録数');
の用に呼び出して使うアクセス解析。
何となく作ったんですが評価お願いします。
アクセス解析 http://torihamlog.s55.xrea.com/search/axlog.pl.txt
ログビューワー http://torihamlog.s55.xrea.com/search/axlogv.cgi.txt
ここにログビューワを設置して、それにアクセス解析しこんでます。
リモホとかIPとか晒す事になるので困る人は見ないで下さい。
パスワードは 1234 です。
http://torihamlog.s55.xrea.com/search/axlogv.cgi
念のため…コレ呼び出すとログを削除します。
http://torihamlog.s55.xrea.com/search/dellog.cgi
0529528
04/05/09 21:13ID:???ファイル名変更しました。
アクセス解析 http://torihamlog.s55.xrea.com/search/axlog_pl.txt
ログビューワー http://torihamlog.s55.xrea.com/search/axlogv_cgi.txt
0530nobodyさん
04/05/09 21:49ID:???とりあえず axlog.pl をザッと見た感じ。
> 39: my $logfile = ($_[0]) ? $_[0] : "log.dat";
my $logfile = $_[0] || "log.dat";
か
my $logfile = defined $_[0] && length $_[0] ? $_[0] : "log.dat";
> 48: $ENV{'TZ'} = "JST-9";
local するか、呼び出し元と条件を揃える (設定しない) 。
> 58 〜 62
my($path) = $ENV{'SCRIPT_NAME'} =~ m|^(.*/)|;
ログに ASCII 以外の文字を吐くのはあまりお勧めしない。
あと axlog.pl.txt や axlog.cgi.txt でも「.pl」や「.cgi」は含まれて
いるので CGI プログラムとして動く。Apache のマニュアル参照。
0531nobodyさん
04/05/09 22:26ID:???axlogv.cgi 。
> 6: use vars qw/$pw $logfile $gzip_send $gzip/;
不要。
> 47 〜 53:
my $gzip = $^O =~ /Win/
? "gzip.exe -1 -c"
: "/bin/gzip -1 -c"
;
> 69: if ($mode eq "css") { Style_Sheets(); }
わざわざ CGI で吐かせる理由は?
> 74: else { print "Status: 403 Forbidden\n\n"; exit; }
エラーメッセージを吐いた方が親切。
> 256: Content-type: text/plain; charset=Shift_JIS
text/css
0532528
04/05/10 19:23ID:???評価ありがとうございます。
色々参考になります。
cssについてはファイルを一つにまとめたかったからです。
やっぱあんまり良くないですか?
>> 74: else { print "Status: 403 Forbidden\n\n"; exit; }
>エラーメッセージを吐いた方が親切。
if ($mode eq "css") { Style_Sheets(); }
elsif ($pass ne $pw) { Error('パスワードが違います。') }
elsif (($pass eq $pw) && ($mode eq "view") && ($ENV{'REQUEST_METHOD'} eq "POST")) { View(); }
else { Pass_form(); }
こうゆう風にしようと思っています。
0533nobodyさん
04/05/11 00:31ID:???・CSS を変更する為にスクリプトを編集する危険を冒す必要がある。
・外部に CSS を持つのに対し、常に二倍の回数実行される。
・CSS を使い回す時に悩む事になる。
これらのデメリットを考慮の上で、なお一つにまとめるメリットの方が
勝ると判断したならいいんじゃないか?
0534528
04/05/14 20:45ID:1r/FkAS3自己レス
すげー馬鹿なこと書いていた
if ($mode eq "css") { Style_Sheets(); }
elsif (($pass) && ($pass ne $pw)) { Error('パスワードが違います。') }
elsif (($pass eq $pw) && ($mode eq "view") && ($ENV{'REQUEST_METHOD'} eq "POST")) { View(); }
else { Pass_form(); }
たぶんコレでいいかな…
作った動機はなんとなくなんだけど、実用性とかどうでせう?
一応CGIの設置とかできて、ほんのちょっとだけいじれる程度人向けのつもりです。
添削して下しさい。
【スクリプト】http://www.tcn.ne.jp/~majima/dog/quiz.txt
【動作例】http://www.tcn.ne.jp/~majima/dog/quiz/quiz.cgi
0538nobodyさん
04/07/04 05:12ID:???もじゅーるは使えない鯖なんでつか?
使えるんなら使ったほうがいいでつよ。
Image::Magick、CGI、Jcode等々
何に使うのかは自分で調べてね。
EUCで書いたり表示したりしたほうがいいと思うけど、Shift_JISでやりたいのなら反対しないさ。
所々myを付けているが、どうせなら全部に付けちゃいな。
strictしろってこった。
ついでにHTML的にも4.01strict すれば?
0539ager
04/07/09 18:40ID:???0540nobodyさん
04/10/08 20:39:40ID:HUGW4EIRというようなデータが数行あるような場合
それらを読んできて切り分けるって処理を
してます。
これの評価お願いします。
sub split_data{
my @ref,@tmp,%hush;
@tmp = @_;
for (@tmp){
chomp;
($hush{title},$hush{time},$hush{contents}) = split /::/;
push (@ref,{%hush});
}
return(@ref);
}
@tmp = ("a::b::c\n","d::e::f\n","g::h::i\n");
@ref = split_data(@tmp)
for(0..$#ref){
print "title:".$ref[$_]->{title};
print " time:".$ref[$_]->{time};
print " contents:".$ref[$_]->{contents}."\n";
}
0541nobodyさん
04/10/09 00:21:55ID:???myで複数宣言するときは()がいる
hushじゃなくてたぶんhashね. 連想配列っていみなら
ハッシュのスライスを使うとエレガントかも
@hash{qw/title time contents/} = split /::/;
foreachつかえよ
for(...$#ref)
0542540
04/10/09 02:08:52ID:???>ハッシュのスライスを使うとエレガントかも
>@hash{qw/title time contents/} = split /::/;
ありがと、参考になりました。
my は複数でも()いりませんよ。バージョンによるだろうけど
最後に、今更foreach使ってる人いるんですか?w
0543nobodyさん
04/10/09 02:43:14ID:???#--- test.p ---
use strict;
my $foo, $bar, $baz;
__END__
> /usr/local/bin/perl -v
This is perl, v5.8.5 built for i386-freebsd-64int
<snip>
> /usr/local/bin/perl -wc test.p
Parentheses missing around "my" list at test.p line 2.
Global symbol "$bar" requires explicit package name at test.p line 2.
Global symbol "$baz" requires explicit package name at test.p line 2.
test.p had compilation errors.
> /usr/bin/perl -v
This is perl, version 5.005_03 built for i386-freebsd
<snip>
> /usr/bin/perl -wc test.p
Parens missing around "my" list at test.p line 2.
Global symbol "$bar" requires explicit package name at test.p line 2.
Global symbol "$baz" requires explicit package name at test.p line 2.
test.p had compilation errors.
0544nobodyさん
04/10/09 03:20:52ID:???>>542 >今更foreach使ってる人いるんですか?w
for と foreach は単なるシノニムなので、その表現は正しくないな。
foreach (LIST) BLOCK を for (LIST) BLOCK と略せるのと同様に、
for (EXPR; EXPR; EXPR) BLOCK を foreach (EXPR; EXPR; EXPR)
BLOCK と書いてもエラーにならない。
foreach ループを意味するところで foreach と「書け」という >>541 の
アドヴァイスは論拠の確かな正しいものだ。しかし Perl では C 風の
for ループを使う機会が foreach ループに比べて圧倒的に少ない上、
人間の目からも for ループと foreach ループの区別は容易なので、
砕けた流暢な Perl を目指すならこだわる必要のない部分だと思うな。
0545nobodyさん
04/10/09 05:06:54ID:???%hush(多分hash?)の宣言の位置。
GCのコストを考慮した場合に、変数の再利用をするはあるけど...、
ループないで初期化してないとフィールドの数が少ない時に困るよ。
split/::/の代わりに正規表現を使ってデータを切り出すと、
データのチェックとsplitを同時にできて便利。
chompはデータ格納前に済ませておいた方が良いんじゃないかな。chomp(@tmp)
もしくは、大抵はファイルから読み込むだろうからその時に。
0546540
04/10/09 05:35:12ID:???どうもありがとう。foreachは普通に使えるんだろうけど、
大抵forで済ませてしまうのです。言い方悪かったです、スイマセン。
>>545
ありがとうございます。
>ループないで初期化してないとフィールドの数が少ない時に困るよ。
というのは、forのループ内で undef(%hush); (ほんとはhashでしたw)
でいいですか?
あと、フィールドの数が少ない時というのはどういうことでしょうか?
>split/::/の代わりに正規表現を使ってデータを切り出すと
どう書いたらいいのか思いつきません。宜しかったらご教授下さい。
>chompはデータ格納前に済ませておいた方が良いんじゃないかな。
そうですね。
open(FH,"file_name");
@tmp = <FH>;
chomp(@tmp);
close(FH);
0547541
04/10/09 11:14:32ID:???別にfor (@ref)でもいいかもしれんが
あと>>543読んだか? myは複数宣言するときは()いる
>>546
>ループ内で初期化
for(hoge){
my %hash;
statement;
}
こういう事だと思う
0548540
04/10/09 12:28:12ID:???省略も可って事ではないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています