2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

自作CGIを評価するスレ

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


2 :nobodyさん:03/04/05 12:58 ID:???.net


3 :nobodyさん:03/04/05 14:40 ID:???.net
ソース貼り用掲示板
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html

あぷろだはどこ使うよ?

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

5 :nobodyさん:03/04/05 15:02 ID:???.net
>>4
>>1 くらい読め

6 :nobodyさん:03/04/05 15:32 ID:???.net
CGI版のPHPならOKてことだな>>4
Cで書くCGIスレも統合するか、ゴミだし。

7 :nobodyさん:03/04/05 15:51 ID:???.net
WebProgならなんでもいいんじゃネーノ?

8 :nobodyさん:03/04/05 17:41 ID:???.net
CGIならいいんだろ?

9 :nobodyさん:03/04/05 18:07 ID:???.net
>>5

モジュール版のPHPについて聞いたことぐらい気づけ。

10 :nobodyさん:03/04/05 18:09 ID:???.net
>>9
あーなるほど、スマン。
っつーかそれもアリに決まってるじゃねーかよーヽ(TДT)ノ

11 :マリモーマ ◆r6PDGT6Xd2 :03/04/05 18:33 ID:4Hc1kYlW.net
僕の作った CGIは どう? http://777.or.nu/cgi.html

12 :nobodyさん:03/04/05 18:43 ID:???.net
絵に描いたような一直線ソースだな

13 :nobodyさん :03/04/05 18:57 ID:???.net
もうちょいスコープとか意識したほうがいいんじゃない?
殆どグローバル変数・・・

14 :nobodyさん:03/04/05 18:59 ID:???.net
・どっかからコピーした部分以外で使われる変数が全てグローバル
・関数名から内容が想像できない(re,fot,ur,re2,wr2lok,co.gc等 sub ge {} は結構引いた)
・スタイルに一貫性がない
・$FORMの扱いがキモイ
・symlinkロックしてるが解除はどこでやってんだ?

15 :nobodyさん:03/04/05 19:05 ID:???.net
>>14
5番目訂正しとく。
・symlinkロックしてないから解除はやらなくてもいいんだけどロックしないってことか。

sub lok{
if($lock == 0){return;}
local($wait) = 4;
while (!symlink(".", $lock)) {
if ($wait-- <= 0) {
&error("$(B%m%C%/%U%!%$%k$,B8:_$7$F$^$9!#(B");
}
sleep 1;
}
}


