1 :Premature end of script headers : /this/thread:03/04/05 12:47 ID:tIET0nhf
自分の作ったCGIをみんなに評価してもらうスレだよ。言語は問わないよ。
よほどプログラムが短くないかぎりはアプロダにでもアップしてね。


4 :nobodyさん:03/04/05 15:00 ID:???
PHPもOKなの?

32 :nobodyさん:03/04/06 00:59 ID:???
評価して欲しいやつはトリップつけれや

37 :4 ◆R.zOhOehsw :03/04/06 01:56 ID:t3fZoblF
BBS: http://hex51.darktech.org/cgi-bin/the/bbs.pl
SRC: http://hex51.darktech.org/the.txt

言語: PERL
ネタ元: http://thebbs.jp/

糞ほど批判いただければ幸いです。
書き込みまくっても糞スレたてまくっても結構。

41 :nobodyさん:03/04/06 02:32 ID:???
かなり恥ずかしいのですが、他人の意見を一度でも聞いてみたくて…
http://kabocha.org/jelfe/
↑のサイトの
http://kabocha.org/jelfe/cgi/ybbs.html
↑のページに
山口_BBS2.00b1
↑って言う私のCGIがあるのですが、いかがな物でしょうか。

ただし「携帯のEZ専用」なので皆様の中には意味を理解しかねる出力があるかもしれません。


ああ、ついに2ちゃんねるに晒してしまったよ…
冷静に考えると恥ずかしいけど…、プロの方(?)に見てもらいたい気持ちが上のようだ…。

変なところあったらけなしてくれてもけっこうです、むしろけなして下さい。

68 :nobodyさん:03/04/06 04:23 ID:???
#○ログファイル
$def_log_file = q[./log.txt];
これは納得できるが
#○一度に表示されるレスの件数。
#[3??6]推奨。多く設定すると端末側で読み込めない場合があります。
$def_mess_page = qq[5];
こっちをダブルクオートで囲むのはなぜ?
数値をクオートで囲まれると変な気がする…

69 :nobodyさん:03/04/06 04:25 ID:???
>>41
>>32

70 :nobodyさん:03/04/06 04:32 ID:???
myは本当は局所的に使うためなのはしってるんだけど
どうしてもその前後で値が必要になったりすることが多いので
サブルーチンなら先頭に全部まとめて書いてる・・・

71 :nobodyさん :03/04/06 04:34 ID:???
>>70
余りいい設計じゃないなぁ・・・
subは位置に依存しないものであるべき

73 :41 ◆hht1jkpw9E :03/04/06 04:43 ID:???
>>69
はい、これで行きます、トリップ。

>>68
もし、
#○一度に表示されるレスの件数。
#[3??6]推奨。多く設定すると端末側で読み込めない場合があります。
$def_mess_page = 5;
とした場合、どこに入力したら良いか目で確認しにくいかと思いまして…。
数字なのでシングルではなく、ダブルで囲んでます。

なんて言うのか、入力する場所を
[ここ];
にしたら始めて設置する人でも分かりやすいと考えた結果こうなりました。

75 :nobodyさん:03/04/06 04:48 ID:???
>>71
激しく意味不明なやつになっちまったけど

sub saitama{
my ($value,$saitama,$hoge);
 foreach $value (@_){
  ($saitama,$hoge) = split(/,/,$value);
  if($saitama == $hoge){ return 1; }
 }
 return 0;
}

こんなやつもだめ?ってこと

79 :75:03/04/06 05:00 ID:???
まぁ意識しろって言われたら
漏れならこう書くんだけど

sub saitama{
 foreach my $value (@_){
  my ($saitama,$hoge) = split(/,/,$value);
  if($saitama == $hoge){ return 1; }
 }
 return 0;
}

78のコードと比べるとどっちのほうが
好まれるのかい?まぁ下らんと言えば下らないのだが・・・

>>73
use strict 使ってみたら?

