自作CGIを評価するスレ
sageはmail欄でw。 どっかに「こんなCGI探してます」的なスレあったハズだよ。 >>465 >スレ違いだ、ということですか…? スレ違いじゃないと思うんだったら自作CGIへのリンク貼れよ。 自作CGIを評価するスレなんだからさ。 >>464 >>467 ご迷惑をおかけしました。 >>466 >>468 そこに行ってみます。ありがとうございます perlでRead-Write Lockを実装してみますた。 複数プロセスでの10,000件書き込み耐久試験もクリアしたっぽいです。 ただ、ちょっと遅いように感じるのですがどでしょ? http://do.sakura.ne.jp/ ~junkroom/cgi-bin/megabbs/lounge/index.html 知識ゼロからがんばってXML化にこぎつけました。 スタイルシートだけでWebデザインが可能です。 PHP4+MySQL http://arigato3.s36.xrea.com/x/bbs.php >>473 すごいね。どのくらいすごいのかいまいちわからんけど。 どのくらい時間かかった? >>473 ダメXMLの見本として宣伝してもいいですか?っていうくらいダメなXML。 > 知識ゼロからがんばって XML化にこぎつけました。 ___Λ____ |知識ゼロのまま| ●●●マスコミの 「盗聴/盗撮」 は許されるの?その4●●● http://natto.2ch.net/mass/kako/994/994602694.html 62 名前: 文責:名無しさん 投稿日: 2001/07/10(火) 12:21 小型盗聴器、電話盗聴、web(電子メール)盗聴、郵便物の開封、 集合住宅の隣に引っ越してきて壁に聴診器、または集音マイクを向ける。 関係者からの聞き込み、ごみあさり、ストーキングにより行動パーターンの把握、 行動パターンを調べた上での待ち伏せ。全部、人海戦術を使えば十分可能です。 323 名前: 文責:名無しさん 投稿日: 2001/07/30(月) 20:48 集団で盗聴なり、付きまといなり、身辺調査なりした後で、集めた個人情報を利用して、 メディアを通じて本人にしかわからないように「監視してる」とほのめかしたり。 待ち伏せや尾行などしておいて、本人の前で「監視してるぞお〜」と、嫌がらせをしてみたりする。 これを一定期間継続して繰り返す。 一定期間、上記の嫌がらせを繰り返すと、加害者がすでに嫌がらせをしていなくても、 被害者は、ずう〜っと嫌がらせが続けられてると思い込んでしまう。 (痴漢の被害者が、外であった人が全員痴漢だと思い込むのと同じ) それと同じように、ここのスレッドに書かれている、盗聴した情報を二次利用する嫌がらせを やっていないときでも、被害者は自分から自分と関わりがある 情報をメディアから探し出して自分に関係があるのではないかとこじつけてしまう(関係妄想)。 関係妄想を引き起こすように嫌がらせを行うそれ自体がマインドコントロールの一過程である。 被害者が関係妄想を引き起こした時点で今度は精神病にかかったと噂を流して、さらにからかう真似をする。 ノイローゼになるように追い込んで、更に自殺するように持っていこうとする。 被害者がこういった心理状態になるのを嫌がらせの関係者は経験的に知っているのだろう。 すいません、午前中探したんですけど、見つかりませんでした。 パソコンと携帯3社兼用の掲示板で、スレッドまたはツリー表示でかつ パスワードで入る人の管理が出来るCGIご存じありませんか? スレッド、パスワードどちらかだけだとあったんですが・・・。 箱庭諸島PHP版の改造版、箱庭諸島S.Eを今日公開配布開始しました。 http://erobon.e-un.jp/ これはどうでしょうか? デザイン以外は自分で作りました。 >>490 CGIです。 サーバーサイドで動いているのでCGIです。 もっと勉強してください。 >>491 titleタグはmetaの後に書いてくらはい >>492 いま検索して調べたら metaタグの後にtitleタグを書いてました。 >>491 あのね、見た目とかを評価してもらうスレじゃないの ソースを公開してちょうだい > サーバーサイドで動いているのでCGIです。 CGIは動いたりしない。 >もっと勉強してください。 悪代官が黄門様に無礼者と言ってるのを思い出しちゃったw >>496 CGIとはWEBサーバーがWEBブラウザからの要求に応じてプログラム を起動するための仕組みです。 ”CGIは動いたりしない。” 馬鹿か? CGIはシステムでも仕掛けでもない。 インターフィエスの一仕様。 モジュールからプロセス作ることもできるが、 あれもCGI? >>502 どうせperl=cgiとか まだ思ってるアフォだろ? unlessはほかの言語と混同するからやめれ とか書いてある本があった気がする ほかの言語を使わなければいいだけの話なのに・・・ >>504 マジ? それって、if ははほかの言語と混同するからやめれというのと同じことだよね 汎用的なプログラミングの作法を身につける為なんじゃないかな?if だと他の言語でも大抵応用が効く。 同じような理由でperlの$_(暗黙の代入)はなるべく使うなとか書いてる本もあったよ。 >>506 なんだそりゃ?(藁 じゃあ混同しやすい elsif は使わないほうがいいってことか? >>508 差別はイクナイ! 何国ってのがどこのことだか知らんが,何国の人に失礼だよ(藁 >>509 ハァ? あたまのよわいのがなんにんか・・ って書いてあるが、どう読んだら何国の人になるんだ? 502,504,506,508が(ry >>510 「なにじんか」って読んだんだろ。>>511 の言うように洒落だろうがつまらん。 表計算ができるランキングCGIを作ってみたので評価お願いします。 http://ssr.xrea.jp けっこういい出来に仕上がったと思うけど、初めての人は操作にとまどうかも >>513 落としたYo とりあえず使えそう・面白そうな物だったら、朴らせてもらうわ(w ところで、ちゃんと評価してるのって最初のほうだけだね。 >>521 ・ここは見た目じゃなくコードを評価するスレだ。 ・use strict; しろ。 ・perlstyle 読め。 ・デカいの持ってきても面倒だから読まんぞ。 …のどれかに該当していたら、まともなレスは返ってこない。 DirectoryIndexの設定をしているtoktokも問題かと思うが。 Forbiddenにしたみたいだけど、 せめてファイル名変えなよ。 誰も居ない……ケチつけるなら今のうち。 if-elsifの書き方、 if{ .. }elsif{ .. } より if{ .. } elsif{ .. } の方が俺にとっては読み易いんだコンチクショー。 >>522 perlstyleなんて知らなかった…ありがとう、勉強になったよ。 例えば既成の掲示板のCGIとかから 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 >>529 とりあえず 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 のマニュアル参照。 >>529 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 >>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(); } こうゆう風にしようと思っています。 >>532 ・CSS を変更する為にスクリプトを編集する危険を冒す必要がある。 ・外部に CSS を持つのに対し、常に二倍の回数実行される。 ・CSS を使い回す時に悩む事になる。 これらのデメリットを考慮の上で、なお一つにまとめるメリットの方が 勝ると判断したならいいんじゃないか? >>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://www.tcn.ne.jp/ ~majima/dog/quiz.txt 【動作例】http://www.tcn.ne.jp/ ~majima/dog/quiz/quiz.cgi >>535 とりあえず画像のファイル名を変えた方が良いよw 20点頂きました >>535 もじゅーるは使えない鯖なんでつか? 使えるんなら使ったほうがいいでつよ。 Image::Magick、CGI、Jcode等々 何に使うのかは自分で調べてね。 EUCで書いたり表示したりしたほうがいいと思うけど、Shift_JISでやりたいのなら反対しないさ。 所々myを付けているが、どうせなら全部に付けちゃいな。 strictしろってこった。 ついでにHTML的にも4.01strict すれば? タイトル::時刻::内容\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"; } >>540 myで複数宣言するときは()がいる hushじゃなくてたぶんhashね. 連想配列っていみなら ハッシュのスライスを使うとエレガントかも @hash{qw/title time contents/} = split /::/; foreachつかえよ for(...$#ref) 541> >ハッシュのスライスを使うとエレガントかも >@hash{qw/title time contents/} = split /::/; ありがと、参考になりました。 my は複数でも()いりませんよ。バージョンによるだろうけど 最後に、今更foreach使ってる人いるんですか?w >>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. >>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 を目指すならこだわる必要のない部分だと思うな。 >>540 %hush(多分hash?)の宣言の位置。 GCのコストを考慮した場合に、変数の再利用をするはあるけど...、 ループないで初期化してないとフィールドの数が少ない時に困るよ。 split/::/の代わりに正規表現を使ってデータを切り出すと、 データのチェックとsplitを同時にできて便利。 chompはデータ格納前に済ませておいた方が良いんじゃないかな。chomp(@tmp) もしくは、大抵はファイルから読み込むだろうからその時に。 >>544 どうもありがとう。foreachは普通に使えるんだろうけど、 大抵forで済ませてしまうのです。言い方悪かったです、スイマセン。 >>545 ありがとうございます。 >ループないで初期化してないとフィールドの数が少ない時に困るよ。 というのは、forのループ内で undef(%hush); (ほんとはhashでしたw) でいいですか? あと、フィールドの数が少ない時というのはどういうことでしょうか? >split/::/の代わりに正規表現を使ってデータを切り出すと どう書いたらいいのか思いつきません。宜しかったらご教授下さい。 >chompはデータ格納前に済ませておいた方が良いんじゃないかな。 そうですね。 open(FH,"file_name"); @tmp = <FH>; chomp(@tmp); close(FH); 言いたかったのはforeach (@ref)にしろよってことね 別にfor (@ref)でもいいかもしれんが あと>>543 読んだか? myは複数宣言するときは()いる >>546 >ループ内で初期化 for(hoge){ my %hash; statement; } こういう事だと思う my () つけなくてもエラー出てないです。 という事は 省略も可って事ではないでしょうか? >>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. >>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は教えてくれない。 ここってものすごいでかいスクリプトでも細かい所まで見てくれるの? >>550 何かおかしな日本語だった。訂正 s/他の方に/他の方からも/ あと、正規表現を使った方法を書き忘れてたのでついでに、、 例えば time が整数の場合の例 if (/^(.+)::(\d+)::(.+)$/) { @hash{qw/title time contents/} = ($1, $2, $3) } >>551 読むに耐えうる書き方&内容ならな。 KENTレベルなら却下 >>553 オブジェクト指向とか頑張ってやってみたけど中途半端になったようなのでも大丈夫ですか? 何書いたって叩かれるんだから、結城出していいと思う ほんとにこんなに色々な方が、教えてくださるとは思ってませんでした。 どうもありがとうございます。 特にエレガントな方法を教えてくださった542氏 ハイレベルな(少なくとも今の私には)指摘をしてくれた 545=550=552氏には感謝します。 その他あのようなケチなコードに意見を下さった方々ありがとう。 またお世話になるかもしれません。m(_ _)m > my は複数でも()いりませんよ。バージョンによるだろうけど > 最後に、今更foreach使ってる人いるんですか?w こんなこと言うやつはもう来なくていい 誘導されてきました。 評価というか不具合の問題です 初めてperl書いてみました。 簡易的な計算のプログラムを作ってみたんですがうまく動作しません。 ちょっと見て頂き、不具合等御指摘下さい 特定の計算式で、入力(1項目だけセレクトボックスにより選択)した数値を計算するものです。 ソース http://tool-ya.ddo.jp/2ch/trash-box/contents.jsp?file=20050123003423509.txt URL http://sr-cafe.chu.jp/kok/calc.html >>563 ソースはマンドクサイのでちゃんと読んでないけど、 文字コードと改行コードの問題の様な希ガス。 >>563 calc.html × <SELECT name="set" name="s1"> ○ <SELECT name="s1"> >>563 ReadFormData(*FORM); → %FORM=&ReadFormData; print <<END_OF_DATA; → print <<"END_OF_DATA"; Content-type: text/html; → Content-type: text/html\n\n 以下 sub ReadFormDataの修正 local(*FORM) = @_; → my %FORM=(); local($buf, $tmp, $name, $value); → my($buf, $tmp, $name, $value); return %FORM; ← 最後に追加 >>566 改行コード2つとダブルクォーテーション必要無くね? \n\nはいらんね。 ヒアドキュメントのダブルクォートはどちらかというとあったほうが・・・ ありがとうございます。 >>566 サンの通りにしたり、色々試してるんですがまだ動かないです… printが閉まってなくてフォームの値を処理出来てないんでしょうか… >>569 うちのサーバでスクリプト試したんだけどちゃんと動くぜ。 おまい、サーバに嫌われてるんだ。きっと。 問題は print <<END_OF_DATA 〜 END_OF_DATA までか、 まさかと思うがパーミッションか、perlの指定。 一度 print <<END_OF_DATA 〜 END_OF_DATA を たいした行数じゃないんだし、print "〜\n"; に置き換えてみ。 それからコメント行やめろ。余計見づらくなる。 >>569 今試したら566の変更だけで動いたわけだが。 Content-typeの行はそのままでも良いみたい。 動かないとしたらCGIの設置方法の問題。 まさかとは思うがローカルでテストしてるよね? つーか563のソースのままでも、ちゃんと結果出るじゃん。 問題はコードではない予感。 >>573 経験で言うとさ、ヒアドキュメントはサーバの機嫌で、最初はうまく動作して くれないことがある。Cookieなんか入れるとどうも変なんだよな。 そういうとき俺はメンドーでも print "〜\n" に置換えてやる。すると、あとは 「ヒアドキュメントでも読込んでやるかぁ」ってことでサーバは折り合ってくれる。 いや、あるんだって。コード書く時も、こうした方が処理が楽だろ、とか ムリしなくっていいから、とか気を使ってやると機嫌よくなる。ほんとだぜ。 577はコード丸写しで自作CGIと称してるだろw。 多かれ少なかれ576のような感じはあるな。 皆さん本当スイマセンでした! パーミッションの所為だった… 元のままでも566のコードでもどちらでも動きました。 >>571-572 そのとおりです。 ローカルでテスト出来るという事すら知りませんでした。 勉強します。 ねるねるねるねは Ψ(`∀´)Ψイッヒッヒッヒッヒ _▲_ ねればねるほど ((φ(..。) 色が変わって _▲_ こうやってつけて р(゚Д゚ ) *_▲_* ウマイ━━━*━ヘ(゚∀゚)ヘ━*━━━━!!!! テ-レッテレ-♪ ttp://c.hibi.info/Apple-1.zip どなたか評価(清書?)お願いします_ _ 指定されたスレの中から前日から当日までの既定の時間にあるレスを抽出して、 そのレスから株価コードを抜き出し株価の前日比、前日比率でソートしランキングを作成した後スレに書き込むツールです。 2chへの書き込み時のCookiee処理に曖昧な点があるのと、処理の最適化をして貰えると嬉しいです。 宜しくお願いします_ _ 他のスレから来ました。 Perlで他のサイトを取得して表示したいと思っています。 (著作権侵害とかそういうことをしたいのではないです) お時間のある方にお願いしますが、次のコードで@niftyのトップページを取得してみたら どうなるか教えていただけませんでしょうか? print "Content-Type: text/html\n"; print "\n"; use LWP::Simple; print get( 'http://www.nifty.com/' ); 私のところだと、ブラウザ上での表示がぐちゃぐちゃになるんですが…。 簡易予定表のようなものを組んでみたんですが、なんだかモッサリしてる気がします。 もっと簡潔に書けるような気がするんですが自分ではこれが限界でした。 あと、ファイルロックのやり方が合っているのか自信がありません。 一応動いていることは動いているんですが、問題はないでしょうか。 改良すべき点、根本的にこういう書き方に直した方が良い、とかあればアドバイスお願いします。 大まかな内容は以下のようなものです。 予定として保存する内容は「予定日(月と日)」と 「予定内容(長くても200バイト程度)」の2つでフォームから渡します。 予定を保存するファイルは月単位で作成します。 例えば2006年6月の予定の場合なら「200606.txt」というファイル名です。 保存するファイルがないときはその都度作成し、 6月1日 6月2日 6月3日 . . . という風に日付だけを先に入れておきます。 保存するファイルがあるときは、 フォームから渡された「予定日」とマッチした日付の次の行に「予定内容」を書き込みます。 内容は以上です。次レスにコードを晒します。 # 保存するファイル名 $a = sprintf("%04d%02d",$YEAR,$MON) $file = "$a.txt"; # 月から日数を出す if($MON == 1|3|5|7|8|10|12){ $m = 31; }elsif($MON == 4|6|9|11){ $m = 30; }else{ if($YEAR % 4 ==0){ $m = 29; }else{ $m = 28; } } for($i=1;$i<=$m;$i++){ $date .= "$MON月$i日\r\n\r\n"; } # 該当する月のファイルがなければ作成 if(!open(IN,"$file")){ open(OUT,">$file") flock(OUT,2); print OUT $date; close(OUT); } open(IN,"$file"); flock(IN,2); @A = <IN>; close(IN); # 「予定日」とファイル内の「日付」をマッチングさせて該当日付に「予定内容」を書き込む $loop = @A; $i = 0; while($loop > 0){ if($A[$i] eq $plan_day){# $plan_day = "フォームからの情報(予定日)"; $A[$i] .= "$plan_value\r\n";# $plan_value = "フォームからの情報(予定内容)"; } $loop --; $i ++; } if(!open(OUT, "+< $file")){&error;}; flock(OUT, 2); truncate(OUT, 0); seek(OUT, 0, 0); print OUT @A; close(OUT); >>589 まだちゃんと読んでないが…。 >if($MON == 1|3|5|7|8|10|12){ >}elsif($MON == 4|6|9|11){ これって比べてるのは、両方とも $MON == 15 だよね。 どっちの条件にも入らないと思うけど…正しく動作してるの? >$a = sprintf("%04d%02d",$YEAR,$MON) セミコロンは? 動作するヤツうp switch文を使うと見やすいんじゃないかな? use Switch switch ($MON) { case [1,3,5,7,8,10,12] { $m = 31 } case [4,6,9,11] { $m = 30 } case [2] { $m = $YEAR % 4 ? 28 : 29 } else { print "そんな月知らん" } } レス遅くなりました。すみません。 該当部分を切り出して動作するコードをUPしてきます。 ttp://up.isp.2ch.net/up/b2611f9a934e.zip UPしました。パスは「589」です。 日付のところは594さんのアドバイスにしたがって書き換えました。 アドバイスの方よろしくお願いします。 >>591 >>592 コードの一部分だけ抜き出してできるだけ短く書こうとしたので 分かりにくかった&書き損じがありました。すみませんでした。 >>594 perlでもswitchが使えるとは知りませんでした。 Switch なんてモジュールがあるのか知らんかった。 PerlはPHPとは違ってCPANを探せば考えられる大体の車輪は既にある。 特定の板のスレタイ検索をして、選んだスレから画像とかのサムネイルを表示するスクリプトを書いてみまスた(・ω・`) 恐ろしく見づらいと重いまスが・・ http://vip.ty.land.to/image/ http://pc8.2ch.net/test/read.cgi/php/1160569533/ でボチボチいじくったり、新しいことやったりしていきたいと思ってまスが、評価して欲しいス(・ω・`) 勉強かねてるので、車輪の再開発なのは承知でス >>606 言葉遣い荒いけど、ばーっと書いた弊害なので許して。 取りあえずぱっとみてこんなもん。 ・一部のうpろだは、リファラが不味いと弾かれる。 ・画像がない場合の画像を一々作るのは無駄。 ・CGIモジュール使え。 ・グローバル変数も宣言しろ。 ・これは好みだけど、設定の変数はハッシュに纏めた方が分かりやすいこともある。 ・メインの流れはブロック作ってラベル付けた方が分かりやすいかも。 ・正規表現の|は案外コストがかかる。配列にしてマッチング。 ・先頭にrequire バージョン名; ・use warningsは〜? ・汚染チェックもきれい好きな方にはオススメ。 ・サブルーチンを先頭で宣言して欲しい。 ・変数名に日本語はいやん。 ・データーベースつかってほすぃ。 >>607 おぉぉぉレスもらえたス(;ω;`)アリガタイ 感謝しまス! >・正規表現の|は案外コストがかかる。配列にしてマッチング。 >・先頭にrequire バージョン名; >・use warningsは〜? >・サブルーチンを先頭で宣言して欲しい。 良くわからないス(・ω・`) >・変数名に日本語はいやん。 英語苦手ス・・・毎度翻訳スかね・・頑張るス >・データーベースつかってほすぃ。 現在勉強中でス! 生暖かい目で見守ってやってくださいス・・(・ω・`) やっぱレベル高い人の意見は参考になるス! 文句なし!って言われるようなものをいつか作りたいス(・ω・`)thnkス >>606 うる覚えなんだが if($i_m_f){ use Image::Magick; } これって意味ないんじゃなかったっけ? $i_m_fが真ならImage::Magickを使うって事なんだろうけど、 この書き方だと$i_m_fが偽でもImage::Magick呼ぶんじゃなかったっけ? 識者の方レスよろ ファイルハンドルは大文字で 最後から10行目くらい@cache[$i]は$cache[$i]じゃないの? print文中の"をエスケープするんならprint qq|ここに"文章"|; こーすりゃいちいちエスケープしなくておk >>609 サンクス >最後から10行目くらい@cache[$i]は$cache[$i]じゃないの? どちらも同じ意味だったはず (若干の差はあるかもだが、使い方に大差なしでは?) >print文中の"をエスケープするんならprint qq|ここに"文章"|; >こーすりゃいちいちエスケープしなくておk mjdsk!? 次から挑戦してみる 色々アドバイスやら素敵な解決策をありがとう useするかどうか切り替えたいなら BEGIN{}で囲ったほうがいいな。 >>609 >うる覚えなんだが http://www.tt.rim.or.jp/ ~rudyard/hirago014.html > これって意味ないんじゃなかったっけ? http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item_use_Module_VERSION_LIST > ファイルハンドルは大文字で bareword で扱わず変数で取り回す方が今風。 http://www.kt.rim.or.jp/ ~kbk/perl-5.8/perlfaq5.html#how_can_i_make_a_filehandle_local_to_a_subroutine_how_do_i_pass_filehandles_between_subroutines_how_do_i_make_an_array_of_filehandles >>610 > どちらも同じ意味だったはず http://www.kt.rim.or.jp/ ~kbk/perl-5.8/perlfaq4.html#what_is_the_difference_between__array_1__and__array_1_ あちこちから routin をかき集めて自作しました : alter.s225.xrea.com/cgi/bbs/read.cgi?log=0 1. 評価と言うよりも bug の あぶり出しを希望します. 2. 操作がわかりづらいとの意見があります. 率直な ご意見をお願いいたします 3. 自信がないのが security 関連 ・ 念のため, 全ファイルを upload しておきます: alter.s225.xrea.com/bbs.zip >>612 URLが長すぎて横スクロールでた。 ふざけんな改行しろこのボンクラっ! IDなんだしもっと短く付けろよなw 文章そのままって酷すぎるw >>613 お返事ありがと〜. でも, どういう意味かしら ? 誘導されて来たのに いまだに誰も... どうなってるの ? >>617 「とても読めたもんじゃない」 ということではないでしょうか。 613は釣りとしか思えない。 CGI以前の問題ね。 >>618 >CGI以前の問題ね 確かに... JavaScrit の bug がぁ〜〜〜 (絶対に書き込めない) おまけに... WaMCom (Mozilla1.31) では問題とならなかった error が IE5.17(Mac版) では発生して処理が止まる〜〜〜. >613は釣りとしか思えない 釣りでは ありませぬ. 僕の環境で確認できる bug は退治しました. 引き続き あら探しをお願いいたしまする〜. つっこみどころが多すぎるなぁ…。 まず、「何を作ったのか」という概要や大まかな処理の流れすら書いてない。 >評価と言うよりも bug の あぶり出しを希望します. 評価するスレ。デバッグする所ではない。てか、デバッグなめすぎ。 >操作がわかりづらいとの... 具体的にはどういう操作? >自信がないのが security 関連 どのファイルの何行目のどういう処理? >JavaScrit の bug がぁ JavaScritのスレへどうぞ。 >WaMCom (Mozilla1.31) では問題とならなかった error が >IE5.17(Mac版) では発生して処理が止まる と書いていながら >僕の環境で確認できる bug は退治しました ってどうよ。 何より、CGIについて無学なのがバレバレです。 背伸びせずPerlからでもきちんとお勉強しましょう。 これさぁ、変数の検査とか書き込む条件とかまったくないじゃん。 最低でも変なファイル作られないようにするとか異常にでかい投稿は 書き込まないようにするとかしないと。 叩き専門の人にとっては叩く必要もないほどへなちょこだけど プログラムに日本語を含めないつくりはいいと思う。 プロでもソースのいたるところに日本語を埋め込む人はいるからね。 ぶっちゃけそれくらいしか褒めようがないんだけどw nullぽっぽはもしかしてOperaメインなの? >>613 まずはuse strict及びuse warnings、 また-Tオプションを付けてエラーが出なくなってから来てください。 nullはクラシックMacのiCab使いだった筈。 まず, 皆さんにお礼を... ありがとう ごぜ〜ますだ. >>620 一応, 掲示板 CGI script (のつもり) >デバッグする所ではない 言葉を間違えたかも ? debug を他人に依頼するようでは問題外だと思っております. 動作はするけれど server 利用者に迷惑を書けるような security hole に気づいていないかも知れない. そんな問題があったら指摘して欲しかったですだ. >>621 >変数の検査とか書き込む条件とかまったくないじゃん おおせの通りです. ようするに書きこみの部分を改良しなければならないのね ? で, read.cgi の方は どうでしょう ? 人に迷惑を書けるような security hole が あったなら ご指摘くださいませ. >CGIについて無学なのがバレバレです 弁解の余地もありません. でも, 半端者の僕が言うのもアレですが 拾って来れるものには満足できなかったのら. そもそも perl って できの悪い土台に無理な建て増しをした印象が... >>621 >プログラムに日本語を含めないつくりはいいと思う 日本語を書きこむと文字化けするのでwww (僕の環境は一般的でない) 僕なりに いろいろ拾って来て解読を試みました. その時, "皮肉にも comment が見通しを悪くしている" と思ったの. 徹底的に簡素化するのが先決だと... > nullぽっぽはもしかしてOperaメインなの? MacOS9.22 上で まともに動く Opera はなさそうです. 現在は WaMCom(Mozilla1.31+) がメインですだ. 動作確認に iCab, IE も立ち上げることがありますが, あくまでも参考程度です. >>622 メモメモ... >>623 今では動作確認の参考程度ですだ. 改良されたかと思うと別の不具合が発生するのが許せません. ところで rgst.cgi で変なファイルを作れる可能性って ? (これこそが最も知りたいところ) 量の制限は早急に対処したいと思いますが... 利用者から見えない変数名、関数名を縮める意味があるのかと小一時間。 Perlにケチつけるまえに自分の頭の程度を疑えよな 日本語のコメントを入れないのが良いって… なにその英語はカッコイイ、日本語はダサいっていう中学生wwwww それに、日本人なんだから直感的にわかりやすい日本語で注釈をつけておくのが、 あとを引き続く人へのマナーだと思うんだが。 予想していたとはいえ, ボロボロだなぁ. まあ, 他人様に使ってもらおうとするのなら それなりの配慮が必要だろう. しかし, 僕は自分のために作ったんだ. 最低限, 同じ server 利用者に迷惑を書けない配慮をすれば済む話なんだ. 僕が知りたかったのはその部分に問題があるかどうか なんだけど, 話は あらぬ方向に... 率直に言ってゴミ.基本から勉強し直した方がいい. というかまずは普通の学校の勉強を頑張った方がいい. ひとつだけヒントを. > read(STDIN,$u,$ENV{'CONTENT_LENGTH'}); たとえ寝ぼけて他としてもこの一行を書いてしまうようでは CGI 書くのは辞め た方がいい. プログラムの途中に文字列リテラルを埋め込むな、というなら解らないでもない。 ただ、それは日本語に限った事じゃないな。 >>634 んじゃ〜ゴミでない script を書いてくらはい. あっしは それを使わせていただきますだ. (イヒヒ) >>635 >この一行を書いてしまうようでは CGI 書くのは辞めた方がいい して, その理由は ? それと read.cgi に security hole は ないのかどうかが知りたいのだけどなぁ. ------------------------------------------------------------------- なんだか僕の質問に きちんと答えた回答はない. ここを当てにした僕が愚か者ってことですかい ? まだ分かってないみたいだね. >>この一行を書いてしまうようでは CGI 書くのは辞めた方がいい >して, その理由は ? セキュリティホールになるから.理由は自分の頭で考えなさい. >それと read.cgi に security hole は ないのかどうかが知りたいのだけどなぁ. 当然ある. >>637 よく分かっていないようだからキミがすべきことを具体的に言おう。 スクリプト冒頭の#!/usr/local/bin/perlを、 #!/usr/local/bin/perl -T use strict; use warnings; に書き換えてデバッグしなさい。 >>633 >>637 でカンマを多用したり、 >>638 でドットを使ったり、 キモチワルイ。流行ってるのか? というかプログラマのくせに 「、」や「。」の代わりに「,」「.」使う奴って なんだかなぁ… >read(STDIN,$u,$ENV{'CONTENT_LENGTH'}); この一行は書いてもいいよ。その前の行で$ENV{'CONTENT_LENGTH'}の最大値を 決めてチェックしていればね。 >>637 人に物事を頼む態度じゃないよね? こっちはみんな善意で見てるってこと忘れてる? 嫌なら他行ったら? 最初に自分で書いてたみたいだけど、他人のソースのつぎはぎスクリプトでしょ? 何の価値があるの? まずはダサくてもきちんと問題なく動く物を作ることからじゃない? 利用者のことを考えないスクリプトなんて糞だと思います。 ちなみにおいらのほうは、鯖が不調で繋がりません。 どうにもならんのでしばらく放置〜 まだ様子見てくれてる人とかいるのだろうか・・・ もし居たら感謝 自分がよく理解していない言語で書いたプログラムを なぜ共用サーバーで使おうと思えるのか、その神経が理解できない。 プログラムよりも、その意識や存在自体が危険。 >>637 >なんだか僕の質問に きちんと答えた回答はない 「きちんと答えた回答」があることにさえ気付けてないだけ。 自分の無知を棚に上げておきながら、 コードに目を通してマジレスしてくれた住人に対して >ここを当てにした僕が愚か者ってことですかい? とは随分とご挨拶だな。 ま、オレが見た限りでは お前の掲示板CGIscriptには何のsecurity holeもないよ。 安心して使って良い。オレが保証する。 でも実際「大丈夫、何の問題もないよ」としかレスされてなかったら、 ということを◆.PT9876/4Uは考えてみた方が良い。 645も指摘してる通り、今の時点では自分にその言葉が正しいのかどうかすらも 判断できないのに、共用サーバーで自作CGIを使おうとしていることがどれだけ危険か考えてみろ。 極端なことを言えば、それらしい説明があって「これを書き足した方が良い」と言われれば、 それが危険なコードであっても追記してしまうんじゃないのか? 少なくともこれだけマジレスしてくれたり お世辞にも読みやすいとは言えないようなコードを読んでくれただけでも感謝すべきなのに 「まずこれをやれ」と言われたことはやらず、 自分のレベルの低さを指摘されると反省するどころか逆ギレして 637のような皮肉と煽りに満ちたようなレスしかできないことを恥ずかしいとは思わないのか? うわっ, お祭りになってる〜 (~_~) (突っ込まれると思った global variable の突っ込みは なぜかないのね) >>639 なるほろ... さっそく確かめてみますだ〜. >>642 おありがとうごぜますだ〜. なんだか怒ってる人が居るみたいだけど, こういうときは百計逃げるにしかず... (ぴゅ〜) サブルーチンの宣言ってなんじゃらほい? スクリプトが見れないし何の事を言ってるのかわからんち。 >>641 理系の論文はそういう仕様らしいぞ。 情報系の大学院でまともな教育受けた人間なら気持ち悪いとは思わない気がする. 気持ち悪がるのは専門学校程度しか行けなかったやつか基本をろくに知らない文系プログラマじゃね? おかしいな、ここは日本語で話しをする場所じゃなかったのか? いつから自分の投稿を論文調で発表する場になったんだ? とりあえず、読みづらい。 読み手を考えないのは、物づくりで使い手を考えないのと同じ。 邪魔 あれだ、脳内補完で「,」も「.」も消し去っていた件 別にそんなに気にする程のことでもないだろ。 ウザイのは句読点じゃなくてnullの存在なだけなんだし。 どうい されて たまるか ! どうでもいいけど... いや, やめておこう... ... sub file_read { my $a = $_[0]; open( FH , $a ); while (<FH>) { print; } close FH; } こんなサブルーチンを作ったのですがうまく動きません なぜですか? >>660 スレ違いにも程がある。これはまぎれもなく板違いでもない! ドメイン違いの質問だ。よそのドメインいけ さすがに句読点でいちゃもんをつけるのはどうかと思う。 性懲りもなく, 評価依頼: ttp://homepage2.nifty.com/alter/ ・ 以前指摘された部分には一応, 対策を施したつもりっす. ・ CGI は perl script で, HTML の代わりに外部 js ファイルを吐き出す仕様. (Ajax と違って, web-browser の影響が なく, 文字コードの問題も回避できる) ・ script 内の HTML 記述が皆無なので見通しが良く, 動作も軽快. ただ, 注意して作ったつもりですが, 見落とした bug が潜んでいる可能性が大きいっす. そして誰にも相手にされず>>665 は1年が経ったのであった 糸冬わり | | ガガガッ | | 人 ∧_∧ < >_∧∩ ( ・∀・) 人`Д´)/ ←>>203 と ) < >_∧∩ Y /ノ .人`Д´)/ ←>>259 / ) < >_∧∩ _/し' //. V`Д´)/ ←>>433 (_フ彡 / 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 8CQR9BVF30 ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。 OT97Q read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる