自作CGIを評価するスレ
自分の作ったCGIをみんなに評価してもらうスレだよ。言語は問わないよ。
よほどプログラムが短くないかぎりはアプロダにでもアップしてね。
いいスクリプトは評価してもらう必要が無かったりする このスクリプトすごい。感動した。
ttp://sh.sakura.ne.jp/~obj/vector/toys/#sb 亀レスだけれども。
>>211
コメント解除スクリプト、B::Deparse 使っちゃだめなのかな。
$ perl -MO=Deparse foo.pl ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━― えー。
単刀直入に言うとなぜか解凍できない。
俺のアプリケーションに異常が起きたのか、そのファイルが変なのかは知らん。
めんどうなので調べない。 >>265
通報したぞ
解凍するとGBになるファイル1個入りの(ry >>265
今度は正常にダウンロードできます。
ソースは汚いです。
∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉 C?
割とさくさく動くね。
HTMLはもうちょっとなんとかしてほしい。 >>279
あなたはまずこれを読んでコードを修正。
http://www.harukaze.net/~mishima/perl/man/perlstyle.1.html
次に #!/usr/bin/perl の次の行に use strict; を追加し、
perl -wc board.cgi 等としてエラーが出なくなるまで修正。
評価するのはその後だ。 まあHTMLのLintみたいなもんだな。
文法を正確にするのは最低限のラインだ。 あれ?>>279のアカまだ削除されてないな
もっかい通報してやるか >>279
では、一言。
GET情報でパスワードを入力するのは、
セキュリティ面に問題がある。
>>279
iframeの表示が「他のブラウザ」じゃ全く駄目。
コメント修正していないので違うことをしているかもしれません.. >>285
全然読んでないけど、インデントで空白とTABを使い分けられると
結構困る。
漏れはいつも4TABだから、8TAB & 4インデントだとずれる。
インデントを全部TABにしとくと、TAB幅に依存しなくていいよ。 んん、、EmacsだとTABがスペースになるのですが..
これはエディタの仕様だと思うので勘弁してください。
一応、設定で変えれるかもしれないので調べてみます。 ---------------------
#!/usr/bin/perl
while (<STDIN>) {
s/\x09/"\x20" x 8/eg;
print;
}
----------------------
$ chmod 755 filter.pl
$ cat the.cgi.txt |./filter.pl > sp_the.txt
一時凌ぎで.. >>290
いや、変換方法はどうでも良くて。
8 TAB 依存のコードを見せられた時に「('A`)マンドクセ」と
思ってそこで読むの止めちゃうから、大袈裟に言えば
「機会損失」になってるよ、と。
スクリプトができるだけ多くのプラットフォームで正常に
動くよう、環境依存の部分を減らしていくのと同様に、
スクリプトを読む人の「環境」にも配慮してくれていると
好印象になるって事で。 >>288さん
そうですね。
自分も、いきなりスペースやTABが消えたコードを掲示板に書かれて
どこがおかしいですか ?
と、言われるともっと見やすく示せ! と内心思ってしまいます。
TAB、気をつけてみます。 取りあえず、全部スペースにしておきました。
元々、サブルーチンの少ない読みにくいものだったのに申し訳ありません。 >>291さん
いいと思いますよ。
きちんと機能毎に処理を分けているし。 >>291
感想。
ソース汚くて読む気しない。
終わり。 >>298
ぐはぁ!ショック・・・。
精進してからまた来ます。 >>299
自己レス。
291=299=300です。 >>291
とりあえずソース、見せてもらった。
極悪に汚い・・・。
全部、もう少し見やすいように手入れた。
とりあえず、手入れて思った事。
1、goto文なんか使うな!
2、スペース2個じゃなく、タブ使っとけ。
3、引数などのコンマの後は、スペース一つ入れる事。
4、なんでもかんでも、ケツにif文を置かない!
5、ソース汚いから、自分でも気付いてないんだろうが・・・
ファイルロックの掛け忘れがある。
6、同じく、ソース汚いから気付いてないんだろうが・・・
ちゃんと明示的にファイルハンドルを閉じてない所がある。
とくに、「4」のケツにif文は、うんざり。
処理内容自体は、読んでない。
人に評価してほしいなら、
自分だけが読めるソースを書くんじゃなく、
もう少し読みやすいように書く工夫をしよう。
ttp://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1141.zip
↑ここに、手入れたソース置いてるから。
まだ、俺が手入れたソースの方が読みやすいと思う。
>>301
>2、スペース2個じゃなく、タブ使っとけ。
だけおかしい。
タブを使うと4TAB<->8TABの違いでずれるから空白(個数は問わないが普通4個)で。 >>303
「TABだけ」ならいいんだがな。空白と混じってるとおかしくなる。
いちいちTABだけなのを確認するより最初から空白だけの方がいいだろ。
TABなんて今時ディスクの節約にもならん。
どっちにしろ(例えば)SUNもMOZDEVもタブ不使用規約になってんだから
合わせた方がいいんでないかい? 間違えた。SUNは推奨してるだけだった。以下引用
>インデントの単位として,4個分の半角スペースを推奨する.
>そのインデントが実際に半角スペースによって行われるかタブによって行われるかについては,これを規定しない.
>タブはすべて(4個ではなく)8個分の半角スペースでなければならない.
eclipseだったかな。曖昧記憶でスマソ 自分が思ったのは
「CGIスクリプトしか書いたことない人にありがちなソースだな。」
ってこと。
リファクタリングとか色々なことを勉強してみては? >>302
タブは、インデント以外に使ってないから、
どんなタブ幅でもずれてないはずだけど・・・
ずれてる???
291です。評価ありがとうございます。
>>301さん
わざわざ直してくださって、本当にありがとうございます!
指摘されたのに気をつけて書き直してから、また評価をお願いしに来ます。
でも、もう…直せるところが無いかもしれませんが(汗)
>>306さん
そのとうりです。自分でCGIを作ってみたくなったので、perlを勉強しだしました。
色々なことを勉強するのもいいですけど、虻蜂取らずにはなりたくないので…。 >>285
ソース、今見てるけど・・・
えらくコメントの少ない・・・って言うか、コメントの無いソースだな・・・
わざと、コメント消したの?
それとも、素でこれ?
素でコメント無いなら、コメント入れていった方が良いと思う。
>>309
これ以上コメント書かれたら、読みづらくないですか?
と、素な意見。
>>310
う〜ん、本体(?)の方はコメントあるけど、
モジュールの方にコメントがないかな。
>>309さん
基本的にコメントを一切書かないのです。
ただ、配布とか考えると書いた方がいいかなと思って、今回はちょっと書いてみました。
やっぱ少ないですかね.. 別にコメント書かないとかいう変なこだわりがあるわけじゃなくて、
ただ、自分はコメントなくてもすぐ分かるので人に見せる予定がないものに
コメント書かなくてもいいかなと..今は勉強中ということですし。
ただ、今回は見てもらおうとここに載せたわけなので、
モジュールの方にもコメントを書くべきだったと思いました..すみません。
「未来の自分は他人です」という言葉を贈っておこう。 コメント無しでもいいような
わかりやすいクラス名、変数名、関数名をつけるのが基本です。
コメントが無いとわからないってのは
それだけ汚いソースだということです。
>>315, >>316なるほど.
自分は今、就職希望の会社からCのソース(50-500行,10枚くらい)を渡されて、
この説明を書いてこいとか言われているのですが、コメントなくても
関数名, 変数名が分かりやすいし、うまい具合にサブルーチンに分けてあるので
コメント少ないですが、かなり読みやすいと思いました。
まあ、漏れのはコメントないと読みにくいかもしれませんが..
自分で見ても読みにくいな、と思ったらコメントでカバーするようにしてみます。 >>316
# ■■■ 俺の意見 ■■■
俺は、とにかくコメント入れるのに賛成派。
ルーチンの名前とか、変数の名前に意味を持たすのは当たり前だけど、
コメントあれば、コメントだけ読めば、何の処理してるのかわかるし。
# ■■■ ブロック毎にコメントを入れる ■■■
ブレスで囲って無くても、処理の単体が生まれる。
それ毎に、コメントを入れておけば、一行のコメント読めば数行理解できる。
# ■■■ ルーチンの使い方のコメントは重要! ■■■
とくに、ルーチンの使い方のコメント。
絶対後から見て助かる。
いくつ、どんな引数を取って、どんな処理してくれて、どんな値をどんな形で返してくれる。
そんなコメントがあれば、一発でそのルーチンの内容がわかるでしょ。
# ■■■ 最後に・・・ ■■■
↑どう?
こんな感じでコメント入れる訳よ。
全部の行読まなくても、#で始る一行読めば、
俺が、なにについて書き込みしてるか分かるでしょ。
これを、プログラムでも実践してる。
それと、空行無しに書き込みしてると読む気失せるでしょ。
そうそう、掲示板の書き込みでも、
結構その人のセンスが出る。
変な所で改行してる人や、
長文なのに空白行入れず、
だらだらとメリハリの無い書き込みする人とか。
そういう人って、プログラムも汚いんだよね・・・
はい、たしかに後で読む人がいるとすれば、
コメントは書いたほうがいいですね。
読む側と見るとありがたいものなので、自分でも書くようにします。
コメントが無いために間違った認識を受けたり、
重要な処理を 「これいらねぇんじゃね?」
とか思われて消されること減るはずだし。 >>318さん
自分が言いたいのは
「コメントを書くな」
ではなく
「コメントが無くてもわかるようなキレイな設計を心がけよう」
ってことです。
コメント関係ならプログラム技術板のこっちのスレのほうがいいかも。
http://pc2.2ch.net/test/read.cgi/tech/1038414493/
>>321
スレタイにワラタ
いや、もう終わってるっぽいスレなので、
もういいかな〜っと。
とにかく、コメントは思うように入れまくってみたら良いと思う。
そうしてる内に、どういう風にコメント書いたら分かりやすいとか、
こういうコメントは無駄だとか、分かってくるだろうし。
前に、冗談だろうけど・・・
$hoge++; #1を増加
・・・こんなコメントを見た事がある。
こんなの、明らかに無駄。(w
ただ、なぜ1を増やすかって事についてのコメントなら・・・
それは、意味を成すかもしれない。
実は、俺も無駄なコメントが多いんだよね・・・
ぜんぜんプログラムとは関係ないようなコメントとかある。
そういうのって、俺的に後から見たら面白かったり。
もちろん、人に見せる時は、そんなコメントは消すけどね。
OO なコード書いて POD 埋め込むようになってから
普通のコメントがかなり減った。スクリプトとドキュメント
同時に作るのは効率いいしオススメ。 http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1032435179_5/hoge.zip
むかしいじってたやつ、もう要らないから使えると思った香具師
勝手に使ってくれ。コメント皆無だけどね。
でも最後に軽く評価を聞きたいけどな。 >>326
あぁ。今見直したら俺が書いたやつじゃないものが入っていた・・・
Text::WordIteratorとか。。。
あーあ。まぁ、いいや。 ども。
いつぞやのコメント削除スクリプト作った俺です。
今作ってるスクリプトが行き詰まりました。
ちょっとイライラしたので、
息抜きにコメント削除スクリプトのバージョンアップとかしてみました。
このバージョンで、サブディレクトリ内も検索可能になりました。
深さは、どんなに深いサブディレクトリでも処理可能です。
http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1160.zip
・・・リファクタリングが必要かもしれん・・・
>>329
>深さは、どんなに深いサブディレクトリでも処理可能です。
当方にはそのスタックをあふれさせる準備があるが良いのか?
>>331
う〜ん。
スタックを溢れさせる準備があるって意味がわからんです・・・。
とにかく、かなり深いディレクトリでもOKなはず。
だって、Cのルートディレクトリから検索とか掛けてみたから。
とりあえず、試してみそ〜。
http://www1.neweb.ne.jp/wb/prof/index.htm
平成15年度 自作板 PC環境調査
◆5月分の結果が出ました。現在は6月分に移行しています。
(参考)
平均年齢 25.4歳
ネット(2ch含) 78.7%
ゲーム 59.0%
Windows XP Family 46.9%
Windows 2000 Family 34.4%
Athlon 45.3%
Pentium 4 29.7%
nVIDIA 49.2%
ATI 28.9%
DVD-R/RW/マルチ 20.4%
CD-R/RW 75.9%
光ファイバー 8.3%
ADSL/xDSL 64.5%
CRT 74.6%
LCD 25.4% >>332
ソースは見てないが、再帰的な処理をしてるのにスタックについて知らないというのは
ちょっとヤバくないか?
>>334
再帰?
自分の中で自分を呼ぶアレ?
・・・いや、普通にwhile文とかでブン回してるだけだが・・・
ディレクトリ検索のアルゴリズム考えるの、
実はちょっと大変だったんだよね・・・
ひさびさに、フローチャートとか書いたもん。(w
ちなみに、見てもらったら分かるけど、
メモリの使用も最小限に抑えてるし。
>>335
そうみたいね・・・書けちゃったから・・・。
whileでブン回しておいてメモリは最小限とはこれいかに。 >>336
確かにWhileで再帰のまねごとは出来る。
でも、どっちにしろスタック的なデータ構造がないと困るはずだけれど。 >>329
キモの部分 (Library_223.pm) 以外を書き換えてみた。
http://boobar.hp.infoseek.co.jp/refactoring/commentoff.pl.txt
…まぁ、なんつか、もっと色々な人の話に耳を傾けて
もっと上を目指して下され。今のレベルで固まられたら
正直痛すぎる。
漏れも人の事言えんけどなー。 >>337
簡単な話。
while文で、ブン回しながら、必要なデータか調べる。
必要なデータなら、ファイルへスワップ。
必要じゃなかったら、次のループで上書き。
つまり、メモリにデータを蓄えないようにしてる。
一通り調べ終わったら、次のステップでスワップしたファイルから
データ読み出しって感じ。
>>338
そのスタックってのがよく分かてないんで・・・
どんなデータ構造なのか分からないけど・・・
再帰処理は、一切使ってない、ただループさせてる処理をしてるよ。
DirTree.pmってファイルがディレクトリを走り回る処理部分だから。
一度、覗いてみてくださいませ。
>>339
ソース見せてもらいました。
再帰処理使ってるね。
こんな事言っても仕方ないし、
プログラム打つ人間としては失格かもしれないけど、
再帰処理って嫌いなんだよね。
逐次処理&反復処理だけで、すべてをこなせると思ってる。
いままでで、再帰処理を行わないといけない場面ってなかったし。
まぁ、ヘッポコな俺だから、
まだそんな場面に出くわしてないだけかもしれないけど。
それに、再帰処理に出くわすと、ソース読むのが大変。
俺的にね。
と、まぁこれは俺の哲学。
それと、これはD&Dに対応してないね。
それと、処理中&処理後のログが少ない。
この辺でも、俺と嗜好が違うね。
俺のは、そういうログがないと固まってるようでイヤだから。
結構うるさいソースになってる。
と、「正直痛すぎる」とかって言われたので、
ちょっと反抗してみました。(w
正直な感想は、無駄のないスッキリ仕上げなソースだと思います。
それと、俺の知らない組み込み関数とか使ってる。
もうちょっと、俺も勉強しないとね。
改造とかしてくれる人少なくってさ・・・
ソースみて勉強させてもらいます。
ありがとうございました。 久しぶりに覗いてみたら まだやってたのねご苦労さんw
実はあと風呂に入ってたらフィルターバグまだいくつかあるのを
気づいちゃったんだよね…
漏れ的ソースの書き方ならアレで問題ないんだけど
世の中には漏れの想像もできない書き方する人がいるんで 傑作にケチつけられて熱くなっちゃいました。
DirTree.pm直してやるから待っててな。 あ。再帰処理しか考えられない…止めよう。
今のやり方で、明らかにおかしい所は、ループ内で$tmpPathListを開いて閉じてる所。
ファイルハンドルが勿体無い。
それから、少し変な所で、メモリ使用量にこだわっている割には、readdirを
リストコンテキストで呼んでる点。一つずつ調べればいいのに。
それから、趣味の問題だけど、変なインデントが気持ち悪い。スコープを分けたい(?)なら
ブロックを作ればいいし。
あと、無駄な括弧。
if ( ($_ eq '.') || ($_ eq '..') ) { next; }
こことか強烈なんだけど…このままでも条件の中身の括弧は無くてもいいんだけど、
十分に優先度が低いorを使えば、心配しなくてもいい。それに大括弧のインデントも変。
@filelistのスコープも変。とにかく変数は使用直前に宣言した方が楽。
それから、$countはハッシュのリファレンスにする価値は無い。普通のハッシュで十分。 >>345
ごちゃごちゃ言う前に書き直してそれがより美しいことを証明すればどうだ? >>342
うーん、忘れた頃に、またやってます(w
そうそう、コメント削除のバグ。
俺も、2つほど気付いてました。
しかし、俺的に今の所実害がないので放置中。。。
今度、直してみます。
>>345
スクリプト自体は、すごくスッキリしてて、
本当、無駄がないと思います。
大半の人は、俺のスクリプトより>>339のスクリプトを好むかと・・・
俺の言ってる事は、ヘッポコの戯言だと聞き流してください。
指摘された部分。
ループ内でファイルを開いたり閉じたりしてる部分。
メモリ使用量最小限とか言ってるのに、
ディレクトリ内のファイル名を一発で取得してる部分。
この2つは・・・
言い返す言葉がないです(w
ファイルは、ループ前に開いて、ループが終わったら閉じるように変更。
ファイル名取得も、一つづつに変更してみました。
$countのハッシュリファレンスを使ってる。
これについては・・・
戻り値は、今後の改良などで値が大きくなるかもしれない・・・
という理由から、俺が作るルーチンのほとんどはリファレンスが返ってきます。
しかし、ルーチン内でリファレンス使ってるのは意味ないですね。
と、言うことでルーチン内は普通にハッシュを使うように変更。
戻り値はリファレンスだけど・・・
インデントが変。
orを使わず、||を使って括弧の多様。
変数宣言は、使用直前に宣言した方が楽。
これらについては・・・
好みってことで、許してください。
http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1166.zip aice.zive.net/index.jsp
よろしくお願いします。
>>350
ここの人は低レベルだからJavaなんて理解できないよ。 >>351
言われてみれば、Javaスレってないね・・・
難易の話をしているつもりかな?
なら351はJavaを理解していないに430スイカ