84 :nobodyさん:03/04/06 05:10 ID:???
「出口は一つ」をかたくなに守るのは「gotoを意地でも使わない」と同様に愚行だ。
エラー処理でも
if (真) {
  if (真) {
    if (真) {
      # 何か処理
    } else {
      $ret = 0;
    }
  } else {
    $ret = 0;
  }
} else {
  $ret = 0;
}
より
if (偽) {return 0;}
if (偽) {return 0;}
if (偽) {return 0;}
# 何か処理
の方が圧倒的に見やすいだろう。だから俺は>>79だな。


87 :37 ◆0wPZQfeVoI :03/04/06 05:15 ID:t3fZoblF
>>84
なるほど、私は上のほうの書き方しますね..
やはり、コードが見やすいというのもプログラムの重要な要素に
はいるのでしょうか?

90 :79:03/04/06 05:22 ID:???
>>37
貴殿のソースをみたんですが
653-669行・・・ これなんすか?(w

124 :nobodyさん:03/04/06 15:57 ID:???
別に全部$hogehogeみたいなやつでいいじゃん
なんで局所変数とかみんなつかうの????

125 :71:03/04/06 16:00 ID:???
>>124見通しが悪くなるから。
誤動作の元にもなりかねんし

126 :nobodyさん:03/04/06 16:05 ID:???
>>125
でも配ってるやつってほとんどグローバル変数のみじゃん

127 :71:03/04/06 16:12 ID:???
>>126だから自分で組んでるんだが?
グローバルがいいっていうなら、そうすればいいのじゃない?

自分だけでやっとればいいってのなら一向にかまわないけど、
複数の人がからんでくるとなるとそうもいかない

163 : ◆YHmsETNOS2 :03/04/12 20:17 ID:???
再び。。。

すみませんがちょっと漏れのスクリプトを見てください。
前回のソートの練習に加え、ページの分割もしてみますた。
いちおう漏れの思っている動作しているのですが,突っ込むところがあれば,後学のために色々教えてください。

なお、前回指摘された “myとかの使い方” は。。。。。(^^A

ソースはこちら,
ttp://members.tripod.co.jp/angeldayan/test.txt
使ったデータはこちら
ttp://members.tripod.co.jp/angeldayan/data.txt

要 cgi-lib.pl です。

たいしたものじゃなくてごめんなさい。


164 :71:03/04/12 22:26 ID:???
>>163
登録データの件数が増えるのならば
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 ];
}
}
みたいな感じかになろうか・・・

168 :nobodyさん:03/04/12 23:21 ID:???
>>163
途中でダレたからかなり適当ですがいぢってみますた。
http://boobar.hp.infoseek.co.jp/refactoring/test.txt

169 : ◆YHmsETNOS2 :03/04/13 04:43 ID:???
>>164-168
さんくすでつ!

> データ量増えていくと、cmpを使う場合処理が遅くなる。
初耳でつ メモメモ 〆(・_・。)

>>168
全面的に書き換えてくださり、ありがとうございまつ!
感謝でつ!
乙でつ!
さっそくテストしてみまつた!
おー、動いているー。。 あれ(?_?)
データ件数は88くらいあるはずなのに、80までしか表示されない。。。
でもがんばってスクリプト読み下して自分で修正したいと重い松。

181 :71:03/04/13 06:00 ID:???
んで、件のソースの改造

ttp://kiteline.net/imgbbs/img/137.txt

この規模だと分ける意味がないとおもうんだけど・・・

211 :nobodyさん:03/04/24 04:27 ID:???
ども。ちょっとスレ違いかもしれないけど、お邪魔します。
CGIじゃないんだけど、Perlスクリプト内のコメントを削除するスクリプトを作りました。
使い方は、同封してるテキスト読んでも分かるけど、D&DでOKな、結構便利な感じです。

http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/997.lzh

評価お願いします。
また、改造してくれてアップしてくれる人は、
それ見て勉強したいと思いますのでお願いします。


