自作CGIを評価するスレ (672レス)
自作CGIを評価するスレ http://medaka.5ch.net/test/read.cgi/php/1049514428/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
532: 528 [sage] 04/05/10 19:23 ID:??? >>530-531 評価ありがとうございます。 色々参考になります。 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(); } こうゆう風にしようと思っています。 http://medaka.5ch.net/test/read.cgi/php/1049514428/532
533: nobodyさん [sage] 04/05/11 00:31 ID:??? >>532 ・CSS を変更する為にスクリプトを編集する危険を冒す必要がある。 ・外部に CSS を持つのに対し、常に二倍の回数実行される。 ・CSS を使い回す時に悩む事になる。 これらのデメリットを考慮の上で、なお一つにまとめるメリットの方が 勝ると判断したならいいんじゃないか? http://medaka.5ch.net/test/read.cgi/php/1049514428/533
534: 528 [] 04/05/14 20:45 ID:1r/FkAS3 >>532 自己レス すげー馬鹿なこと書いていた 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://medaka.5ch.net/test/read.cgi/php/1049514428/534
535: ◆u2YjtUz8MU [age] 04/07/02 01:32 ID:??? いろいろわからんことだらけで作りましたが 添削して下しさい。 【スクリプト】http://www.tcn.ne.jp/~majima/dog/quiz.txt 【動作例】http://www.tcn.ne.jp/~majima/dog/quiz/quiz.cgi http://medaka.5ch.net/test/read.cgi/php/1049514428/535
536: nobodyさん [sage] 04/07/03 23:32 ID:??? >>535 むずい http://medaka.5ch.net/test/read.cgi/php/1049514428/536
537: nobodyさん [sage] 04/07/04 05:07 ID:??? >>535 とりあえず画像のファイル名を変えた方が良いよw 20点頂きました http://medaka.5ch.net/test/read.cgi/php/1049514428/537
538: nobodyさん [sage] 04/07/04 05:12 ID:??? >>535 もじゅーるは使えない鯖なんでつか? 使えるんなら使ったほうがいいでつよ。 Image::Magick、CGI、Jcode等々 何に使うのかは自分で調べてね。 EUCで書いたり表示したりしたほうがいいと思うけど、Shift_JISでやりたいのなら反対しないさ。 所々myを付けているが、どうせなら全部に付けちゃいな。 strictしろってこった。 ついでにHTML的にも4.01strict すれば? http://medaka.5ch.net/test/read.cgi/php/1049514428/538
539: ager [age] 04/07/09 18:40 ID:??? age http://medaka.5ch.net/test/read.cgi/php/1049514428/539
540: nobodyさん [] 04/10/08 20:39:40 ID:HUGW4EIR タイトル::時刻::内容\n というようなデータが数行あるような場合 それらを読んできて切り分けるって処理を してます。 これの評価お願いします。 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"; } http://medaka.5ch.net/test/read.cgi/php/1049514428/540
541: nobodyさん [sage] 04/10/09 00:21:55 ID:??? >>540 myで複数宣言するときは()がいる hushじゃなくてたぶんhashね. 連想配列っていみなら ハッシュのスライスを使うとエレガントかも @hash{qw/title time contents/} = split /::/; foreachつかえよ for(...$#ref) http://medaka.5ch.net/test/read.cgi/php/1049514428/541
542: 540 [sage] 04/10/09 02:08:52 ID:??? 541> >ハッシュのスライスを使うとエレガントかも >@hash{qw/title time contents/} = split /::/; ありがと、参考になりました。 my は複数でも()いりませんよ。バージョンによるだろうけど 最後に、今更foreach使ってる人いるんですか?w http://medaka.5ch.net/test/read.cgi/php/1049514428/542
543: nobodyさん [sage] 04/10/09 02:43:14 ID:??? >>542 #--- 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. http://medaka.5ch.net/test/read.cgi/php/1049514428/543
544: nobodyさん [sage] 04/10/09 03:20:52 ID:??? >>541 >foreachつかえよ >>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 を目指すならこだわる必要のない部分だと思うな。 http://medaka.5ch.net/test/read.cgi/php/1049514428/544
545: nobodyさん [sage] 04/10/09 05:06:54 ID:??? >>540 %hush(多分hash?)の宣言の位置。 GCのコストを考慮した場合に、変数の再利用をするはあるけど...、 ループないで初期化してないとフィールドの数が少ない時に困るよ。 split/::/の代わりに正規表現を使ってデータを切り出すと、 データのチェックとsplitを同時にできて便利。 chompはデータ格納前に済ませておいた方が良いんじゃないかな。chomp(@tmp) もしくは、大抵はファイルから読み込むだろうからその時に。 http://medaka.5ch.net/test/read.cgi/php/1049514428/545
546: 540 [sage] 04/10/09 05:35:12 ID:??? >>544 どうもありがとう。foreachは普通に使えるんだろうけど、 大抵forで済ませてしまうのです。言い方悪かったです、スイマセン。 >>545 ありがとうございます。 >ループないで初期化してないとフィールドの数が少ない時に困るよ。 というのは、forのループ内で undef(%hush); (ほんとはhashでしたw) でいいですか? あと、フィールドの数が少ない時というのはどういうことでしょうか? >split/::/の代わりに正規表現を使ってデータを切り出すと どう書いたらいいのか思いつきません。宜しかったらご教授下さい。 >chompはデータ格納前に済ませておいた方が良いんじゃないかな。 そうですね。 open(FH,"file_name"); @tmp = <FH>; chomp(@tmp); close(FH); http://medaka.5ch.net/test/read.cgi/php/1049514428/546
547: 541 [sage] 04/10/09 11:14:32 ID:??? 言いたかったのはforeach (@ref)にしろよってことね 別にfor (@ref)でもいいかもしれんが あと>>543読んだか? myは複数宣言するときは()いる >>546 >ループ内で初期化 for(hoge){ my %hash; statement; } こういう事だと思う http://medaka.5ch.net/test/read.cgi/php/1049514428/547
548: 540 [sage] 04/10/09 12:28:12 ID:??? my () つけなくてもエラー出てないです。 という事は 省略も可って事ではないでしょうか? http://medaka.5ch.net/test/read.cgi/php/1049514428/548
549: nobodyさん [sage] 04/10/09 14:26:51 ID:??? >>548 エラーにならないのは strict 'vars' 宣言が無いからだ。 my $foo, $bar, $baz; という文自体は文法的には間違いじゃないが、 my は , より優先順位が高いので、my($foo), $bar, $baz; と書くのと 等価になる。 #--- test.p --- my $foo, $bar, $baz; print defined $main::{$_} ? "'$_' is global.\n" : "'$_' is rexical.\n" for qw(foo bar baz); __END__ > perl -w test.p Parentheses missing around "my" list at test.p line 1. Useless use of a variable in void context at test.p line 1. Useless use of a variable in void context at test.p line 1. Name "main::bar" used only once: possible typo at test.p line 1. Name "main::baz" used only once: possible typo at test.p line 1. 'foo' is rexical. 'bar' is global. 'baz' is global. http://medaka.5ch.net/test/read.cgi/php/1049514428/549
550: nobodyさん [sage] 04/10/09 17:41:00 ID:??? >>546 > あと、フィールドの数が少ない時というのはどういうことでしょうか? これは、今回のケースでは問題なかったです。 でも、変数を再利用する時は気を付けないと、前の値が残っていたり、 意図しない場所の値を書き換えてしまったりするので注意。 例えば、pushの所を \%hash とりファレンスを使うように変更した場合。 my (@ref, %hash); foreach (@_) { # @refの中の前の値を上書きすることになる # {%hash}とした場合は、@refにはいってる値はコピーなので影響ない @hash[qw/title time contents/] = split/::/; push(@ref, \%hash); } my (@ref); foreach (@_) { my %hash; @hash[qw/title time contents/] = split/::/; # {%hash} でも期待通りに動作するが、余分なコピーを生成 push(@ref, \%hash); } 速度とかを重視するなら >>540 が効率良さそうだけど、(多分) バグとかみつかった場合に変数のスコープが広いと特定するのが困難になる。 >>542 > my は複数でも()いりませんよ。バージョンによるだろうけど 他の方に指摘のある通り。 最低限 use strict; use warnings;(もしくは -w) を宣言してないとPerlは教えてくれない。 http://medaka.5ch.net/test/read.cgi/php/1049514428/550
551: nobodyさん [sage] 04/10/09 18:04:19 ID:??? ここってものすごいでかいスクリプトでも細かい所まで見てくれるの? http://medaka.5ch.net/test/read.cgi/php/1049514428/551
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 121 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.007s