$ grep '$lock' ch/*
ch/sub.cgi: if($lock == 0){return;}
ch/sub.cgi: while (!symlink(".", $lock)) {

これじゃあ$lockは常に0だよ・・・
まあ$lockに値を入れたところで解除できんから1回しか書き込めんのだけどね。

16 :マリモーマ ◆r6PDGT6Xd2 :03/04/05 21:18 ID:4Hc1kYlW.net
なるほど いろいろなアドバイス サンクス

17 :これ自信作だぜ:03/04/05 22:52 ID:qMi3a/lA.net
http://oasis.minidns.net/

18 :これ自信作だぜ:03/04/05 23:35 ID:qMi3a/lA.net
tail -f /var/log/httpd/accesslog
見たけど誰もアクセスして来ないや。
皆臆病者だね。

19 :nobodyさん:03/04/05 23:45 ID:???.net
お前がきもいから人気無いだけだろ。とんだ勘違い野郎だな。

20 :4:03/04/06 00:23 ID:t3fZoblF.net
よかったら批判ください。
もうちょいコード直してから、URL晒します。

21 :nobodyさん:03/04/06 00:26 ID:???.net
元から批判が欲しいとは

22 :4:03/04/06 00:28 ID:t3fZoblF.net
批判以外もらってもどうしようもない..
ほめてもらったら何も意味がないっす。

23 :nobodyさん :03/04/06 00:31 ID:???.net
>>17
いったけどエラー起こしとる罠

24 :nobodyさん:03/04/06 00:39 ID:???.net
>>17
ソース見たらDOCTYPEがXHTMLだったけどぱっと見ても明らかに間違えまくってたのでチェックしてみた。
チェックの結果は以下のとおりです。

http://oasis.minidns.net/ を XHTML1.0 Transitional としてチェックしました。
19個のエラーがありました。このHTMLは 4点です。タグが 9種類 14組使われています。文字コードは Shift JIS のようです。

先頭の数字はエラーのおおまかな重要度を 0〜9 で示しています(減点数ではありません)。少ない数字は軽く、9 になるほど致命的です。0 は減点対象外のごく軽度のエラーで (グレイのかっこつき) でメッセージされています。

9: line 1: このXML宣言は正しくありません。 → 解説 23
6: line 5: <html> には xmlns 属性が必要です。 → 解説 86
2: line 5: <html> には lang 属性を指定するようにしましょう。 → 解説 116
2: line 5: <html> には xml:lang 属性を指定するようにしましょう。 → 解説 116


25 :nobodyさん:03/04/06 00:39 ID:???.net
0: line 6: (<head>〜</head> 内に <link rev="made" href="mailto:〜" /> が含まれていません。) → 解説 121
0: line 6: (<head>〜</head> 内に <link rel="next" href="〜" /> などのナヴィゲーション用のリンクが含まれていません。) → 解説 122
1: line 6: <p> と </p> の間が空です。 → 解説 51
1: line 6: <body> での色指定が不完全です。text 属性も含めるようにしましょう。 → 解説 149
0: line 7: (<input type="text"> には tabindex 属性を指定するようにしましょう。) → 解説 166
0: line 7: (<input type="file"> には tabindex 属性を指定するようにしましょう。) → 解説 166
1: line 7: <input type="text"> には value 属性で初期値となるテキストを指定しておきましょう。 → 解説 160
0: line 7: (<input type="text"> には tabindex 属性を指定するようにしましょう。) → 解説 166
0: line 7: (<input type="submit"> には tabindex 属性を指定するようにしましょう。) → 解説 166
1: line 7: <input type="text"> には value 属性で初期値となるテキストを指定しておきましょう。 → 解説 160
0: line 7: (<input> には accesskey 属性を指定するようにしましょう。) → 解説 167
0: line 7: (<input> には accesskey 属性を指定するようにしましょう。) → 解説 167
0: line 7: (<input> には accesskey 属性を指定するようにしましょう。) → 解説 167
0: line 7: (<input> には accesskey 属性を指定するようにしましょう。) → 解説 167
9: line 7: </html> の後にまだ何かテキストがあります。 → 解説 231


26 :4:03/04/06 00:40 ID:t3fZoblF.net
なぜか、2重カキコデスカ!?と

27 :4:03/04/06 00:41 ID:t3fZoblF.net
HTMLがDOCTYPE無し、気分によって大文字小文字が混じっている
のはNGですか?

28 :nobodyさん:03/04/06 00:45 ID:???.net
あ、ゴメン。エラーのせいで最後の方が減点食らってるのね。
本来のドキュメント(最初の</html>まで)でチェックしてみた。

XHTML1.0 Transitional としてチェックしました。
19個のエラーがありました。このHTMLは 8点です。タグが 9種類 14組使われています。

先頭の数字はエラーのおおまかな重要度を 0〜9 で示しています(減点数ではありません)。少ない数字は軽く、9 になるほど致命的です。0 は減点対象外のごく軽度のエラーで (グレイのかっこつき) でメッセージされています。

9: line 1: このXML宣言は正しくありません。 → 解説 23
6: line 5: <html> には xmlns 属性が必要です。 → 解説 86
2: line 5: <html> には lang 属性を指定するようにしましょう。 → 解説 116
(以下略)

29 :nobodyさん:03/04/06 00:47 ID:???.net
>>27
別にいいんじゃねぇの?>>17は自信作らしいから突っ込まれてるだけで。

30 :4:03/04/06 00:53 ID:t3fZoblF.net
ほう、今自分で見ててすでに数箇所突っ込みどころがあったよ。
もう少し。

31 :4:03/04/06 00:58 ID:t3fZoblF.net
ついでにオレはここの4ではない。

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

33 :nobodyさん:03/04/06 01:04 ID:???.net
>>31
ややこしいぞw
じゃあPHPじゃないのか?

34 :4 ◆R.zOhOehsw :03/04/06 01:29 ID:t3fZoblF.net
PERLですが、まずいですか?

35 :nobodyさん:03/04/06 01:34 ID:???.net
いえ、さっさと貼っちゃってよん。

36 :あぼーん:03/04/06 01:41 ID:???.net
   ______________
 /:\.____\
 |: ̄\(∩´∀`) \  <先生!こんなのがありました!
 |:在  |: ̄ ̄ U ̄:|
http://saitama.gasuki.com/aomori/

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

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

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

38 :nobodyさん:03/04/06 02:04 ID:???.net
>>37
Perlの文法的な間違いはないみたいだけど、処理がいまいちな部分が
散見される。
効率を考えればもうちょい工夫したほうがいいだろう。

39 :4 ◆R.zOhOehsw :03/04/06 02:08 ID:t3fZoblF.net
意見どうも。
もっとアルゴリズムを勉強しれってことですね?

40 :nobodyさん:03/04/06 02:22 ID:???.net
・myが気になる。
・一行書き出すのにヒアドキュメント使うのは何故?
・かと思えばqq連発で使ってたり…

・1.入力 2.処理 3.出力 という風に処理を分けよう
・自作自演防止はハッシュとかじゃ駄目なのかい?
・FORMの処理が2回書いてあったりして無駄


・HEADリクエストは面白いね。

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

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


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

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

42 :nobodyさん:03/04/06 02:35 ID:???.net
myもいいんだけど、実質グローバルと同じだな。
処理毎に{ }で囲んで使わなきゃ意味ないだろ。

43 :4 ◆R.zOhOehsw :03/04/06 02:47 ID:t3fZoblF.net
ご意見どうも。
>・一行書き出すのにヒアドキュメント使うのは何故?
エディタで折り返すのが気になるので..
>・かと思えばqq連発で使ってたり…
Emacsなので、ヒアドキュメントだと表示する特殊によって
自動のタブがおかしくなるのです..

全部個人的なことですね..修正します。

myに関しては、ちょっと調べてみます。
その他の意見に関しても、もう一度よく考え直してみます。


44 :4 ◆R.zOhOehsw :03/04/06 02:49 ID:t3fZoblF.net
>特殊
特殊文字、記号です。

45 :nobodyさん:03/04/06 02:50 ID:???.net
>>43
cperl-mode使ってる?

myは変数のスコープを局所範囲に閉じ込めるためのもので、
mainパッケージでmy使ってもmainパッケージ全体から読み書きできてしまうので
いやーんな感じ

46 :nobodyさん:03/04/06 02:53 ID:???.net
>>41
2193行目 $error_name = @_[0]; → $error_name = $_[0];でいいだろ
あちこちの変数、もうちょっとスコープを考えてレキシカルに
するとかしたほうがいい。
問題ないけど、読み取りopenに < をつけたりつけなかったりなどしてるのを
書き方統一したら?
他の部分なんかでも統一させる書き方をくせにしたほうが可読性良くなるし。
吐いてるhdmlはすぐにテストできないから見ていない。

47 :4 ◆R.zOhOehsw :03/04/06 03:00 ID:t3fZoblF.net
>>45サン
Emacsは、普通にそのまま.plとして読んだ感じで使ってます..
mainで、my使うと、別の関数から書きかえれないのでは?
それは意味ないのでしょうか?

48 :4 ◆R.zOhOehsw :03/04/06 03:03 ID:t3fZoblF.net
もしかして、mainで書いた関数は、mainに含まれますか..汗
勝手に、関数を覗いた部分がmail{}となるのかと思ってました。

49 :nobodyさん:03/04/06 03:04 ID:???.net
>>47
>mainで、my使うと、別の関数から書きかえれないのでは?
「別の関数」が良く分からんが、mainパッケージに属している関数では

my $a = 1;
print $a,"\n";
&routine;
print $a,"\n";

sub routine {$a = 3;}

$ perl hoge.pl
1
3
となる。

50 :nobodyさん:03/04/06 03:05 ID:???.net
#!/usr/bin/perl

require "hage.pl";

my $a = 1;
print $a,"\n";
&hage::routine;
print $a,"\n";

# ↓はhage.pl
#!/usr/bin/perl

package hage;

sub routine {$a = 3;}
1;

では、
$ perl hoge.pl
1
1
となる(安全

51 :nobodyさん:03/04/06 03:06 ID:???.net
>>48
main関数なんてもんはない。
mainパッケージ。この辺はちゃんと勉強した方が良かれと思われる。

52 :4 ◆R.zOhOehsw :03/04/06 03:08 ID:t3fZoblF.net
はい、よく分かりました。
ありがとうございます。

53 :41:03/04/06 03:11 ID:???.net
>>46
御意見ありがとう御座います。
こんなに早く返って来るなんて…。感激です。
…と言うより、私の記述が雑なので簡単に変な所が見つかってるだけなのだろうか。複雑な気分…汗

もし、ヒマな方がいらっしゃいましたらまだまだ御意見をたくさんお聞かせ下さい。


54 :nobodyさん:03/04/06 03:13 ID:???.net
どれどれ。ちょっと見てみるか。

55 :nobodyさん:03/04/06 03:16 ID:???.net
>>53
Name "main::get_time_yday_2" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2336.
Name "main::get_time_isdst_3" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2339.
Name "main::get_time_isdst_2" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2336.
Name "main::get_time_wday_3" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2339.
Name "main::mail_jcph" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2071.
Name "main::get_time_yday" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2333.
Name "main::get_time_sec_3" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2338.
Name "main::get_time_wday_2" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2336.
Name "main::get_time_sec" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2332.
Name "main::get_time_wday" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2333.
Name "main::get_time_isdst" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2333.
Name "main::get_time_sec_2" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2335.
Name "main::main_user_agent" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 434.
Name "main::get_time_yday_3" used only once: possible typo at H:\Work\山口BBS200b1\ybbs.cgi line 2339.



56 :nobodyさん:03/04/06 03:20 ID:???.net
>>55 まあtypoじゃないみたいだけどね。
・2350行目〜sprintfですっきりと


57 :nobodyさん :03/04/06 03:31 ID:???.net
他人が書いたソースって見てると面白いもんだねぇ・・・

58 :nobodyさん:03/04/06 03:31 ID:???.net
つーか、でかっ
10KB超えるCGIなんて作ったこと無い・・・。

59 :nobodyさん:03/04/06 03:32 ID:???.net
・receive_error ifはいるのか?
・localの意味が分からないならmyを使おう
・クラックを気にするならcryptを使おう
・684行目はどういう意味?
・=はエスケープしなくていいよ
・PCと携帯を同時に扱うなら、途中までは両者に依存しない処理にしておいて
 最後の最後いざ出力するという時に振り分けると綺麗になるよ

60 :nobodyさん :03/04/06 03:34 ID:???.net
>>58
儂は300Kのソースがあるぞ(ぉ

61 :nobodyさん:03/04/06 03:38 ID:???.net
・最初(〜300行目)のqqはなんだ?
まぁあとは4氏にも共通するけど、インデントがおかしいのと
記述に一貫性がないのが気になるね。
サブルーチンがそこそこ見られるのは良いと思う(ただ、もう少しstrictに書こう)

これは個人的な趣味だけど、俺はグローバルなオプションはハッシュにする。
%option =(board_name => "hoge", max_mes => 50 ); みたいに。

62 :4 ◆R.zOhOehsw :03/04/06 03:45 ID:t3fZoblF.net
>>61
なるほど。
今までファイルから読んだ設定なんかはハッシュにしてましたが、
CGIだと初心者設置者が混乱するかと思って、できるだけ
見た目で分かりそうにしたつもりでしたが、ハッシュのがイカス。

63 :nobodyさん :03/04/06 03:49 ID:???.net
あと、自分的趣味をいうと、subの変数はことごとく局所変数にするほうがいいと思うなぁ

sub ayaya{
  my $num = shift;
  $num++;
  return($num);
}

みたいな形でやっとくほうが誤動作しにくい。

64 :41:03/04/06 03:52 ID:???.net
>>54-60
もう早こんなに…!ありがとう御座います。
最初はなんか晒すの恥ずかしいと思ってたけど、晒して良かったなぁ…(嬉

>>55-56
はい、タイムの所めちゃくちゃです。自分でもここは直さねば!と思ってました。
ありがたく直させてもらいます。

>>57
そうですか。私のレベルだと他人の記述は自分と進めかたが違うので見てると疲れてしまいます。
そんな私はperlしかできず、初めて1年くらいになります。面白いと言って頂けて幸いです。

>>58
>・receive_error ifはいるのか?
はい、これは利用者のかたが「0」と設定した場合、
バイト数無制限にするため、判定にかけません。
>・localの意味が分からないならmyを使おう
ごもっともです。言われてみると私もlocalの意味が分かりません。汗
>・クラックを気にするならcryptを使おう
cryptって分からないので調べてみますね。今は取り敢えず返事を急いでます。
>・684行目はどういう意味?
これは、携帯用なのでパケ代の節約です。
&nbsp;だと半角20文字で改行と同じになります。(多くの携帯は横が半角20文字)
で、携帯はパケ代(受信料)が深刻なので、
&nbsp;20コ。つまり120バイトを<BR>とし、4バイトに抑えます。
これで受信料は1/30になります。相手が携帯ならではの記述です。
>・=はエスケープしなくていいよ
はい。
>・PCと携帯を同時に扱うなら、途中までは両者に依存しない処理にしておいて
> 最後の最後いざ出力するという時に振り分けると綺麗になるよ
ついつい手抜きでガーッとコピーしてしまいました。汗

65 :4 ◆R.zOhOehsw :03/04/06 04:01 ID:t3fZoblF.net
localは宣言した{}内から読んだ関数内からでも参照できる。かな..

$cry = crypt('passwd', 'sl');
で、DESというので暗号化します。slはsaltで2byteとります。
暗号化されてた文字列(13byte)の先頭2byteに入りますから、
パスワードを検査するときに、同じsaltでもう一度暗号化して、
暗号済みのものと同じになれば同じパスワードです。
ん、いい説明探したほうが早いか..

66 :nobodyさん:03/04/06 04:18 ID:???.net
ハッシュを普通の変数のように使うのってだめですか?

67 :nobodyさん :03/04/06 04:23 ID:???.net
>>66
駄目ではない、用途によって使い分ける事が重要

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

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

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

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

72 :41:03/04/06 04:37 ID:???.net
>>61
>・最初(〜300行目)のqqはなんだ?
qq自体の意味でしょうか…?qならシングルクウォートでqqならダブルです。
入力は、ご使用していただく方に任意で入力してもらいます。量が多くてめんどうな気がしますけど…。
>インデントがおかしいのと
>記述に一貫性がないのが気になるね。
つまり見にくいと…。私の中では今までで1番気をつけた記述だったりしますが…
頑張ります。
サブルーチンがそこそこ見られるのは良いと思う(ただ、もう少しstrictに書こう)
strictってなんだろう、汗。調べてみます。

>これは個人的な趣味だけど、俺はグローバルなオプションはハッシュにする。
>%option =(board_name => "hoge", max_mes => 50 ); みたいに。
そうですか、私はこの記述で
「グローバルな変数の先頭にmain」をつけ、
「ルーチンのみの変数の先頭にルーチン名」を付けたのですが、
名前が長くなりすぎて失敗してしまいました。

>>65
どうもです。

もしかしたら、返事を飛ばしてしまった方が居るかもしれませんがすみません。
明日からでも記述の整理をしたいと思います。

まだまだなにかありましたら、お願いします。ヒマな方は眺めてやって下さい。
当たり前ですが、全部読んで参項にさせてもらってます。


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

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

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

74 :nobodyさん :03/04/06 04:47 ID:???.net
>>73
んー基本的なことを言わせてもらうと・・・
コメントでちゃんと書いとけば理解してもらえる範囲じゃないかと思うけどね・・・

それでわからないっていうのは相手する必要が無いような・・・(ぉ


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

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

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

76 :nobodyさん:03/04/06 04:53 ID:???.net
って言うか最近多い「4」って香具師は「4番」ではなく、コテハン?
普通に紛らわしい。なんとかしてほしい。

77 :nobodyさん:03/04/06 04:55 ID:???.net
このスレタイっておかしくない?

× 自作CGIを評価するスレ
○ 自作CGIを評価してもらえるスレ
○ 自作CGIを評価していただくスレ

じゃない?

78 :71:03/04/06 04:55 ID:???.net
>>75
sub saitama{
 my $ret = 0;
 foreach my $value (@_){
  my ($saitama,$hoge) = split(/,/,$value);
  if($saitama == $hoge){
    $ret = 1;
    last;
  }
 }
 return $ret;
}
私ならこう書くかな

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

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

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

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

80 :71:03/04/06 05:03 ID:???.net
まぁ、書き捨てにするか後から見やすく書くかのレベルになる罠(w

81 :nobodyさん:03/04/06 05:05 ID:???.net
>>66
普通の変数も無名ハッシュっていう位置づけじゃなかったっけ?

82 :37 ◆0wPZQfeVoI :03/04/06 05:07 ID:t3fZoblF.net
>>76
非常にすみません。
Perlの極意スレの4番です。
もう沈んでどこかに行ったスレです。
なんとなくそのまま4でした、改名します、37です。

83 :nobodyさん:03/04/06 05:09 ID:???.net
>>79
漏れは 何回も使う関数的なやつは結構まともに書いてるけど
本体が長くなるからただ分けただけのサブルーチン的なものだと
かなりだらしないわ。

一応strictなコードでmod_perlで動いてる

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


85 :nobodyさん:03/04/06 05:12 ID:???.net
「エラー処理を先にやれ」っていう格言をどっかで見た。

それ以上続けるのが無意味と分かっている場合に
だらだらと引きずるのは良くない。すぱっとreturnすべき。

86 :71:03/04/06 05:13 ID:???.net
>>84
まぁ、別に好きなように書けばいいんだけど、
グローバル変数の値をサブルーチンから出力することもあるし・・・
それ以前に、どのレベルで言ってるかつーのが気になる所かもなぁ

ちなみにgotoは使わないよ。必要ないから(w

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

88 :79:03/04/06 05:16 ID:???.net
>>84
それ書くなら
if(真 && 真 && 真){何か}else{return 0;}
だろうなぁ…

まぁ趣味でやってるプログラミングなんで
動いたら嬉しいって程度なんだが(w

>>83
関数だと割ときれいに書くな 漏れも

89 :71:03/04/06 05:21 ID:???.net
>>87習慣づけしとけばスパゲッティなソースにはなりにくいのが作れると思うけどねん

returnは複数付けるのが一般的らしいな、覚えとこう

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

91 :37 ◆0wPZQfeVoI :03/04/06 05:26 ID:t3fZoblF.net
>>89さん
そのためには1度しか使わない処理でも無駄にサブルーチン作って、
見やすくすることも必要でしょうか?
趣味で作るので、自分以外がソース読むことが無かったため
とりあえず、自分が読めれば気にしなかったのですが。

92 :37 ◆0wPZQfeVoI :03/04/06 05:29 ID:t3fZoblF.net
>>90
エラー処理ですが、
if () { えらー1}
if () { えらー2}
if () { error }
としたほうがいいですかね?

93 :71:03/04/06 05:31 ID:???.net
>>91 
慣れてない時は単純な処理にでもサブルーチンは作ってたけど、
今は、機能ごとにサブルーチンを作ってるって感じですね
同じ処理でも規模がおっきくないとそのまま書きなぐりすることがおおいです



94 :79:03/04/06 05:32 ID:???.net
>>92
エラーで止める優先度あるの?

unless ($a < 100){&error("$aが100以下じゃありません");}
unless ($b eq 'GET'){&error("$bがgetじゃありません");}
〜〜
でいいと思うが・・・

95 :71:03/04/06 05:35 ID:???.net
>>92
@error =(
 err1,
err2,
);

$error[$code];

みたいなことを最近よくするな(w

96 :nobodyさん:03/04/06 05:38 ID:???.net
>>88
あっと、>>84の例ではエラー処理が同一に書いてしまったのでおっしゃるとおりなんですが、
エラー処理が失敗した段階によって異なると考えてくださいませ

97 :nobodyさん:03/04/06 05:40 ID:???.net
×エラー処理が同一に
○エラー処理の部分に同一の処理を

プログラム言語の前に日本語勉強してきます。。。

98 :37 ◆0wPZQfeVoI :03/04/06 05:40 ID:t3fZoblF.net
>>93
なるほどー。
私は2度以上行う処理で引数と返り値が必要なものをサブルーチンに
するようにしていますが、今回少し考え直そうかと。

99 :nobodyさん:03/04/06 05:43 ID:???.net
つーか>>41の掲示板でかッ!
携帯用だと処理が細かくなって増えるのか?

100 :79:03/04/06 05:43 ID:???.net
関係無いが・・・漏れはエラー処理の場合
第一引数は数値だよ第二引数になんかメモ
sub error内でエラーログに記録する内容とかを振り分けることができる
perlだけじゃないが でかいやつになると
エラーメッセージ一覧表だけで数KBになる・・

101 :37 ◆0wPZQfeVoI :03/04/06 05:43 ID:t3fZoblF.net
>>94さん
確かにその通りです。
優先順位などありません..

102 :71:03/04/06 05:48 ID:???.net
基本的にエラーメッセージって書かないなぁ(ぉ
規定外の値だとデフォルト値になるようにしてるなぁ

103 :79:03/04/06 05:49 ID:???.net
人によってコーディングの仕方が
かなり違うことがわかったんで 今日は寝るサラバ

起きたら局所変数を意識したプログラムを書いてみよう。

104 :37 ◆0wPZQfeVoI :03/04/06 06:08 ID:t3fZoblF.net
ちょっと修正しました。批判していただいた部分は
まだすべて修正できていませんが、一応アド載せときます。
BBS: http://hex51.darktech.org/cgi-bin/the/bbs.pl
SRC: http://hex51.darktech.org/the.txt

余談ですが、部屋がめちゃめちゃ寒いです..


105 :71:03/04/06 06:17 ID:???.net
my $mini_cgi = './mini.pl';
my $cntfile = './count.dat';
my $log_dir = './logs';
our $lock_name = 'lock';
<中略>
my $t_h_width = 0;
my $t_f_width = 70;
my $name_size = $name_max - 4;
my $title_size = $text_cols;

この部分って全部グローバルだからourになっちゃうよん

my $hoge #グローバルと同意で無意味

{
 my $hoge; #○
 {
  my $hoge; #○
 }
}
みたいにブラケットで括られた中(サブルーチンでもなんでもいいけど・・・)で宣言した部分じゃないと無意味

106 :37 ◆0wPZQfeVoI :03/04/06 06:29 ID:t3fZoblF.net
はい、実は上のほうですでに言われました。
さっさとourにしておきます。

107 :37 ◆0wPZQfeVoI :03/04/06 06:33 ID:t3fZoblF.net
修正しますた。

108 :nobodyさん:03/04/06 06:34 ID:???.net
ま、あせらずゆっくりいけやー。

109 :37 ◆0wPZQfeVoI :03/04/06 06:52 ID:???.net
どうもー。
取り合えず今日は寝てません。

110 :nobodyさん:03/04/06 08:06 ID:???.net
my でスコープはファイル・パッケージ内に限定されるんだから意味はあると思うよ。
our にはならない。
別のパッケージから読みこんだりしてるのでなければ、
わざわざ our にする方が意味ないと思うけど?


111 :これ自信作だぜ:03/04/06 08:51 ID:dTzeXpbT.net
修正しましたが何か?

112 :あぼーん:03/04/06 08:52 ID:???.net
          ┌┬┬┬┐
    ―――┴┴┴┴┴―――――、
.  . /  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ ||    __________
  ./    ∧// ∧ ∧| ||      |||   ||  /
 [/____(゚_//[ ].゚Д゚,,) ||___|||   || <  こんなのが有りますた
. ||_. *  _|_| ̄ ̄ ∪|.|.       |ヽ.__||  \__________
. lO|o―o|O゜.|二二 |.|    救済病院 ||
 .| ∈口∋ ̄_l__l⌒l_|___|_l⌒l._||
   ̄ ̄`ー' ̄   `ー'  `ー'   `ー'
http://saitama.gasuki.com/koumuin/

113 :これ自信作だぜ:03/04/06 08:52 ID:dTzeXpbT.net
↑追加
http://oasis.mininddns.net/

114 :これ自信作だぜ:03/04/06 08:53 ID:dTzeXpbT.net
スマソ。スッペルミス
http://oasis.minidns.net/

115 :あぼーん:03/04/06 09:17 ID:???.net
  ∋8ノノハ.∩
   川o・-・)ノ <先生!こんなのがありました!
__/ /    /   
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
 ...|| ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/shinagawa/

116 :これ自信作だぜ:03/04/06 10:29 ID:dTzeXpbT.net
http://oasis.minidns.net/
蜜柑性だけどな

117 :nobodyさん:03/04/06 10:35 ID:???.net
[index.cgi:26:warn] Use of uninitialized value in concatenation (.) or string at /www/oasis/html/index.cgi line 26. [index.cgi:26:warn] Use of uninitialized value in concatenation (.) or string at /www/oasis/html/index.cgi line 26.
ってでてるよ>116

118 :nobodyさん:03/04/06 10:45 ID:???.net
書き方まずかったかな?
>>71はブロックの外で宣言すると、例えばサブルーチンの中からでも参照できてしまうので
変数宣言する時は、スコープを絞って適切なブロック内で宣言しよう…と言っているのだと思う。
修正というか、むしろ改悪されえてるような・・・。
our にしてしまうと、他のファイルからも値を参照出来る様になってしまうので、

# つっこみたかったのは、
# > この部分って全部グローバルだからourになっちゃうよん
# my で宣言してるのに勝手に our にはならないよー。ってこと。


よくある方法だと、main関数(サブルーチン)を作るか、
単にブロックで囲む。(ラベルは別にいらないけど便宜上)
MAIN:{
my $foo = 'bar';
;
}


ちなみに、定数宣言なら変数にはせずに、
use constant LOG_DIR => './logs';
という風にしておくと、代入できないから
グローバルとか関係なく中の値は保証されるよ。

119 :37 ◆0wPZQfeVoI :03/04/06 14:26 ID:???.net
なるほど。
囲ってみます。

120 :71:03/04/06 15:01 ID:???.net
>>118
>変数宣言する時は、スコープを絞って適切なブロック内で宣言しよう…と言っているのだと思う。

そいう意味.、言い方まずかったですな・・・

121 :nobodyさん:03/04/06 15:42 ID:???.net
{}って
while{} foreach{} for{} sub{} {}
が?有効なの
if{}はどうなるの?

122 :nobodyさん:03/04/06 15:46 ID:???.net
漏れはグローバル変数使いまくりだけど だめかい?

123 :71:03/04/06 15:49 ID:???.net
>>121
基本的に {}で囲ってる部分は全部スコープになりますよん
if{}でも eval{}でも 一緒
ファイルの重複を避ける処理
 {
   my %count;
   @array = grep(!$count{$_}++, @array);
 }
これみたいに、スコープを作るために括る事もありますし

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

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

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

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

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

128 :37 ◆0wPZQfeVoI :03/04/06 16:44 ID:???.net
取り合えず少し直してみました。
今日はPHPで学校の掲示板を作るので
あまり変更はないかもしれません。

>>71さん
気をつけないと
if ($hoge eq 'hoge') {
 my $foo = 'hoge!';
}
print $foo;
この場合マズイですよね?
チョットmyについていろいろと試してみます。

129 :71:03/04/06 16:49 ID:???.net
>>128
それはスコープの外に print $fooがあるので動作しない

if ($hoge eq 'hoge') {
 my $foo = 'hoge!';
 print $foo;
}
コレが正解


130 :37 ◆0wPZQfeVoI :03/04/06 19:43 ID:???.net
>>129さん
OKっす。
要はCのautoですよね?

131 :nobodyさん:03/04/06 20:10 ID:???.net
myを使わなきゃダメって訳じゃない。
使った方が良いってだけで。

132 :nobodyさん:03/04/07 00:03 ID:???.net
グローバルである必要がないならレキシカルを使うほうが
安全だし速度的にも有利だからね。

133 :nobodyさん:03/04/07 15:58 ID:???.net
use vars使うのは反則?

134 :nobodyさん:03/04/07 16:14 ID:???.net
ありじゃないの?
じゃなきゃそんなモジュール作らんよ。

135 :nobodyさん:03/04/07 18:46 ID:???.net
>>133
使い方次第

136 :nobodyさん:03/04/07 22:42 ID:???.net
localを使おう

137 : ◆YHmsETNOS2 :03/04/08 16:35 ID:???.net
すみませんがちょっと漏れのスクリプトを見てください。
ソートの練習なんです。
いちおう漏れの思っている動作しているのですが,突っ込むところがあれば,後学のために色々教えてください。

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

要 cgi-lib.pl です。

たいしたものじゃなくてごめんなさい。
初心者なんで,これでも1週間かかっちゃったんです。
よろしくお願いします。

138 :nobodyさん:03/04/08 18:57 ID:???.net
>>137
myとかの使い方覚えたほうがいいかも
まだはじめたばかりなのならPHPもいいかもよ

でスクリプトに関しては
ファイルをアップロードするわけでもないんだし
自前でデコードしよう。

139 : ◆IzdKJ.WAZA :03/04/08 19:02 ID:???.net
>>137
漏れも挑戦してみていいかい?

140 : ◆IzdKJ.WAZA :03/04/08 19:45 ID:???.net
疲れた。。とりあえずこんなん?
http://iwh11.hp.infoseek.co.jp/p/e/r/perldev/cgi-bin/upload/source/039.txt

PerlスクリプトなんでDOSから動かしてね

141 :nobodyさん:03/04/08 20:25 ID:???.net
my, our でも変数のスコープは同じなんだけどなぁ。
varsプラグマ(v5.6以降だと our)を使うのは、
use strict 'vars'プラグマを有効にした時に、
複数のパッケージである変数を別のパッケージから使いたい場合、等。

no strict は、場合によっては反則 ...

142 :nobodyさん:03/04/08 23:45 ID:???.net
そういえば、さっきmyとmyなしでベンチマークを行ったら
myの方が3,4倍遅かったのだけど…。メモリ消費は解らない。

143 :71:03/04/09 03:32 ID:???.net
自分の趣味でリファレンスを使ってソースを書いてみた・・・
cgi-lib使ったことないからあてずっぽうだけど、かなりソース書きなおす事になったねぇ

ttp://iwh15.hp.infoseek.co.jp/p/e/r/perldev/cgi-bin/upload/source/041.txt

144 :71:03/04/09 03:33 ID:???.net
>>143 8-9行目
if ($in{'rev'}){
my $script = 'http://' . $ENV{'SERVER_NAME'} . $ENV{'SCRIPT_NAME'};

ココ逆だな・・・

my $script = 'http://' . $ENV{'SERVER_NAME'} . $ENV{'SCRIPT_NAME'};
if ($in{'rev'}){

145 : ◆YHmsETNOS2 :03/04/09 04:42 ID:???.net
>>138
> myとかの使い方覚えたほうがいいかも
わかりました。勉強します。

> PHPもいいかもよ
perlと心中しまつ。

> ファイルをアップロードするわけでもないんだし
いやいや、今後画像をあぷすて貼り付けるつもりなので。。。
いつになるかわかりませんが。。。。。

>>144
うわぁ、ソースが綺麗でつ。
でも、動きません。。。。。
ローカルでは「ページを表示できません」で動きませんし、
サーバにあげてみた所、最初の画面は表示するものの、
情報のリンクのところが
http://サーバー名/$script?action=1&rev=1&n=0
って、$script そのままでつ。
結果は404でつ。
自分でも調べてみまつ。

146 :71:03/04/09 04:57 ID:???.net
>>145 動かしてないからねぇ(w
穴ありまくりであろうかと


147 :nobodyさん:03/04/09 09:53 ID:???.net
> そういえば、さっきmyとmyなしでベンチマークを行ったら
> myの方が3,4倍遅かったのだけど…。メモリ消費は解らない。

根拠を示さずに結果だけ取り出して言われても…。誤解されないかな?
my の何のベンチマークを行なったの?
ループ・ブロック内で変数を宣言して、そのオーバーヘッドを測っていた
なんて事はないよね?それとも、ホントに変数の参照・代入が3〜4倍もかかったりした?


148 :nobodyさん:03/04/09 10:12 ID:???.net
>>142
myのほうが遅いというのはちょっと信じがたいな。
ブロック外から参照される必要がないからシンボルテーブルにも
登録されないし、むしろ速くなるはずだが・・・

149 : ◆YHmsETNOS2 :03/04/10 04:22 ID:???.net
>>146
$html =<<'EOT'; を $html =<<"EOT"; でOKでした。

なお、ローカルで動かない件は、cgi-lib.pl へのパスが違っていたというアフォが原因。

150 :71:03/04/10 05:35 ID:???.net
>>149
シングルクオートよくやっちゃうんですよ〜(w
動いてよかったです

151 :nobodyさん:03/04/10 06:38 ID:???.net
cgi-bin.pl って
確か、CGI.pmがサポートしてたはず・・・
標準モジュールだよ。

use CGI qw(:cgi-bin);

152 :71:03/04/10 06:41 ID:???.net
>>151
自分で処理を書くもんでねぇ・・・

153 :nobodyさん:03/04/10 10:43 ID:ljl/7aqx.net
ベンチマーク取って見たけど…明らかに my を使った方が高速。
-w と use strict 外して my も何も付けない場合とか、
our も試して見たけど。速度的には my < our < local って順番だったよ。

#! perl -w
use strict;
use Benchmark qw(:all);
my $count = 100;
my $code1="my \$code=1;"; map{$code1 .= "\$code++;\n"}(1..$count);
my $code2="local \$code=1;"; map {$code2 .= "\$code++;\n"}(1..$count);

timethese(1000,{
'Lexical' => sub {eval $code1},
'Dinamic' => sub {eval $code2}
});

----
Benchmark: timing 1000 iterations of Dinamic, Lexical...
Dinamic: 11 wallclock secs (10.60 usr + 0.00 sys = 10.60 CPU) @ 94.34/s (n=1000)
Lexical: 2 wallclock secs ( 2.14 usr + 0.00 sys = 2.14 CPU) @ 467.29/s (n=1000)


154 :nobodyさん:03/04/10 13:31 ID:???.net
>>153
追試。

--- bench ---
use strict; use Benchmark;
my $loop = 5000;
my $code1 = 'my $code = 1;' . '$code++;' x 100;
my $code2 = 'local $code = 1;' . '$code++;' x 100;
timethese($loop, { '1_my' => sub { eval $code1 }, '2_local' => sub { eval $code2 } });
---

● ActivePerl Build 522 on Win98SE
Benchmark: timing 5000 iterations of 1_my, 2_local...
1_my: 4 wallclock secs ( 4.45 usr + 0.00 sys = 4.45 CPU)
Global symbol "$code" requires explicit package name at (eval 5005) line 1.
2_local: 8 wallclock secs ( 7.75 usr + 0.00 sys = 7.75 CPU)

● Perl 5.005_03 on FreeBSD 4.8R
Benchmark: timing 10000 iterations of 1_my, 2_local...
1_my: 6 wallclock secs ( 5.62 usr + 0.01 sys = 5.62 CPU)
Global symbol "$code" requires explicit package name at (eval 10005) line 1.
2_local: 11 wallclock secs (10.92 usr + 0.02 sys = 10.94 CPU)

● Perl 5.8.0 on FreeBSD 4.8R
Benchmark: timing 10000 iterations of 1_my, 2_local...
1_my: 4 wallclock secs ( 4.74 usr + 0.00 sys = 4.74 CPU) @ 2108.73/s (n=10000)
2_local: 18 wallclock secs (17.20 usr + 0.00 sys = 17.20 CPU) @ 581.55/s (n=10000)

155 :nobodyさん:03/04/10 18:05 ID:???.net
>>121

if ( ( my $aho = $query->param('hogehoge') ) eq 'hoge') {
 $a =~ s/a/b/;
 $nazoflag .= $a;
} else {
# $ahoは見える。
}
# $ahoは見えない。


while ( defined ( my $line = <IN> ) ) {
# $lineは見える
} continue {
# 見える
}
# 見えない

こういう場合のスコープについては、その制御構文の最後までに限定される。←あいまいだな…

156 :nobodyさん:03/04/10 18:08 ID:???.net
2行目が間違ってた。$aだとuse strictでエラーにならないから$ahoにしたんだけど、
これは、、sort用にこっそり、エラーにしないようになってるのかな。

追加、これはなかなか使える
foreach my $hoge (@list) {
}

157 :nobodyさん:03/04/10 18:36 ID:ljl/7aqx.net
>>155
質問。continue って何?

158 :nobodyさん:03/04/10 18:58 ID:???.net
man perlsyn

159 :nobodyさん:03/04/10 20:47 ID:???.net
”次のループに移る前に実行されるブロック”であってる?
こんな制御構文あったんだ。知らなかった。Thx >> 158

160 :nobodyさん:03/04/10 20:58 ID:???.net
うん。これは、nextとかを使うとき、行番号が確実に進むようにする、みたいに使う

161 : ◆MvRbZL6NeQ :03/04/11 00:23 ID:???.net
なるほど

162 :nobodyさん:03/04/11 00:36 ID:???.net
つまりはforの後処理か

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

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

なお、前回指摘された “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:???.net
>>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 ];
}
}
みたいな感じかになろうか・・・

165 :71:03/04/12 22:31 ID:???.net
>>164
if($n= 3){
だな、このデータの場合

166 :nobodyさん:03/04/12 22:53 ID:???.net
=なんですか?

167 :71:03/04/12 23:00 ID:???.net
>>166
==だね(汗

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

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

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

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

170 :71:03/04/13 04:47 ID:???.net
>>169
初耳じゃなくて、そういうソースを組んでたから
指摘したまでなんだけど・・・
ソースちゃんと理解出来てますか??(o_ _)o

171 : ◆YHmsETNOS2 :03/04/13 04:54 ID:???.net
>>170
> ソースちゃんと理解出来てますか
自分の>>163のソースは理解してまつ。
>>168さまのは、現在格闘中でつ。
苦戦しておりまつ。

172 :71:03/04/13 04:57 ID:???.net
>>171では、

foreach(@keys){
if($_->[$n] !~ /^\d*$/){
$num_flug =1;
last;
}
}
lココの部分がどういう処理をしてたか説明してみそ

173 : ◆YHmsETNOS2 :03/04/13 05:07 ID:???.net
foreach(@keys){  # @keysをforeachして

if($_->[$n] !~ /^\d*$/){ # $_の$n番目の値が数字ではなかったら、

$num_flug =1;  # $num_flugに1を入れまつ

last; # foreachのループ抜けまつ

}  #  ifを閉じまつ
}  #  foreachを閉じまつ

これでいいでつか?

174 : ◆YHmsETNOS2 :03/04/13 05:15 ID:???.net
sortの cmp と <=> のどちらでやるかのフラグを立てているところっていったほうが良かったんでつか?

175 : ◆YHmsETNOS2 :03/04/13 05:30 ID:???.net
>>168
修正できましたぁ〜!

$lastpage++ unless @Record % $Pageview;



$lastpage++ if @Record % $Pageview;

176 :nobodyさん:03/04/13 05:31 ID:???.net
俺敵には

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

から、どうして

>>170
>初耳じゃなくて、そういうソースを組んでたから
>指摘したまでなんだけど・・・

のようなレスが付くのか良く分かりません。
cmp使うのが初耳だったんでしょ?なんで「初耳じゃなくて」なんだろう?

177 :nobodyさん:03/04/13 05:32 ID:???.net
×cmp使うのが初耳だったんでしょ?
○cmp使うと遅くなるっていうのが初耳だったんでしょ?


178 :71:03/04/13 05:32 ID:???.net
>>173
つまり、該当データが文字列ばっかりだとループ終わるまで抜けない。
-> 次の処理にいくまで時間がかかるという事で cmp処理のときに時間がかかるという理屈。

179 :71:03/04/13 05:35 ID:???.net
>>176そのソース私の奴改造してるから聞いてみたのだけど変ですか?

ところで、ソース組んだんだけどどっかアップしやすい所無いかのぉ

180 : ◆YHmsETNOS2 :03/04/13 05:53 ID:???.net
>>178
あっ!
そういう意味だったんでつね。。。. (^^ゞ
んじゃ、メモを。。。消し消し. _□(. .。

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

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

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

182 :nobodyさん:03/04/13 06:09 ID:???.net
>>178
ああ、そういう意味か。てっきりcmpと<=>の違いを言ってるのかと思った。スマソ

183 : ◆YHmsETNOS2 :03/04/13 06:35 ID:???.net
>>181
改造さんくすでつ!
でも、穴が多いッスね。
次のページを押し続けれないし、
前のページが表示されないし、
順番が0-9の固定だし。。。
勉強のため漏れが修正したいと重い松が。。。

>>181さんの目から見て、>>168さんのソートは処理が重そうでつか?
>>168さんのソースは今まで漏れが出会ったことのない書き方だからちょっと苦戦しておりまつ。

おっと、>>168さんのソース、逆順ソートが出来ない。。。
あう〜
こちらも漏れが修正したいと重い松。

184 : ◆YHmsETNOS2 :03/04/13 06:51 ID:???.net
>>168
逆順ソートが出来ない件、修正しましたが。。。

$TableHeader .= qq|\t<th><a href="| . make_url(n => $_, action => 1) . qq|">$field{$_}</a></th>\n|
for sort { $a <=> $b } keys %field;



if ($Param{'rev'}){
$TableHeader .= qq|\t<th><a href="| . make_url(n => $_, action => 1,rev => 0) . qq|">$field{$_}</a></th>\n|
for sort { $a <=> $b } keys %field;
}else{
$TableHeader .= qq|\t<th><a href="| . make_url(n => $_, action => 1,rev => 1) . qq|">$field{$_}</a></th>\n|
for sort { $a <=> $b } keys %field;
}

っていうのにしましたが、もっと簡単になりまつか?

185 :71:03/04/13 06:58 ID:???.net
>>183
別にいい悪いはないと思いますけどね。
どんな記述も出来るのがperlですし・・・
自分が見やすければいいんじゃないでしょうか?

あと、自分的には不要な変数を極力使わないぐらいですか・・・

186 :nobodyさん:03/04/13 07:34 ID:???.net
>>184
なんだこりゃ?
$TableHeader .= qq|\t<th><a href="| . make_url(n => $_, action => 1,rev => ($Param{'rev'} ? 0 : 1)) . qq|">$field{$_}</a></th>\n|
for sort { $a <=> $b } keys %field;
だろ?

187 : ◆YHmsETNOS2 :03/04/13 07:57 ID:???.net
>>186
サンクス!
こういう書き方は初めてなんで、かなり苦戦しておりまつ。

188 :nobodyさん:03/04/13 16:20 ID:???.net
なんでこのスレでつまつが多いの
聞いてて疲れる

189 :nobodyさん:03/04/13 17:03 ID:???.net
poster は前田利家なのであろう。

190 :168:03/04/13 20:14 ID:???.net
>>183
直した。
http://boobar.hp.infoseek.co.jp/refactoring/test.0.0.2.txt

文法的に分からんトコは、駱駝本なり perldoc なり見てね。
「何でこういう処理が必要なのか分からない」ってトコは聞いて。

191 : ◆YHmsETNOS2 :03/04/14 04:43 ID:???.net
>>190
う〜、感涙!
実際、かなり省略した書き方なので、文法的にわかんないところばっかりでつ。
だからどんな処理をしているのかわかんなかったりして…(^^;

でも、がんばって自分で読み下して理解しまつ。
コメント文の多さに助かってまつ。
これからもご指導ご鞭撻のほどよろしくおながいしまつ。


>>188
あいた〜
苦情でつ!
このスレででつまつ使ってるのって漏れだけでつ〜
こういうの使ってみたい年頃なんでつ〜
(゙ `-´)/ ヤメレ! って言う声が多ければ考えまつ。

192 :nobodyさん:03/04/14 05:17 ID:???.net
まあほどほどにな。

193 : ◆YHmsETNOS2 :03/04/16 05:35 ID:???.net
>>190
漏れの思っている動作は、
各Info ボタンを押すと昇順にも降順にもなる。
この際順番(ここではOrder)昇順なら小さい方から1、降順なら大きい方から1がいいんでつ。
でも>>190様、直さないでくださいね。
漏れがやるんでつ。

あと。。。
my @Field = qw(Info1 Info2 Info3 Info4);
っていう所。

my @Field = qw{Info1 Info2 Info3 Info4};
my @Field = qw|Info1 Info2 Info3 Info4|;
my @Field = qw(Info1 Info2 Info3 Info4(;
my @Field = qw)Info1 Info2 Info3 Info4);
my @Field = qw(Info1 Info2 Info3 Info4);
my @Field = qw\Info1 Info2 Info3 Info4\;
なんでもいいんでつね。
勉強になりまつた。

でも、
my @Field = qw(Info1 Info2 Info3 Info4);
で良くて、
my @Field = qw)Info1 Info2 Info3 Info4(;
でダメなのは納得いかなかったりして。。。(汗)







194 :山崎渉:03/04/17 12:07 ID:???.net
(^^)

195 :マリモーマ ◆r6PDGT6Xd2 :03/04/18 17:28 ID:fPIUuruF.net
こんなの作ったけど どうよ?
http://ebrain21.com/~game/me/mai.cgi

196 :nobodyさん:03/04/18 17:33 ID:???.net
>>195
Internal Server Error が出たぞ

197 :nobodyさん:03/04/18 17:35 ID:BrkP32Ds.net
一度ゴールすると次回からアクセスするたびに(ry

198 :マリモーマ ◆r6PDGT6Xd2 :03/04/18 19:34 ID:fPIUuruF.net
なんでだろうね 誰か直してよ(藁)

199 :nobodyさん:03/04/18 21:18 ID:???.net
マリモーマ、、リア厨かと思ってたらもっと年取ってた。爆

200 :マリモーマ ◆r6PDGT6Xd2 :03/04/19 13:29 ID:kAGW5QYq.net
若いのは年齢だけだよ もう体がたがた そろそろプログラムも
できなくなるかも?

201 :nobodyさん:03/04/20 00:47 ID:???.net
もーちょっとデザインなんとかならんのかね・・・
掲示板、見にく(ry


202 :nobodyさん:03/04/20 04:29 ID:???.net
でも俺より若い


203 :山崎渉:03/04/20 05:59 ID:???.net
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

204 :マリモーマ ◆r6PDGT6Xd2 :03/04/20 10:12 ID:xM5Zwmt0.net
>>201
∧_∧
(  ^^ )<じゃ どうすればいい?(^^)

205 :nobodyさん:03/04/20 12:05 ID:???.net
>>204
なんとかすればいい

206 :nobodyさん:03/04/20 12:21 ID:???.net
>>205
ワロタ

207 :マリモーマ ◆r6PDGT6Xd2 :03/04/20 15:05 ID:xM5Zwmt0.net
>>205
(O_O) うう〜〜 わからないよ

208 :nobodyさん:03/04/20 16:04 ID:???.net
しねや

209 :nobodyさん:03/04/21 09:41 ID:???.net
>>207
・・・・とりあえず、他の掲示板とか見て回れ。
他の掲示板とか見たことあるだろ?
無駄なテーブル使いすぎ。
もっと、シンプルでいいと思うが・・・
それと、掲示板CGIの吐いてるHTML見たが・・・
HTML、間違ってないか???
改行ナシの、汚いHTMLでちゃんと読めんかったが・・・。
もうひとつ。
ひとつDLさせてもらってソース見たが・・・
謎な関数の名前ばかり。
関数作る悪い例として、そのまま本とかで出てきそうなのばかり。
後から拡張とかする時、関数の名前見ただけで、
どんな処理してくれる物か、判別できなくなる。

・・・と、いろいろつっこむ所多いが・・・
物自体は、結構良い物だと思う。
・・・たぶん。・・・きっと。 ・・・かもしれない。 ・・・だといいな。


210 :マリモーマ ◆r6PDGT6Xd2 :03/04/21 17:08 ID:CNsFsGAe.net
>>209
なるほど 参考にするよ ありがとう

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

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

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


212 :bloom:03/04/24 04:29 ID:vV02vP1k.net
http://homepage.mac.com/ayaya16/

213 :マリモーマ ◆r6PDGT6Xd2 :03/04/24 05:40 ID:0xA64jQF.net
>>211
コメントが 笑った  あと 抜いた行の 下の行を 上げたほうがいいかも

214 :マリモーマ ◆r6PDGT6Xd2 :03/04/24 05:49 ID:0xA64jQF.net
あ やっぱり 「抜いた行の下を上げますか」と 聞いてきた方が
いいかな?

215 :nobodyさん:03/04/24 05:53 ID:x2ip/9xn.net
http://homepage3.nifty.com/coco-nut/

216 :動画直リン:03/04/24 06:29 ID:vV02vP1k.net
http://homepage.mac.com/hitomi18/

217 :211:03/04/24 07:25 ID:???.net
>>213
>>214
ご感想、ありがとうございます。
そういう事で、少し改造してみました。
改行を消すかどうか、質問されるようになりました。

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

もし、どなたでも改造したら、できればアップしてくださいね。


218 :211:03/04/24 07:49 ID:???.net
・・・と、言う訳で、またバグを見つけました・・・
HTML出力してて、色指定で#を使ってたら、それ以降が削られてました。。。

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

・・・今度こそ・・・


219 :bloom:03/04/24 08:29 ID:vV02vP1k.net
http://homepage.mac.com/ayaya16/

220 :nobodyさん:03/04/24 10:23 ID:???.net
分かち書き、変

221 :マリモーマ ◆r6PDGT6Xd2 :03/04/24 16:32 ID:0xA64jQF.net
$a =~ s/#//g; としたら 消えた まあ これは実行したら エラーが出ると思うけど

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

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

224 :223:03/04/24 16:52 ID:???.net
書いてから211の試したんだが
漏れの書いたスクリプトでは
誤作動しまくりだ
$hoge = '#000000';#hogehoge-
こういうのが
$hoge = '
になってるよ

225 :223:03/04/24 16:53 ID:???.net
漏れの書いたスクリプトを 211ので処理すると
ってことね

226 :211:03/04/24 17:06 ID:???.net
>>222
このコメント削除スクリプトは・・・
PerlでCGIをつくって、サーバに上げる時、
ソース内のコメント部分のファイルサイズが無駄なので作りました。
ちなみに、俺のCGIファイルで、23kあったのが、16kにまで落ちました。
自分のパソコン内で走らせるスクリプトなどについては・・・
コメント削除するメリットはありません。

>>225
どもども。
そう、後から気付いたんです。
シングルクォートで囲まれた#まで削ってしまうって・・・
これと言って、手がってもらえないので、自分のだけ修正してアップしてませんでした(ワラ

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

これでどうです?
また一歩まともに近づいてるはずです。
>>223のソース、見せてもらいますね。

227 :223:03/04/24 17:11 ID:???.net
>>222
意味は無いよ
コンパイル速度も変わらんしね
ただimgboard.cgiとかむかつくようなコメントが
たくさん載ってるやつには有効だ(ぷ
210KB→160KBになったよ
まぁ漏れ的には容量はどうでもいいが
うざすぎるコメント消すのが面白そうだったからなw

228 :223:03/04/24 17:13 ID:???.net
>>226
それをimgboard.cgiで試したんだが
コンパイルエラーするよ
容量的には漏れより小さくなってるんだが
余計なところまで消しすぎでは?


229 :211:03/04/24 17:21 ID:???.net
>>228
マジっすか!
なに消してるんだろ・・・
消しちゃいけない所、特定できません?
imgboard.cgiですか・・・
探してDLして、ためしてみます。

ちなみに、>>223の削除スクリプト試させてもらいました。
先頭にタブとかがあってのコメントは削除されない仕様ですね。
俺のは、とにかくコメントだと思われるような所は、すべて排除していく仕様なので・・・
失敗したら、文法エラーとかコンパイルエラーとか出ます。
って事で、どこで削除されたらいけない所が削除されてるのか調べてみます。
ありがとうございます。

230 :223:03/04/24 17:51 ID:???.net
ttp://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1005.zip
一箇所だけ修正
まぁ 文法一切見て無いので
バグいろいろあるんだが
直す気もないので
終了。
製作時間2分+30秒ですた。

imgboardはimgboard.cgiでぐぐると一番上にでてくるよ

231 :223:03/04/24 17:53 ID:???.net
>>229
先頭にタブがあっても消えるはずだが
\t\t$hoge = 'hoge';#これはほげです

\t\t$hoge = 'hoge';
になるだけ 先頭のスペースやタブは削除しないってこと
7行プログラミングするわけでも無いしね

232 :nobodyさん:03/04/24 18:00 ID:???.net
確かにimgboardのコメントはなんか
むかつくところがあるな

233 :211:03/04/24 18:03 ID:???.net
と、一応バグを見つけました。
imgboardは、作者が旅行中(?)らしく、DLできませんでした・・・
違う貼り付け掲示板で、コメント削除するとエラーが出たので、
そこからバグを辿ってみました。

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

今度こそ・・・いけるはず。たぶん。


234 :71:03/04/24 18:03 ID:???.net
ちーと気になったんだが・・・
ヒアドキュメントとか、変数内の#なんかはちゃんと排他処理するようになっとるんだろうか・・・

235 :223:03/04/24 18:08 ID:???.net
>>233
まだ駄目だね
ttp://www.big.or.jp/~talk/t-club/soft/mini_r6/index.cgi
ほれ コメント見ると面白いと思うぞ

>>234
ヒアドキュメント検知したら
そのなかは一切いじらないようにしてるけど
実際にはどうなるかは知らない。

一応漏れのは上記のimgboard.cgiのコメント
あぼーんするのに成功したが(ワラ

236 :223:03/04/24 18:10 ID:???.net
まぁ 3分スクリプトなんで
あのimgboard.cgiのコメント無くなっただけでも
満足だ

まぁマジレスするのなら
秀丸やEmediterなら
そういうマクロ誰かが作ってるんじゃ無い?

237 :223:03/04/24 18:21 ID:???.net
(;´Д`)あ 漏れのだめじゃん
頭のむかつくコメント集は消えてるけど
スクリプト内で消えて無いところが
部分部分である
211よがんばってくれ

238 :nobodyさん:03/04/24 18:25 ID:???.net
俺、思うんだけどよ。
「コメントを消す」んじゃなくて「コメント以外を残す」って発想はどうよ?
これならヒアドキュメントや文字列中の#なども簡単に対応できそうだが。

239 :223:03/04/24 18:29 ID:???.net
>>238
それは難しすぎ
Perlの構文全て判定しないとだめだ

ちなみに漏れの場合は
コメントを消すんじゃなくて
普通の構文らしきものがある場合は
それを残すようにしてる

240 :211:03/04/24 18:36 ID:???.net
>>235
ttp://www.big.or.jp/~talk/t-club/soft/mini_r6/index.cgi

ここへ行くと、403で工事現場にいてるような、
おやっさんがお辞儀してる絵が出るのは俺だけですか?

俺がもってる貼り付け掲示板では、正常に動いてるんだけど・・・
やっぱ、imgboard.cgiのソースがないと、無理っぽいですよ・・・

ちなみに、ヒアドキュメント内は・・・
びしばし、コメント文(#から始まる文字)を探してます。
でも、HTMLとかの色指定の#は削られません。
・・・が、普通の文章内で#使われてたら削っちゃうかも・・・

ヒアドキュメントを感知&スキップの処理を組んでみます。


241 :223:03/04/24 18:43 ID:???.net
>>240
チミだけ
漏れにはどうするアイフルの広告が見える
変なソフトいれてるのなら切って見るとか
ttp://www.big.or.jp/~talk/t-club/soft/mini_r6/imgboard122r6.zip
一応アーカイブ

ttp://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1007.zip
さっきの残しておくのはあまりにも恥ずかしいんで
修正しておいた
上記のimgboard.cgiなら全てのコメントが無くなった模様
正常に動いてるよん

242 :211:03/04/24 18:49 ID:???.net
>>241
ぐあ!
初めて行くサイトで、アク禁くらってました!
串さしたら、行けた・・・

なんだー!
俺と同じプロバの人間が悪さしてるのかぁ〜???
・・と、とにかく無事にソースをゲットできたようなので、
調べてみます。

ソースも、見せてもらいますね。
ありがとうございました。


243 :223:03/04/24 18:52 ID:???.net
スマソ さらに修正
"<<(.+)" -> <<"(.+)"
'<<(.+)' -> <<'(.+)'
もうだめぽ
ttp://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1008.zip


244 :223:03/04/24 19:04 ID:???.net
バグとしては
print <<HTML;
とかやられた場合に処理がおかしくなる・・・
"HTML" 'HTML'はOK
もういいや 飽きたw

245 :nobodyさん:03/04/24 19:11 ID:???.net
>>244
飽きるのは速っ

246 :nobodyさん:03/04/24 20:06 ID:???.net
こんな状態なら、手作業でコメント文を削った方が速いし確実だといってみるテスト

247 :&rlo;トステるみてっ煽と&lro;:03/04/24 20:35 ID:???.net
>>246
君が作るスクリプトならそれで十分だね

248 :211:03/04/24 21:07 ID:???.net
ちょっと改造してみました・・・

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

imgboard.cgiで、エラーは出なくなりました。
・・・文法エラーはね。
実際に動かしてはないです。
また、所々コメントを排除できてない所があります・・・
この辺は、もーすこし改造してみようかと。

>>223
コメント削除フィルタ処理部分を改造して・・・正規表現、頭痛い。。。


249 :nobodyさん:03/04/25 03:18 ID:???.net
POD (Plain Old Document) には対応しないの?

250 :211:03/04/25 06:05 ID:???.net
たぶん、これで完璧にコメントが削除されると思う・・・
勝手に、>>223のコメント削除ルーチンを改造して使わせてもらってます(w
オリジナルのままだと、完璧には削除されない場合があったので・・・
一部、改造させてもらいました。

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

>>223
「おいおい、勝手に使わないでくれ」って時は削除しますので、
言ってください。

>>249
PODってなに?


251 :動画直リン:03/04/25 06:29 ID:pCM0Odok.net
http://homepage.mac.com/hitomi18/

252 :nobodyさん:03/04/25 12:15 ID:???.net
>>250
知らない言葉が出てきたら調べようよ。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlpod.html
実例はお手元のモジュール群をご覧下さい。;-)

253 :nobodyさん:03/04/25 15:21 ID:???.net
>>250
思い付きで書いただけだから
別にどうでもいいよw

254 :nobodyさん:03/04/25 17:43 ID:???.net
DQN降臨?

255 :nobodyさん:03/04/27 08:10 ID:???.net
保守

256 :nobodyさん:03/04/29 06:39 ID:???.net
ほっしゅ

257 :nobodyさん:03/04/30 00:13 ID:???.net
保守!
誰か、有能なスクリプト組んでくれ。

258 :nobodyさん :03/04/30 01:33 ID:???.net
いいスクリプトは評価してもらう必要が無かったりする

259 :山崎渉 :03/05/10 16:15 ID:???.net
   ∧_∧
  (  ^^ )< ぬるぽ(^^)




260 :nobodyさん:03/05/10 23:04 ID:???.net
このスクリプトすごい。感動した。
ttp://sh.sakura.ne.jp/~obj/vector/toys/#sb

261 :nobodyさん:03/05/19 20:36 ID:GoudX7FZ.net
age

262 :nobodyさん:03/05/21 19:41 ID:???.net
亀レスだけれども。
>>211
コメント解除スクリプト、B::Deparse 使っちゃだめなのかな。
$ perl -MO=Deparse foo.pl

263 :山崎渉:03/05/22 01:59 ID:???.net
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

264 :nobodyさん:03/05/25 01:28 ID:wMw6QnJf.net
age

265 :nobodyさん:03/05/25 22:00 ID:mSA7mvhe.net
自作新着情報cgiを作ったんだけど
評価して!
http://fine.tok2.com/home/moritomo/cgi/board.cgi?s_admin=defult
http://fine.tok2.com/home/moritomo/board.zip

携帯で見れるようにしたいんだけどどうしても文字化けしちゃうんだよね


266 :nobodyさん:03/05/26 10:01 ID:???.net
えー。
単刀直入に言うとなぜか解凍できない。
俺のアプリケーションに異常が起きたのか、そのファイルが変なのかは知らん。
めんどうなので調べない。

267 :nobodyさん:03/05/26 10:35 ID:???.net
>>265
通報したぞ
解凍するとGBになるファイル1個入りの(ry

268 :nobodyさん:03/05/26 21:20 ID:ksmYkwRm.net
>>265
今度は正常にダウンロードできます。
ソースは汚いです。


269 :nobodyさん:03/05/27 00:10 ID:???.net
評価終了

270 :nobodyさん:03/05/27 00:14 ID:???.net
>>265のアカもまもなく終了

271 :nobodyさん:03/05/27 23:15 ID:???.net
>>265
吐き気がする。

272 :nobodyさん:03/05/28 04:00 ID:???.net
>>265
DLできねー!

273 :山崎渉:03/05/28 17:05 ID:???.net
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

274 :nobodyさん:03/05/28 18:04 ID:???.net
age


275 :nobodyさん:03/05/28 18:04 ID:???.net
>>274
間違った・・・sageてるよ・・

276 :nobodyさん:03/05/28 23:02 ID:AHryRdpH.net
おまえらこのチャットはどうですか?
http://test.thebbs.jp/kappa.html

277 :bloom:03/05/28 23:10 ID:52+C0e9R.net
http://homepage.mac.com/ayaya16/

278 :nobodyさん:03/05/29 00:59 ID:???.net
C?
割とさくさく動くね。
HTMLはもうちょっとなんとかしてほしい。

279 :nobodyさん:03/06/01 18:08 ID:k+3UFbse.net
今度は大丈夫!!!!
評価して!
http://fine.tok2.com/home/moritomo/cgi/board.cgi?s_admin=defult
http://fine.tok2.com/home/moritomo/board.zip
http://fine.tok2.com/home/moritomo/cgi/chat/chat.cgi

280 :nobodyさん:03/06/01 19:34 ID:???.net
>>279
あなたはまずこれを読んでコードを修正。
http://www.harukaze.net/~mishima/perl/man/perlstyle.1.html

次に #!/usr/bin/perl の次の行に use strict; を追加し、
perl -wc board.cgi 等としてエラーが出なくなるまで修正。

評価するのはその後だ。

281 :nobodyさん:03/06/01 20:36 ID:???.net
まあHTMLのLintみたいなもんだな。
文法を正確にするのは最低限のラインだ。

282 :nobodyさん:03/06/01 23:56 ID:???.net
あれ?>>279のアカまだ削除されてないな
もっかい通報してやるか

283 :nobodyさん:03/06/02 07:27 ID:???.net
>>279
では、一言。
GET情報でパスワードを入力するのは、
セキュリティ面に問題がある。


284 : :03/06/02 16:43 ID:???.net
>>279
iframeの表示が「他のブラウザ」じゃ全く駄目。


285 :ここの4ではない4:03/06/02 17:48 ID:ltjk47zK.net
帰ってきました。よければ批判お願い致します。
(得に使いやすさについて)
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

286 :ここの4ではない4 ◆T98LkrO.aM :03/06/02 17:48 ID:ltjk47zK.net
トリップ

287 :ここの4ではない4 ◆T98LkrO.aM :03/06/02 17:51 ID:???.net
コメント修正していないので違うことをしているかもしれません..

288 :nobodyさん:03/06/02 18:26 ID:???.net
>>285
全然読んでないけど、インデントで空白とTABを使い分けられると
結構困る。
漏れはいつも4TABだから、8TAB & 4インデントだとずれる。
インデントを全部TABにしとくと、TAB幅に依存しなくていいよ。

289 :ここの4ではない4 ◆T98LkrO.aM :03/06/02 19:09 ID:???.net
んん、、EmacsだとTABがスペースになるのですが..
これはエディタの仕様だと思うので勘弁してください。

一応、設定で変えれるかもしれないので調べてみます。

290 :ここの4ではない4 ◆T98LkrO.aM :03/06/02 19:22 ID:???.net
---------------------
#!/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

一時凌ぎで..

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

292 :288:03/06/02 20:37 ID:???.net
>>290
いや、変換方法はどうでも良くて。
8 TAB 依存のコードを見せられた時に「('A`)マンドクセ」と
思ってそこで読むの止めちゃうから、大袈裟に言えば
「機会損失」になってるよ、と。

スクリプトができるだけ多くのプラットフォームで正常に
動くよう、環境依存の部分を減らしていくのと同様に、
スクリプトを読む人の「環境」にも配慮してくれていると
好印象になるって事で。

293 :_:03/06/02 20:48 ID:???.net
http://homepage.mac.com/hiroyuki43/hankaku/hankaku07.html

294 :ここの4ではない4 ◆T98LkrO.aM :03/06/02 20:48 ID:???.net
>>288さん
そうですね。
自分も、いきなりスペースやTABが消えたコードを掲示板に書かれて
どこがおかしいですか ?
と、言われるともっと見やすく示せ! と内心思ってしまいます。
TAB、気をつけてみます。

295 :nobodyさん:03/06/02 20:54 ID:7BfzX4MI.net
よろ♪
http://www1.free-city.net/home/s-rf9/page006.html

296 :ここの4ではない4 ◆T98LkrO.aM :03/06/02 21:15 ID:???.net
取りあえず、全部スペースにしておきました。
元々、サブルーチンの少ない読みにくいものだったのに申し訳ありません。

297 :ここの4ではない4 ◆T98LkrO.aM :03/06/02 21:58 ID:???.net
>>291さん
いいと思いますよ。
きちんと機能毎に処理を分けているし。

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

299 :nobodyさん:03/06/02 22:25 ID:???.net
>>298
ぐはぁ!ショック・・・。
精進してからまた来ます。

300 :291=299=300:03/06/02 22:26 ID:???.net
>>299
自己レス。
291=299=300です。

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

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


302 :nobodyさん:03/06/03 12:55 ID:???.net
>>301
>2、スペース2個じゃなく、タブ使っとけ。
だけおかしい。
タブを使うと4TAB<->8TABの違いでずれるから空白(個数は問わないが普通4個)で。

303 :nobodyさん:03/06/03 13:01 ID:???.net
何を言っとるんだ? >>288を読め

304 :nobodyさん:03/06/03 13:17 ID:???.net
>>303
「TABだけ」ならいいんだがな。空白と混じってるとおかしくなる。
いちいちTABだけなのを確認するより最初から空白だけの方がいいだろ。
TABなんて今時ディスクの節約にもならん。

どっちにしろ(例えば)SUNもMOZDEVもタブ不使用規約になってんだから
合わせた方がいいんでないかい?

305 :nobodyさん:03/06/03 13:20 ID:???.net
間違えた。SUNは推奨してるだけだった。以下引用
>インデントの単位として,4個分の半角スペースを推奨する.
>そのインデントが実際に半角スペースによって行われるかタブによって行われるかについては,これを規定しない.
>タブはすべて(4個ではなく)8個分の半角スペースでなければならない.
eclipseだったかな。曖昧記憶でスマソ

306 :298:03/06/03 14:58 ID:???.net
自分が思ったのは
「CGIスクリプトしか書いたことない人にありがちなソースだな。」
ってこと。
リファクタリングとか色々なことを勉強してみては?

307 :301:03/06/03 15:12 ID:???.net
>>302
タブは、インデント以外に使ってないから、
どんなタブ幅でもずれてないはずだけど・・・
ずれてる???


308 :291:03/06/03 19:31 ID:???.net
291です。評価ありがとうございます。

>>301さん
わざわざ直してくださって、本当にありがとうございます!
指摘されたのに気をつけて書き直してから、また評価をお願いしに来ます。
でも、もう…直せるところが無いかもしれませんが(汗)

>>306さん
そのとうりです。自分でCGIを作ってみたくなったので、perlを勉強しだしました。
色々なことを勉強するのもいいですけど、虻蜂取らずにはなりたくないので…。

309 :nobodyさん:03/06/04 00:00 ID:???.net
>>285
ソース、今見てるけど・・・
えらくコメントの少ない・・・って言うか、コメントの無いソースだな・・・
わざと、コメント消したの?
それとも、素でこれ?

素でコメント無いなら、コメント入れていった方が良いと思う。


310 :nobodyさん:03/06/04 10:29 ID:???.net
>>309
これ以上コメント書かれたら、読みづらくないですか?
と、素な意見。


311 :nobodyさん:03/06/04 10:41 ID:???.net
>>310
う〜ん、本体(?)の方はコメントあるけど、
モジュールの方にコメントがないかな。


312 :385 ◆T98LkrO.aM :03/06/04 12:48 ID:???.net
>>309さん
基本的にコメントを一切書かないのです。
ただ、配布とか考えると書いた方がいいかなと思って、今回はちょっと書いてみました。
やっぱ少ないですかね..

313 :385 ◆T98LkrO.aM :03/06/04 12:52 ID:???.net
別にコメント書かないとかいう変なこだわりがあるわけじゃなくて、
ただ、自分はコメントなくてもすぐ分かるので人に見せる予定がないものに
コメント書かなくてもいいかなと..今は勉強中ということですし。
ただ、今回は見てもらおうとここに載せたわけなので、
モジュールの方にもコメントを書くべきだったと思いました..すみません。


314 :285 ◆T98LkrO.aM :03/06/04 12:54 ID:???.net
うお、385じゃなくて、285でした。

315 :nobodyさん:03/06/04 13:20 ID:???.net
「未来の自分は他人です」という言葉を贈っておこう。

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


317 :285 ◆T98LkrO.aM :03/06/04 14:59 ID:???.net
>>315, >>316なるほど.
自分は今、就職希望の会社からCのソース(50-500行,10枚くらい)を渡されて、
この説明を書いてこいとか言われているのですが、コメントなくても
関数名, 変数名が分かりやすいし、うまい具合にサブルーチンに分けてあるので
コメント少ないですが、かなり読みやすいと思いました。
まあ、漏れのはコメントないと読みにくいかもしれませんが..
自分で見ても読みにくいな、と思ったらコメントでカバーするようにしてみます。

318 :301:03/06/04 19:23 ID:???.net
>>316
# ■■■ 俺の意見 ■■■
俺は、とにかくコメント入れるのに賛成派。
ルーチンの名前とか、変数の名前に意味を持たすのは当たり前だけど、
コメントあれば、コメントだけ読めば、何の処理してるのかわかるし。

# ■■■ ブロック毎にコメントを入れる ■■■
ブレスで囲って無くても、処理の単体が生まれる。
それ毎に、コメントを入れておけば、一行のコメント読めば数行理解できる。

# ■■■ ルーチンの使い方のコメントは重要! ■■■
とくに、ルーチンの使い方のコメント。
絶対後から見て助かる。
いくつ、どんな引数を取って、どんな処理してくれて、どんな値をどんな形で返してくれる。
そんなコメントがあれば、一発でそのルーチンの内容がわかるでしょ。

# ■■■ 最後に・・・ ■■■
↑どう?
こんな感じでコメント入れる訳よ。
全部の行読まなくても、#で始る一行読めば、
俺が、なにについて書き込みしてるか分かるでしょ。
これを、プログラムでも実践してる。
それと、空行無しに書き込みしてると読む気失せるでしょ。


319 :301:03/06/04 19:40 ID:???.net
そうそう、掲示板の書き込みでも、
結構その人のセンスが出る。
変な所で改行してる人や、
長文なのに空白行入れず、
だらだらとメリハリの無い書き込みする人とか。

そういう人って、プログラムも汚いんだよね・・・


320 :285 ◆T98LkrO.aM :03/06/04 20:33 ID:???.net
はい、たしかに後で読む人がいるとすれば、
コメントは書いたほうがいいですね。
読む側と見るとありがたいものなので、自分でも書くようにします。

コメントが無いために間違った認識を受けたり、
重要な処理を 「これいらねぇんじゃね?」
とか思われて消されること減るはずだし。

321 :316:03/06/04 21:21 ID:???.net
>>318さん
自分が言いたいのは
「コメントを書くな」
ではなく
「コメントが無くてもわかるようなキレイな設計を心がけよう」
ってことです。

コメント関係ならプログラム技術板のこっちのスレのほうがいいかも。
http://pc2.2ch.net/test/read.cgi/tech/1038414493/



322 :301:03/06/04 22:35 ID:???.net
>>321
スレタイにワラタ

いや、もう終わってるっぽいスレなので、
もういいかな〜っと。

とにかく、コメントは思うように入れまくってみたら良いと思う。
そうしてる内に、どういう風にコメント書いたら分かりやすいとか、
こういうコメントは無駄だとか、分かってくるだろうし。

前に、冗談だろうけど・・・

$hoge++; #1を増加

・・・こんなコメントを見た事がある。
こんなの、明らかに無駄。(w
ただ、なぜ1を増やすかって事についてのコメントなら・・・
それは、意味を成すかもしれない。

実は、俺も無駄なコメントが多いんだよね・・・
ぜんぜんプログラムとは関係ないようなコメントとかある。
そういうのって、俺的に後から見たら面白かったり。
もちろん、人に見せる時は、そんなコメントは消すけどね。


323 :nobodyさん:03/06/05 04:44 ID:???.net
OO なコード書いて POD 埋め込むようになってから
普通のコメントがかなり減った。スクリプトとドキュメント
同時に作るのは効率いいしオススメ。

324 :nobodyさん:03/06/05 06:18 ID:t1krGQgT.net
http://marugo.s15.xrea.com/
掲示板のCGIです。
言語はPerl

325 :nobodyさん:03/06/05 12:01 ID:???.net
>>324
>>280

326 :nobodyさん:03/06/09 21:44 ID:JSBfbdyK.net
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1032435179_5/hoge.zip

むかしいじってたやつ、もう要らないから使えると思った香具師
勝手に使ってくれ。コメント皆無だけどね。

でも最後に軽く評価を聞きたいけどな。

327 :nobodyさん:03/06/09 21:59 ID:???.net
>>326
あぁ。今見直したら俺が書いたやつじゃないものが入っていた・・・
Text::WordIteratorとか。。。
あーあ。まぁ、いいや。

328 :大塚裕司:03/06/09 23:17 ID:4isQpEIX.net
http://elife.fam.cx/a001/

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

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

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

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


330 :_:03/06/12 03:03 ID:???.net
http://homepage.mac.com/hiroyuki44/hankaku02.html

331 :nobodyさん:03/06/12 06:40 ID:???.net
>>329
>深さは、どんなに深いサブディレクトリでも処理可能です。

当方にはそのスタックをあふれさせる準備があるが良いのか?



332 :211:03/06/12 06:59 ID:???.net
>>331
う〜ん。
スタックを溢れさせる準備があるって意味がわからんです・・・。

とにかく、かなり深いディレクトリでもOKなはず。
だって、Cのルートディレクトリから検索とか掛けてみたから。
とりあえず、試してみそ〜。


333 :nobodyさん:03/06/12 07:54 ID:s13jgVVf.net
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%

334 :nobodyさん:03/06/12 10:27 ID:???.net
>>332
ソースは見てないが、再帰的な処理をしてるのにスタックについて知らないというのは
ちょっとヤバくないか?


335 :nobodyさん:03/06/12 12:02 ID:I623aSMv.net
まあまあ、知らなくても書けるてことで。

336 :211:03/06/12 14:17 ID:???.net
>>334
再帰?
自分の中で自分を呼ぶアレ?
・・・いや、普通にwhile文とかでブン回してるだけだが・・・

ディレクトリ検索のアルゴリズム考えるの、
実はちょっと大変だったんだよね・・・
ひさびさに、フローチャートとか書いたもん。(w
ちなみに、見てもらったら分かるけど、
メモリの使用も最小限に抑えてるし。

>>335
そうみたいね・・・書けちゃったから・・・。


337 :nobodyさん:03/06/12 18:19 ID:???.net
whileでブン回しておいてメモリは最小限とはこれいかに。

338 :nobodyさん:03/06/12 21:33 ID:???.net
>>336
確かにWhileで再帰のまねごとは出来る。
でも、どっちにしろスタック的なデータ構造がないと困るはずだけれど。

339 :nobodyさん:03/06/12 22:33 ID:???.net
>>329
キモの部分 (Library_223.pm) 以外を書き換えてみた。
http://boobar.hp.infoseek.co.jp/refactoring/commentoff.pl.txt

…まぁ、なんつか、もっと色々な人の話に耳を傾けて
もっと上を目指して下され。今のレベルで固まられたら
正直痛すぎる。

漏れも人の事言えんけどなー。

340 :211:03/06/13 01:55 ID:???.net
>>337
簡単な話。
while文で、ブン回しながら、必要なデータか調べる。
必要なデータなら、ファイルへスワップ。
必要じゃなかったら、次のループで上書き。
つまり、メモリにデータを蓄えないようにしてる。
一通り調べ終わったら、次のステップでスワップしたファイルから
データ読み出しって感じ。

>>338
そのスタックってのがよく分かてないんで・・・
どんなデータ構造なのか分からないけど・・・
再帰処理は、一切使ってない、ただループさせてる処理をしてるよ。
DirTree.pmってファイルがディレクトリを走り回る処理部分だから。
一度、覗いてみてくださいませ。


341 :211:03/06/13 01:55 ID:???.net
>>339
ソース見せてもらいました。
再帰処理使ってるね。

こんな事言っても仕方ないし、
プログラム打つ人間としては失格かもしれないけど、
再帰処理って嫌いなんだよね。
逐次処理&反復処理だけで、すべてをこなせると思ってる。
いままでで、再帰処理を行わないといけない場面ってなかったし。
まぁ、ヘッポコな俺だから、
まだそんな場面に出くわしてないだけかもしれないけど。
それに、再帰処理に出くわすと、ソース読むのが大変。
俺的にね。
と、まぁこれは俺の哲学。

それと、これはD&Dに対応してないね。
それと、処理中&処理後のログが少ない。
この辺でも、俺と嗜好が違うね。
俺のは、そういうログがないと固まってるようでイヤだから。
結構うるさいソースになってる。

と、「正直痛すぎる」とかって言われたので、
ちょっと反抗してみました。(w

正直な感想は、無駄のないスッキリ仕上げなソースだと思います。
それと、俺の知らない組み込み関数とか使ってる。
もうちょっと、俺も勉強しないとね。

改造とかしてくれる人少なくってさ・・・
ソースみて勉強させてもらいます。
ありがとうございました。

342 :223:03/06/13 03:29 ID:???.net
久しぶりに覗いてみたら まだやってたのねご苦労さんw
実はあと風呂に入ってたらフィルターバグまだいくつかあるのを
気づいちゃったんだよね…

漏れ的ソースの書き方ならアレで問題ないんだけど
世の中には漏れの想像もできない書き方する人がいるんで

343 :nobodyさん:03/06/13 14:25 ID:???.net
ネタだろ?
ネタと言ってくれよ!痛すぎるよ!

344 :nobodyさん:03/06/13 21:35 ID:???.net
傑作にケチつけられて熱くなっちゃいました。

DirTree.pm直してやるから待っててな。

345 :nobodyさん:03/06/13 21:56 ID:???.net
あ。再帰処理しか考えられない…止めよう。

今のやり方で、明らかにおかしい所は、ループ内で$tmpPathListを開いて閉じてる所。
ファイルハンドルが勿体無い。

それから、少し変な所で、メモリ使用量にこだわっている割には、readdirを
リストコンテキストで呼んでる点。一つずつ調べればいいのに。

それから、趣味の問題だけど、変なインデントが気持ち悪い。スコープを分けたい(?)なら
ブロックを作ればいいし。

あと、無駄な括弧。
if ( ($_ eq '.') || ($_ eq '..') ) { next; }
こことか強烈なんだけど…このままでも条件の中身の括弧は無くてもいいんだけど、
十分に優先度が低いorを使えば、心配しなくてもいい。それに大括弧のインデントも変。

@filelistのスコープも変。とにかく変数は使用直前に宣言した方が楽。

それから、$countはハッシュのリファレンスにする価値は無い。普通のハッシュで十分。

346 :nobodyさん:03/06/13 22:59 ID:???.net
>>345
ごちゃごちゃ言う前に書き直してそれがより美しいことを証明すればどうだ?

347 :211:03/06/14 08:19 ID:???.net
>>342
うーん、忘れた頃に、またやってます(w
そうそう、コメント削除のバグ。
俺も、2つほど気付いてました。
しかし、俺的に今の所実害がないので放置中。。。
今度、直してみます。


348 :211:03/06/14 08:19 ID:???.net
>>345
スクリプト自体は、すごくスッキリしてて、
本当、無駄がないと思います。
大半の人は、俺のスクリプトより>>339のスクリプトを好むかと・・・

俺の言ってる事は、ヘッポコの戯言だと聞き流してください。

指摘された部分。
ループ内でファイルを開いたり閉じたりしてる部分。
メモリ使用量最小限とか言ってるのに、
ディレクトリ内のファイル名を一発で取得してる部分。
この2つは・・・
言い返す言葉がないです(w
ファイルは、ループ前に開いて、ループが終わったら閉じるように変更。
ファイル名取得も、一つづつに変更してみました。

$countのハッシュリファレンスを使ってる。
これについては・・・
戻り値は、今後の改良などで値が大きくなるかもしれない・・・
という理由から、俺が作るルーチンのほとんどはリファレンスが返ってきます。
しかし、ルーチン内でリファレンス使ってるのは意味ないですね。
と、言うことでルーチン内は普通にハッシュを使うように変更。
戻り値はリファレンスだけど・・・

インデントが変。
orを使わず、||を使って括弧の多様。
変数宣言は、使用直前に宣言した方が楽。
これらについては・・・
好みってことで、許してください。

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

349 :nobodyさん:03/06/14 15:46 ID:???.net
ファイルの開き方が直ってね〜よ

350 :nobodyさん:03/06/14 21:12 ID:jhwtfsoY.net
aice.zive.net/index.jsp
よろしくお願いします。


351 :nobodyさん:03/06/15 09:57 ID:???.net
>>350
ここの人は低レベルだからJavaなんて理解できないよ。

352 :nobodyさん:03/06/15 10:05 ID:???.net
>>351
言われてみれば、Javaスレってないね・・・


353 :nobodyさん:03/06/15 11:13 ID:???.net
難易の話をしているつもりかな?
なら351はJavaを理解していないに430スイカ

354 :nobodyさん:03/06/15 12:09 ID:???.net
目的を達成する手段のひとつがJava

355 :nobodyさん:03/06/15 14:10 ID:???.net
350=351

356 :nobodyさん:03/06/16 18:02 ID:???.net
>>211の人。

記述が馴れないような感じになって良いなら、gotoでルーチン使うと(ルーチンね)スタックがたまらなくて良いよ。
ただし、それは履歴自体プログラムが管理しないって事だから時には諸刃の剣。

スタックはほとんど何やってもたまるよ。
スタックがたまると言うか、スタックの中にいろんなもんがたまる。
もちろんループもしっかりスタックに残り管理されてる(当たり前)。
だから「再起じゃないから」、「サブルーチンじゃないから」スタックには全く関係ないてのはでっかい間違い。

どんな経過をたどって現在まで辿り着いたのかとか、捨てたと思った変数が実は残っているとか。
スタックにも色んな種類あるから調べて味噌。


357 :211:03/06/17 06:07 ID:???.net
>>356
うーん、無理にスタックを意識して、
goto文を使用しようとは思わないです・・・。
あまり、ソースがトリッキーすぎると、
未来の俺から苦情がきます。
それでなくても、結構トリッキーっぽいから・・・

スタックとは、何なのかはっきり分かってなかったのですが、
いろいろ調べ回って、何なのか、何となく分かりました。
スタックについて、勉強させてもらう機会をいただいた皆さんに感謝です。

さて、また一つヘンテコなスクリプトを組みました。
複数のファイルから、文字列を検索するスクリプト。
My_Grep。

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

使い方などは、同封してるテキストファイルを読んでください。
改造してくれる人は、できればアップして、ソース見せてください。
勉強させてもらいます。
また、今回も「DirTree.pm」を同封してますが、
>>349の指摘された所は、直してます。

では、評価お願いします。


358 :211:03/06/17 06:17 ID:???.net
いきなりバグを見つけました。

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

修正しました。


359 :211:03/06/18 07:21 ID:???.net
バージョンアップしました。

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

このバージョンで、
複数の拡張子のファイル検索が可能。
ログで、先頭のインデントなどのスペースを削るようにした。

・・・誰か、評価お願いします・・・
誰も手がってくれない。寂しいね。


360 :nobodyさん:03/06/18 15:16 ID:???.net
>>359
乙。
俺よりはるかにレヴェルの高いことやってらっしゃるので、
研究させてもらいます。

# 自作スクリプトを公開できるのはいつになることやら、、、

361 :211:03/06/19 02:58 ID:???.net
>>360
ども。 一応覗いてくれてた人がいてたんだね。
よかった。
まったく手がってもらえないから、かなり寂しかった(w
やってる処理自体は、そんなにレベルの高い物じゃなかったりします。
俺も研究させてもらうので、何かスクリプト作ったらアップしてくれたら嬉しいです。


362 :211:03/06/19 02:59 ID:???.net
さて、また意味なくバージョンアップしました。

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

このバージョンで、
 結果ログファイルがHTMLファイルになって、
  ヒットしたキーワードが強調表示されるようになった。

 ファイルがバイナリファイルか調べるようにした。

 拡張子指定で、ファイル名に拡張子と同じ文字列があったら、
  そのファイルも検索対象になっていたバグを修正。

 指定した拡張子のファイルが無かった時でも、
  つづけて検索フェイズに移行してたバグを修正

Html.pmってファイルを書き換えると、
出力するログの見た目が変えられるかもしれません。

それと、今回のバージョンで謎なバグが一つ・・・
tmpファイルが、今までスクリプト終了と同時に、
削除されるようにしてたんだけど・・・
今回のバージョンは、なぜかtmpファイルが残ります・・・。
何度も見直したんだけど、まったく原因がわかりませんでした。
どなたか、ご指摘いただけたら嬉しいです。

363 :nobodyさん:03/06/19 06:20 ID:???.net
>>362
いい加減ウザイ。完成してから後悔してくれ

364 :211:03/06/19 14:12 ID:???.net
>>363
あら。
何か主旨が変わってきたね。

評価貰えるよう、スレを上げるために、
何もなくスレ上げてたら荒らしだから、
何か無いかと、がんばってバージョンアップしてたんだけど・・・。

でも、いくつか勉強させてもらったし・・・
この辺が潮時かな。

じゃ、俺のスクリプト公開は終了します。

365 :nobodyさん:03/06/19 14:28 ID:???.net
>>364
もう少し実用性のあるもので再チャレンジしてみたら?
今回のは正直言って使いたいと思えるものでなかったから
評価しなかった
あれば便利とか使ってみたいと思えるものなら協力者も増えるのでは

366 :1:03/06/21 10:11 ID:???.net
自作CGIを評価するスレ

このスレは終了いたしました。
みなさん書き込みありがとうございました。

投稿件数  : 365
最終投稿者: nobodyさん
最終投稿日: 03/06/19

367 :nobodyさん:03/06/21 17:05 ID:???.net

  ∧__∧    / ̄ ̄ ̄ ̄ ̄ ̄
  ( ^u^)  < 乙彼様でした☆
 と    つ  \______
  (__つ 丿
    し'

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

# 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:???.net
>>368
いいんじゃないかな。
while文の所は・・・

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

こうの方が良いかな。

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

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

371 :nobodyさん:03/06/24 13:54 ID:01cZwzPj.net
>>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;

372 :368:03/06/24 14:57 ID:???.net
>>371
ありがとうございます。
ロックが甘いということは分かりましたが、アンロックはどうでしょうか?
まだ371さんがおっしゃったサイトは見てないのでなんとも言えませんが…。

もう少し勉強してみることにします。

指摘されたリトライですが、
if (--$retry <= 0) {
こうですね。

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

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

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

その辺り読んで、載ってるルーチンそのまま使ってテストした所、
ファイル壊れました。

俺は、>>368くらいの簡単なロックで良いと思うけど。
このロックで壊れるようなアクセス受けてるって事は、
その説明に載ってるようなルーチンでも、ほぼ壊れる。

どんなロックしててもファイルは壊れるんだから、
小細工いれた重いロック処理するより、
簡単にロックする処理入れた方が良いような。


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

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

375 :nobodyさん:03/06/24 15:35 ID:???.net
>>374
>そんなことはないよ。ただ言えることは、この板ではまだまともにロックできて
>いるルーチンが1つも書かれてないな。
flock使っちゃだめ?

376 :nobodyさん:03/06/24 15:36 ID:???.net
>>374
どんなに集中アクセスを受けても、
絶対壊れないファイルロックってある訳ない。

あったら、ぜひ見て見たい。


377 :nobodyさん:03/06/24 15:37 ID:???.net
>>375
あ、ちなみに、flockでも壊れるんで。ファイル。


378 :nobodyさん:03/06/24 15:40 ID:???.net
↓これでもこわれる?(CSVの処理はPerlメモ参考にしてます)
use strict;
use Fcntl qw(:flock);
$tmpfile = "$datafile".".$$.". time() .".csv";  #万が一リネーム失敗したときのために、
          #ユニークなファイル名にしておく

open (LOCKF, ">$datafile"."_lockf") or die("cannot open:$!");  #ロックファイルを作成する
          #(★注:ロックファイルは、各CSVごとにユニークに)
  flock (LOCKF, LOCK_EX);  #ロックファイルをflockする
  open(IN, "< $datafile") or die("cannot open:$!"); # 読みのみモードで開く
    open(TMP,"> $tmpfile"); #テンポラリファイルを作成
      while ($line = <IN>){
        $line .= <IN> while ($line =~ tr/"// % 2 and !eof(IN));
        $line =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
        @values = map {/^"(.*)"$/s ? scalar($_ = $1, s/""/"/g, $_) : $_}
         ($line =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);
        #必要なものだけをEUCにして、出力時にSJISにする
        foreach $value (@values){
          &jcode::convert(\$value, "euc");
        };
        #CSV形式に変換
        $newline = join ',', map {(s/"/""/g or /[\r\n,]/) ? qq("$_") : $_} @values;

        print TMP "$newline\n" ;#テンポラリファイルに1レコード書き込み
      }
    close TMP;
  close IN;
  unlink $datafile;
  rename ($tmpfile, $datafile) or die ("cannot rename : $!");
close LOCKF;

379 :374:03/06/24 15:41 ID:???.net
>絶対壊れないファイルロックってある訳ない

この根拠がどこからくるのかわからないが、
少なくともとてつもないアクセス集中に対応できるように非ブロックモードで
タイムアウトを備えてないとまず無理だということは教えておこう。

380 :378:03/06/24 15:41 ID:???.net
あ、EUCにしてからSJISにもどすの忘れてるけど、そこは気にしないで

381 :371:03/06/24 15:46 ID:01cZwzPj.net
> どんなロックしててもファイルは壊れるんだから、

そんなことはない。

というか、上(大崎氏の)のルーチンでファイル壊れたんならファイルシステムに
不備があるか、打ち間違いがあるかパーミッションやらの設定を誤ってるかどれか。
ファイルシステム上でrenameが衝突しないという条件の元でならうまく行くはず。

アクセス集中でファイルが壊れるのはロックの機構に不備がある
だけで、正しい状況下で行われたUNIX系OSでのflockでは、ファイルシステム
にバグがあるか、ファイルシステム自体のクラッシュでもない限り壊れない。

>>375
flockはNFS越しの場合に失敗するから、ファイスシステムを予め
調べておく必要がある。
NFS越しだとPOSIXモジュール使うかfcntl使う必要があった気がする。

>>376
> どんなに集中アクセスを受けても、
> 絶対壊れないファイルロックってある訳ない。
> あったら、ぜひ見て見たい。

非ネットワークファイルシステム+UNIX系OSでのflock。stableなバージョン上で
これで壊れたって話は逆にあったら見てみたい。

382 :371:03/06/24 15:48 ID:01cZwzPj.net
>>377
ネットワークファイルシステムを使ってる場合はね。
それ以外で壊れるという話は(ファイルシステム開発中のバグ以外は)
聞いたことない。再現できたら結構すごいと思うが。

383 :371:03/06/24 15:54 ID:01cZwzPj.net
変な憶測並べる前にFAQくらいみんな読もうよ。

http://elib.cs.berkeley.edu/~loretta/perl/nmanual/pod/perlfaq5/How_can_I_lock_a_file_.html

384 :nobodyさん:03/06/24 18:50 ID:???.net
追加書き込みすれば壊れない。

385 :371:03/06/24 19:10 ID:01cZwzPj.net
>>384
2つのプロセスが同時に追加書込しようとしたら、
その部分は壊れるよ。


386 :nobodyさん:03/06/24 20:17 ID:???.net
>>371
って言うかOSが関与しないファイルロックで信頼できるアルゴリズムってあるの?



387 :nobodyさん:03/06/24 20:18 ID:???.net
>>385
何を以て壊れるとするかだな。

388 :378:03/06/24 20:27 ID:???.net
>>378
はどうですか?

389 :nobodyさん:03/06/24 20:34 ID:???.net
>>388
ええ、ばっちりシステムコールのflockがいらっしゃいますね。

390 :371:03/06/24 20:45 ID:???.net
>>386
symlinkにしろ、rewriteにしろ、mkdirにしろ、OSがファイルシステム上で衝突しないように
設計されているという大前提で作られてるし、実際衝突するかどうかはOS次第なので、
OSに非依存で汎用可能なアルゴリズムっていうのは原理的に不可能じゃないかと。

391 :nobodyさん:03/06/24 20:47 ID:???.net
>>390
その意見には激しく同意。
じゃあ、議論するだけ無駄だと思うわけだ。


392 :nobodyさん:03/06/24 20:48 ID:???.net
>OSがファイルシステム上で衝突しないように設計されているという大前提で作られてるし。

OS側でAtomicでもプログラム側がそうでなけりゃ・・・。

393 :nobodyさん:03/06/24 21:00 ID:???.net
>>373-392
スレ違い。
ファイルロックについてのスレあるから、
そこで熱く語ってくれ。

394 :nobodyさん:03/06/25 00:00 ID:???.net
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までカウントなんぞできんぞ。


395 :374:03/06/25 00:21 ID:???.net
>>394
まともに使えないならいっそ使わないほうが・・・

396 :nobodyさん:03/06/25 00:39 ID:???.net
>>395
はぁ?
全体に一度だけかけろとか言うのか?
それでも壊れる。

何がまともに使えないだよ・・・
ルーチン呼び出すのに使えるも使えないもないだろヴォケ。
文句言う前に試せやハゲ。
試して、壊れなかったら文句言いにこいや。


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

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

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

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

399 :371:03/06/25 00:59 ID:Q5i43+wA.net
>>396
> 全体に一度だけかけろとか言うのか?

だってそうしないとカウントが飛んじゃうでしょ。

> 試して、壊れなかったら文句言いにこいや。

一度に5プロセス動かして1000までやってみたけど壊れないね。
FreeBSD2.2.2 + Perl5.6.0だけど。

OS何使ってて壊れるの? > 396

400 :371:03/06/25 01:03 ID:Q5i43+wA.net
プロセスを7つに増やしてテスト中。
時々ロックファイルが消えるな・・・。renameしかしてないはずなので、
ファイルシステムのバグか?

でもデータが壊れるということは今のところない模様。テスト続行中。

401 :371:03/06/25 01:13 ID:Q5i43+wA.net
FreeBSD2.2.8 + Perl 5.6.0でも実験したところ、20000件超えてるけど、特に問題なし。
FreeBSD2.2.2の方も、10000件行ってエラーなし。
合計30000件実験してみたけど衝突は起こってない模様(プロセスの譲り合いで片方のプロセスが
ブロックする現象は見られたが)。

単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ
とか、そういうオチじゃなくて?>>398

402 :371:03/06/25 01:22 ID:???.net
ファイルが消える現象は、ロックファイルをディレクトリにすることで回避
# mkdir lockdir/lockfile

で、20プロセス同時起動で、30000件やってみたけど、全く問題なし。
さすがに30000回連続で20プロセスが同時に1つのファイルにアクセス
する状況はありえないだろうから、少なくともウチの環境上では
きちんとロック機構が機能してると思われる。

で、たった2プロセス同時起動で10000件持たないファイルシステムを
持つ環境がどんな環境なのかとても気になるので早く教えてください>>398
あなたの言う条件↓は満たしましたよ。

> 文句言う前に試せやハゲ。
> 試して、壊れなかったら文句言いにこいや。

403 :nobodyさん:03/06/25 01:30 ID:???.net
おっと、ご苦労さん。
マジで?
ファイル壊れない?
こっちの環境は、Win2kだけど。

> 単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ
んな訳ない。
2kで、そんなバグ聞いた事ない。

ずっとテスト環境は2kだったからなぁ〜。
とりあえず、こっちもVineの環境があるから、そっちでも試す。

>で、たった2プロセス同時起動で10000件持たないファイルシステムを
>持つ環境がどんな環境なのかとても気になるので早く教えてください>>398
煽りですか。
あんた、一言多いね。


404 :371:03/06/25 01:49 ID:???.net
> こっちの環境は、Win2kだけど。

多分そのせいじゃないかなぁ。ファイルシステム何になってます?
こっちは今のところ30プロセス同時起動で30万件ノンストップで突破してるので、
スクリプト自体に問題があるとは思えない。
まぁ、このルーチンはrenameの堅牢性に頼ってるので、その点において汎用性は
薄いということを証明する形にはなったかも。

> 2kで、そんなバグ聞いた事ない。

1秒間に同じファイルを数十回renameする必要性ってあまりないからなぁ。
renameのファイルの取り合いって普通の状況だとまず起こりえないし。
ソース読んだら分かると思うけど、renameの空振り以外に原因は考えにくい
ので、再現性あるなら追試してレポート出してみたら?

405 :nobodyさん:03/06/25 02:14 ID:???.net
>>404
ファイルシステムは、もちろんNTFS
Vineで試してみた。
たしかに、2kの時は途中ファイルが壊れてカウントが1に戻ったりしたけど、
Vineはそんな事なかった。
・・・が、おかしい。
3つのプロセスで動かしたが、ログがおかしい。
同じ数字のカウントをする場面がある。
3つのプロセスでカウントしていったら、
同じ数字がカウントのログとして出るのはおかしいでしょ?

そっちでは、ちゃんとカウントしていってる?


406 :371:03/06/25 02:28 ID:???.net
>>405
>>394のソース直した?部分的でなく、全体をロックで囲まないと誤動作するよ。
print文の直上直下にあるunlockとlockの2行を外せばうまく行くと思う。

407 :nobodyさん:03/06/25 02:44 ID:???.net
>>406
あ・・・悪い。
修正してなかった。
ちゃんと動いてる。
もっと沢山のプロセスと、もっと沢山のループで試したかったけど、
Vineが入ってるPCのCPUが弱いんでやめた。

なんだ・・・今回の実験で、2kがいかに糞なのかが証明されたのか・・・?

結果は、壊れないファイルロックが存在したって事か?
・・・俺が、間違ってますた。 スマソ


408 :371:03/06/25 11:01 ID:???.net
>>407
> 結果は、壊れないファイルロックが存在したって事か?

昨日、あのまま30プロセス同時起動のまま寝て、今朝見たら400万件を
突破してました。もちろんノンストップで。

30プロセスが400万回連続で殺到しても平気だということなんで、
少なくともウチの環境では、ほぼ「絶対に壊れないロック機構」と言い切って
差し支えないと思う。

どうでもいいけど、このテストスクリプトだと、count.txtを書き込みオープンした
瞬間にプロセスが落ちるとカウンタリセットされるよね。堅牢なスクリプトを作ろうと
思ったらそこまで気を遣う必要があるかも。

>>377
flockに書き換えて同じ事やってみたけど、20プロセス10万件で壊れずに
行ってます。やっぱりOSの問題か、flock over networkが原因ではないかと。

スレ違いなようなので、この辺で。

409 :nobodyさん:03/06/25 14:12 ID:???.net
結論的には何が一番?

410 :368:03/06/25 18:02 ID:???.net
>>393さんがおっしゃってる通りたしかにスレ違いですが、
とても興味深い話題をありがとうございます。

>>402さんがおっしゃってることを試す価値はありそうなので、
とりあえずファイルを使うロックから、
ディレクトリを使うロックに変えてみたいと思います。

411 :nobodyさん:03/06/25 22:47 ID:???.net
>>410
ないよ。flockが一番。

412 :nobodyさん:03/06/25 22:57 ID:???.net
>>411
NFS越しでも?

413 :nobodyさん:03/06/26 06:18 ID:EBHZ+AEW.net
.

414 :nobodyさん:03/06/26 09:03 ID:???.net
NFSなんか使うなよ(;´Д`)

415 :412:03/06/26 10:55 ID:???.net
>>414
お客さんでそういうトコ、多いんですよ(萎
だから仕事でflock使う際は、インストール先の
OSとファイルシステムは必ず確認。

416 :nobodyさん:03/06/26 11:36 ID:???.net
なるほど(;´Д`)

417 :nobodyさん:03/06/26 12:53 ID:???.net
>>414
十分有り得るよ。うちの大学もそうだし。

418 :nobodyさん:03/06/26 21:01 ID:???.net
>>417
レガシーな大学でつね。

419 : ◆5vUH/J4K/c :03/07/05 05:02 ID:???.net


420 :nobodyさん:03/07/06 16:49 ID:orJjX/H+.net
別スレでrename失敗どうたらこうたら、言ってるんですが、
そんなにrename失敗することあるんですか?

421 :nobodyさん:03/07/06 16:50 ID:???.net
権限がなければ

422 :nobodyさん:03/07/06 17:08 ID:GI5yk6yl.net
権限があれば100%renameできるんですね?

423 :nobodyさん:03/07/06 17:34 ID:???.net
誰がそんなことを言った?

424 :nobodyさん:03/07/06 21:37 ID:???.net
⇒と⇔の違い知ってるか?大馬鹿者>>422

425 :nobodyさん:03/07/06 21:38 ID:???.net
L⇔R

426 :nobodyさん:03/07/06 21:48 ID:???.net
横浜⇔東京

427 :nobodyさん:03/07/06 23:37 ID:???.net
とんちんかんちん一休さんの>>422


428 :nobodyさん:03/07/06 23:40 ID:???.net
将軍が彪の追い出しに成功してボリボリ食われちゃう一休さんの>422

429 :nobodyさん:03/07/07 11:59 ID:???.net
-=⇒

430 :山崎 渉:03/07/15 11:08 ID:???.net

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

431 :nobodyさん:03/07/25 23:38 ID:???.net
あげ

432 :_:03/07/25 23:47 ID:???.net
http://homepage.mac.com/hiroyuki44/hankaku09.html

433 :山崎 渉:03/08/02 02:24 ID:???.net
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

434 :ぼるじょあ ◆ySd1dMH5Gk :03/08/02 04:52 ID:???.net
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

435 :nobodyさん:03/08/06 01:58 ID:u4hkzo1r.net
まだ評価していただけますか?

436 :nobodyさん:03/08/06 02:05 ID:???.net
どうぞ

437 :435:03/08/06 02:10 ID:u4hkzo1r.net
それでは。

ttp://www.42ch.net/UploaderSmall/source/1060103401.zip

昔作った掲示板です。今ではもうこんなにかけません。

438 :nobodyさん :03/08/06 02:44 ID:???.net
>>437
ぱっとみですが、スコープや、名前空間を理解していらっしゃるのでよく勉強されてると思われます。
私の趣味的にはグロブを使わないようにするともっとよさげかと・・・

439 :nobodyさん:03/08/06 03:48 ID:???.net
ttp://www.42ch.net/UploaderSmall/source/1060108917.zip
良かったらお願いします。
使い方はcgi呼び出して?ってリンク見ると大体書いてあります。
典型的な我流でCGIしか書いたことの無い人のソースだとは思います。
非常識な部分があればご指摘頂きたいです。

#普段タブ使っているのですが、環境に依存しそうなので
#アップの際に、全てスペースに変換しました。
#個人的な情報も消してあります。ご理解ください。

440 :向こうの472=475:03/08/06 10:05 ID:???.net
>>439
コーディングスレの469さんか。(w

名前空間の扱いに振り回されてる感じがする。
基本的にパッケージ名や定数のハードコーディングは避けた方がいいし、
依存し合うものを別ファイルに分けると見通しが悪くなるだけだよ。

どうしても分けたいのなら各パーツはもっと役割分担を
はっきりさせて汎用性を上げ、OO なスタイルで組むが吉。

441 :nobodyさん:03/08/06 10:38 ID:???.net
>>440
ここ過疎なので人すくなくてばれるだろうとは思ってました。。。
分けるのは、基本的に改造向けではじめました。
(HTML部分を分ける、とか。)
あと、機能追加のたびに追加したりとかって感じです。
最初はあまり深く考えないで分けていたんですが
最近えらい悩むようになってしまって
つきつめるとOOPにするしかないような気もしてきてしまします。

次になにか0から書くことがあったら、OOで書きたいとは思います。

これは今ある程度完成してしまってますし
身内で使ってくださる方がいるのであまりスタイルを変えるつもりはないです。

総書き直しでOOにしようとか毎晩のように思ったりするのですが
なかなか手出しする気力も時間も・・・

やっぱOOかー

442 :441:03/08/06 10:58 ID:???.net
しかもコーディングスレであとで言われたとこ
直す前のうpしてた ウワーン

443 :nobodyさん:03/08/12 15:36 ID:QPay4kE6.net
>>442
age

444 :山崎 渉:03/08/15 22:37 ID:???.net
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

445 :nobodyさん:03/08/30 22:39 ID:???.net
52 名前:nobodyさん :03/08/30 20:46 ID:???
>>50
自作CGIを評価するスレ
http://pc2.2ch.net/test/read.cgi/php/1049514428/

446 :nobodyさん:03/08/31 01:55 ID:6GeG39LL.net
Blogの試作公開

http://ex.1000gex.net/blog.zip

common.phpで初期設定。

排他制御も何も入れてないがとりあえず動いた。
これからトラックバックを盛り込むけど難儀するだろうなぁ

447 :nobodyさん:03/08/31 02:19 ID:???.net
何?評価して欲しいの?
ただの宣伝?

448 :nobodyさん:03/08/31 02:27 ID:6GeG39LL.net
ダメ出しきのん。

SAFE_MODEでさっそく引っかかったが

449 :nobodyさん:03/08/31 02:54 ID:???.net
微妙な物作るな

450 :ガイキチ厨房:03/08/31 06:44 ID:???.net

PHPでカウンタを作ってみたのですが、どなたかご意見下さい。

http://popup3.tok2.com/home/program/cgi-bin/uploader/source/File:0011.txt


451 :nobodyさん:03/08/31 11:38 ID:???.net
こちら素人だが、ざっと読んで気づいた点を。
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(); を使ってファイルを切り詰める必要あり。


452 :nobodyさん:03/08/31 11:40 ID:???.net
■L29の rewind(); は意図不明。
ログファイルが壊れる(例えば 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(); が力技で
解消しているように見える。

453 :nobodyさん:03/08/31 21:50 ID:???.net
本7に対してそこまでしなくていいのに

454 :nobodyさん:03/08/31 21:56 ID:6GeG39LL.net
ちなみにサンプルページ

http://s2.arigato3.net/~hon7/blog/

ハイブリッドP2Pによるトラックバックを考えてます

455 :nobodyさん:03/09/01 00:56 ID:???.net
まずsageろ
話はそれからだ

456 :nobodyさん:03/09/01 01:41 ID:???.net
相変わらず発言が電波過ぎる…

457 :ガイキチ厨房:03/09/01 16:10 ID:???.net
>>452

詳しく指摘していただきありがとうございます。
とりあえず''に統一し、関数名とレフトブラケットの間のスペースを
制御構造のみ入れるようにしました。

また、書き込み処理を行った後に、

 // ファイルを切り詰める
 ftruncate($fp, ftell($fp));

という処理を加えました。

ロックのバグについてなのですが、Googleで調べたところ、
flockはデフォルトでブロックモードになっているらしいのですが、

http://itbtech.itboost.co.jp/perl/perl_06.php

よろしくお願いします。


458 :ガイキチ厨房:03/09/01 18:57 ID:???.net

すいませんURL間違えました。正しくはこちらです。

http://itbtech.itboost.co.jp/php/php_04.php

459 :nobodyさん:03/09/01 23:17 ID:???.net
Perlでも評価してもらえます?

460 :nobodyさん:03/09/02 01:39 ID:???.net
>>459
>>1

461 :nobodyさん:03/09/02 16:15 ID:???.net
>457
ああごめん。Manualみたらおもっくそそう書いてあった、、。
flockでとまるから一般の環境なら多分大丈夫だね。
こっちの検証スクリプトの間違いなのでflockとrewindの話しはなかったことに。
秒間50リクエストくらいでは問題なかったです(php4.3.0 apache1.3.27 RHLinux)。
ftruncate ( $fp , ftell ( $fp ) ) ; は ( $fp , strlen ( $newdata ) ) ; なんちゅう書き方もある。

462 :ガイキチ厨房:03/09/02 19:51 ID:???.net

なるほど、参考になりました。ありがとうございます。


463 :nobodyさん:03/09/03 02:03 ID:6rADPhxn.net
とある会社の部活動のHPを管理している者です。

Web上で部の共有資産の貸し出し申し込み等の管理を行えるといいなぁ、と思いいろいろとCGIを探してはいるのですがなかなか見つかりません。
探しているのは、次のようなCGIです。

1.画面で借りたい物を選択・自分の名前・貸出期間等の入力、申し込み
2.画面上では「貸し出し中」等に表記が変化(それか削除されるなど、申し込みが行えない状態に変化)
3.sendmailが使えないサーバなので、申し込みがあったことをログに吐き出し、管理人が定期的にそれをチェックし貸し出す

こういうものです。
サーバはinfoseekのiswebでPerl、Python、Ruby、PHPが使えます。

ショッピングカートCGIを活用してもいいなと思ったのですが、sendmailを利用する物がほとんどで、上記のようにログにのみはき出す物はあったことはあったのですがシェアウェア(\15K!)でした。
それほど資産の数が多いわけでもなく、貸し出し回数もそんなに多くないので、15000円もかけるわけにはいきません。
出来れば無料、もしくは1〜2千円程度で利用できるCGIがありましたら、教えてください。

よろしくおねがいします。


464 :nobodyさん:03/09/03 04:27 ID:???.net
>>463
>>1

465 :sage:03/09/03 12:28 ID:Udj8Y4pI.net
>464

463です

え〜と。
スレ違いだ、ということですか…?

…すいませんでした。


466 :nobodyさん:03/09/03 13:26 ID:???.net
sageはmail欄でw。
どっかに「こんなCGI探してます」的なスレあったハズだよ。

467 :nobodyさん:03/09/03 13:44 ID:???.net
>>465
>スレ違いだ、ということですか…?
スレ違いじゃないと思うんだったら自作CGIへのリンク貼れよ。
自作CGIを評価するスレなんだからさ。

468 :nobodyさん:03/09/03 18:02 ID:???.net
【CGI】こんなCGI探してますver.10【素材】
http://pc2.2ch.net/test/read.cgi/hp/1059878840/l50
Web製作板でつ。

469 :463:03/09/04 00:28 ID:???.net
>>464
>>467
ご迷惑をおかけしました。

>>466
>>468
そこに行ってみます。ありがとうございます

470 :nobodyさん:03/10/02 12:00 ID:???.net
y

471 :nobodyさん:03/10/02 22:11 ID:???.net
perlでRead-Write Lockを実装してみますた。

複数プロセスでの10,000件書き込み耐久試験もクリアしたっぽいです。
ただ、ちょっと遅いように感じるのですがどでしょ?

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html

472 :nobodyさん:03/10/02 22:50 ID:???.net
flockがあるし。

473 :nobodyさん:03/10/07 02:23 ID:86/MwT3y.net
知識ゼロからがんばってXML化にこぎつけました。
スタイルシートだけでWebデザインが可能です。
PHP4+MySQL

http://arigato3.s36.xrea.com/x/bbs.php


474 :nobodyさん:03/10/07 03:18 ID:???.net
>>473
すごいね。どのくらいすごいのかいまいちわからんけど。
どのくらい時間かかった?

475 :nobodyさん:03/10/07 04:42 ID:???.net
>>474
http://pc2.2ch.net/test/read.cgi/hosting/1065223105/

以後放置で。

476 :nobodyさん:03/10/07 06:12 ID:???.net
>>473
ダメXMLの見本として宣伝してもいいですか?っていうくらいダメなXML。

477 :手裏剣:03/10/07 06:29 ID:???.net
だめ見本
http://www.muzie.co.jp/cgi-bin/artist.cgi?id=a016219

478 :nobodyさん:03/10/07 09:34 ID:86/MwT3y.net
>>476=印刷屋をクビになったオヤジ

479 :nobodyさん:03/10/07 09:34 ID:86/MwT3y.net
>>474
片手間で1週間ぐらい

480 :nobodyさん:03/10/07 18:52 ID:???.net
> 知識ゼロからがんばって XML化にこぎつけました。
            ___Λ____
           |知識ゼロのまま|

481 :nobodyさん:03/10/07 21:30 ID:???.net
常識や社会性は?

482 :nobodyさん:03/10/08 10:35 ID:???.net
よいXMLの見本が見たい。

483 :nobodyさん:03/10/19 04:34 ID:faEGA12Q.net
●●●マスコミの 「盗聴/盗撮」 は許されるの?その4●●●   http://natto.2ch.net/mass/kako/994/994602694.html
62 名前: 文責:名無しさん 投稿日: 2001/07/10(火) 12:21
小型盗聴器、電話盗聴、web(電子メール)盗聴、郵便物の開封、
集合住宅の隣に引っ越してきて壁に聴診器、または集音マイクを向ける。
関係者からの聞き込み、ごみあさり、ストーキングにより行動パーターンの把握、
行動パターンを調べた上での待ち伏せ。全部、人海戦術を使えば十分可能です。

323 名前: 文責:名無しさん 投稿日: 2001/07/30(月) 20:48
集団で盗聴なり、付きまといなり、身辺調査なりした後で、集めた個人情報を利用して、
メディアを通じて本人にしかわからないように「監視してる」とほのめかしたり。
待ち伏せや尾行などしておいて、本人の前で「監視してるぞお〜」と、嫌がらせをしてみたりする。
これを一定期間継続して繰り返す。
一定期間、上記の嫌がらせを繰り返すと、加害者がすでに嫌がらせをしていなくても、
被害者は、ずう〜っと嫌がらせが続けられてると思い込んでしまう。
(痴漢の被害者が、外であった人が全員痴漢だと思い込むのと同じ)
それと同じように、ここのスレッドに書かれている、盗聴した情報を二次利用する嫌がらせを
やっていないときでも、被害者は自分から自分と関わりがある
情報をメディアから探し出して自分に関係があるのではないかとこじつけてしまう(関係妄想)。
関係妄想を引き起こすように嫌がらせを行うそれ自体がマインドコントロールの一過程である。
被害者が関係妄想を引き起こした時点で今度は精神病にかかったと噂を流して、さらにからかう真似をする。
ノイローゼになるように追い込んで、更に自殺するように持っていこうとする。     
被害者がこういった心理状態になるのを嫌がらせの関係者は経験的に知っているのだろう。

484 :nobodyさん:03/12/07 15:31 ID:ohQC6Gec.net
>>482
ここ
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

485 :nobodyさん:03/12/09 13:27 ID:Dust1o+d.net
すいません、午前中探したんですけど、見つかりませんでした。

パソコンと携帯3社兼用の掲示板で、スレッドまたはツリー表示でかつ
パスワードで入る人の管理が出来るCGIご存じありませんか?
スレッド、パスワードどちらかだけだとあったんですが・・・。

486 :nobodyさん:03/12/10 13:25 ID:/scbZ0TM.net
誤爆でしたとさ

487 :SERA:03/12/10 21:19 ID:cJpFW25/.net
箱庭諸島PHP版の改造版、箱庭諸島S.Eを今日公開配布開始しました。

488 :nobodyさん:03/12/12 00:32 ID:???.net
で、評価しろと?

489 :nobodyさん:03/12/19 17:18 ID:s0hPhfIy.net
http://erobon.e-un.jp/
これはどうでしょうか?
デザイン以外は自分で作りました。

490 :nobodyさん:03/12/19 19:33 ID:???.net
>>489
ここはCGI評価スレです

491 :nobodyさん:03/12/20 01:11 ID:A80S/toC.net
>>490
CGIです。
サーバーサイドで動いているのでCGIです。
もっと勉強してください。

492 :nobodyさん:03/12/20 01:18 ID:???.net
>>491
titleタグはmetaの後に書いてくらはい

493 :nobodyさん:03/12/20 01:26 ID:m9BC3a2H.net
>491-492 ネタは他所でやれよ馬鹿

494 :nobodyさん:03/12/20 01:27 ID:A80S/toC.net
>>492
いま検索して調べたら
metaタグの後にtitleタグを書いてました。

495 :nobodyさん:03/12/20 02:56 ID:???.net
>>491
あのね、見た目とかを評価してもらうスレじゃないの
ソースを公開してちょうだい

496 :nobodyさん:03/12/20 02:58 ID:???.net
> サーバーサイドで動いているのでCGIです。

CGIは動いたりしない。

497 :nobodyさん:03/12/20 03:19 ID:???.net
>もっと勉強してください。

悪代官が黄門様に無礼者と言ってるのを思い出しちゃったw

498 :nobodyさん:03/12/20 10:48 ID:rKU28so3.net
>>496
CGIとはWEBサーバーがWEBブラウザからの要求に応じてプログラム
を起動するための仕組みです。

”CGIは動いたりしない。”
馬鹿か?

499 :nobodyさん:03/12/20 10:49 ID:rKU28so3.net
>>498

俺は悪代官だよ~W~

500 :nobodyさん:03/12/20 13:51 ID:???.net
>498-499

501 :nobodyさん:03/12/20 13:55 ID:???.net
ヘタレが。

502 :nobodyさん:03/12/20 14:07 ID:???.net
CGIはシステムでも仕掛けでもない。
インターフィエスの一仕様。

モジュールからプロセス作ることもできるが、
あれもCGI?

503 :nobodyさん:03/12/20 18:53 ID:FBPjlTLi.net
>>502
どうせperl=cgiとか
まだ思ってるアフォだろ?

504 :HTTP/1.1 200 OK:03/12/20 21:23 ID:???.net
unlessはほかの言語と混同するからやめれ
とか書いてある本があった気がする
ほかの言語を使わなければいいだけの話なのに・・・

505 :nobodyさん:03/12/21 00:57 ID:???.net
>>504
マジ?

それって、if ははほかの言語と混同するからやめれというのと同じことだよね

506 :nobodyさん:03/12/21 15:53 ID:???.net
汎用的なプログラミングの作法を身につける為なんじゃないかな?if だと他の言語でも大抵応用が効く。
同じような理由でperlの$_(暗黙の代入)はなるべく使うなとか書いてる本もあったよ。



507 :nobodyさん:03/12/22 08:45 ID:???.net
>>506
なんだそりゃ?(藁
じゃあ混同しやすい elsif は使わないほうがいいってことか?

508 :nobodyさん:03/12/22 15:58 ID:???.net
頭の弱いのが何人か・・

509 :nobodyさん:03/12/26 11:25 ID:???.net
>>508
差別はイクナイ!
何国ってのがどこのことだか知らんが,何国の人に失礼だよ(藁

510 :nobodyさん:03/12/26 20:54 ID:???.net
>>509
ハァ?
あたまのよわいのがなんにんか・・ って書いてあるが、どう読んだら何国の人になるんだ?

502,504,506,508が(ry

511 :nobodyさん:03/12/26 21:46 ID:???.net
洒落だろ

512 :nobodyさん:03/12/27 06:08 ID:???.net
>>510
「なにじんか」って読んだんだろ。>>511の言うように洒落だろうがつまらん。

513 :nobodyさん:03/12/31 15:09 ID:OIDb7RDT.net
表計算ができるランキングCGIを作ってみたので評価お願いします。
http://ssr.xrea.jp

けっこういい出来に仕上がったと思うけど、初めての人は操作にとまどうかも

514 :nobodyさん:04/01/05 13:20 ID:8h9t8BrG.net
>>513
落としたYo
とりあえず使えそう・面白そうな物だったら、朴らせてもらうわ(w

515 :nobodyさん:04/01/12 07:57 ID:fR13iSUk.net
age

516 :nobodyさん:04/01/17 13:56 ID:kOvCn6Ho.net
携帯&PC対応の掲示板作りました。
http://fine.tok2.com/home/moritomo/cgi/career/career_bbs.cgi
です。

517 :nobodyさん:04/01/17 14:22 ID:???.net
>>516
それで金を取ろうと思う神経を疑うよ

518 :nobodyさん:04/01/17 18:12 ID:???.net
上と下に出てる「1」って何だ?

519 :nobodyさん:04/01/17 19:01 ID:???.net
>>516
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

以下略


ヴァカですか?

520 :nobodyさん:04/01/17 19:15 ID:???.net
>>516
ディレクトリ丸見えだねぇ

521 :nobodyさん:04/01/18 02:22 ID:???.net
ところで、ちゃんと評価してるのって最初のほうだけだね。

522 :nobodyさん:04/01/18 03:41 ID:???.net
>>521
・ここは見た目じゃなくコードを評価するスレだ。
・use strict; しろ。
・perlstyle 読め。
・デカいの持ってきても面倒だから読まんぞ。

…のどれかに該当していたら、まともなレスは返ってこない。

523 :nobodyさん:04/01/18 21:22 ID:???.net
コードの見た目を評価するスレの間違い。

524 :>>516:04/01/25 15:17 ID:yPaa9elS.net
DirectoryIndexの設定をしているtoktokも問題かと思うが。

Forbiddenにしたみたいだけど、
せめてファイル名変えなよ。

525 :nobodyさん:04/03/06 14:54 ID:???.net
誰も居ない……ケチつけるなら今のうち。

if-elsifの書き方、
if{
..
}elsif{
..
}
より
if{
..
}
elsif{
..
}
の方が俺にとっては読み易いんだコンチクショー。


526 :nobodyさん:04/03/19 18:15 ID:???.net
>>522
perlstyleなんて知らなかった…ありがとう、勉強になったよ。

527 :nobodyさん:04/05/03 22:01 ID:???.net
>>526
> perlstyle
ハァ?

528 :nobodyさん:04/05/09 20:52 ID:???.net
例えば既成の掲示板の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 :528:04/05/09 21:13 ID:???.net
すいません、上の奴.txtで終わってるのに何故か実行しようとしてエラーになるので
ファイル名変更しました。

アクセス解析 http://torihamlog.s55.xrea.com/search/axlog_pl.txt
ログビューワー http://torihamlog.s55.xrea.com/search/axlogv_cgi.txt



530 :nobodyさん:04/05/09 21:49 ID:???.net
>>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 のマニュアル参照。

531 :nobodyさん:04/05/09 22:26 ID:???.net
>>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

532 :528:04/05/10 19:23 ID:???.net
>>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(); }

こうゆう風にしようと思っています。

533 :nobodyさん:04/05/11 00:31 ID:???.net
>>532
・CSS を変更する為にスクリプトを編集する危険を冒す必要がある。
・外部に CSS を持つのに対し、常に二倍の回数実行される。
・CSS を使い回す時に悩む事になる。

これらのデメリットを考慮の上で、なお一つにまとめるメリットの方が
勝ると判断したならいいんじゃないか?

534 :528:04/05/14 20:45 ID:1r/FkAS3.net
>>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の設置とかできて、ほんのちょっとだけいじれる程度人向けのつもりです。

535 : ◆u2YjtUz8MU :04/07/02 01:32 ID:???.net
いろいろわからんことだらけで作りましたが
添削して下しさい。
【スクリプト】http://www.tcn.ne.jp/~majima/dog/quiz.txt
【動作例】http://www.tcn.ne.jp/~majima/dog/quiz/quiz.cgi

536 :nobodyさん:04/07/03 23:32 ID:???.net
>>535
むずい

537 :nobodyさん:04/07/04 05:07 ID:???.net
>>535
とりあえず画像のファイル名を変えた方が良いよw
20点頂きました

538 :nobodyさん:04/07/04 05:12 ID:???.net
>>535
もじゅーるは使えない鯖なんでつか?
使えるんなら使ったほうがいいでつよ。
Image::Magick、CGI、Jcode等々
何に使うのかは自分で調べてね。

EUCで書いたり表示したりしたほうがいいと思うけど、Shift_JISでやりたいのなら反対しないさ。

所々myを付けているが、どうせなら全部に付けちゃいな。
strictしろってこった。
ついでにHTML的にも4.01strict すれば?

539 :ager:04/07/09 18:40 ID:???.net
age

540 :nobodyさん:04/10/08 20:39:40 ID:HUGW4EIR.net
タイトル::時刻::内容\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:???.net
>>540
myで複数宣言するときは()がいる
hushじゃなくてたぶんhashね. 連想配列っていみなら

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

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

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

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

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

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


543 :nobodyさん:04/10/09 02:43:14 ID:???.net
>>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.

544 :nobodyさん:04/10/09 03:20:52 ID:???.net
>>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 を目指すならこだわる必要のない部分だと思うな。

545 :nobodyさん:04/10/09 05:06:54 ID:???.net
>>540
%hush(多分hash?)の宣言の位置。
GCのコストを考慮した場合に、変数の再利用をするはあるけど...、
ループないで初期化してないとフィールドの数が少ない時に困るよ。

split/::/の代わりに正規表現を使ってデータを切り出すと、
データのチェックとsplitを同時にできて便利。

chompはデータ格納前に済ませておいた方が良いんじゃないかな。chomp(@tmp)
もしくは、大抵はファイルから読み込むだろうからその時に。



546 :540:04/10/09 05:35:12 ID:???.net
>>544
どうもありがとう。foreachは普通に使えるんだろうけど、
大抵forで済ませてしまうのです。言い方悪かったです、スイマセン。

>>545
ありがとうございます。

>ループないで初期化してないとフィールドの数が少ない時に困るよ。
というのは、forのループ内で undef(%hush); (ほんとはhashでしたw)
でいいですか?
あと、フィールドの数が少ない時というのはどういうことでしょうか?

>split/::/の代わりに正規表現を使ってデータを切り出すと
どう書いたらいいのか思いつきません。宜しかったらご教授下さい。

>chompはデータ格納前に済ませておいた方が良いんじゃないかな。
そうですね。

open(FH,"file_name");
@tmp = <FH>;
chomp(@tmp);
close(FH);



547 :541:04/10/09 11:14:32 ID:???.net
言いたかったのはforeach (@ref)にしろよってことね
別にfor (@ref)でもいいかもしれんが
あと>>543読んだか? myは複数宣言するときは()いる

>>546
>ループ内で初期化
for(hoge){
my %hash;
statement;
}
こういう事だと思う

548 :540:04/10/09 12:28:12 ID:???.net
my () つけなくてもエラー出てないです。 という事は
省略も可って事ではないでしょうか?


549 :nobodyさん:04/10/09 14:26:51 ID:???.net
>>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.

550 :nobodyさん:04/10/09 17:41:00 ID:???.net
>>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は教えてくれない。


551 :nobodyさん:04/10/09 18:04:19 ID:???.net
ここってものすごいでかいスクリプトでも細かい所まで見てくれるの?

552 :nobodyさん:04/10/09 18:09:49 ID:???.net
>>550 何かおかしな日本語だった。訂正
s/他の方に/他の方からも/

あと、正規表現を使った方法を書き忘れてたのでついでに、、
例えば time が整数の場合の例

if (/^(.+)::(\d+)::(.+)$/) {
@hash{qw/title time contents/} = ($1, $2, $3)
}



553 :nobodyさん:04/10/09 19:39:15 ID:???.net
>>551
読むに耐えうる書き方&内容ならな。
KENTレベルなら却下

554 :nobodyさん:04/10/09 22:16:04 ID:???.net
>>553
オブジェクト指向とか頑張ってやってみたけど中途半端になったようなのでも大丈夫ですか?

555 :nobodyさん:04/10/09 22:37:35 ID:???.net
何書いたって叩かれるんだから、結城出していいと思う

556 :540:04/10/09 23:53:30 ID:???.net
ほんとにこんなに色々な方が、教えてくださるとは思ってませんでした。
どうもありがとうございます。
特にエレガントな方法を教えてくださった542氏
ハイレベルな(少なくとも今の私には)指摘をしてくれた
545=550=552氏には感謝します。
その他あのようなケチなコードに意見を下さった方々ありがとう。

またお世話になるかもしれません。m(_ _)m

557 :nobodyさん:04/10/10 20:44:07 ID:???.net
> my は複数でも()いりませんよ。バージョンによるだろうけど
> 最後に、今更foreach使ってる人いるんですか?w
こんなこと言うやつはもう来なくていい

558 :540:04/10/11 01:40:27 ID:21NinhME.net
ごめんね

559 :nobodyさん:04/10/11 09:04:30 ID:???.net
>>558
とっとと消えろ

560 :nobodyさん:04/10/18 16:42:05 ID:???.net
>>557
同意。

561 :かぼ:04/10/22 19:30:44 ID:EM8OHCfb.net
評価お願いします。
http://members14.tsukaeru.net/skycat/quan/quan.cgi

562 :nobodyさん:04/10/22 20:13:06 ID:???.net
>>561
コード晒せって馬鹿

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


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

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


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

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

564 :nobodyさん:05/01/23 03:00:10 ID:3FhDUp9J.net
>>563
ソースはマンドクサイのでちゃんと読んでないけど、
文字コードと改行コードの問題の様な希ガス。

565 :nobodyさん:05/01/23 13:10:26 ID:???.net
>>563
calc.html

× <SELECT name="set" name="s1">
○ <SELECT name="s1">

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


567 :nobodyさん:05/01/24 11:42:30 ID:YsLCruPH.net
>>566
改行コード2つとダブルクォーテーション必要無くね?

568 :nobodyさん:05/01/24 12:10:13 ID:???.net
\n\nはいらんね。
ヒアドキュメントのダブルクォートはどちらかというとあったほうが・・・

569 :563:05/01/25 02:27:15 ID:???.net
ありがとうございます。
>>566サンの通りにしたり、色々試してるんですがまだ動かないです…
printが閉まってなくてフォームの値を処理出来てないんでしょうか…

570 :nobodyさん:05/01/25 04:00:44 ID:???.net
>>569
うちのサーバでスクリプト試したんだけどちゃんと動くぜ。
おまい、サーバに嫌われてるんだ。きっと。

問題は print <<END_OF_DATA 〜 END_OF_DATA までか、
まさかと思うがパーミッションか、perlの指定。

一度 print <<END_OF_DATA 〜 END_OF_DATA を
たいした行数じゃないんだし、print "〜\n"; に置き換えてみ。
それからコメント行やめろ。余計見づらくなる。


571 :566:05/01/25 04:01:58 ID:???.net
>>569
今試したら566の変更だけで動いたわけだが。
Content-typeの行はそのままでも良いみたい。
動かないとしたらCGIの設置方法の問題。
まさかとは思うがローカルでテストしてるよね?

572 :nobodyさん:05/01/25 04:03:19 ID:???.net
→まさかとは思ってない法則

573 :566:05/01/25 04:07:06 ID:???.net
つーか563のソースのままでも、ちゃんと結果出るじゃん。
問題はコードではない予感。

574 :nobodyさん:05/01/25 04:14:49 ID:???.net
>>573
経験で言うとさ、ヒアドキュメントはサーバの機嫌で、最初はうまく動作して
くれないことがある。Cookieなんか入れるとどうも変なんだよな。
そういうとき俺はメンドーでも print "〜\n" に置換えてやる。すると、あとは
「ヒアドキュメントでも読込んでやるかぁ」ってことでサーバは折り合ってくれる。

575 :nobodyさん:05/01/25 04:27:07 ID:???.net
>>574
コンピュータに機嫌も何もねーだろ。

576 :nobodyさん:05/01/25 04:34:21 ID:???.net
いや、あるんだって。コード書く時も、こうした方が処理が楽だろ、とか
ムリしなくっていいから、とか気を使ってやると機嫌よくなる。ほんとだぜ。

577 :nobodyさん:05/01/25 06:20:53 ID:???.net
>>576
お前が何も分かって無いだけ

578 :nobodyさん:05/01/25 06:47:43 ID:???.net
577はコード丸写しで自作CGIと称してるだろw。
多かれ少なかれ576のような感じはあるな。


579 :nobodyさん:05/01/25 17:47:54 ID:???.net
>>578
お前が何も分かって無いだけ

580 :nobodyさん:05/01/27 18:28:04 ID:???.net
皆さん本当スイマセンでした!
パーミッションの所為だった…
元のままでも566のコードでもどちらでも動きました。

>>571-572
そのとおりです。
ローカルでテスト出来るという事すら知りませんでした。
勉強します。

581 :nobodyさん:2005/06/06(月) 19:56:57 ID:???.net
ねるねるねるねは Ψ(`∀´)Ψイッヒッヒッヒッヒ

             _▲_
ねればねるほど  ((φ(..。)  色が変わって

             _▲_
こうやってつけて  р(゚Д゚ )


          *_▲_*
 ウマイ━━━*━ヘ(゚∀゚)ヘ━*━━━━!!!!  テ-レッテレ-♪

582 :nobodyさん:2005/06/06(月) 23:03:05 ID:???.net
>>581
お前の親父ダサイな

583 :nobodyさん:2005/09/21(水) 17:05:52 ID:54UaWl8q.net
age

584 :nobodyさん:2006/05/18(木) 17:31:45 ID:Ip4qBE+B.net
ttp://c.hibi.info/Apple-1.zip
どなたか評価(清書?)お願いします_ _
指定されたスレの中から前日から当日までの既定の時間にあるレスを抽出して、
そのレスから株価コードを抜き出し株価の前日比、前日比率でソートしランキングを作成した後スレに書き込むツールです。
2chへの書き込み時のCookiee処理に曖昧な点があるのと、処理の最適化をして貰えると嬉しいです。
宜しくお願いします_ _

585 :nobodyさん:2006/05/18(木) 22:33:53 ID:???.net
他のスレから来ました。
Perlで他のサイトを取得して表示したいと思っています。
(著作権侵害とかそういうことをしたいのではないです)

お時間のある方にお願いしますが、次のコードで@niftyのトップページを取得してみたら
どうなるか教えていただけませんでしょうか?

print "Content-Type: text/html\n";
print "\n";
use LWP::Simple;
print get( 'http://www.nifty.com/' );

私のところだと、ブラウザ上での表示がぐちゃぐちゃになるんですが…。

586 :nobodyさん:2006/05/18(木) 22:56:52 ID:???.net
>585
マルチポストすんな

587 : ◆AOxf8.Tmck :2006/05/18(木) 23:03:18 ID:???.net
>>585は私じゃないです。スルーしてください。

588 :nobodyさん:2006/06/06(火) 15:21:29 ID:Re1RmuFG.net
簡易予定表のようなものを組んでみたんですが、なんだかモッサリしてる気がします。
もっと簡潔に書けるような気がするんですが自分ではこれが限界でした。
あと、ファイルロックのやり方が合っているのか自信がありません。
一応動いていることは動いているんですが、問題はないでしょうか。
改良すべき点、根本的にこういう書き方に直した方が良い、とかあればアドバイスお願いします。
大まかな内容は以下のようなものです。

予定として保存する内容は「予定日(月と日)」と
「予定内容(長くても200バイト程度)」の2つでフォームから渡します。
予定を保存するファイルは月単位で作成します。
例えば2006年6月の予定の場合なら「200606.txt」というファイル名です。
保存するファイルがないときはその都度作成し、

6月1日

6月2日

6月3日
.
.
.
という風に日付だけを先に入れておきます。
保存するファイルがあるときは、
フォームから渡された「予定日」とマッチした日付の次の行に「予定内容」を書き込みます。

内容は以上です。次レスにコードを晒します。

589 :nobodyさん:2006/06/06(火) 15:22:42 ID:???.net
# 保存するファイル名
$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";
}

590 :後半:2006/06/06(火) 15:23:17 ID:???.net
# 該当する月のファイルがなければ作成
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);

591 :nobodyさん:2006/06/06(火) 15:45:22 ID:???.net
>>589
まだちゃんと読んでないが…。

>if($MON == 1|3|5|7|8|10|12){
>}elsif($MON == 4|6|9|11){
これって比べてるのは、両方とも $MON == 15 だよね。
どっちの条件にも入らないと思うけど…正しく動作してるの?


592 :nobodyさん:2006/06/06(火) 15:51:41 ID:???.net
>$a = sprintf("%04d%02d",$YEAR,$MON)
セミコロンは?
動作するヤツうp

593 :nobodyさん:2006/06/06(火) 15:52:34 ID:???.net
ビット演算子を使っているんだ。
高度だな。

594 :nobodyさん:2006/06/06(火) 16:09:34 ID:???.net
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 "そんな月知らん" }
}

595 :589:2006/06/06(火) 16:39:31 ID:???.net
レス遅くなりました。すみません。
該当部分を切り出して動作するコードをUPしてきます。

596 :589:2006/06/06(火) 17:02:59 ID:???.net
ttp://up.isp.2ch.net/up/b2611f9a934e.zip
UPしました。パスは「589」です。
日付のところは594さんのアドバイスにしたがって書き換えました。
アドバイスの方よろしくお願いします。

597 :589:2006/06/06(火) 17:11:06 ID:???.net
>>591>>592
コードの一部分だけ抜き出してできるだけ短く書こうとしたので
分かりにくかった&書き損じがありました。すみませんでした。

>>594
perlでもswitchが使えるとは知りませんでした。

598 :nobodyさん:2006/06/06(火) 17:20:53 ID:???.net
いやperlではswitchは使えない。

599 :nobodyさん:2006/06/06(火) 17:24:17 ID:???.net
Switch なんてモジュールがあるのか知らんかった。

600 :nobodyさん:2006/06/06(火) 18:59:27 ID:???.net
cgi-lib.pl ktkr

601 :nobodyさん:2006/06/07(水) 00:26:35 ID:???.net
PerlはPHPとは違ってCPANを探せば考えられる大体の車輪は既にある。

602 :nobodyさん:2006/06/20(火) 01:54:40 ID:jChy1x4Z.net
>>596
見れない・・

603 :nobodyさん:2006/07/08(土) 12:44:17 ID:hGiPCYN9.net
switchがあったとは・・・

604 :nobodyさん:2006/07/21(金) 16:23:10 ID:BWWkPiVe.net
http://cgi37.plala.or.jp/bleach_w/bl2/btlryl.cgi

605 :nobodyさん:2006/10/07(土) 10:40:01 ID:L17fbc1O.net
@@@

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

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

607 :nobodyさん:2006/10/11(水) 23:36:54 ID:???.net
>>606
言葉遣い荒いけど、ばーっと書いた弊害なので許して。
取りあえずぱっとみてこんなもん。
・一部のうpろだは、リファラが不味いと弾かれる。
・画像がない場合の画像を一々作るのは無駄。
・CGIモジュール使え。
・グローバル変数も宣言しろ。
・これは好みだけど、設定の変数はハッシュに纏めた方が分かりやすいこともある。
・メインの流れはブロック作ってラベル付けた方が分かりやすいかも。
・正規表現の|は案外コストがかかる。配列にしてマッチング。
・先頭にrequire バージョン名;
・use warningsは〜?
・汚染チェックもきれい好きな方にはオススメ。
・サブルーチンを先頭で宣言して欲しい。
・変数名に日本語はいやん。
・データーベースつかってほすぃ。

608 :nobodyさん:2006/10/11(水) 23:42:15 ID:e5FQIx7N.net ?2BP(333)
>>607
おぉぉぉレスもらえたス(;ω;`)アリガタイ
感謝しまス!

>・正規表現の|は案外コストがかかる。配列にしてマッチング。
>・先頭にrequire バージョン名;
>・use warningsは〜?
>・サブルーチンを先頭で宣言して欲しい。
良くわからないス(・ω・`)

>・変数名に日本語はいやん。
英語苦手ス・・・毎度翻訳スかね・・頑張るス

>・データーベースつかってほすぃ。
現在勉強中でス!
生暖かい目で見守ってやってくださいス・・(・ω・`)


やっぱレベル高い人の意見は参考になるス!
文句なし!って言われるようなものをいつか作りたいス(・ω・`)thnkス

609 :nobodyさん:2006/10/12(木) 04:41:48 ID:???.net
>>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

610 :606:2006/10/12(木) 09:44:51 ID:???.net ?2BP(333)
>>609
サンクス

>最後から10行目くらい@cache[$i]は$cache[$i]じゃないの?
どちらも同じ意味だったはず
(若干の差はあるかもだが、使い方に大差なしでは?)

>print文中の"をエスケープするんならprint qq|ここに"文章"|;
>こーすりゃいちいちエスケープしなくておk
mjdsk!?
次から挑戦してみる

色々アドバイスやら素敵な解決策をありがとう


611 :nobodyさん:2006/10/12(木) 13:46:42 ID:???.net
useするかどうか切り替えたいなら
BEGIN{}で囲ったほうがいいな。

612 :nobodyさん:2006/10/12(木) 22:51:01 ID:???.net
>>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_

613 : ◆.PT9876/4U :2006/11/06(月) 17:44:37 ID:???.net
あちこちから routin をかき集めて自作しました :
alter.s225.xrea.com/cgi/bbs/read.cgi?log=0

1. 評価と言うよりも bug の あぶり出しを希望します.
2. 操作がわかりづらいとの意見があります.
 率直な ご意見をお願いいたします
3. 自信がないのが security 関連

・ 念のため, 全ファイルを upload しておきます:
alter.s225.xrea.com/bbs.zip

614 :nobodyさん:2006/11/06(月) 18:17:34 ID:???.net
>>612
URLが長すぎて横スクロールでた。
ふざけんな改行しろこのボンクラっ!

615 :nobodyさん:2006/11/07(火) 08:23:24 ID:???.net
IDなんだしもっと短く付けろよなw
文章そのままって酷すぎるw

616 :nobodyさん:2006/11/08(水) 01:06:36 ID:???.net
>>613
ちょっとエキサイト翻訳チックだな

617 : ◆.PT9876/4U :2006/11/08(水) 06:15:24 ID:???.net
>>613
お返事ありがと〜.
でも, どういう意味かしら ?

誘導されて来たのに いまだに誰も...
どうなってるの ?

618 :nobodyさん:2006/11/08(水) 10:54:37 ID:???.net
>>617
「とても読めたもんじゃない」
ということではないでしょうか。
613は釣りとしか思えない。
CGI以前の問題ね。

619 : ◆.PT9876/4U :2006/11/08(水) 18:47:29 ID:???.net
>>618
>CGI以前の問題ね
確かに... JavaScrit の bug がぁ〜〜〜
(絶対に書き込めない)
おまけに... WaMCom (Mozilla1.31) では問題とならなかった error が
IE5.17(Mac版) では発生して処理が止まる〜〜〜.

>613は釣りとしか思えない
釣りでは ありませぬ.

僕の環境で確認できる bug は退治しました.
引き続き あら探しをお願いいたしまする〜.

620 :nobodyさん:2006/11/08(水) 20:37:07 ID:???.net
つっこみどころが多すぎるなぁ…。

まず、「何を作ったのか」という概要や大まかな処理の流れすら書いてない。
>評価と言うよりも bug の あぶり出しを希望します.
評価するスレ。デバッグする所ではない。てか、デバッグなめすぎ。
>操作がわかりづらいとの...
具体的にはどういう操作?
>自信がないのが security 関連
どのファイルの何行目のどういう処理?
>JavaScrit の bug がぁ
JavaScritのスレへどうぞ。
>WaMCom (Mozilla1.31) では問題とならなかった error が
>IE5.17(Mac版) では発生して処理が止まる
と書いていながら
>僕の環境で確認できる bug は退治しました
ってどうよ。

何より、CGIについて無学なのがバレバレです。
背伸びせずPerlからでもきちんとお勉強しましょう。

621 :nobodyさん:2006/11/08(水) 20:38:25 ID:???.net
これさぁ、変数の検査とか書き込む条件とかまったくないじゃん。
最低でも変なファイル作られないようにするとか異常にでかい投稿は
書き込まないようにするとかしないと。
叩き専門の人にとっては叩く必要もないほどへなちょこだけど
プログラムに日本語を含めないつくりはいいと思う。
プロでもソースのいたるところに日本語を埋め込む人はいるからね。
ぶっちゃけそれくらいしか褒めようがないんだけどw

nullぽっぽはもしかしてOperaメインなの?

622 :nobodyさん:2006/11/08(水) 21:25:25 ID:???.net
>>613
まずはuse strict及びuse warnings、
また-Tオプションを付けてエラーが出なくなってから来てください。

623 :nobodyさん:2006/11/09(木) 02:37:09 ID:???.net
nullはクラシックMacのiCab使いだった筈。

624 :nobodyさん:2006/11/09(木) 05:11:43 ID:Rlngnc6w.net
まず, 皆さんにお礼を...
ありがとう ごぜ〜ますだ.

>>620
一応, 掲示板 CGI script (のつもり)

>デバッグする所ではない
言葉を間違えたかも ?
debug を他人に依頼するようでは問題外だと思っております.
動作はするけれど server 利用者に迷惑を書けるような
security hole に気づいていないかも知れない.
そんな問題があったら指摘して欲しかったですだ.

>>621
>変数の検査とか書き込む条件とかまったくないじゃん
おおせの通りです.
ようするに書きこみの部分を改良しなければならないのね ?
で, read.cgi の方は どうでしょう ?
人に迷惑を書けるような security hole が あったなら ご指摘くださいませ.

>CGIについて無学なのがバレバレです
弁解の余地もありません.
でも, 半端者の僕が言うのもアレですが
拾って来れるものには満足できなかったのら.
そもそも perl って できの悪い土台に無理な建て増しをした印象が...

625 : ◆.PT9876/4U :2006/11/09(木) 05:37:51 ID:???.net
>>621
>プログラムに日本語を含めないつくりはいいと思う
日本語を書きこむと文字化けするのでwww (僕の環境は一般的でない)
僕なりに いろいろ拾って来て解読を試みました.
その時, "皮肉にも comment が見通しを悪くしている" と思ったの.
徹底的に簡素化するのが先決だと...

> nullぽっぽはもしかしてOperaメインなの?
MacOS9.22 上で まともに動く Opera はなさそうです.
現在は WaMCom(Mozilla1.31+) がメインですだ.
動作確認に iCab, IE も立ち上げることがありますが,
あくまでも参考程度です.

>>622
メモメモ...

>>623
今では動作確認の参考程度ですだ.
改良されたかと思うと別の不具合が発生するのが許せません.

626 : ◆.PT9876/4U :2006/11/09(木) 05:47:23 ID:???.net
ところで rgst.cgi で変なファイルを作れる可能性って ?
(これこそが最も知りたいところ)
量の制限は早急に対処したいと思いますが...

627 :nobodyさん:2006/11/09(木) 16:01:13 ID:???.net
nullは呼んでない

628 :nobodyさん:2006/11/09(木) 17:48:40 ID:???.net
>>621
日本語コメントのどこが問題なの?

629 :nobodyさん:2006/11/09(木) 19:51:53 ID:???.net
利用者から見えない変数名、関数名を縮める意味があるのかと小一時間。

630 :nobodyさん:2006/11/09(木) 22:54:18 ID:???.net
Perlにケチつけるまえに自分の頭の程度を疑えよな

631 :nobodyさん:2006/11/09(木) 23:12:35 ID:???.net
日本語のコメントを入れないのが良いって…
なにその英語はカッコイイ、日本語はダサいっていう中学生wwwww

それに、日本人なんだから直感的にわかりやすい日本語で注釈をつけておくのが、
あとを引き続く人へのマナーだと思うんだが。

632 :nobodyさん:2006/11/09(木) 23:15:19 ID:???.net
English is cool!!

633 : ◆.PT9876/4U :2006/11/09(木) 23:35:05 ID:???.net
予想していたとはいえ, ボロボロだなぁ.
まあ, 他人様に使ってもらおうとするのなら それなりの配慮が必要だろう.
しかし, 僕は自分のために作ったんだ.
最低限, 同じ server 利用者に迷惑を書けない配慮をすれば済む話なんだ.

僕が知りたかったのはその部分に問題があるかどうか なんだけど,
話は あらぬ方向に...

634 :nobodyさん:2006/11/09(木) 23:45:04 ID:???.net
率直に言ってゴミ.基本から勉強し直した方がいい.
というかまずは普通の学校の勉強を頑張った方がいい.

635 :nobodyさん:2006/11/09(木) 23:46:24 ID:???.net
ひとつだけヒントを.

> read(STDIN,$u,$ENV{'CONTENT_LENGTH'});

たとえ寝ぼけて他としてもこの一行を書いてしまうようでは CGI 書くのは辞め
た方がいい.

636 :nobodyさん:2006/11/10(金) 03:57:46 ID:???.net
プログラムの途中に文字列リテラルを埋め込むな、というなら解らないでもない。
ただ、それは日本語に限った事じゃないな。

637 : ◆.PT9876/4U :2006/11/10(金) 06:34:00 ID:???.net
>>634
んじゃ〜ゴミでない script を書いてくらはい.
あっしは それを使わせていただきますだ. (イヒヒ)

>>635
>この一行を書いてしまうようでは CGI 書くのは辞めた方がいい
して, その理由は ?
それと read.cgi に security hole は ないのかどうかが知りたいのだけどなぁ.

-------------------------------------------------------------------
なんだか僕の質問に きちんと答えた回答はない.
ここを当てにした僕が愚か者ってことですかい ?

638 :nobodyさん:2006/11/10(金) 07:10:46 ID:???.net
まだ分かってないみたいだね.

>>この一行を書いてしまうようでは CGI 書くのは辞めた方がいい
>して, その理由は ?
セキュリティホールになるから.理由は自分の頭で考えなさい.

>それと read.cgi に security hole は ないのかどうかが知りたいのだけどなぁ.
当然ある.

639 :nobodyさん:2006/11/10(金) 07:14:05 ID:???.net
>>637
よく分かっていないようだからキミがすべきことを具体的に言おう。
スクリプト冒頭の#!/usr/local/bin/perlを、
#!/usr/local/bin/perl -T
use strict;
use warnings;
に書き換えてデバッグしなさい。

640 :nobodyさん:2006/11/10(金) 11:09:25 ID:???.net
n u l l は 出 て 行 け

641 :nobodyさん:2006/11/10(金) 11:30:01 ID:???.net
>>633>>637でカンマを多用したり、
>>638でドットを使ったり、
キモチワルイ。流行ってるのか?

というかプログラマのくせに
「、」や「。」の代わりに「,」「.」使う奴って
なんだかなぁ…


642 :nobodyさん:2006/11/10(金) 11:46:05 ID:???.net
>read(STDIN,$u,$ENV{'CONTENT_LENGTH'});

この一行は書いてもいいよ。その前の行で$ENV{'CONTENT_LENGTH'}の最大値を
決めてチェックしていればね。

643 :606:2006/11/10(金) 12:23:56 ID:???.net
>>637
人に物事を頼む態度じゃないよね?
こっちはみんな善意で見てるってこと忘れてる?
嫌なら他行ったら?

最初に自分で書いてたみたいだけど、他人のソースのつぎはぎスクリプトでしょ?
何の価値があるの?
まずはダサくてもきちんと問題なく動く物を作ることからじゃない?


利用者のことを考えないスクリプトなんて糞だと思います。

644 :606:2006/11/10(金) 12:26:14 ID:???.net
ちなみにおいらのほうは、鯖が不調で繋がりません。
どうにもならんのでしばらく放置〜

まだ様子見てくれてる人とかいるのだろうか・・・
もし居たら感謝

645 :nobodyさん:2006/11/10(金) 14:20:19 ID:???.net
自分がよく理解していない言語で書いたプログラムを
なぜ共用サーバーで使おうと思えるのか、その神経が理解できない。
プログラムよりも、その意識や存在自体が危険。

646 :nobodyさん:2006/11/10(金) 16:16:14 ID:???.net
>>637
>なんだか僕の質問に きちんと答えた回答はない
「きちんと答えた回答」があることにさえ気付けてないだけ。
自分の無知を棚に上げておきながら、
コードに目を通してマジレスしてくれた住人に対して
>ここを当てにした僕が愚か者ってことですかい?
とは随分とご挨拶だな。

ま、オレが見た限りでは
お前の掲示板CGIscriptには何のsecurity holeもないよ。
安心して使って良い。オレが保証する。

647 :nobodyさん:2006/11/10(金) 16:46:46 ID:???.net
>>646
ちょwwおまwww

648 :nobodyさん:2006/11/10(金) 19:08:49 ID:???.net
でも実際「大丈夫、何の問題もないよ」としかレスされてなかったら、
ということを◆.PT9876/4Uは考えてみた方が良い。
645も指摘してる通り、今の時点では自分にその言葉が正しいのかどうかすらも
判断できないのに、共用サーバーで自作CGIを使おうとしていることがどれだけ危険か考えてみろ。
極端なことを言えば、それらしい説明があって「これを書き足した方が良い」と言われれば、
それが危険なコードであっても追記してしまうんじゃないのか?

少なくともこれだけマジレスしてくれたり
お世辞にも読みやすいとは言えないようなコードを読んでくれただけでも感謝すべきなのに
「まずこれをやれ」と言われたことはやらず、
自分のレベルの低さを指摘されると反省するどころか逆ギレして
637のような皮肉と煽りに満ちたようなレスしかできないことを恥ずかしいとは思わないのか?

649 : ◆.PT9876/4U :2006/11/10(金) 19:14:39 ID:???.net
うわっ, お祭りになってる〜 (~_~)
(突っ込まれると思った global variable の突っ込みは なぜかないのね)

>>639
なるほろ...
さっそく確かめてみますだ〜.

>>642
おありがとうごぜますだ〜.

650 : ◆.PT9876/4U :2006/11/10(金) 19:29:01 ID:???.net
なんだか怒ってる人が居るみたいだけど,
こういうときは百計逃げるにしかず... (ぴゅ〜)

651 :nobodyさん:2006/11/10(金) 19:36:37 ID:???.net
36

652 :nobodyさん:2006/11/10(金) 20:12:51 ID:???.net
age

653 :nobodyさん:2006/11/10(金) 20:53:05 ID:???.net
サブルーチンの宣言ってなんじゃらほい?
スクリプトが見れないし何の事を言ってるのかわからんち。

>>641
理系の論文はそういう仕様らしいぞ。

654 :nobodyさん:2006/11/10(金) 20:57:05 ID:???.net
情報系の大学院でまともな教育受けた人間なら気持ち悪いとは思わない気がする.
気持ち悪がるのは専門学校程度しか行けなかったやつか基本をろくに知らない文系プログラマじゃね?

655 :nobodyさん:2006/11/10(金) 21:14:08 ID:???.net
おかしいな、ここは日本語で話しをする場所じゃなかったのか?
いつから自分の投稿を論文調で発表する場になったんだ?

とりあえず、読みづらい。
読み手を考えないのは、物づくりで使い手を考えないのと同じ。
邪魔


656 :nobodyさん:2006/11/10(金) 21:28:17 ID:???.net
あれだ、脳内補完で「,」も「.」も消し去っていた件

657 :nobodyさん:2006/11/10(金) 21:39:13 ID:???.net
別にそんなに気にする程のことでもないだろ。
ウザイのは句読点じゃなくてnullの存在なだけなんだし。

658 :nobodyさん:2006/11/10(金) 22:29:05 ID:???.net
>>657
激しく同意

659 : ◆.PT9876/4U :2006/11/10(金) 23:42:37 ID:???.net
どうい されて たまるか !
どうでもいいけど...
いや, やめておこう...
...

660 :nobodyさん:2006/11/10(金) 23:53:13 ID:l2n6SZM/.net ?2BP(121)
sub file_read {
my $a = $_[0];
open( FH , $a );
while (<FH>) {
print;
}
close FH;
}
こんなサブルーチンを作ったのですがうまく動きません
なぜですか?

661 :nobodyさん:2006/11/11(土) 00:48:26 ID:???.net
>>660
スレ違い

662 :nobodyさん:2006/11/15(水) 22:13:43 ID:???.net
>>660
スレ違いにも程がある。これはまぎれもなく板違いでもない!
ドメイン違いの質問だ。よそのドメインいけ

663 :nobodyさん:2006/12/04(月) 16:34:03 ID:???.net
さすがに句読点でいちゃもんをつけるのはどうかと思う。

664 :nobodyさん:2010/02/26(金) 22:46:54 ID:1vcgNIKQ.net
ping

665 :○~:2010/02/26(金) 23:15:50 ID:1vcgNIKQ.net
性懲りもなく, 評価依頼:
 ttp://homepage2.nifty.com/alter/

・ 以前指摘された部分には一応, 対策を施したつもりっす.
・ CGI は perl script で, HTML の代わりに外部 js ファイルを吐き出す仕様.
 (Ajax と違って, web-browser の影響が なく, 文字コードの問題も回避できる)
・ script 内の HTML 記述が皆無なので見通しが良く, 動作も軽快.

ただ, 注意して作ったつもりですが,
見落とした bug が潜んでいる可能性が大きいっす.

666 : 忍法帖【Lv=6,xxxP】 :2011/10/14(金) 19:38:24.52 ID:5RDtymiP.net
そして誰にも相手にされず>>665は1年が経ったのであった
                     糸冬わり

667 : 忍法帖【Lv=40,xxxPT】(1+0:8) 【24.4m】 電脳プリオン ◆3YKmpu7JR7Ic :2012/09/30(日) 15:48:22.27 ID:???.net ?PLT(12079)

          | | ガガガッ
          | |
          人
  ∧_∧   <  >_∧∩
  ( ・∀・)   人`Д´)/ ←>>203
 と    )  <  >_∧∩
   Y /ノ    .人`Д´)/ ←>>259
    / )    <  >_∧∩
  _/し' //. V`Д´)/ ←>>433
 (_フ彡        /

668 :カタヤマ:2013/12/31(火) 01:08:42.56 ID:NACGwKVa.net
宇土成

うまく逃げたな

669 :nobodyさん:2018/02/20(火) 04:34:47.26 ID:???.net
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

670 :nobodyさん:2018/06/20(水) 23:23:44.85 ID:UnZq46Ab.net
プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。

OT97Q

総レス数 670
198 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200