222 :nobodyさん:03/04/24 16:38 ID:???
このコメント削除スクリプトはどんな役に立つんだぎゃ?

223 :nobodyさん:03/04/24 16:48 ID:???
ttp://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1003.zip
実は211のやつ見て無いんだが
書いて見たよ
先頭のタブとかは消さないようにした
一応自分の書いたスクリプトではきれいに
コメント部は消えた模様

285 :ここの4ではない4:03/06/02 17:48 ID:ltjk47zK
帰ってきました。よければ批判お願い致します。
(得に使いやすさについて)
http://d7359.hp.infoseek.co.jp/cgi-bin/the/bbs.cgi

(ソース)
http://hex51.darktech.org/scripts/the.cgi.txt
http://hex51.darktech.org/scripts/DHIN.pm.txt
http://hex51.darktech.org/scripts/mini.cgi.txt

291 :nobodyさん:03/06/02 20:36 ID:xwllfUbL
指摘バシバシお願いします。
http://cgi.tripod.co.jp/RedBee/cgi-bin/ShapeShift.cgi
(ソース)
http://members.tripod.co.jp/RedBee/ShapeShift.txt

298 :nobodyさん:03/06/02 21:59 ID:???
>>291
感想。
ソース汚くて読む気しない。
終わり。

301 :nobodyさん:03/06/03 10:20 ID:???
>>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

↑ここに、手入れたソース置いてるから。
まだ、俺が手入れたソースの方が読みやすいと思う。


316 :298:03/06/04 14:07 ID:???
コメント無しでもいいような
わかりやすいクラス名、変数名、関数名をつけるのが基本です。
コメントが無いとわからないってのは
それだけ汚いソースだということです。


329 :211:03/06/12 02:44 ID:???
ども。
いつぞやのコメント削除スクリプト作った俺です。
今作ってるスクリプトが行き詰まりました。
ちょっとイライラしたので、
息抜きにコメント削除スクリプトのバージョンアップとかしてみました。

このバージョンで、サブディレクトリ内も検索可能になりました。
深さは、どんなに深いサブディレクトリでも処理可能です。

http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1160.zip

・・・リファクタリングが必要かもしれん・・・


368 :nobodyさん:03/06/22 07:46 ID:???
スレの趣向とは少し外れるんですが、
下記のロック、アンロックはどうでしょうか?

# lock routine
sub lock {
 $retry = 5;

 if (-e $lockex_file) {
  $mtime = (stat($lockex_file))[9];

  if ($mtime + 600 < time) {
   rename($lockex_file, $lock_file) || &error("lock error");
  }
 }

 while (1) {
  last if rename($lock_file, $lockex_file);

  if (--$retry < 0) {
   &error("lock error");
  }
 }
}

# unlock routine
sub unlock {
 if (-e $lockex_file) {
  rename($lockex_file, $lock_file) || &error("lock error");
 }
}

評価お願いします。

369 :nobodyさん:03/06/22 09:04 ID:???
>>368
いいんじゃないかな。
while文の所は・・・

while ($retry--) {
  return 0 if rename($lock_file, $lockex_file);
}
&error( 'Lock error' );

こうの方が良いかな。

370 :368:03/06/22 10:02 ID:???
>>369
どうもありがとうございます。
他のスレでこういう書き方をみかけました。
while (!rename($lock_file, $lockex_file) {
 if (--$retry <= 0) {
  &error("lock error");
 }
}

>>369さんが書いてくれたものとどちらがいいんですかね?

371 :nobodyさん:03/06/24 13:54 ID:01cZwzPj
>>368
このルーチンだと穴がある。経験則だけど、アクセスが殺到すると簡単に壊れる。
説明するのめんどいので、

http://www.din.or.jp/~ohzaki/perl.htm#File_Lock

この辺りでも読んでみて。

>>370
好みだと思う。

個人的には>>368>>369>>370もループの最中にreturnやら&errorで関数の
外に飛んでるので気持ち悪い(これも好みの問題)。

あと、>>368はテストが最大6回行われるのに大して、>>369>>370
5回なので等価なコードじゃなくなってる。

というわけで、個人的にはこう書くかな↓

my $retry = 5;
for($retry++; $retry; $retry--){
last if rename($lock_file, $lockex_file);
}

error("lock error") if not $retry;

374 :nobodyさん:03/06/24 15:33 ID:???
>どんなロックしててもファイルは壊れるんだから

そんなことはないよ。ただ言えることは、この板ではまだまともにロックできて
いるルーチンが1つも書かれてないな。

394 :nobodyさん:03/06/25 00:00 ID:???
require './my_flock.pl';
while (1) {

  while ( not defined ($lock = &my_flock()) ) {};
    open (IN, "./count.txt");
    $data = <IN>;
    close (IN);
  &my_funlock($lock);

  print ++$data. "\n";

  while ( not defined ($lock = &my_flock()) ) {};
    open (OUT, ">./count.txt");
    print OUT $data. "\n";
    close (OUT);
  &my_funlock($lock);

  if ($data >= 10000) {
    last;
  }
}

>>371のその辺のファイルロックを別ファイルに取って呼び出してる。
これを、二つのプロセスで実行してみろ。
無事に10000までカウントなんぞできんぞ。


397 :374:03/06/25 00:47 ID:???
ルーチンをまともに使えないヤシが晒されるスレはここでつか?

398 :nobodyさん:03/06/25 00:57 ID:???
>>397
だから。
試せってよ・・・。
試しもしないで、使えてねーとか、使い方悪いとか。
そんな事言われても、説得力ねーっちゅーの。

こういう使い方したらファイル壊れないとか、
このタイミングでルーチン呼び出したら大丈夫だとか、

まー試しもしないで語ってるヤツに、
ロクな答えなんて返ってきそうにないけどな。

528 :nobodyさん:04/05/09 20:52 ID:???
例えば既成の掲示板の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


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";
}

541 :nobodyさん:04/10/09 00:21:55 ID:???
>>540
myで複数宣言するときは()がいる
hushじゃなくてたぶんhashね. 連想配列っていみなら

ハッシュのスライスを使うとエレガントかも
@hash{qw/title time contents/} = split /::/;

foreachつかえよ
for(...$#ref)

542 :540:04/10/09 02:08:52 ID:???
541>

>ハッシュのスライスを使うとエレガントかも
>@hash{qw/title time contents/} = split /::/;

ありがと、参考になりました。

my は複数でも()いりませんよ。バージョンによるだろうけど
最後に、今更foreach使ってる人いるんですか?w


563 :nobodyさん:05/01/23 00:46:42 ID:vqv+/2ig
誘導されてきました。
評価というか不具合の問題です


初めてperl書いてみました。
簡易的な計算のプログラムを作ってみたんですがうまく動作しません。

ちょっと見て頂き、不具合等御指摘下さい
特定の計算式で、入力(1項目だけセレクトボックスにより選択)した数値を計算するものです。


ソース
http://tool-ya.ddo.jp/2ch/trash-box/contents.jsp?file=20050123003423509.txt

URL
http://sr-cafe.chu.jp/kok/calc.html

566 :nobodyさん:05/01/23 20:04:18 ID:???
>>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; ← 最後に追加


606 :nobodyさん:2006/10/11(水) 22:51:05 ID:e5FQIx7N ?2BP(333)
特定の板のスレタイ検索をして、選んだスレから画像とかのサムネイルを表示するスクリプトを書いてみまスた(・ω・`)
恐ろしく見づらいと重いまスが・・
http://vip.ty.land.to/image/

http://pc8.2ch.net/test/read.cgi/php/1160569533/
でボチボチいじくったり、新しいことやったりしていきたいと思ってまスが、評価して欲しいス(・ω・`)
勉強かねてるので、車輪の再開発なのは承知でス


http://hibari.2ch.net/test/read.cgi/php/1049514428/l50人気ブログランキングへ