◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

自作CGIを評価するスレ


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/php/1049514428/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1 :
Premature end of script headers : /this/thread
03/04/05 12:47 ID:tIET0nhf
自分の作ったCGIをみんなに評価してもらうスレだよ。言語は問わないよ。
よほどプログラムが短くないかぎりはアプロダにでもアップしてね。
2 :
nobodyさん
03/04/05 12:58 ID:???
3 :
nobodyさん
03/04/05 14:40 ID:???
ソース貼り用掲示板
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html

あぷろだはどこ使うよ?
4 :
nobodyさん
03/04/05 15:00 ID:???
PHPもOKなの?
5 :
nobodyさん
03/04/05 15:02 ID:???
>>4
>>1 くらい読め
6 :
nobodyさん
03/04/05 15:32 ID:???
CGI版のPHPならOKてことだな>>4
Cで書くCGIスレも統合するか、ゴミだし。
7 :
nobodyさん
03/04/05 15:51 ID:???
WebProgならなんでもいいんじゃネーノ?
8 :
nobodyさん
03/04/05 17:41 ID:???
CGIならいいんだろ?
9 :
nobodyさん
03/04/05 18:07 ID:???
>>5

モジュール版のPHPについて聞いたことぐらい気づけ。
10 :
nobodyさん
03/04/05 18:09 ID:???
>>9
あーなるほど、スマン。
っつーかそれもアリに決まってるじゃねーかよーヽ(TДT)ノ
11 :
マリモーマ ◆r6PDGT6Xd2
03/04/05 18:33 ID:4Hc1kYlW
僕の作った CGIは どう? http://777.or.nu/cgi.html
12 :
nobodyさん
03/04/05 18:43 ID:???
絵に描いたような一直線ソースだな
13 :
nobodyさん
03/04/05 18:57 ID:???
もうちょいスコープとか意識したほうがいいんじゃない?
殆どグローバル変数・・・
14 :
nobodyさん
03/04/05 18:59 ID:???
・どっかからコピーした部分以外で使われる変数が全てグローバル
・関数名から内容が想像できない(re,fot,ur,re2,wr2lok,co.gc等 sub ge {} は結構引いた)
・スタイルに一貫性がない
・$FORMの扱いがキモイ
・symlinkロックしてるが解除はどこでやってんだ?
15 :
nobodyさん
03/04/05 19:05 ID:???
>>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
なるほど いろいろなアドバイス サンクス
17 :
これ自信作だぜ
03/04/05 22:52 ID:qMi3a/lA
18 :
これ自信作だぜ
03/04/05 23:35 ID:qMi3a/lA
tail -f /var/log/httpd/accesslog
見たけど誰もアクセスして来ないや。
皆臆病者だね。
19 :
nobodyさん
03/04/05 23:45 ID:???
お前がきもいから人気無いだけだろ。とんだ勘違い野郎だな。
20 :
4
03/04/06 00:23 ID:t3fZoblF
よかったら批判ください。
もうちょいコード直してから、URL晒します。
21 :
nobodyさん
03/04/06 00:26 ID:???
元から批判が欲しいとは
22 :
4
03/04/06 00:28 ID:t3fZoblF
批判以外もらってもどうしようもない..
ほめてもらったら何も意味がないっす。
23 :
nobodyさん
03/04/06 00:31 ID:???
>>17
いったけどエラー起こしとる罠
24 :
nobodyさん
03/04/06 00:39 ID:???
>>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:???
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
なぜか、2重カキコデスカ!?と
27 :
4
03/04/06 00:41 ID:t3fZoblF
HTMLがDOCTYPE無し、気分によって大文字小文字が混じっている
のはNGですか?
28 :
nobodyさん
03/04/06 00:45 ID:???
あ、ゴメン。エラーのせいで最後の方が減点食らってるのね。
本来のドキュメント(最初の</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:???
>>27
別にいいんじゃねぇの?>>17は自信作らしいから突っ込まれてるだけで。
30 :
4
03/04/06 00:53 ID:t3fZoblF
ほう、今自分で見ててすでに数箇所突っ込みどころがあったよ。
もう少し。
31 :
4
03/04/06 00:58 ID:t3fZoblF
ついでにオレはここの4ではない。
32 :
nobodyさん
03/04/06 00:59 ID:???
評価して欲しいやつはトリップつけれや
33 :
nobodyさん
03/04/06 01:04 ID:???
>>31
ややこしいぞw
じゃあPHPじゃないのか?
34 :
4 ◆R.zOhOehsw
03/04/06 01:29 ID:t3fZoblF
PERLですが、まずいですか?
35 :
nobodyさん
03/04/06 01:34 ID:???
いえ、さっさと貼っちゃってよん。
36 :
あぼーん
03/04/06 01:41 ID:???
   ______________
 /:\.____\
 |: ̄\(∩´∀`) \  <先生!こんなのがありました!
 |:在  |: ̄ ̄ U ̄:|
http://saitama.gasuki.com/aomori/
37 :
4 ◆R.zOhOehsw
03/04/06 01:56 ID:t3fZoblF
BBS: http://hex51.darktech.org/cgi-bin/the/bbs.pl
SRC: http://hex51.darktech.org/the.txt

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

糞ほど批判いただければ幸いです。
書き込みまくっても糞スレたてまくっても結構。
38 :
nobodyさん
03/04/06 02:04 ID:???
>>37
Perlの文法的な間違いはないみたいだけど、処理がいまいちな部分が
散見される。
効率を考えればもうちょい工夫したほうがいいだろう。
39 :
4 ◆R.zOhOehsw
03/04/06 02:08 ID:t3fZoblF
意見どうも。
もっとアルゴリズムを勉強しれってことですね?
40 :
nobodyさん
03/04/06 02:22 ID:???
・myが気になる。
・一行書き出すのにヒアドキュメント使うのは何故?
・かと思えばqq連発で使ってたり…

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


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

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


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

変なところあったらけなしてくれてもけっこうです、むしろけなして下さい。
42 :
nobodyさん
03/04/06 02:35 ID:???
myもいいんだけど、実質グローバルと同じだな。
処理毎に{ }で囲んで使わなきゃ意味ないだろ。
43 :
4 ◆R.zOhOehsw
03/04/06 02:47 ID:t3fZoblF
ご意見どうも。
>・一行書き出すのにヒアドキュメント使うのは何故?
エディタで折り返すのが気になるので..
>・かと思えばqq連発で使ってたり…
Emacsなので、ヒアドキュメントだと表示する特殊によって
自動のタブがおかしくなるのです..

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

myに関しては、ちょっと調べてみます。
その他の意見に関しても、もう一度よく考え直してみます。
44 :
4 ◆R.zOhOehsw
03/04/06 02:49 ID:t3fZoblF
>特殊
特殊文字、記号です。
45 :
nobodyさん
03/04/06 02:50 ID:???
>>43
cperl-mode使ってる?

myは変数のスコープを局所範囲に閉じ込めるためのもので、
mainパッケージでmy使ってもmainパッケージ全体から読み書きできてしまうので
いやーんな感じ
46 :
nobodyさん
03/04/06 02:53 ID:???
>>41
2193行目 $error_name = @_[0]; → $error_name = $_[0];でいいだろ
あちこちの変数、もうちょっとスコープを考えてレキシカルに
するとかしたほうがいい。
問題ないけど、読み取りopenに < をつけたりつけなかったりなどしてるのを
書き方統一したら?
他の部分なんかでも統一させる書き方をくせにしたほうが可読性良くなるし。
吐いてるhdmlはすぐにテストできないから見ていない。
47 :
4 ◆R.zOhOehsw
03/04/06 03:00 ID:t3fZoblF
>>45サン
Emacsは、普通にそのまま.plとして読んだ感じで使ってます..
mainで、my使うと、別の関数から書きかえれないのでは?
それは意味ないのでしょうか?
48 :
4 ◆R.zOhOehsw
03/04/06 03:03 ID:t3fZoblF
もしかして、mainで書いた関数は、mainに含まれますか..汗
勝手に、関数を覗いた部分がmail{}となるのかと思ってました。
49 :
nobodyさん
03/04/06 03:04 ID:???
>>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:???
#!/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:???
>>48
main関数なんてもんはない。
mainパッケージ。この辺はちゃんと勉強した方が良かれと思われる。
52 :
4 ◆R.zOhOehsw
03/04/06 03:08 ID:t3fZoblF
はい、よく分かりました。
ありがとうございます。
53 :
41
03/04/06 03:11 ID:???
>>46
御意見ありがとう御座います。
こんなに早く返って来るなんて…。感激です。
…と言うより、私の記述が雑なので簡単に変な所が見つかってるだけなのだろうか。複雑な気分…汗

もし、ヒマな方がいらっしゃいましたらまだまだ御意見をたくさんお聞かせ下さい。
54 :
nobodyさん
03/04/06 03:13 ID:???
どれどれ。ちょっと見てみるか。
55 :
nobodyさん
03/04/06 03:16 ID:???
>>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:???
>>55 まあtypoじゃないみたいだけどね。
・2350行目~sprintfですっきりと
57 :
nobodyさん
03/04/06 03:31 ID:???
他人が書いたソースって見てると面白いもんだねぇ・・・
58 :
nobodyさん
03/04/06 03:31 ID:???
つーか、でかっ
10KB超えるCGIなんて作ったこと無い・・・。
59 :
nobodyさん
03/04/06 03:32 ID:???
・receive_error ifはいるのか?
・localの意味が分からないならmyを使おう
・クラックを気にするならcryptを使おう
・684行目はどういう意味?
・=はエスケープしなくていいよ
・PCと携帯を同時に扱うなら、途中までは両者に依存しない処理にしておいて
 最後の最後いざ出力するという時に振り分けると綺麗になるよ
60 :
nobodyさん
03/04/06 03:34 ID:???
>>58
儂は300Kのソースがあるぞ(ぉ
61 :
nobodyさん
03/04/06 03:38 ID:???
・最初(~300行目)のqqはなんだ?
まぁあとは4氏にも共通するけど、インデントがおかしいのと
記述に一貫性がないのが気になるね。
サブルーチンがそこそこ見られるのは良いと思う(ただ、もう少しstrictに書こう)

これは個人的な趣味だけど、俺はグローバルなオプションはハッシュにする。
%option =(board_name => "hoge", max_mes => 50 ); みたいに。
62 :
4 ◆R.zOhOehsw
03/04/06 03:45 ID:t3fZoblF
>>61
なるほど。
今までファイルから読んだ設定なんかはハッシュにしてましたが、
CGIだと初心者設置者が混乱するかと思って、できるだけ
見た目で分かりそうにしたつもりでしたが、ハッシュのがイカス。
63 :
nobodyさん
03/04/06 03:49 ID:???
あと、自分的趣味をいうと、subの変数はことごとく局所変数にするほうがいいと思うなぁ

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

みたいな形でやっとくほうが誤動作しにくい。
64 :
41
03/04/06 03:52 ID:???
>>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
localは宣言した{}内から読んだ関数内からでも参照できる。かな..

$cry = crypt('passwd', 'sl');
で、DESというので暗号化します。slはsaltで2byteとります。
暗号化されてた文字列(13byte)の先頭2byteに入りますから、
パスワードを検査するときに、同じsaltでもう一度暗号化して、
暗号済みのものと同じになれば同じパスワードです。
ん、いい説明探したほうが早いか..
66 :
nobodyさん
03/04/06 04:18 ID:???
ハッシュを普通の変数のように使うのってだめですか?
67 :
nobodyさん
03/04/06 04:23 ID:???
>>66
駄目ではない、用途によって使い分ける事が重要
68 :
nobodyさん
03/04/06 04:23 ID:???
#○ログファイル
$def_log_file = q[./log.txt];
これは納得できるが
#○一度に表示されるレスの件数。
#[3~6]推奨。多く設定すると端末側で読み込めない場合があります。
$def_mess_page = qq[5];
こっちをダブルクオートで囲むのはなぜ?
数値をクオートで囲まれると変な気がする…
69 :
nobodyさん
03/04/06 04:25 ID:???
70 :
nobodyさん
03/04/06 04:32 ID:???
myは本当は局所的に使うためなのはしってるんだけど
どうしてもその前後で値が必要になったりすることが多いので
サブルーチンなら先頭に全部まとめて書いてる・・・
71 :
nobodyさん
03/04/06 04:34 ID:???
>>70
余りいい設計じゃないなぁ・・・
subは位置に依存しないものであるべき
72 :
41
03/04/06 04:37 ID:???
>>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:???
>>69
はい、これで行きます、トリップ。

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

なんて言うのか、入力する場所を
[ここ];
にしたら始めて設置する人でも分かりやすいと考えた結果こうなりました。
74 :
nobodyさん
03/04/06 04:47 ID:???
>>73
んー基本的なことを言わせてもらうと・・・
コメントでちゃんと書いとけば理解してもらえる範囲じゃないかと思うけどね・・・

それでわからないっていうのは相手する必要が無いような・・・(ぉ
75 :
nobodyさん
03/04/06 04:48 ID:???
>>71
激しく意味不明なやつになっちまったけど

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

こんなやつもだめ?ってこと
76 :
nobodyさん
03/04/06 04:53 ID:???
って言うか最近多い「4」って香具師は「4番」ではなく、コテハン?
普通に紛らわしい。なんとかしてほしい。
77 :
nobodyさん
03/04/06 04:55 ID:???
このスレタイっておかしくない?

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

じゃない?
78 :
71
03/04/06 04:55 ID:???
>>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:???
まぁ意識しろって言われたら
漏れならこう書くんだけど

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:???
まぁ、書き捨てにするか後から見やすく書くかのレベルになる罠(w
81 :
nobodyさん
03/04/06 05:05 ID:???
>>66
普通の変数も無名ハッシュっていう位置づけじゃなかったっけ?
82 :
37 ◆0wPZQfeVoI
03/04/06 05:07 ID:t3fZoblF
>>76
非常にすみません。
Perlの極意スレの4番です。
もう沈んでどこかに行ったスレです。
なんとなくそのまま4でした、改名します、37です。
83 :
nobodyさん
03/04/06 05:09 ID:???
>>79
漏れは 何回も使う関数的なやつは結構まともに書いてるけど
本体が長くなるからただ分けただけのサブルーチン的なものだと
かなりだらしないわ。

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

それ以上続けるのが無意味と分かっている場合に
だらだらと引きずるのは良くない。すぱっとreturnすべき。
86 :
71
03/04/06 05:13 ID:???
>>84
まぁ、別に好きなように書けばいいんだけど、
グローバル変数の値をサブルーチンから出力することもあるし・・・
それ以前に、どのレベルで言ってるかつーのが気になる所かもなぁ

ちなみにgotoは使わないよ。必要ないから(w
87 :
37 ◆0wPZQfeVoI
03/04/06 05:15 ID:t3fZoblF
>>84
なるほど、私は上のほうの書き方しますね..
やはり、コードが見やすいというのもプログラムの重要な要素に
はいるのでしょうか?
88 :
79
03/04/06 05:16 ID:???
>>84
それ書くなら
if(真 && 真 && 真){何か}else{return 0;}
だろうなぁ…

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

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

returnは複数付けるのが一般的らしいな、覚えとこう
90 :
79
03/04/06 05:22 ID:???
>>37
貴殿のソースをみたんですが
653-669行・・・ これなんすか?(w
91 :
37 ◆0wPZQfeVoI
03/04/06 05:26 ID:t3fZoblF
>>89さん
そのためには1度しか使わない処理でも無駄にサブルーチン作って、
見やすくすることも必要でしょうか?
趣味で作るので、自分以外がソース読むことが無かったため
とりあえず、自分が読めれば気にしなかったのですが。
92 :
37 ◆0wPZQfeVoI
03/04/06 05:29 ID:t3fZoblF
>>90
エラー処理ですが、
if () { えらー1}
if () { えらー2}
if () { error }
としたほうがいいですかね?
93 :
71
03/04/06 05:31 ID:???
>>91 
慣れてない時は単純な処理にでもサブルーチンは作ってたけど、
今は、機能ごとにサブルーチンを作ってるって感じですね
同じ処理でも規模がおっきくないとそのまま書きなぐりすることがおおいです

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

unless ($a < 100){&error("$aが100以下じゃありません");}
unless ($b eq 'GET'){&error("$bがgetじゃありません");}
~~
でいいと思うが・・・
95 :
71
03/04/06 05:35 ID:???
>>92
@error =(
 err1,
err2,
);

$error[$code];

みたいなことを最近よくするな(w
96 :
nobodyさん
03/04/06 05:38 ID:???
>>88
あっと、>>84の例ではエラー処理が同一に書いてしまったのでおっしゃるとおりなんですが、
エラー処理が失敗した段階によって異なると考えてくださいませ
97 :
nobodyさん
03/04/06 05:40 ID:???
×エラー処理が同一に
○エラー処理の部分に同一の処理を

プログラム言語の前に日本語勉強してきます。。。
98 :
37 ◆0wPZQfeVoI
03/04/06 05:40 ID:t3fZoblF
>>93
なるほどー。
私は2度以上行う処理で引数と返り値が必要なものをサブルーチンに
するようにしていますが、今回少し考え直そうかと。
99 :
nobodyさん
03/04/06 05:43 ID:???
つーか>>41の掲示板でかッ!
携帯用だと処理が細かくなって増えるのか?
100 :
79
03/04/06 05:43 ID:???
関係無いが・・・漏れはエラー処理の場合
第一引数は数値だよ第二引数になんかメモ
sub error内でエラーログに記録する内容とかを振り分けることができる
perlだけじゃないが でかいやつになると
エラーメッセージ一覧表だけで数KBになる・・
101 :
37 ◆0wPZQfeVoI
03/04/06 05:43 ID:t3fZoblF
>>94さん
確かにその通りです。
優先順位などありません..
102 :
71
03/04/06 05:48 ID:???
基本的にエラーメッセージって書かないなぁ(ぉ
規定外の値だとデフォルト値になるようにしてるなぁ
103 :
79
03/04/06 05:49 ID:???
人によってコーディングの仕方が
かなり違うことがわかったんで 今日は寝るサラバ

起きたら局所変数を意識したプログラムを書いてみよう。
104 :
37 ◆0wPZQfeVoI
03/04/06 06:08 ID:t3fZoblF
ちょっと修正しました。批判していただいた部分は
まだすべて修正できていませんが、一応アド載せときます。
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:???
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
はい、実は上のほうですでに言われました。
さっさとourにしておきます。
107 :
37 ◆0wPZQfeVoI
03/04/06 06:33 ID:t3fZoblF
修正しますた。
108 :
nobodyさん
03/04/06 06:34 ID:???
ま、あせらずゆっくりいけやー。
109 :
37 ◆0wPZQfeVoI
03/04/06 06:52 ID:???
どうもー。
取り合えず今日は寝てません。
110 :
nobodyさん
03/04/06 08:06 ID:???
my でスコープはファイル・パッケージ内に限定されるんだから意味はあると思うよ。
our にはならない。
別のパッケージから読みこんだりしてるのでなければ、
わざわざ our にする方が意味ないと思うけど?
111 :
これ自信作だぜ
03/04/06 08:51 ID:dTzeXpbT
修正しましたが何か?
112 :
あぼーん
03/04/06 08:52 ID:???
          ┌┬┬┬┐
    ―――┴┴┴┴┴―――――、
.  . /  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ ||    __________
  ./    ∧// ∧ ∧| ||      |||   ||  /
 [/____(゚_//[ ].゚Д゚,,) ||___|||   || <  こんなのが有りますた
. ||_. *  _|_| ̄ ̄ ∪|.|.       |ヽ.__||  \__________
. lO|o―o|O゜.|二二 |.|    救済病院 ||
 .| ∈口∋ ̄_l__l⌒l_|___|_l⌒l._||
   ̄ ̄`ー' ̄   `ー'  `ー'   `ー'
http://saitama.gasuki.com/koumuin/
113 :
これ自信作だぜ
03/04/06 08:52 ID:dTzeXpbT
114 :
これ自信作だぜ
03/04/06 08:53 ID:dTzeXpbT
スマソ。スッペルミス
http://oasis.minidns.net/
115 :
あぼーん
03/04/06 09:17 ID:???
  ∋8ノノハ.∩
   川o・-・)ノ <先生!こんなのがありました!
__/ /    /   
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
 ...|| ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/shinagawa/
116 :
これ自信作だぜ
03/04/06 10:29 ID:dTzeXpbT
http://oasis.minidns.net/
蜜柑性だけどな
117 :
nobodyさん
03/04/06 10:35 ID:???
[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:???
書き方まずかったかな?
>>71はブロックの外で宣言すると、例えばサブルーチンの中からでも参照できてしまうので
変数宣言する時は、スコープを絞って適切なブロック内で宣言しよう…と言っているのだと思う。
修正というか、むしろ改悪されえてるような・・・。
our にしてしまうと、他のファイルからも値を参照出来る様になってしまうので、

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


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


ちなみに、定数宣言なら変数にはせずに、
use constant LOG_DIR => './logs';
という風にしておくと、代入できないから
グローバルとか関係なく中の値は保証されるよ。
119 :
37 ◆0wPZQfeVoI
03/04/06 14:26 ID:???
なるほど。
囲ってみます。
120 :
71
03/04/06 15:01 ID:???
>>118
>変数宣言する時は、スコープを絞って適切なブロック内で宣言しよう…と言っているのだと思う。

そいう意味.、言い方まずかったですな・・・
121 :
nobodyさん
03/04/06 15:42 ID:???
{}って
while{} foreach{} for{} sub{} {}
が?有効なの
if{}はどうなるの?
122 :
nobodyさん
03/04/06 15:46 ID:???
漏れはグローバル変数使いまくりだけど だめかい?
123 :
71
03/04/06 15:49 ID:???
>>121
基本的に {}で囲ってる部分は全部スコープになりますよん
if{}でも eval{}でも 一緒
ファイルの重複を避ける処理
 {
   my %count;
   @array = grep(!$count{$_}++, @array);
 }
これみたいに、スコープを作るために括る事もありますし
124 :
nobodyさん
03/04/06 15:57 ID:???
別に全部$hogehogeみたいなやつでいいじゃん
なんで局所変数とかみんなつかうの????
125 :
71
03/04/06 16:00 ID:???
>>124見通しが悪くなるから。
誤動作の元にもなりかねんし
126 :
nobodyさん
03/04/06 16:05 ID:???
>>125
でも配ってるやつってほとんどグローバル変数のみじゃん
127 :
71
03/04/06 16:12 ID:???
>>126だから自分で組んでるんだが?
グローバルがいいっていうなら、そうすればいいのじゃない?

自分だけでやっとればいいってのなら一向にかまわないけど、
複数の人がからんでくるとなるとそうもいかない
128 :
37 ◆0wPZQfeVoI
03/04/06 16:44 ID:???
取り合えず少し直してみました。
今日はPHPで学校の掲示板を作るので
あまり変更はないかもしれません。

>>71さん
気をつけないと
if ($hoge eq 'hoge') {
 my $foo = 'hoge!';
}
print $foo;
この場合マズイですよね?
チョットmyについていろいろと試してみます。
129 :
71
03/04/06 16:49 ID:???
>>128
それはスコープの外に print $fooがあるので動作しない

if ($hoge eq 'hoge') {
 my $foo = 'hoge!';
 print $foo;
}
コレが正解
130 :
37 ◆0wPZQfeVoI
03/04/06 19:43 ID:???
>>129さん
OKっす。
要はCのautoですよね?
131 :
nobodyさん
03/04/06 20:10 ID:???
myを使わなきゃダメって訳じゃない。
使った方が良いってだけで。
132 :
nobodyさん
03/04/07 00:03 ID:???
グローバルである必要がないならレキシカルを使うほうが
安全だし速度的にも有利だからね。
133 :
nobodyさん
03/04/07 15:58 ID:???
use vars使うのは反則?
134 :
nobodyさん
03/04/07 16:14 ID:???
ありじゃないの?
じゃなきゃそんなモジュール作らんよ。
135 :
nobodyさん
03/04/07 18:46 ID:???
>>133
使い方次第
136 :
nobodyさん
03/04/07 22:42 ID:???
localを使おう
137 :
◆YHmsETNOS2
03/04/08 16:35 ID:???
すみませんがちょっと漏れのスクリプトを見てください。
ソートの練習なんです。
いちおう漏れの思っている動作しているのですが,突っ込むところがあれば,後学のために色々教えてください。

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

要 cgi-lib.pl です。

たいしたものじゃなくてごめんなさい。
初心者なんで,これでも1週間かかっちゃったんです。
よろしくお願いします。
138 :
nobodyさん
03/04/08 18:57 ID:???
>>137
myとかの使い方覚えたほうがいいかも
まだはじめたばかりなのならPHPもいいかもよ

でスクリプトに関しては
ファイルをアップロードするわけでもないんだし
自前でデコードしよう。
139 :
◆IzdKJ.WAZA
03/04/08 19:02 ID:???
>>137
漏れも挑戦してみていいかい?
140 :
◆IzdKJ.WAZA
03/04/08 19:45 ID:???
疲れた。。とりあえずこんなん?
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:???
my, our でも変数のスコープは同じなんだけどなぁ。
varsプラグマ(v5.6以降だと our)を使うのは、
use strict 'vars'プラグマを有効にした時に、
複数のパッケージである変数を別のパッケージから使いたい場合、等。

no strict は、場合によっては反則 ...
142 :
nobodyさん
03/04/08 23:45 ID:???
そういえば、さっきmyとmyなしでベンチマークを行ったら
myの方が3,4倍遅かったのだけど…。メモリ消費は解らない。
143 :
71
03/04/09 03:32 ID:???
自分の趣味でリファレンスを使ってソースを書いてみた・・・
cgi-lib使ったことないからあてずっぽうだけど、かなりソース書きなおす事になったねぇ

http://iwh15.hp.infoseek.co.jp/p/e/r/perldev/cgi-bin/upload/source/041.txt
144 :
71
03/04/09 03:33 ID:???
>>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:???
>>138
> myとかの使い方覚えたほうがいいかも
わかりました。勉強します。

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

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

>>144
うわぁ、ソースが綺麗でつ。
でも、動きません。。。。。
ローカルでは「ページを表示できません」で動きませんし、
サーバにあげてみた所、最初の画面は表示するものの、
情報のリンクのところが
http://サーバー名/$script?action=1&rev=1&n=0
って、$script そのままでつ。
結果は404でつ。
自分でも調べてみまつ。
146 :
71
03/04/09 04:57 ID:???
>>145 動かしてないからねぇ(w
穴ありまくりであろうかと
147 :
nobodyさん
03/04/09 09:53 ID:???
> そういえば、さっきmyとmyなしでベンチマークを行ったら
> myの方が3,4倍遅かったのだけど…。メモリ消費は解らない。

根拠を示さずに結果だけ取り出して言われても…。誤解されないかな?
my の何のベンチマークを行なったの?
ループ・ブロック内で変数を宣言して、そのオーバーヘッドを測っていた
なんて事はないよね?それとも、ホントに変数の参照・代入が3~4倍もかかったりした?
148 :
nobodyさん
03/04/09 10:12 ID:???
>>142
myのほうが遅いというのはちょっと信じがたいな。
ブロック外から参照される必要がないからシンボルテーブルにも
登録されないし、むしろ速くなるはずだが・・・
149 :
◆YHmsETNOS2
03/04/10 04:22 ID:???
>>146
$html =<<'EOT'; を $html =<<"EOT"; でOKでした。

なお、ローカルで動かない件は、cgi-lib.pl へのパスが違っていたというアフォが原因。
150 :
71
03/04/10 05:35 ID:???
>>149
シングルクオートよくやっちゃうんですよ~(w
動いてよかったです
151 :
nobodyさん
03/04/10 06:38 ID:???
cgi-bin.pl って
確か、CGI.pmがサポートしてたはず・・・
標準モジュールだよ。

use CGI qw(:cgi-bin);
152 :
71
03/04/10 06:41 ID:???
>>151
自分で処理を書くもんでねぇ・・・
153 :
nobodyさん
03/04/10 10:43 ID:ljl/7aqx
ベンチマーク取って見たけど…明らかに 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:???
>>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:???
>>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:???
2行目が間違ってた。$aだとuse strictでエラーにならないから$ahoにしたんだけど、
これは、、sort用にこっそり、エラーにしないようになってるのかな。

追加、これはなかなか使える
foreach my $hoge (@list) {
}
157 :
nobodyさん
03/04/10 18:36 ID:ljl/7aqx
>>155
質問。continue って何?
158 :
nobodyさん
03/04/10 18:58 ID:???
man perlsyn
159 :
nobodyさん
03/04/10 20:47 ID:???
”次のループに移る前に実行されるブロック”であってる?
こんな制御構文あったんだ。知らなかった。Thx >> 158
160 :
nobodyさん
03/04/10 20:58 ID:???
うん。これは、nextとかを使うとき、行番号が確実に進むようにする、みたいに使う
161 :
◆MvRbZL6NeQ
03/04/11 00:23 ID:???
なるほど
162 :
nobodyさん
03/04/11 00:36 ID:???
つまりはforの後処理か
163 :
◆YHmsETNOS2
03/04/12 20:17 ID:???
再び。。。

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

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

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

要 cgi-lib.pl です。

たいしたものじゃなくてごめんなさい。
164 :
71
03/04/12 22:26 ID:???
>>163
登録データの件数が増えるのならば
sortの cmp と <=>のルーチンを考えたほうがいいかも
foreach(@keys){
if($_->[$n] !~ /^\d*$/){
$num_flug =1;
last;
}
}
データ量増えていくと、cmpを使う場合処理が遅くなる。

if($n= 4){
if($rev){
@keys = @keys[ sort {$keys[$b]->[$n] <=> $keys[$a]->[$n]} 0 .. $#keys ];
}else{
@keys = @keys[ sort {$keys[$a]->[$n] <=> $keys[$b]->[$n]} 0 .. $#keys ];
}
}else{
if($rev){
@keys = @keys[ sort {$keys[$b]->[$n] cmp $keys[$a]->[$n]} 0 .. $#keys ];
}else{
@keys = @keys[ sort {$keys[$a]->[$n] cmp $keys[$b]->[$n]} 0 .. $#keys ];
}
}
みたいな感じかになろうか・・・
165 :
71
03/04/12 22:31 ID:???
>>164
if($n= 3){
だな、このデータの場合
166 :
nobodyさん
03/04/12 22:53 ID:???
=なんですか?
167 :
71
03/04/12 23:00 ID:???
>>166
==だね(汗
168 :
nobodyさん
03/04/12 23:21 ID:???
>>163
途中でダレたからかなり適当ですがいぢってみますた。
http://boobar.hp.infoseek.co.jp/refactoring/test.txt
169 :
◆YHmsETNOS2
03/04/13 04:43 ID:???
>>164-168
さんくすでつ!

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

>>168
全面的に書き換えてくださり、ありがとうございまつ!
感謝でつ!
乙でつ!
さっそくテストしてみまつた!
おー、動いているー。。 あれ(?_?)
データ件数は88くらいあるはずなのに、80までしか表示されない。。。
でもがんばってスクリプト読み下して自分で修正したいと重い松。
170 :
71
03/04/13 04:47 ID:???
>>169
初耳じゃなくて、そういうソースを組んでたから
指摘したまでなんだけど・・・
ソースちゃんと理解出来てますか??(o_ _)o
171 :
◆YHmsETNOS2
03/04/13 04:54 ID:???
>>170
> ソースちゃんと理解出来てますか
自分の>>163のソースは理解してまつ。
>>168さまのは、現在格闘中でつ。
苦戦しておりまつ。
172 :
71
03/04/13 04:57 ID:???
>>171では、

foreach(@keys){
if($_->[$n] !~ /^\d*$/){
$num_flug =1;
last;
}
}
lココの部分がどういう処理をしてたか説明してみそ
173 :
◆YHmsETNOS2
03/04/13 05:07 ID:???
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:???
sortの cmp と <=> のどちらでやるかのフラグを立てているところっていったほうが良かったんでつか?
175 :
◆YHmsETNOS2
03/04/13 05:30 ID:???
>>168
修正できましたぁ~!

$lastpage++ unless @Record % $Pageview;



$lastpage++ if @Record % $Pageview;
176 :
nobodyさん
03/04/13 05:31 ID:???
俺敵には

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

から、どうして

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

のようなレスが付くのか良く分かりません。
cmp使うのが初耳だったんでしょ?なんで「初耳じゃなくて」なんだろう?
177 :
nobodyさん
03/04/13 05:32 ID:???
×cmp使うのが初耳だったんでしょ?
○cmp使うと遅くなるっていうのが初耳だったんでしょ?
178 :
71
03/04/13 05:32 ID:???
>>173
つまり、該当データが文字列ばっかりだとループ終わるまで抜けない。
-> 次の処理にいくまで時間がかかるという事で cmp処理のときに時間がかかるという理屈。
179 :
71
03/04/13 05:35 ID:???
>>176そのソース私の奴改造してるから聞いてみたのだけど変ですか?

ところで、ソース組んだんだけどどっかアップしやすい所無いかのぉ
180 :
◆YHmsETNOS2
03/04/13 05:53 ID:???
>>178
あっ!
そういう意味だったんでつね。。。. (^^ゞ
んじゃ、メモを。。。消し消し. _□(. .。
181 :
71
03/04/13 06:00 ID:???
んで、件のソースの改造

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

この規模だと分ける意味がないとおもうんだけど・・・
182 :
nobodyさん
03/04/13 06:09 ID:???
>>178
ああ、そういう意味か。てっきりcmpと<=>の違いを言ってるのかと思った。スマソ
183 :
◆YHmsETNOS2
03/04/13 06:35 ID:???
>>181
改造さんくすでつ!
でも、穴が多いッスね。
次のページを押し続けれないし、
前のページが表示されないし、
順番が0-9の固定だし。。。
勉強のため漏れが修正したいと重い松が。。。

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

おっと、>>168さんのソース、逆順ソートが出来ない。。。
あう~
こちらも漏れが修正したいと重い松。
184 :
◆YHmsETNOS2
03/04/13 06:51 ID:???
>>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:???
>>183
別にいい悪いはないと思いますけどね。
どんな記述も出来るのがperlですし・・・
自分が見やすければいいんじゃないでしょうか?

あと、自分的には不要な変数を極力使わないぐらいですか・・・
186 :
nobodyさん
03/04/13 07:34 ID:???
>>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:???
>>186
サンクス!
こういう書き方は初めてなんで、かなり苦戦しておりまつ。
188 :
nobodyさん
03/04/13 16:20 ID:???
なんでこのスレでつまつが多いの
聞いてて疲れる
189 :
nobodyさん
03/04/13 17:03 ID:???
poster は前田利家なのであろう。
190 :
168
03/04/13 20:14 ID:???
>>183
直した。
http://boobar.hp.infoseek.co.jp/refactoring/test.0.0.2.txt

文法的に分からんトコは、駱駝本なり perldoc なり見てね。
「何でこういう処理が必要なのか分からない」ってトコは聞いて。
191 :
◆YHmsETNOS2
03/04/14 04:43 ID:???
>>190
う~、感涙!
実際、かなり省略した書き方なので、文法的にわかんないところばっかりでつ。
だからどんな処理をしているのかわかんなかったりして…(^^;

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


>>188
あいた~
苦情でつ!
このスレででつまつ使ってるのって漏れだけでつ~
こういうの使ってみたい年頃なんでつ~
(゙ `-´)/ ヤメレ! って言う声が多ければ考えまつ。
192 :
nobodyさん
03/04/14 05:17 ID:???
まあほどほどにな。
193 :
◆YHmsETNOS2
03/04/16 05:35 ID:???
>>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:???
(^^)
195 :
マリモーマ ◆r6PDGT6Xd2
03/04/18 17:28 ID:fPIUuruF
こんなの作ったけど どうよ?
http://ebrain21.com/~game/me/mai.cgi
196 :
nobodyさん
03/04/18 17:33 ID:???
>>195
Internal Server Error が出たぞ
197 :
nobodyさん
03/04/18 17:35 ID:BrkP32Ds
一度ゴールすると次回からアクセスするたびに(ry
198 :
マリモーマ ◆r6PDGT6Xd2
03/04/18 19:34 ID:fPIUuruF
なんでだろうね 誰か直してよ(藁)
199 :
nobodyさん
03/04/18 21:18 ID:???
マリモーマ、、リア厨かと思ってたらもっと年取ってた。爆
200 :
マリモーマ ◆r6PDGT6Xd2
03/04/19 13:29 ID:kAGW5QYq
若いのは年齢だけだよ もう体がたがた そろそろプログラムも
できなくなるかも?
201 :
nobodyさん
03/04/20 00:47 ID:???
もーちょっとデザインなんとかならんのかね・・・
掲示板、見にく(ry
202 :
nobodyさん
03/04/20 04:29 ID:???
でも俺より若い
203 :
山崎渉
03/04/20 05:59 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
204 :
マリモーマ ◆r6PDGT6Xd2
03/04/20 10:12 ID:xM5Zwmt0
>>201
∧_∧
(  ^^ )<じゃ どうすればいい?(^^)
205 :
nobodyさん
03/04/20 12:05 ID:???
>>204
なんとかすればいい
206 :
nobodyさん
03/04/20 12:21 ID:???
>>205
ワロタ
207 :
マリモーマ ◆r6PDGT6Xd2
03/04/20 15:05 ID:xM5Zwmt0
>>205
(O_O) うう~~ わからないよ
208 :
nobodyさん
03/04/20 16:04 ID:???
しねや
209 :
nobodyさん
03/04/21 09:41 ID:???
>>207
・・・・とりあえず、他の掲示板とか見て回れ。
他の掲示板とか見たことあるだろ?
無駄なテーブル使いすぎ。
もっと、シンプルでいいと思うが・・・
それと、掲示板CGIの吐いてるHTML見たが・・・
HTML、間違ってないか???
改行ナシの、汚いHTMLでちゃんと読めんかったが・・・。
もうひとつ。
ひとつDLさせてもらってソース見たが・・・
謎な関数の名前ばかり。
関数作る悪い例として、そのまま本とかで出てきそうなのばかり。
後から拡張とかする時、関数の名前見ただけで、
どんな処理してくれる物か、判別できなくなる。

・・・と、いろいろつっこむ所多いが・・・
物自体は、結構良い物だと思う。
・・・たぶん。・・・きっと。 ・・・かもしれない。 ・・・だといいな。
210 :
マリモーマ ◆r6PDGT6Xd2
03/04/21 17:08 ID:CNsFsGAe
>>209
なるほど 参考にするよ ありがとう
211 :
nobodyさん
03/04/24 04:27 ID:???
ども。ちょっとスレ違いかもしれないけど、お邪魔します。
CGIじゃないんだけど、Perlスクリプト内のコメントを削除するスクリプトを作りました。
使い方は、同封してるテキスト読んでも分かるけど、D&DでOKな、結構便利な感じです。

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

評価お願いします。
また、改造してくれてアップしてくれる人は、
それ見て勉強したいと思いますのでお願いします。
212 :
bloom
03/04/24 04:29 ID:vV02vP1k
213 :
マリモーマ ◆r6PDGT6Xd2
03/04/24 05:40 ID:0xA64jQF
>>211
コメントが 笑った  あと 抜いた行の 下の行を 上げたほうがいいかも
214 :
マリモーマ ◆r6PDGT6Xd2
03/04/24 05:49 ID:0xA64jQF
あ やっぱり 「抜いた行の下を上げますか」と 聞いてきた方が
いいかな?
215 :
nobodyさん
03/04/24 05:53 ID:x2ip/9xn
216 :
動画直リン
03/04/24 06:29 ID:vV02vP1k
217 :
211
03/04/24 07:25 ID:???
>>213
>>214
ご感想、ありがとうございます。
そういう事で、少し改造してみました。
改行を消すかどうか、質問されるようになりました。

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

もし、どなたでも改造したら、できればアップしてくださいね。
218 :
211
03/04/24 07:49 ID:???
・・・と、言う訳で、またバグを見つけました・・・
HTML出力してて、色指定で#を使ってたら、それ以降が削られてました。。。

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

・・・今度こそ・・・
219 :
bloom
03/04/24 08:29 ID:vV02vP1k
220 :
nobodyさん
03/04/24 10:23 ID:???
分かち書き、変
221 :
マリモーマ ◆r6PDGT6Xd2
03/04/24 16:32 ID:0xA64jQF
$a =~ s/#//g; としたら 消えた まあ これは実行したら エラーが出ると思うけど
222 :
nobodyさん
03/04/24 16:38 ID:???
このコメント削除スクリプトはどんな役に立つんだぎゃ?
223 :
nobodyさん
03/04/24 16:48 ID:???
http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1003.zip
実は211のやつ見て無いんだが
書いて見たよ
先頭のタブとかは消さないようにした
一応自分の書いたスクリプトではきれいに
コメント部は消えた模様
224 :
223
03/04/24 16:52 ID:???
書いてから211の試したんだが
漏れの書いたスクリプトでは
誤作動しまくりだ
$hoge = '#000000';#hogehoge-
こういうのが
$hoge = '
になってるよ
225 :
223
03/04/24 16:53 ID:???
漏れの書いたスクリプトを 211ので処理すると
ってことね
226 :
211
03/04/24 17:06 ID:???
>>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:???
>>222
意味は無いよ
コンパイル速度も変わらんしね
ただimgboard.cgiとかむかつくようなコメントが
たくさん載ってるやつには有効だ(ぷ
210KB→160KBになったよ
まぁ漏れ的には容量はどうでもいいが
うざすぎるコメント消すのが面白そうだったからなw
228 :
223
03/04/24 17:13 ID:???
>>226
それをimgboard.cgiで試したんだが
コンパイルエラーするよ
容量的には漏れより小さくなってるんだが
余計なところまで消しすぎでは?
229 :
211
03/04/24 17:21 ID:???
>>228
マジっすか!
なに消してるんだろ・・・
消しちゃいけない所、特定できません?
imgboard.cgiですか・・・
探してDLして、ためしてみます。

ちなみに、>>223の削除スクリプト試させてもらいました。
先頭にタブとかがあってのコメントは削除されない仕様ですね。
俺のは、とにかくコメントだと思われるような所は、すべて排除していく仕様なので・・・
失敗したら、文法エラーとかコンパイルエラーとか出ます。
って事で、どこで削除されたらいけない所が削除されてるのか調べてみます。
ありがとうございます。
230 :
223
03/04/24 17:51 ID:???
http://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:???
>>229
先頭にタブがあっても消えるはずだが
\t\t$hoge = 'hoge';#これはほげです

\t\t$hoge = 'hoge';
になるだけ 先頭のスペースやタブは削除しないってこと
7行プログラミングするわけでも無いしね
232 :
nobodyさん
03/04/24 18:00 ID:???
確かにimgboardのコメントはなんか
むかつくところがあるな
233 :
211
03/04/24 18:03 ID:???
と、一応バグを見つけました。
imgboardは、作者が旅行中(?)らしく、DLできませんでした・・・
違う貼り付け掲示板で、コメント削除するとエラーが出たので、
そこからバグを辿ってみました。

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

今度こそ・・・いけるはず。たぶん。
234 :
71
03/04/24 18:03 ID:???
ちーと気になったんだが・・・
ヒアドキュメントとか、変数内の#なんかはちゃんと排他処理するようになっとるんだろうか・・・
235 :
223
03/04/24 18:08 ID:???
>>233
まだ駄目だね
http://www.big.or.jp/~talk/t-club/soft/mini_r6/index.cgi
ほれ コメント見ると面白いと思うぞ

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

一応漏れのは上記のimgboard.cgiのコメント
あぼーんするのに成功したが(ワラ
236 :
223
03/04/24 18:10 ID:???
まぁ 3分スクリプトなんで
あのimgboard.cgiのコメント無くなっただけでも
満足だ

まぁマジレスするのなら
秀丸やEmediterなら
そういうマクロ誰かが作ってるんじゃ無い?
237 :
223
03/04/24 18:21 ID:???
(;´Д`)あ 漏れのだめじゃん
頭のむかつくコメント集は消えてるけど
スクリプト内で消えて無いところが
部分部分である
211よがんばってくれ
238 :
nobodyさん
03/04/24 18:25 ID:???
俺、思うんだけどよ。
「コメントを消す」んじゃなくて「コメント以外を残す」って発想はどうよ?
これならヒアドキュメントや文字列中の#なども簡単に対応できそうだが。
239 :
223
03/04/24 18:29 ID:???
>>238
それは難しすぎ
Perlの構文全て判定しないとだめだ

ちなみに漏れの場合は
コメントを消すんじゃなくて
普通の構文らしきものがある場合は
それを残すようにしてる
240 :
211
03/04/24 18:36 ID:???
>>235
http://www.big.or.jp/~talk/t-club/soft/mini_r6/index.cgi

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

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

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

ヒアドキュメントを感知&スキップの処理を組んでみます。
241 :
223
03/04/24 18:43 ID:???
>>240
チミだけ
漏れにはどうするアイフルの広告が見える
変なソフトいれてるのなら切って見るとか
http://www.big.or.jp/~talk/t-club/soft/mini_r6/imgboard122r6.zip
一応アーカイブ

http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1007.zip
さっきの残しておくのはあまりにも恥ずかしいんで
修正しておいた
上記のimgboard.cgiなら全てのコメントが無くなった模様
正常に動いてるよん
242 :
211
03/04/24 18:49 ID:???
>>241
ぐあ!
初めて行くサイトで、アク禁くらってました!
串さしたら、行けた・・・

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

ソースも、見せてもらいますね。
ありがとうございました。
243 :
223
03/04/24 18:52 ID:???
スマソ さらに修正
"<<(.+)" -> <<"(.+)"
'<<(.+)' -> <<'(.+)'
もうだめぽ
http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/1008.zip
244 :
223
03/04/24 19:04 ID:???
バグとしては
print <<HTML;
とかやられた場合に処理がおかしくなる・・・
"HTML" 'HTML'はOK
もういいや 飽きたw
245 :
nobodyさん
03/04/24 19:11 ID:???
>>244
飽きるのは速っ
246 :
nobodyさん
03/04/24 20:06 ID:???
こんな状態なら、手作業でコメント文を削った方が速いし確実だといってみるテスト
247 :
&rlo;トステるみてっ煽と&lro;
03/04/24 20:35 ID:???
>>246
君が作るスクリプトならそれで十分だね
248 :
211
03/04/24 21:07 ID:???
ちょっと改造してみました・・・

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

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

>>223
コメント削除フィルタ処理部分を改造して・・・正規表現、頭痛い。。。
249 :
nobodyさん
03/04/25 03:18 ID:???
POD (Plain Old Document) には対応しないの?
250 :
211
03/04/25 06:05 ID:???
たぶん、これで完璧にコメントが削除されると思う・・・
勝手に、>>223のコメント削除ルーチンを改造して使わせてもらってます(w
オリジナルのままだと、完璧には削除されない場合があったので・・・
一部、改造させてもらいました。

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

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

>>249
PODってなに?
251 :
動画直リン
03/04/25 06:29 ID:pCM0Odok
252 :
nobodyさん
03/04/25 12:15 ID:???
>>250
知らない言葉が出てきたら調べようよ。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlpod.html
実例はお手元のモジュール群をご覧下さい。;-)
253 :
nobodyさん
03/04/25 15:21 ID:???
>>250
思い付きで書いただけだから
別にどうでもいいよw
254 :
nobodyさん
03/04/25 17:43 ID:???
DQN降臨?
255 :
nobodyさん
03/04/27 08:10 ID:???
保守
256 :
nobodyさん
03/04/29 06:39 ID:???
ほっしゅ
257 :
nobodyさん
03/04/30 00:13 ID:???
保守!
誰か、有能なスクリプト組んでくれ。
258 :
nobodyさん
03/04/30 01:33 ID:???
いいスクリプトは評価してもらう必要が無かったりする
259 :
山崎渉
03/05/10 16:15 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)


260 :
nobodyさん
03/05/10 23:04 ID:???
このスクリプトすごい。感動した。
http://sh.sakura.ne.jp/~obj/vector/toys/#sb
261 :
nobodyさん
03/05/19 20:36 ID:GoudX7FZ
age
262 :
nobodyさん
03/05/21 19:41 ID:???
亀レスだけれども。
>>211
コメント解除スクリプト、B::Deparse 使っちゃだめなのかな。
$ perl -MO=Deparse foo.pl
263 :
山崎渉
03/05/22 01:59 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
264 :
nobodyさん
03/05/25 01:28 ID:wMw6QnJf
age
265 :
nobodyさん
03/05/25 22:00 ID:mSA7mvhe
自作新着情報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:???
えー。
単刀直入に言うとなぜか解凍できない。
俺のアプリケーションに異常が起きたのか、そのファイルが変なのかは知らん。
めんどうなので調べない。
267 :
nobodyさん
03/05/26 10:35 ID:???
>>265
通報したぞ
解凍するとGBになるファイル1個入りの(ry
268 :
nobodyさん
03/05/26 21:20 ID:ksmYkwRm
>>265
今度は正常にダウンロードできます。
ソースは汚いです。
269 :
nobodyさん
03/05/27 00:10 ID:???
評価終了
270 :
nobodyさん
03/05/27 00:14 ID:???
>>265のアカもまもなく終了
271 :
nobodyさん
03/05/27 23:15 ID:???
>>265
吐き気がする。
272 :
nobodyさん
03/05/28 04:00 ID:???
>>265
DLできねー!
273 :
山崎渉
03/05/28 17:05 ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
274 :
nobodyさん
03/05/28 18:04 ID:???
age
275 :
nobodyさん
03/05/28 18:04 ID:???
>>274
間違った・・・sageてるよ・・
276 :
nobodyさん
03/05/28 23:02 ID:AHryRdpH
おまえらこのチャットはどうですか?
http://test.thebbs.jp/kappa.html
277 :
bloom
03/05/28 23:10 ID:52+C0e9R
278 :
nobodyさん
03/05/29 00:59 ID:???
C?
割とさくさく動くね。
HTMLはもうちょっとなんとかしてほしい。
279 :
nobodyさん
03/06/01 18:08 ID:k+3UFbse
280 :
nobodyさん
03/06/01 19:34 ID:???
>>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:???
まあHTMLのLintみたいなもんだな。
文法を正確にするのは最低限のラインだ。
282 :
nobodyさん
03/06/01 23:56 ID:???
あれ?>>279のアカまだ削除されてないな
もっかい通報してやるか
283 :
nobodyさん
03/06/02 07:27 ID:???
>>279
では、一言。
GET情報でパスワードを入力するのは、
セキュリティ面に問題がある。
284 :
03/06/02 16:43 ID:???
>>279
iframeの表示が「他のブラウザ」じゃ全く駄目。
285 :
ここの4ではない4
03/06/02 17:48 ID:ltjk47zK
286 :
ここの4ではない4 ◆T98LkrO.aM
03/06/02 17:48 ID:ltjk47zK
トリップ
287 :
ここの4ではない4 ◆T98LkrO.aM
03/06/02 17:51 ID:???
コメント修正していないので違うことをしているかもしれません..
288 :
nobodyさん
03/06/02 18:26 ID:???
>>285
全然読んでないけど、インデントで空白とTABを使い分けられると
結構困る。
漏れはいつも4TABだから、8TAB & 4インデントだとずれる。
インデントを全部TABにしとくと、TAB幅に依存しなくていいよ。
289 :
ここの4ではない4 ◆T98LkrO.aM
03/06/02 19:09 ID:???
んん、、EmacsだとTABがスペースになるのですが..
これはエディタの仕様だと思うので勘弁してください。

一応、設定で変えれるかもしれないので調べてみます。
290 :
ここの4ではない4 ◆T98LkrO.aM
03/06/02 19:22 ID:???
---------------------
#!/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
292 :
288
03/06/02 20:37 ID:???
>>290
いや、変換方法はどうでも良くて。
8 TAB 依存のコードを見せられた時に「('A`)マンドクセ」と
思ってそこで読むの止めちゃうから、大袈裟に言えば
「機会損失」になってるよ、と。

スクリプトができるだけ多くのプラットフォームで正常に
動くよう、環境依存の部分を減らしていくのと同様に、
スクリプトを読む人の「環境」にも配慮してくれていると
好印象になるって事で。
293 :
_
03/06/02 20:48 ID:???
294 :
ここの4ではない4 ◆T98LkrO.aM
03/06/02 20:48 ID:???
>>288さん
そうですね。
自分も、いきなりスペースやTABが消えたコードを掲示板に書かれて
どこがおかしいですか ?
と、言われるともっと見やすく示せ! と内心思ってしまいます。
TAB、気をつけてみます。
295 :
nobodyさん
03/06/02 20:54 ID:7BfzX4MI
296 :
ここの4ではない4 ◆T98LkrO.aM
03/06/02 21:15 ID:???
取りあえず、全部スペースにしておきました。
元々、サブルーチンの少ない読みにくいものだったのに申し訳ありません。
297 :
ここの4ではない4 ◆T98LkrO.aM
03/06/02 21:58 ID:???
>>291さん
いいと思いますよ。
きちんと機能毎に処理を分けているし。
298 :
nobodyさん
03/06/02 21:59 ID:???
>>291
感想。
ソース汚くて読む気しない。
終わり。
299 :
nobodyさん
03/06/02 22:25 ID:???
>>298
ぐはぁ!ショック・・・。
精進してからまた来ます。
300 :
291=299=300
03/06/02 22:26 ID:???
>>299
自己レス。
291=299=300です。
301 :
nobodyさん
03/06/03 10:20 ID:???
>>291
とりあえずソース、見せてもらった。
極悪に汚い・・・。
全部、もう少し見やすいように手入れた。

とりあえず、手入れて思った事。
1、goto文なんか使うな!
2、スペース2個じゃなく、タブ使っとけ。
3、引数などのコンマの後は、スペース一つ入れる事。
4、なんでもかんでも、ケツにif文を置かない!
5、ソース汚いから、自分でも気付いてないんだろうが・・・
   ファイルロックの掛け忘れがある。
6、同じく、ソース汚いから気付いてないんだろうが・・・
   ちゃんと明示的にファイルハンドルを閉じてない所がある。

とくに、「4」のケツにif文は、うんざり。

処理内容自体は、読んでない。

人に評価してほしいなら、
自分だけが読めるソースを書くんじゃなく、
もう少し読みやすいように書く工夫をしよう。

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

↑ここに、手入れたソース置いてるから。
まだ、俺が手入れたソースの方が読みやすいと思う。
302 :
nobodyさん
03/06/03 12:55 ID:???
>>301
>2、スペース2個じゃなく、タブ使っとけ。
だけおかしい。
タブを使うと4TAB<->8TABの違いでずれるから空白(個数は問わないが普通4個)で。
303 :
nobodyさん
03/06/03 13:01 ID:???
何を言っとるんだ? >>288を読め
304 :
nobodyさん
03/06/03 13:17 ID:???
>>303
「TABだけ」ならいいんだがな。空白と混じってるとおかしくなる。
いちいちTABだけなのを確認するより最初から空白だけの方がいいだろ。
TABなんて今時ディスクの節約にもならん。

どっちにしろ(例えば)SUNもMOZDEVもタブ不使用規約になってんだから
合わせた方がいいんでないかい?
305 :
nobodyさん
03/06/03 13:20 ID:???
間違えた。SUNは推奨してるだけだった。以下引用
>インデントの単位として,4個分の半角スペースを推奨する.
>そのインデントが実際に半角スペースによって行われるかタブによって行われるかについては,これを規定しない.
>タブはすべて(4個ではなく)8個分の半角スペースでなければならない.
eclipseだったかな。曖昧記憶でスマソ
306 :
298
03/06/03 14:58 ID:???
自分が思ったのは
「CGIスクリプトしか書いたことない人にありがちなソースだな。」
ってこと。
リファクタリングとか色々なことを勉強してみては?
307 :
301
03/06/03 15:12 ID:???
>>302
タブは、インデント以外に使ってないから、
どんなタブ幅でもずれてないはずだけど・・・
ずれてる???
308 :
291
03/06/03 19:31 ID:???
291です。評価ありがとうございます。

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

>>306さん
そのとうりです。自分でCGIを作ってみたくなったので、perlを勉強しだしました。
色々なことを勉強するのもいいですけど、虻蜂取らずにはなりたくないので…。
309 :
nobodyさん
03/06/04 00:00 ID:???
>>285
ソース、今見てるけど・・・
えらくコメントの少ない・・・って言うか、コメントの無いソースだな・・・
わざと、コメント消したの?
それとも、素でこれ?

素でコメント無いなら、コメント入れていった方が良いと思う。
310 :
nobodyさん
03/06/04 10:29 ID:???
>>309
これ以上コメント書かれたら、読みづらくないですか?
と、素な意見。
311 :
nobodyさん
03/06/04 10:41 ID:???
>>310
う~ん、本体(?)の方はコメントあるけど、
モジュールの方にコメントがないかな。
312 :
385 ◆T98LkrO.aM
03/06/04 12:48 ID:???
>>309さん
基本的にコメントを一切書かないのです。
ただ、配布とか考えると書いた方がいいかなと思って、今回はちょっと書いてみました。
やっぱ少ないですかね..
313 :
385 ◆T98LkrO.aM
03/06/04 12:52 ID:???
別にコメント書かないとかいう変なこだわりがあるわけじゃなくて、
ただ、自分はコメントなくてもすぐ分かるので人に見せる予定がないものに
コメント書かなくてもいいかなと..今は勉強中ということですし。
ただ、今回は見てもらおうとここに載せたわけなので、
モジュールの方にもコメントを書くべきだったと思いました..すみません。
314 :
285 ◆T98LkrO.aM
03/06/04 12:54 ID:???
うお、385じゃなくて、285でした。
315 :
nobodyさん
03/06/04 13:20 ID:???
「未来の自分は他人です」という言葉を贈っておこう。
316 :
298
03/06/04 14:07 ID:???
コメント無しでもいいような
わかりやすいクラス名、変数名、関数名をつけるのが基本です。
コメントが無いとわからないってのは
それだけ汚いソースだということです。
317 :
285 ◆T98LkrO.aM
03/06/04 14:59 ID:???
>>315, >>316なるほど.
自分は今、就職希望の会社からCのソース(50-500行,10枚くらい)を渡されて、
この説明を書いてこいとか言われているのですが、コメントなくても
関数名, 変数名が分かりやすいし、うまい具合にサブルーチンに分けてあるので
コメント少ないですが、かなり読みやすいと思いました。
まあ、漏れのはコメントないと読みにくいかもしれませんが..
自分で見ても読みにくいな、と思ったらコメントでカバーするようにしてみます。
318 :
301
03/06/04 19:23 ID:???
>>316
# ■■■ 俺の意見 ■■■
俺は、とにかくコメント入れるのに賛成派。
ルーチンの名前とか、変数の名前に意味を持たすのは当たり前だけど、
コメントあれば、コメントだけ読めば、何の処理してるのかわかるし。

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

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

# ■■■ 最後に・・・ ■■■
↑どう?
こんな感じでコメント入れる訳よ。
全部の行読まなくても、#で始る一行読めば、
俺が、なにについて書き込みしてるか分かるでしょ。
これを、プログラムでも実践してる。
それと、空行無しに書き込みしてると読む気失せるでしょ。
319 :
301
03/06/04 19:40 ID:???
そうそう、掲示板の書き込みでも、
結構その人のセンスが出る。
変な所で改行してる人や、
長文なのに空白行入れず、
だらだらとメリハリの無い書き込みする人とか。

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

コメントが無いために間違った認識を受けたり、
重要な処理を 「これいらねぇんじゃね?」
とか思われて消されること減るはずだし。
321 :
316
03/06/04 21:21 ID:???
>>318さん
自分が言いたいのは
「コメントを書くな」
ではなく
「コメントが無くてもわかるようなキレイな設計を心がけよう」
ってことです。

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

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

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

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

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

$hoge++; #1を増加

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

実は、俺も無駄なコメントが多いんだよね・・・
ぜんぜんプログラムとは関係ないようなコメントとかある。
そういうのって、俺的に後から見たら面白かったり。
もちろん、人に見せる時は、そんなコメントは消すけどね。
323 :
nobodyさん
03/06/05 04:44 ID:???
OO なコード書いて POD 埋め込むようになってから
普通のコメントがかなり減った。スクリプトとドキュメント
同時に作るのは効率いいしオススメ。
324 :
nobodyさん
03/06/05 06:18 ID:t1krGQgT
http://marugo.s15.xrea.com/
掲示板のCGIです。
言語はPerl
325 :
nobodyさん
03/06/05 12:01 ID:???
326 :
nobodyさん
03/06/09 21:44 ID:JSBfbdyK
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1032435179_5/hoge.zip

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

でも最後に軽く評価を聞きたいけどな。
327 :
nobodyさん
03/06/09 21:59 ID:???
>>326
あぁ。今見直したら俺が書いたやつじゃないものが入っていた・・・
Text::WordIteratorとか。。。
あーあ。まぁ、いいや。
328 :
大塚裕司
03/06/09 23:17 ID:4isQpEIX
329 :
211
03/06/12 02:44 ID:???
ども。
いつぞやのコメント削除スクリプト作った俺です。
今作ってるスクリプトが行き詰まりました。
ちょっとイライラしたので、
息抜きにコメント削除スクリプトのバージョンアップとかしてみました。

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

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

・・・リファクタリングが必要かもしれん・・・
330 :
_
03/06/12 03:03 ID:???
331 :
nobodyさん
03/06/12 06:40 ID:???
>>329
>深さは、どんなに深いサブディレクトリでも処理可能です。

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

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

とにかく、かなり深いディレクトリでもOKなはず。
だって、Cのルートディレクトリから検索とか掛けてみたから。
とりあえず、試してみそ~。
333 :
nobodyさん
03/06/12 07:54 ID:s13jgVVf
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:???
>>332
ソースは見てないが、再帰的な処理をしてるのにスタックについて知らないというのは
ちょっとヤバくないか?
335 :
nobodyさん
03/06/12 12:02 ID:I623aSMv
まあまあ、知らなくても書けるてことで。
336 :
211
03/06/12 14:17 ID:???
>>334
再帰?
自分の中で自分を呼ぶアレ?
・・・いや、普通にwhile文とかでブン回してるだけだが・・・

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

>>335
そうみたいね・・・書けちゃったから・・・。
337 :
nobodyさん
03/06/12 18:19 ID:???
whileでブン回しておいてメモリは最小限とはこれいかに。
338 :
nobodyさん
03/06/12 21:33 ID:???
>>336
確かにWhileで再帰のまねごとは出来る。
でも、どっちにしろスタック的なデータ構造がないと困るはずだけれど。
339 :
nobodyさん
03/06/12 22:33 ID:???
>>329
キモの部分 (Library_223.pm) 以外を書き換えてみた。
http://boobar.hp.infoseek.co.jp/refactoring/commentoff.pl.txt

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

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

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

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

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

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

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

改造とかしてくれる人少なくってさ・・・
ソースみて勉強させてもらいます。
ありがとうございました。
342 :
223
03/06/13 03:29 ID:???
久しぶりに覗いてみたら まだやってたのねご苦労さんw
実はあと風呂に入ってたらフィルターバグまだいくつかあるのを
気づいちゃったんだよね…

漏れ的ソースの書き方ならアレで問題ないんだけど
世の中には漏れの想像もできない書き方する人がいるんで
343 :
nobodyさん
03/06/13 14:25 ID:???
ネタだろ?
ネタと言ってくれよ!痛すぎるよ!
344 :
nobodyさん
03/06/13 21:35 ID:???
傑作にケチつけられて熱くなっちゃいました。

DirTree.pm直してやるから待っててな。
345 :
nobodyさん
03/06/13 21:56 ID:???
あ。再帰処理しか考えられない…止めよう。

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

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

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

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

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

それから、$countはハッシュのリファレンスにする価値は無い。普通のハッシュで十分。
346 :
nobodyさん
03/06/13 22:59 ID:???
>>345
ごちゃごちゃ言う前に書き直してそれがより美しいことを証明すればどうだ?
347 :
211
03/06/14 08:19 ID:???
>>342
うーん、忘れた頃に、またやってます(w
そうそう、コメント削除のバグ。
俺も、2つほど気付いてました。
しかし、俺的に今の所実害がないので放置中。。。
今度、直してみます。
348 :
211
03/06/14 08:19 ID:???
>>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:???
ファイルの開き方が直ってね~よ
350 :
nobodyさん
03/06/14 21:12 ID:jhwtfsoY
aice.zive.net/index.jsp
よろしくお願いします。
351 :
nobodyさん
03/06/15 09:57 ID:???
>>350
ここの人は低レベルだからJavaなんて理解できないよ。
352 :
nobodyさん
03/06/15 10:05 ID:???
>>351
言われてみれば、Javaスレってないね・・・
353 :
nobodyさん
03/06/15 11:13 ID:???
難易の話をしているつもりかな?
なら351はJavaを理解していないに430スイカ
354 :
nobodyさん
03/06/15 12:09 ID:???
目的を達成する手段のひとつがJava
355 :
nobodyさん
03/06/15 14:10 ID:???
350=351
356 :
nobodyさん
03/06/16 18:02 ID:???
>>211の人。

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

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

どんな経過をたどって現在まで辿り着いたのかとか、捨てたと思った変数が実は残っているとか。
スタックにも色んな種類あるから調べて味噌。
357 :
211
03/06/17 06:07 ID:???
>>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:???
いきなりバグを見つけました。

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

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

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

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

・・・誰か、評価お願いします・・・
誰も手がってくれない。寂しいね。
360 :
nobodyさん
03/06/18 15:16 ID:???
>>359
乙。
俺よりはるかにレヴェルの高いことやってらっしゃるので、
研究させてもらいます。

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

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:???
>>362
いい加減ウザイ。完成してから後悔してくれ
364 :
211
03/06/19 14:12 ID:???
>>363
あら。
何か主旨が変わってきたね。

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

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

じゃ、俺のスクリプト公開は終了します。
365 :
nobodyさん
03/06/19 14:28 ID:???
>>364
もう少し実用性のあるもので再チャレンジしてみたら?
今回のは正直言って使いたいと思えるものでなかったから
評価しなかった
あれば便利とか使ってみたいと思えるものなら協力者も増えるのでは
366 :
1
03/06/21 10:11 ID:???
自作CGIを評価するスレ

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

投稿件数  : 365
最終投稿者: nobodyさん
最終投稿日: 03/06/19
367 :
nobodyさん
03/06/21 17:05 ID:???

  ∧__∧    / ̄ ̄ ̄ ̄ ̄ ̄
  ( ^u^)  < 乙彼様でした☆
 と    つ  \______
  (__つ 丿
    し'
368 :
nobodyさん
03/06/22 07:46 ID:???
スレの趣向とは少し外れるんですが、
下記のロック、アンロックはどうでしょうか?

# lock routine
sub lock {
 $retry = 5;

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

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

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

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

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

評価お願いします。
369 :
nobodyさん
03/06/22 09:04 ID:???
>>368
いいんじゃないかな。
while文の所は・・・

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

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

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

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

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

>>370
好みだと思う。

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

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

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

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

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

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

指摘されたリトライですが、
if (--$retry <= 0) {
こうですね。
373 :
nobodyさん
03/06/24 15:24 ID:???
>>371
> このルーチンだと穴がある。経験則だけど、アクセスが殺到すると簡単に壊れる。
> 説明するのめんどいので、

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

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

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

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

どんなロックしててもファイルは壊れるんだから、
小細工いれた重いロック処理するより、
簡単にロックする処理入れた方が良いような。
374 :
nobodyさん
03/06/24 15:33 ID:???
>どんなロックしててもファイルは壊れるんだから

そんなことはないよ。ただ言えることは、この板ではまだまともにロックできて
いるルーチンが1つも書かれてないな。
375 :
nobodyさん
03/06/24 15:35 ID:???
>>374
>そんなことはないよ。ただ言えることは、この板ではまだまともにロックできて
>いるルーチンが1つも書かれてないな。
flock使っちゃだめ?
376 :
nobodyさん
03/06/24 15:36 ID:???
>>374
どんなに集中アクセスを受けても、
絶対壊れないファイルロックってある訳ない。

あったら、ぜひ見て見たい。
377 :
nobodyさん
03/06/24 15:37 ID:???
>>375
あ、ちなみに、flockでも壊れるんで。ファイル。
378 :
nobodyさん
03/06/24 15:40 ID:???
↓これでもこわれる?(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:???
>絶対壊れないファイルロックってある訳ない

この根拠がどこからくるのかわからないが、
少なくともとてつもないアクセス集中に対応できるように非ブロックモードで
タイムアウトを備えてないとまず無理だということは教えておこう。
380 :
378
03/06/24 15:41 ID:???
あ、EUCにしてからSJISにもどすの忘れてるけど、そこは気にしないで
381 :
371
03/06/24 15:46 ID:01cZwzPj
> どんなロックしててもファイルは壊れるんだから、

そんなことはない。

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

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

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

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

非ネットワークファイルシステム+UNIX系OSでのflock。stableなバージョン上で
これで壊れたって話は逆にあったら見てみたい。
382 :
371
03/06/24 15:48 ID:01cZwzPj
>>377
ネットワークファイルシステムを使ってる場合はね。
それ以外で壊れるという話は(ファイルシステム開発中のバグ以外は)
聞いたことない。再現できたら結構すごいと思うが。
383 :
371
03/06/24 15:54 ID:01cZwzPj
変な憶測並べる前に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:???
追加書き込みすれば壊れない。
385 :
371
03/06/24 19:10 ID:01cZwzPj
>>384
2つのプロセスが同時に追加書込しようとしたら、
その部分は壊れるよ。
386 :
nobodyさん
03/06/24 20:17 ID:???
>>371
って言うかOSが関与しないファイルロックで信頼できるアルゴリズムってあるの?

387 :
nobodyさん
03/06/24 20:18 ID:???
>>385
何を以て壊れるとするかだな。
388 :
378
03/06/24 20:27 ID:???
>>378
はどうですか?
389 :
nobodyさん
03/06/24 20:34 ID:???
>>388
ええ、ばっちりシステムコールのflockがいらっしゃいますね。
390 :
371
03/06/24 20:45 ID:???
>>386
symlinkにしろ、rewriteにしろ、mkdirにしろ、OSがファイルシステム上で衝突しないように
設計されているという大前提で作られてるし、実際衝突するかどうかはOS次第なので、
OSに非依存で汎用可能なアルゴリズムっていうのは原理的に不可能じゃないかと。
391 :
nobodyさん
03/06/24 20:47 ID:???
>>390
その意見には激しく同意。
じゃあ、議論するだけ無駄だと思うわけだ。
392 :
nobodyさん
03/06/24 20:48 ID:???
>OSがファイルシステム上で衝突しないように設計されているという大前提で作られてるし。

OS側でAtomicでもプログラム側がそうでなけりゃ・・・。
393 :
nobodyさん
03/06/24 21:00 ID:???
>>373-392
スレ違い。
ファイルロックについてのスレあるから、
そこで熱く語ってくれ。
394 :
nobodyさん
03/06/25 00:00 ID:???
require './my_flock.pl';
while (1) {

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

  print ++$data. "\n";

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

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

>>371のその辺のファイルロックを別ファイルに取って呼び出してる。
これを、二つのプロセスで実行してみろ。
無事に10000までカウントなんぞできんぞ。
395 :
374
03/06/25 00:21 ID:???
>>394
まともに使えないならいっそ使わないほうが・・・
396 :
nobodyさん
03/06/25 00:39 ID:???
>>395
はぁ?
全体に一度だけかけろとか言うのか?
それでも壊れる。

何がまともに使えないだよ・・・
ルーチン呼び出すのに使えるも使えないもないだろヴォケ。
文句言う前に試せやハゲ。
試して、壊れなかったら文句言いにこいや。
397 :
374
03/06/25 00:47 ID:???
ルーチンをまともに使えないヤシが晒されるスレはここでつか?
398 :
nobodyさん
03/06/25 00:57 ID:???
>>397
だから。
試せってよ・・・。
試しもしないで、使えてねーとか、使い方悪いとか。
そんな事言われても、説得力ねーっちゅーの。

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

まー試しもしないで語ってるヤツに、
ロクな答えなんて返ってきそうにないけどな。
399 :
371
03/06/25 00:59 ID:Q5i43+wA
>>396
> 全体に一度だけかけろとか言うのか?

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

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

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

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

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

単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ
とか、そういうオチじゃなくて?>>398
402 :
371
03/06/25 01:22 ID:???
ファイルが消える現象は、ロックファイルをディレクトリにすることで回避
# mkdir lockdir/lockfile

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

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

> 文句言う前に試せやハゲ。
> 試して、壊れなかったら文句言いにこいや。
403 :
nobodyさん
03/06/25 01:30 ID:???
おっと、ご苦労さん。
マジで?
ファイル壊れない?
こっちの環境は、Win2kだけど。

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

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

>で、たった2プロセス同時起動で10000件持たないファイルシステムを
>持つ環境がどんな環境なのかとても気になるので早く教えてください>>398
煽りですか。
あんた、一言多いね。
404 :
371
03/06/25 01:49 ID:???
> こっちの環境は、Win2kだけど。

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

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

1秒間に同じファイルを数十回renameする必要性ってあまりないからなぁ。
renameのファイルの取り合いって普通の状況だとまず起こりえないし。
ソース読んだら分かると思うけど、renameの空振り以外に原因は考えにくい
ので、再現性あるなら追試してレポート出してみたら?
405 :
nobodyさん
03/06/25 02:14 ID:???
>>404
ファイルシステムは、もちろんNTFS
Vineで試してみた。
たしかに、2kの時は途中ファイルが壊れてカウントが1に戻ったりしたけど、
Vineはそんな事なかった。
・・・が、おかしい。
3つのプロセスで動かしたが、ログがおかしい。
同じ数字のカウントをする場面がある。
3つのプロセスでカウントしていったら、
同じ数字がカウントのログとして出るのはおかしいでしょ?

そっちでは、ちゃんとカウントしていってる?
406 :
371
03/06/25 02:28 ID:???
>>405
>>394のソース直した?部分的でなく、全体をロックで囲まないと誤動作するよ。
print文の直上直下にあるunlockとlockの2行を外せばうまく行くと思う。
407 :
nobodyさん
03/06/25 02:44 ID:???
>>406
あ・・・悪い。
修正してなかった。
ちゃんと動いてる。
もっと沢山のプロセスと、もっと沢山のループで試したかったけど、
Vineが入ってるPCのCPUが弱いんでやめた。

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

結果は、壊れないファイルロックが存在したって事か?
・・・俺が、間違ってますた。 スマソ
408 :
371
03/06/25 11:01 ID:???
>>407
> 結果は、壊れないファイルロックが存在したって事か?

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

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

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

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

スレ違いなようなので、この辺で。
409 :
nobodyさん
03/06/25 14:12 ID:???
結論的には何が一番?
410 :
368
03/06/25 18:02 ID:???
>>393さんがおっしゃってる通りたしかにスレ違いですが、
とても興味深い話題をありがとうございます。

>>402さんがおっしゃってることを試す価値はありそうなので、
とりあえずファイルを使うロックから、
ディレクトリを使うロックに変えてみたいと思います。
411 :
nobodyさん
03/06/25 22:47 ID:???
>>410
ないよ。flockが一番。
412 :
nobodyさん
03/06/25 22:57 ID:???
>>411
NFS越しでも?
413 :
nobodyさん
03/06/26 06:18 ID:EBHZ+AEW
.
414 :
nobodyさん
03/06/26 09:03 ID:???
NFSなんか使うなよ(;´Д`)
415 :
412
03/06/26 10:55 ID:???
>>414
お客さんでそういうトコ、多いんですよ(萎
だから仕事でflock使う際は、インストール先の
OSとファイルシステムは必ず確認。
416 :
nobodyさん
03/06/26 11:36 ID:???
なるほど(;´Д`)
417 :
nobodyさん
03/06/26 12:53 ID:???
>>414
十分有り得るよ。うちの大学もそうだし。
418 :
nobodyさん
03/06/26 21:01 ID:???
>>417
レガシーな大学でつね。
419 :
◆5vUH/J4K/c
03/07/05 05:02 ID:???
420 :
nobodyさん
03/07/06 16:49 ID:orJjX/H+
別スレでrename失敗どうたらこうたら、言ってるんですが、
そんなにrename失敗することあるんですか?
421 :
nobodyさん
03/07/06 16:50 ID:???
権限がなければ
422 :
nobodyさん
03/07/06 17:08 ID:GI5yk6yl
権限があれば100%renameできるんですね?
423 :
nobodyさん
03/07/06 17:34 ID:???
誰がそんなことを言った?
424 :
nobodyさん
03/07/06 21:37 ID:???
⇒と⇔の違い知ってるか?大馬鹿者>>422
425 :
nobodyさん
03/07/06 21:38 ID:???
L⇔R
426 :
nobodyさん
03/07/06 21:48 ID:???
横浜⇔東京
427 :
nobodyさん
03/07/06 23:37 ID:???
とんちんかんちん一休さんの>>422
428 :
nobodyさん
03/07/06 23:40 ID:???
将軍が彪の追い出しに成功してボリボリ食われちゃう一休さんの>422
429 :
nobodyさん
03/07/07 11:59 ID:???
-=⇒
430 :
山崎 渉
03/07/15 11:08 ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
431 :
nobodyさん
03/07/25 23:38 ID:???
あげ
432 :
_
03/07/25 23:47 ID:???
433 :
山崎 渉
03/08/02 02:24 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
434 :
ぼるじょあ ◆ySd1dMH5Gk
03/08/02 04:52 ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
435 :
nobodyさん
03/08/06 01:58 ID:u4hkzo1r
まだ評価していただけますか?
436 :
nobodyさん
03/08/06 02:05 ID:???
どうぞ
437 :
435
03/08/06 02:10 ID:u4hkzo1r
それでは。

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

昔作った掲示板です。今ではもうこんなにかけません。
438 :
nobodyさん
03/08/06 02:44 ID:???
>>437
ぱっとみですが、スコープや、名前空間を理解していらっしゃるのでよく勉強されてると思われます。
私の趣味的にはグロブを使わないようにするともっとよさげかと・・・
439 :
nobodyさん
03/08/06 03:48 ID:???
http://www.42ch.net/UploaderSmall/source/1060108917.zip
良かったらお願いします。
使い方はcgi呼び出して?ってリンク見ると大体書いてあります。
典型的な我流でCGIしか書いたことの無い人のソースだとは思います。
非常識な部分があればご指摘頂きたいです。

#普段タブ使っているのですが、環境に依存しそうなので
#アップの際に、全てスペースに変換しました。
#個人的な情報も消してあります。ご理解ください。
440 :
向こうの472=475
03/08/06 10:05 ID:???
>>439
コーディングスレの469さんか。(w

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

どうしても分けたいのなら各パーツはもっと役割分担を
はっきりさせて汎用性を上げ、OO なスタイルで組むが吉。
441 :
nobodyさん
03/08/06 10:38 ID:???
>>440
ここ過疎なので人すくなくてばれるだろうとは思ってました。。。
分けるのは、基本的に改造向けではじめました。
(HTML部分を分ける、とか。)
あと、機能追加のたびに追加したりとかって感じです。
最初はあまり深く考えないで分けていたんですが
最近えらい悩むようになってしまって
つきつめるとOOPにするしかないような気もしてきてしまします。

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

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

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

やっぱOOかー
442 :
441
03/08/06 10:58 ID:???
しかもコーディングスレであとで言われたとこ
直す前のうpしてた ウワーン
443 :
nobodyさん
03/08/12 15:36 ID:QPay4kE6
>>442
age
444 :
山崎 渉
03/08/15 22:37 ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
445 :
nobodyさん
03/08/30 22:39 ID:???
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
Blogの試作公開

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

common.phpで初期設定。

排他制御も何も入れてないがとりあえず動いた。
これからトラックバックを盛り込むけど難儀するだろうなぁ
447 :
nobodyさん
03/08/31 02:19 ID:???
何?評価して欲しいの?
ただの宣伝?
448 :
nobodyさん
03/08/31 02:27 ID:6GeG39LL
ダメ出しきのん。

SAFE_MODEでさっそく引っかかったが
449 :
nobodyさん
03/08/31 02:54 ID:???
微妙な物作るな
450 :
ガイキチ厨房
03/08/31 06:44 ID:???

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

http://popup3.tok2.com/home/program/cgi-bin/uploader/source/File:0011.txt
451 :
nobodyさん
03/08/31 11:38 ID:???
こちら素人だが、ざっと読んで気づいた点を。
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:???
■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:???
本7に対してそこまでしなくていいのに
454 :
nobodyさん
03/08/31 21:56 ID:6GeG39LL
ちなみにサンプルページ

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

ハイブリッドP2Pによるトラックバックを考えてます
455 :
nobodyさん
03/09/01 00:56 ID:???
まずsageろ
話はそれからだ
456 :
nobodyさん
03/09/01 01:41 ID:???
相変わらず発言が電波過ぎる…
457 :
ガイキチ厨房
03/09/01 16:10 ID:???
>>452

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

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

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

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

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

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

よろしくお願いします。
458 :
ガイキチ厨房
03/09/01 18:57 ID:???

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

http://itbtech.itboost.co.jp/php/php_04.php
459 :
nobodyさん
03/09/01 23:17 ID:???
Perlでも評価してもらえます?
460 :
nobodyさん
03/09/02 01:39 ID:???
461 :
nobodyさん
03/09/02 16:15 ID:???
>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:???

なるほど、参考になりました。ありがとうございます。
463 :
nobodyさん
03/09/03 02:03 ID:6rADPhxn
とある会社の部活動の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:???
465 :
sage
03/09/03 12:28 ID:Udj8Y4pI
>464

463です

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

…すいませんでした。
466 :
nobodyさん
03/09/03 13:26 ID:???
sageはmail欄でw。
どっかに「こんなCGI探してます」的なスレあったハズだよ。
467 :
nobodyさん
03/09/03 13:44 ID:???
>>465
>スレ違いだ、ということですか…?
スレ違いじゃないと思うんだったら自作CGIへのリンク貼れよ。
自作CGIを評価するスレなんだからさ。
468 :
nobodyさん
03/09/03 18:02 ID:???
【CGI】こんなCGI探してますver.10【素材】
http://pc2.2ch.net/test/read.cgi/hp/1059878840/l50
Web製作板でつ。
469 :
463
03/09/04 00:28 ID:???
>>464
>>467
ご迷惑をおかけしました。

>>466
>>468
そこに行ってみます。ありがとうございます
470 :
nobodyさん
03/10/02 12:00 ID:???
y
471 :
nobodyさん
03/10/02 22:11 ID:???
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:???
flockがあるし。
473 :
nobodyさん
03/10/07 02:23 ID:86/MwT3y
知識ゼロからがんばってXML化にこぎつけました。
スタイルシートだけでWebデザインが可能です。
PHP4+MySQL

http://arigato3.s36.xrea.com/x/bbs.php
474 :
nobodyさん
03/10/07 03:18 ID:???
>>473
すごいね。どのくらいすごいのかいまいちわからんけど。
どのくらい時間かかった?
475 :
nobodyさん
03/10/07 04:42 ID:???
476 :
nobodyさん
03/10/07 06:12 ID:???
>>473
ダメXMLの見本として宣伝してもいいですか?っていうくらいダメなXML。
477 :
手裏剣
03/10/07 06:29 ID:???
478 :
nobodyさん
03/10/07 09:34 ID:86/MwT3y
>>476=印刷屋をクビになったオヤジ
479 :
nobodyさん
03/10/07 09:34 ID:86/MwT3y
>>474
片手間で1週間ぐらい
480 :
nobodyさん
03/10/07 18:52 ID:???
> 知識ゼロからがんばって XML化にこぎつけました。
            ___Λ____
           |知識ゼロのまま|
481 :
nobodyさん
03/10/07 21:30 ID:???
常識や社会性は?
482 :
nobodyさん
03/10/08 10:35 ID:???
よいXMLの見本が見たい。
483 :
nobodyさん
03/10/19 04:34 ID:faEGA12Q
●●●マスコミの 「盗聴/盗撮」 は許されるの?その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
485 :
nobodyさん
03/12/09 13:27 ID:Dust1o+d
すいません、午前中探したんですけど、見つかりませんでした。

パソコンと携帯3社兼用の掲示板で、スレッドまたはツリー表示でかつ
パスワードで入る人の管理が出来るCGIご存じありませんか?
スレッド、パスワードどちらかだけだとあったんですが・・・。
486 :
nobodyさん
03/12/10 13:25 ID:/scbZ0TM
誤爆でしたとさ
487 :
SERA
03/12/10 21:19 ID:cJpFW25/
箱庭諸島PHP版の改造版、箱庭諸島S.Eを今日公開配布開始しました。
488 :
nobodyさん
03/12/12 00:32 ID:???
で、評価しろと?
489 :
nobodyさん
03/12/19 17:18 ID:s0hPhfIy
http://erobon.e-un.jp/
これはどうでしょうか?
デザイン以外は自分で作りました。
490 :
nobodyさん
03/12/19 19:33 ID:???
>>489
ここはCGI評価スレです
491 :
nobodyさん
03/12/20 01:11 ID:A80S/toC
>>490
CGIです。
サーバーサイドで動いているのでCGIです。
もっと勉強してください。
492 :
nobodyさん
03/12/20 01:18 ID:???
>>491
titleタグはmetaの後に書いてくらはい
493 :
nobodyさん
03/12/20 01:26 ID:m9BC3a2H
>491-492 ネタは他所でやれよ馬鹿
494 :
nobodyさん
03/12/20 01:27 ID:A80S/toC
>>492
いま検索して調べたら
metaタグの後にtitleタグを書いてました。
495 :
nobodyさん
03/12/20 02:56 ID:???
>>491
あのね、見た目とかを評価してもらうスレじゃないの
ソースを公開してちょうだい
496 :
nobodyさん
03/12/20 02:58 ID:???
> サーバーサイドで動いているのでCGIです。

CGIは動いたりしない。
497 :
nobodyさん
03/12/20 03:19 ID:???
>もっと勉強してください。

悪代官が黄門様に無礼者と言ってるのを思い出しちゃったw
498 :
nobodyさん
03/12/20 10:48 ID:rKU28so3
>>496
CGIとはWEBサーバーがWEBブラウザからの要求に応じてプログラム
を起動するための仕組みです。

”CGIは動いたりしない。”
馬鹿か?
499 :
nobodyさん
03/12/20 10:49 ID:rKU28so3
>>498

俺は悪代官だよ~W~
500 :
nobodyさん
03/12/20 13:51 ID:???
>498-499
501 :
nobodyさん
03/12/20 13:55 ID:???
ヘタレが。
502 :
nobodyさん
03/12/20 14:07 ID:???
CGIはシステムでも仕掛けでもない。
インターフィエスの一仕様。

モジュールからプロセス作ることもできるが、
あれもCGI?
503 :
nobodyさん
03/12/20 18:53 ID:FBPjlTLi
>>502
どうせperl=cgiとか
まだ思ってるアフォだろ?
504 :
HTTP/1.1 200 OK
03/12/20 21:23 ID:???
unlessはほかの言語と混同するからやめれ
とか書いてある本があった気がする
ほかの言語を使わなければいいだけの話なのに・・・
505 :
nobodyさん
03/12/21 00:57 ID:???
>>504
マジ?

それって、if ははほかの言語と混同するからやめれというのと同じことだよね
506 :
nobodyさん
03/12/21 15:53 ID:???
汎用的なプログラミングの作法を身につける為なんじゃないかな?if だと他の言語でも大抵応用が効く。
同じような理由でperlの$_(暗黙の代入)はなるべく使うなとか書いてる本もあったよ。

507 :
nobodyさん
03/12/22 08:45 ID:???
>>506
なんだそりゃ?(藁
じゃあ混同しやすい elsif は使わないほうがいいってことか?
508 :
nobodyさん
03/12/22 15:58 ID:???
頭の弱いのが何人か・・
509 :
nobodyさん
03/12/26 11:25 ID:???
>>508
差別はイクナイ!
何国ってのがどこのことだか知らんが,何国の人に失礼だよ(藁
510 :
nobodyさん
03/12/26 20:54 ID:???
>>509
ハァ?
あたまのよわいのがなんにんか・・ って書いてあるが、どう読んだら何国の人になるんだ?

502,504,506,508が(ry
511 :
nobodyさん
03/12/26 21:46 ID:???
洒落だろ
512 :
nobodyさん
03/12/27 06:08 ID:???
>>510
「なにじんか」って読んだんだろ。>>511の言うように洒落だろうがつまらん。
513 :
nobodyさん
03/12/31 15:09 ID:OIDb7RDT
表計算ができるランキングCGIを作ってみたので評価お願いします。
http://ssr.xrea.jp

けっこういい出来に仕上がったと思うけど、初めての人は操作にとまどうかも
514 :
nobodyさん
04/01/05 13:20 ID:8h9t8BrG
>>513
落としたYo
とりあえず使えそう・面白そうな物だったら、朴らせてもらうわ(w
515 :
nobodyさん
04/01/12 07:57 ID:fR13iSUk
age
516 :
nobodyさん
04/01/17 13:56 ID:kOvCn6Ho
携帯&PC対応の掲示板作りました。
http://fine.tok2.com/home/moritomo/cgi/career/career_bbs.cgi
です。
517 :
nobodyさん
04/01/17 14:22 ID:???
>>516
それで金を取ろうと思う神経を疑うよ
518 :
nobodyさん
04/01/17 18:12 ID:???
上と下に出てる「1」って何だ?
519 :
nobodyさん
04/01/17 19:01 ID:???
520 :
nobodyさん
04/01/17 19:15 ID:???
>>516
ディレクトリ丸見えだねぇ
521 :
nobodyさん
04/01/18 02:22 ID:???
ところで、ちゃんと評価してるのって最初のほうだけだね。
522 :
nobodyさん
04/01/18 03:41 ID:???
>>521
・ここは見た目じゃなくコードを評価するスレだ。
・use strict; しろ。
・perlstyle 読め。
・デカいの持ってきても面倒だから読まんぞ。

…のどれかに該当していたら、まともなレスは返ってこない。
523 :
nobodyさん
04/01/18 21:22 ID:???
コードの見た目を評価するスレの間違い。
524 :
>>516
04/01/25 15:17 ID:yPaa9elS
DirectoryIndexの設定をしているtoktokも問題かと思うが。

Forbiddenにしたみたいだけど、
せめてファイル名変えなよ。
525 :
nobodyさん
04/03/06 14:54 ID:???
誰も居ない……ケチつけるなら今のうち。

if-elsifの書き方、
if{
..
}elsif{
..
}
より
if{
..
}
elsif{
..
}
の方が俺にとっては読み易いんだコンチクショー。
526 :
nobodyさん
04/03/19 18:15 ID:???
>>522
perlstyleなんて知らなかった…ありがとう、勉強になったよ。
527 :
nobodyさん
04/05/03 22:01 ID:???
>>526
> perlstyle
ハァ?
528 :
nobodyさん
04/05/09 20:52 ID:???
例えば既成の掲示板のCGIとかから

require 'axlog.pl';
AxLog::getlog('ログファイル名','ログ最大記録数');

の用に呼び出して使うアクセス解析。

何となく作ったんですが評価お願いします。

アクセス解析 http://torihamlog.s55.xrea.com/search/axlog.pl.txt
ログビューワー http://torihamlog.s55.xrea.com/search/axlogv.cgi.txt

ここにログビューワを設置して、それにアクセス解析しこんでます。
リモホとかIPとか晒す事になるので困る人は見ないで下さい。
パスワードは 1234 です。
http://torihamlog.s55.xrea.com/search/axlogv.cgi

念のため…コレ呼び出すとログを削除します。
http://torihamlog.s55.xrea.com/search/dellog.cgi
529 :
528
04/05/09 21:13 ID:???
すいません、上の奴.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:???
>>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:???
>>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:???
>>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:???
>>532
・CSS を変更する為にスクリプトを編集する危険を冒す必要がある。
・外部に CSS を持つのに対し、常に二倍の回数実行される。
・CSS を使い回す時に悩む事になる。

これらのデメリットを考慮の上で、なお一つにまとめるメリットの方が
勝ると判断したならいいんじゃないか?
534 :
528
04/05/14 20:45 ID:1r/FkAS3
>>532
自己レス
すげー馬鹿なこと書いていた

if ($mode eq "css") { Style_Sheets(); }
elsif (($pass) && ($pass ne $pw)) { Error('パスワードが違います。') }
elsif (($pass eq $pw) && ($mode eq "view") && ($ENV{'REQUEST_METHOD'} eq "POST")) { View(); }
else { Pass_form(); }

たぶんコレでいいかな…

作った動機はなんとなくなんだけど、実用性とかどうでせう?
一応CGIの設置とかできて、ほんのちょっとだけいじれる程度人向けのつもりです。
535 :
◆u2YjtUz8MU
04/07/02 01:32 ID:???
いろいろわからんことだらけで作りましたが
添削して下しさい。
【スクリプト】http://www.tcn.ne.jp/~majima/dog/quiz.txt
【動作例】http://www.tcn.ne.jp/~majima/dog/quiz/quiz.cgi
536 :
nobodyさん
04/07/03 23:32 ID:???
>>535
むずい
537 :
nobodyさん
04/07/04 05:07 ID:???
>>535
とりあえず画像のファイル名を変えた方が良いよw
20点頂きました
538 :
nobodyさん
04/07/04 05:12 ID:???
>>535
もじゅーるは使えない鯖なんでつか?
使えるんなら使ったほうがいいでつよ。
Image::Magick、CGI、Jcode等々
何に使うのかは自分で調べてね。

EUCで書いたり表示したりしたほうがいいと思うけど、Shift_JISでやりたいのなら反対しないさ。

所々myを付けているが、どうせなら全部に付けちゃいな。
strictしろってこった。
ついでにHTML的にも4.01strict すれば?
539 :
ager
04/07/09 18:40 ID:???
age
540 :
nobodyさん
04/10/08 20:39:40 ID:HUGW4EIR
タイトル::時刻::内容\n

というようなデータが数行あるような場合
それらを読んできて切り分けるって処理を
してます。
これの評価お願いします。

sub split_data{

my @ref,@tmp,%hush;
@tmp = @_;

for (@tmp){
chomp;
($hush{title},$hush{time},$hush{contents}) = split /::/;
push (@ref,{%hush});
}

return(@ref);

}

@tmp = ("a::b::c\n","d::e::f\n","g::h::i\n");

@ref = split_data(@tmp)

for(0..$#ref){
print "title:".$ref[$_]->{title};
print " time:".$ref[$_]->{time};
print " contents:".$ref[$_]->{contents}."\n";
}
541 :
nobodyさん
04/10/09 00:21:55 ID:???
>>540
myで複数宣言するときは()がいる
hushじゃなくてたぶんhashね. 連想配列っていみなら

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

foreachつかえよ
for(...$#ref)
542 :
540
04/10/09 02:08:52 ID:???
541>

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

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

my は複数でも()いりませんよ。バージョンによるだろうけど
最後に、今更foreach使ってる人いるんですか?w
543 :
nobodyさん
04/10/09 02:43:14 ID:???
>>542
#--- test.p ---
use strict;
my $foo, $bar, $baz;
__END__

> /usr/local/bin/perl -v
This is perl, v5.8.5 built for i386-freebsd-64int
<snip>
> /usr/local/bin/perl -wc test.p
Parentheses missing around "my" list at test.p line 2.
Global symbol "$bar" requires explicit package name at test.p line 2.
Global symbol "$baz" requires explicit package name at test.p line 2.
test.p had compilation errors.

> /usr/bin/perl -v
This is perl, version 5.005_03 built for i386-freebsd
<snip>
> /usr/bin/perl -wc test.p
Parens missing around "my" list at test.p line 2.
Global symbol "$bar" requires explicit package name at test.p line 2.
Global symbol "$baz" requires explicit package name at test.p line 2.
test.p had compilation errors.
544 :
nobodyさん
04/10/09 03:20:52 ID:???
>>541 >foreachつかえよ
>>542 >今更foreach使ってる人いるんですか?w

for と foreach は単なるシノニムなので、その表現は正しくないな。
foreach (LIST) BLOCK を for (LIST) BLOCK と略せるのと同様に、
for (EXPR; EXPR; EXPR) BLOCK を foreach (EXPR; EXPR; EXPR)
BLOCK と書いてもエラーにならない。

foreach ループを意味するところで foreach と「書け」という >>541
アドヴァイスは論拠の確かな正しいものだ。しかし Perl では C 風の
for ループを使う機会が foreach ループに比べて圧倒的に少ない上、
人間の目からも for ループと foreach ループの区別は容易なので、
砕けた流暢な Perl を目指すならこだわる必要のない部分だと思うな。
545 :
nobodyさん
04/10/09 05:06:54 ID:???
>>540
%hush(多分hash?)の宣言の位置。
GCのコストを考慮した場合に、変数の再利用をするはあるけど...、
ループないで初期化してないとフィールドの数が少ない時に困るよ。

split/::/の代わりに正規表現を使ってデータを切り出すと、
データのチェックとsplitを同時にできて便利。

chompはデータ格納前に済ませておいた方が良いんじゃないかな。chomp(@tmp)
もしくは、大抵はファイルから読み込むだろうからその時に。

546 :
540
04/10/09 05:35:12 ID:???
>>544
どうもありがとう。foreachは普通に使えるんだろうけど、
大抵forで済ませてしまうのです。言い方悪かったです、スイマセン。

>>545
ありがとうございます。

>ループないで初期化してないとフィールドの数が少ない時に困るよ。
というのは、forのループ内で undef(%hush); (ほんとはhashでしたw)
でいいですか?
あと、フィールドの数が少ない時というのはどういうことでしょうか?

>split/::/の代わりに正規表現を使ってデータを切り出すと
どう書いたらいいのか思いつきません。宜しかったらご教授下さい。

>chompはデータ格納前に済ませておいた方が良いんじゃないかな。
そうですね。

open(FH,"file_name");
@tmp = <FH>;
chomp(@tmp);
close(FH);

547 :
541
04/10/09 11:14:32 ID:???
言いたかったのはforeach (@ref)にしろよってことね
別にfor (@ref)でもいいかもしれんが
あと>>543読んだか? myは複数宣言するときは()いる

>>546
>ループ内で初期化
for(hoge){
my %hash;
statement;
}
こういう事だと思う
548 :
540
04/10/09 12:28:12 ID:???
my () つけなくてもエラー出てないです。 という事は
省略も可って事ではないでしょうか?
549 :
nobodyさん
04/10/09 14:26:51 ID:???
>>548
エラーにならないのは strict 'vars' 宣言が無いからだ。
my $foo, $bar, $baz; という文自体は文法的には間違いじゃないが、
my は , より優先順位が高いので、my($foo), $bar, $baz; と書くのと
等価になる。

#--- test.p ---
my $foo, $bar, $baz;
print defined $main::{$_} ? "'$_' is global.\n" : "'$_' is rexical.\n"
  for qw(foo bar baz);
__END__

> perl -w test.p
Parentheses missing around "my" list at test.p line 1.
Useless use of a variable in void context at test.p line 1.
Useless use of a variable in void context at test.p line 1.
Name "main::bar" used only once: possible typo at test.p line 1.
Name "main::baz" used only once: possible typo at test.p line 1.
'foo' is rexical.
'bar' is global.
'baz' is global.
550 :
nobodyさん
04/10/09 17:41:00 ID:???
>>546
> あと、フィールドの数が少ない時というのはどういうことでしょうか?
これは、今回のケースでは問題なかったです。

でも、変数を再利用する時は気を付けないと、前の値が残っていたり、
意図しない場所の値を書き換えてしまったりするので注意。
例えば、pushの所を \%hash とりファレンスを使うように変更した場合。

my (@ref, %hash);
foreach (@_) {
# @refの中の前の値を上書きすることになる
# {%hash}とした場合は、@refにはいってる値はコピーなので影響ない
@hash[qw/title time contents/] = split/::/;
push(@ref, \%hash);
}

my (@ref);
foreach (@_) {
my %hash;
@hash[qw/title time contents/] = split/::/;
# {%hash} でも期待通りに動作するが、余分なコピーを生成
push(@ref, \%hash);
}

速度とかを重視するなら >>540 が効率良さそうだけど、(多分)
バグとかみつかった場合に変数のスコープが広いと特定するのが困難になる。

>>542
> my は複数でも()いりませんよ。バージョンによるだろうけど
他の方に指摘のある通り。
最低限 use strict; use warnings;(もしくは -w) を宣言してないとPerlは教えてくれない。
551 :
nobodyさん
04/10/09 18:04:19 ID:???
ここってものすごいでかいスクリプトでも細かい所まで見てくれるの?
552 :
nobodyさん
04/10/09 18:09:49 ID:???
>>550 何かおかしな日本語だった。訂正
s/他の方に/他の方からも/

あと、正規表現を使った方法を書き忘れてたのでついでに、、
例えば time が整数の場合の例

if (/^(.+)::(\d+)::(.+)$/) {
@hash{qw/title time contents/} = ($1, $2, $3)
}

553 :
nobodyさん
04/10/09 19:39:15 ID:???
>>551
読むに耐えうる書き方&内容ならな。
KENTレベルなら却下
554 :
nobodyさん
04/10/09 22:16:04 ID:???
>>553
オブジェクト指向とか頑張ってやってみたけど中途半端になったようなのでも大丈夫ですか?
555 :
nobodyさん
04/10/09 22:37:35 ID:???
何書いたって叩かれるんだから、結城出していいと思う
556 :
540
04/10/09 23:53:30 ID:???
ほんとにこんなに色々な方が、教えてくださるとは思ってませんでした。
どうもありがとうございます。
特にエレガントな方法を教えてくださった542氏
ハイレベルな(少なくとも今の私には)指摘をしてくれた
545=550=552氏には感謝します。
その他あのようなケチなコードに意見を下さった方々ありがとう。

またお世話になるかもしれません。m(_ _)m
557 :
nobodyさん
04/10/10 20:44:07 ID:???
> my は複数でも()いりませんよ。バージョンによるだろうけど
> 最後に、今更foreach使ってる人いるんですか?w
こんなこと言うやつはもう来なくていい
558 :
540
04/10/11 01:40:27 ID:21NinhME
ごめんね
559 :
nobodyさん
04/10/11 09:04:30 ID:???
>>558
とっとと消えろ
560 :
nobodyさん
04/10/18 16:42:05 ID:???
>>557
同意。
561 :
かぼ
04/10/22 19:30:44 ID:EM8OHCfb
562 :
nobodyさん
04/10/22 20:13:06 ID:???
>>561
コード晒せって馬鹿
563 :
nobodyさん
05/01/23 00:46:42 ID:vqv+/2ig
誘導されてきました。
評価というか不具合の問題です


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

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


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

URL
http://sr-cafe.chu.jp/kok/calc.html
564 :
nobodyさん
05/01/23 03:00:10 ID:3FhDUp9J
>>563
ソースはマンドクサイのでちゃんと読んでないけど、
文字コードと改行コードの問題の様な希ガス。
565 :
nobodyさん
05/01/23 13:10:26 ID:???
>>563
calc.html

× <SELECT name="set" name="s1">
○ <SELECT name="s1">
566 :
nobodyさん
05/01/23 20:04:18 ID:???
>>563
ReadFormData(*FORM); → %FORM=&ReadFormData;
print <<END_OF_DATA; → print <<"END_OF_DATA";
Content-type: text/html; → Content-type: text/html\n\n

以下 sub ReadFormDataの修正
local(*FORM) = @_; → my %FORM=();
local($buf, $tmp, $name, $value); → my($buf, $tmp, $name, $value);
return %FORM; ← 最後に追加
567 :
nobodyさん
05/01/24 11:42:30 ID:YsLCruPH
>>566
改行コード2つとダブルクォーテーション必要無くね?
568 :
nobodyさん
05/01/24 12:10:13 ID:???
\n\nはいらんね。
ヒアドキュメントのダブルクォートはどちらかというとあったほうが・・・
569 :
563
05/01/25 02:27:15 ID:???
ありがとうございます。
>>566サンの通りにしたり、色々試してるんですがまだ動かないです…
printが閉まってなくてフォームの値を処理出来てないんでしょうか…
570 :
nobodyさん
05/01/25 04:00:44 ID:???
>>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:???
>>569
今試したら566の変更だけで動いたわけだが。
Content-typeの行はそのままでも良いみたい。
動かないとしたらCGIの設置方法の問題。
まさかとは思うがローカルでテストしてるよね?
572 :
nobodyさん
05/01/25 04:03:19 ID:???
→まさかとは思ってない法則
573 :
566
05/01/25 04:07:06 ID:???
つーか563のソースのままでも、ちゃんと結果出るじゃん。
問題はコードではない予感。
574 :
nobodyさん
05/01/25 04:14:49 ID:???
>>573
経験で言うとさ、ヒアドキュメントはサーバの機嫌で、最初はうまく動作して
くれないことがある。Cookieなんか入れるとどうも変なんだよな。
そういうとき俺はメンドーでも print "~\n" に置換えてやる。すると、あとは
「ヒアドキュメントでも読込んでやるかぁ」ってことでサーバは折り合ってくれる。
575 :
nobodyさん
05/01/25 04:27:07 ID:???
>>574
コンピュータに機嫌も何もねーだろ。
576 :
nobodyさん
05/01/25 04:34:21 ID:???
いや、あるんだって。コード書く時も、こうした方が処理が楽だろ、とか
ムリしなくっていいから、とか気を使ってやると機嫌よくなる。ほんとだぜ。
577 :
nobodyさん
05/01/25 06:20:53 ID:???
>>576
お前が何も分かって無いだけ
578 :
nobodyさん
05/01/25 06:47:43 ID:???
577はコード丸写しで自作CGIと称してるだろw。
多かれ少なかれ576のような感じはあるな。
579 :
nobodyさん
05/01/25 17:47:54 ID:???
>>578
お前が何も分かって無いだけ
580 :
nobodyさん
05/01/27 18:28:04 ID:???
皆さん本当スイマセンでした!
パーミッションの所為だった…
元のままでも566のコードでもどちらでも動きました。

>>571-572
そのとおりです。
ローカルでテスト出来るという事すら知りませんでした。
勉強します。
581 :
nobodyさん
2005/06/06(月) 19:56:57 ID:???
ねるねるねるねは Ψ(`∀´)Ψイッヒッヒッヒッヒ

             _▲_
ねればねるほど  ((φ(..。)  色が変わって

             _▲_
こうやってつけて  р(゚Д゚ )


          *_▲_*
 ウマイ━━━*━ヘ(゚∀゚)ヘ━*━━━━!!!!  テ-レッテレ-♪
582 :
nobodyさん
2005/06/06(月) 23:03:05 ID:???
>>581
お前の親父ダサイな
583 :
nobodyさん
2005/09/21(水) 17:05:52 ID:54UaWl8q
age
584 :
nobodyさん
2006/05/18(木) 17:31:45 ID:Ip4qBE+B
http://c.hibi.info/Apple-1.zip
どなたか評価(清書?)お願いします_ _
指定されたスレの中から前日から当日までの既定の時間にあるレスを抽出して、
そのレスから株価コードを抜き出し株価の前日比、前日比率でソートしランキングを作成した後スレに書き込むツールです。
2chへの書き込み時のCookiee処理に曖昧な点があるのと、処理の最適化をして貰えると嬉しいです。
宜しくお願いします_ _
585 :
nobodyさん
2006/05/18(木) 22:33:53 ID:???
他のスレから来ました。
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:???
>585
マルチポストすんな
587 :
◆AOxf8.Tmck
2006/05/18(木) 23:03:18 ID:???
>>585は私じゃないです。スルーしてください。
588 :
nobodyさん
2006/06/06(火) 15:21:29 ID:Re1RmuFG
簡易予定表のようなものを組んでみたんですが、なんだかモッサリしてる気がします。
もっと簡潔に書けるような気がするんですが自分ではこれが限界でした。
あと、ファイルロックのやり方が合っているのか自信がありません。
一応動いていることは動いているんですが、問題はないでしょうか。
改良すべき点、根本的にこういう書き方に直した方が良い、とかあればアドバイスお願いします。
大まかな内容は以下のようなものです。

予定として保存する内容は「予定日(月と日)」と
「予定内容(長くても200バイト程度)」の2つでフォームから渡します。
予定を保存するファイルは月単位で作成します。
例えば2006年6月の予定の場合なら「200606.txt」というファイル名です。
保存するファイルがないときはその都度作成し、

6月1日

6月2日

6月3日
.
.
.
という風に日付だけを先に入れておきます。
保存するファイルがあるときは、
フォームから渡された「予定日」とマッチした日付の次の行に「予定内容」を書き込みます。

内容は以上です。次レスにコードを晒します。
589 :
nobodyさん
2006/06/06(火) 15:22:42 ID:???
# 保存するファイル名
$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:???
# 該当する月のファイルがなければ作成
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:???
>>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:???
>$a = sprintf("%04d%02d",$YEAR,$MON)
セミコロンは?
動作するヤツうp
593 :
nobodyさん
2006/06/06(火) 15:52:34 ID:???
ビット演算子を使っているんだ。
高度だな。
594 :
nobodyさん
2006/06/06(火) 16:09:34 ID:???
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:???
レス遅くなりました。すみません。
該当部分を切り出して動作するコードをUPしてきます。
596 :
589
2006/06/06(火) 17:02:59 ID:???
http://up.isp.2ch.net/up/b2611f9a934e.zip
UPしました。パスは「589」です。
日付のところは594さんのアドバイスにしたがって書き換えました。
アドバイスの方よろしくお願いします。
597 :
589
2006/06/06(火) 17:11:06 ID:???
>>591>>592
コードの一部分だけ抜き出してできるだけ短く書こうとしたので
分かりにくかった&書き損じがありました。すみませんでした。

>>594
perlでもswitchが使えるとは知りませんでした。
598 :
nobodyさん
2006/06/06(火) 17:20:53 ID:???
いやperlではswitchは使えない。
599 :
nobodyさん
2006/06/06(火) 17:24:17 ID:???
Switch なんてモジュールがあるのか知らんかった。
600 :
nobodyさん
2006/06/06(火) 18:59:27 ID:???
cgi-lib.pl ktkr
601 :
nobodyさん
2006/06/07(水) 00:26:35 ID:???
PerlはPHPとは違ってCPANを探せば考えられる大体の車輪は既にある。
602 :
nobodyさん
2006/06/20(火) 01:54:40 ID:jChy1x4Z
>>596
見れない・・
603 :
nobodyさん
2006/07/08(土) 12:44:17 ID:hGiPCYN9
switchがあったとは・・・
604 :
nobodyさん
2006/07/21(金) 16:23:10 ID:BWWkPiVe
605 :
nobodyさん
2006/10/07(土) 10:40:01 ID:L17fbc1O
@@@
606 :
nobodyさん
2006/10/11(水) 22:51:05 ID:e5FQIx7N
特定の板のスレタイ検索をして、選んだスレから画像とかのサムネイルを表示するスクリプトを書いてみまスた(・ω・`)
恐ろしく見づらいと重いまスが・・
http://vip.ty.land.to/image/

http://pc8.2ch.net/test/read.cgi/php/1160569533/
でボチボチいじくったり、新しいことやったりしていきたいと思ってまスが、評価して欲しいス(・ω・`)
勉強かねてるので、車輪の再開発なのは承知でス
607 :
nobodyさん
2006/10/11(水) 23:36:54 ID:???
>>606
言葉遣い荒いけど、ばーっと書いた弊害なので許して。
取りあえずぱっとみてこんなもん。
・一部のうpろだは、リファラが不味いと弾かれる。
・画像がない場合の画像を一々作るのは無駄。
・CGIモジュール使え。
・グローバル変数も宣言しろ。
・これは好みだけど、設定の変数はハッシュに纏めた方が分かりやすいこともある。
・メインの流れはブロック作ってラベル付けた方が分かりやすいかも。
・正規表現の|は案外コストがかかる。配列にしてマッチング。
・先頭にrequire バージョン名;
・use warningsは~?
・汚染チェックもきれい好きな方にはオススメ。
・サブルーチンを先頭で宣言して欲しい。
・変数名に日本語はいやん。
・データーベースつかってほすぃ。
608 :
nobodyさん
2006/10/11(水) 23:42:15 ID:e5FQIx7N
>>607
おぉぉぉレスもらえたス(;ω;`)アリガタイ
感謝しまス!

>・正規表現の|は案外コストがかかる。配列にしてマッチング。
>・先頭にrequire バージョン名;
>・use warningsは~?
>・サブルーチンを先頭で宣言して欲しい。
良くわからないス(・ω・`)

>・変数名に日本語はいやん。
英語苦手ス・・・毎度翻訳スかね・・頑張るス

>・データーベースつかってほすぃ。
現在勉強中でス!
生暖かい目で見守ってやってくださいス・・(・ω・`)


やっぱレベル高い人の意見は参考になるス!
文句なし!って言われるようなものをいつか作りたいス(・ω・`)thnkス
609 :
nobodyさん
2006/10/12(木) 04:41:48 ID:???
>>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:???
>>609
サンクス

>最後から10行目くらい@cache[$i]は$cache[$i]じゃないの?
どちらも同じ意味だったはず
(若干の差はあるかもだが、使い方に大差なしでは?)

>print文中の"をエスケープするんならprint qq|ここに"文章"|;
>こーすりゃいちいちエスケープしなくておk
mjdsk!?
次から挑戦してみる

色々アドバイスやら素敵な解決策をありがとう
611 :
nobodyさん
2006/10/12(木) 13:46:42 ID:???
useするかどうか切り替えたいなら
BEGIN{}で囲ったほうがいいな。
612 :
nobodyさん
2006/10/12(木) 22:51:01 ID:???
>>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:???
あちこちから 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:???
>>612
URLが長すぎて横スクロールでた。
ふざけんな改行しろこのボンクラっ!
615 :
nobodyさん
2006/11/07(火) 08:23:24 ID:???
IDなんだしもっと短く付けろよなw
文章そのままって酷すぎるw
616 :
nobodyさん
2006/11/08(水) 01:06:36 ID:???
>>613
ちょっとエキサイト翻訳チックだな
617 :
◆.PT9876/4U
2006/11/08(水) 06:15:24 ID:???
>>613
お返事ありがと~.
でも, どういう意味かしら ?

誘導されて来たのに いまだに誰も...
どうなってるの ?
618 :
nobodyさん
2006/11/08(水) 10:54:37 ID:???
>>617
「とても読めたもんじゃない」
ということではないでしょうか。
613は釣りとしか思えない。
CGI以前の問題ね。
619 :
◆.PT9876/4U
2006/11/08(水) 18:47:29 ID:???
>>618
>CGI以前の問題ね
確かに... JavaScrit の bug がぁ~~~
(絶対に書き込めない)
おまけに... WaMCom (Mozilla1.31) では問題とならなかった error が
IE5.17(Mac版) では発生して処理が止まる~~~.

>613は釣りとしか思えない
釣りでは ありませぬ.

僕の環境で確認できる bug は退治しました.
引き続き あら探しをお願いいたしまする~.
620 :
nobodyさん
2006/11/08(水) 20:37:07 ID:???
つっこみどころが多すぎるなぁ…。

まず、「何を作ったのか」という概要や大まかな処理の流れすら書いてない。
>評価と言うよりも bug の あぶり出しを希望します.
評価するスレ。デバッグする所ではない。てか、デバッグなめすぎ。
>操作がわかりづらいとの...
具体的にはどういう操作?
>自信がないのが security 関連
どのファイルの何行目のどういう処理?
>JavaScrit の bug がぁ
JavaScritのスレへどうぞ。
>WaMCom (Mozilla1.31) では問題とならなかった error が
>IE5.17(Mac版) では発生して処理が止まる
と書いていながら
>僕の環境で確認できる bug は退治しました
ってどうよ。

何より、CGIについて無学なのがバレバレです。
背伸びせずPerlからでもきちんとお勉強しましょう。
621 :
nobodyさん
2006/11/08(水) 20:38:25 ID:???
これさぁ、変数の検査とか書き込む条件とかまったくないじゃん。
最低でも変なファイル作られないようにするとか異常にでかい投稿は
書き込まないようにするとかしないと。
叩き専門の人にとっては叩く必要もないほどへなちょこだけど
プログラムに日本語を含めないつくりはいいと思う。
プロでもソースのいたるところに日本語を埋め込む人はいるからね。
ぶっちゃけそれくらいしか褒めようがないんだけどw

nullぽっぽはもしかしてOperaメインなの?
622 :
nobodyさん
2006/11/08(水) 21:25:25 ID:???
>>613
まずはuse strict及びuse warnings、
また-Tオプションを付けてエラーが出なくなってから来てください。
623 :
nobodyさん
2006/11/09(木) 02:37:09 ID:???
nullはクラシックMacのiCab使いだった筈。
624 :
nobodyさん
2006/11/09(木) 05:11:43 ID:Rlngnc6w
まず, 皆さんにお礼を...
ありがとう ごぜ~ますだ.

>>620
一応, 掲示板 CGI script (のつもり)

>デバッグする所ではない
言葉を間違えたかも ?
debug を他人に依頼するようでは問題外だと思っております.
動作はするけれど server 利用者に迷惑を書けるような
security hole に気づいていないかも知れない.
そんな問題があったら指摘して欲しかったですだ.

>>621
>変数の検査とか書き込む条件とかまったくないじゃん
おおせの通りです.
ようするに書きこみの部分を改良しなければならないのね ?
で, read.cgi の方は どうでしょう ?
人に迷惑を書けるような security hole が あったなら ご指摘くださいませ.

>CGIについて無学なのがバレバレです
弁解の余地もありません.
でも, 半端者の僕が言うのもアレですが
拾って来れるものには満足できなかったのら.
そもそも perl って できの悪い土台に無理な建て増しをした印象が...
625 :
◆.PT9876/4U
2006/11/09(木) 05:37:51 ID:???
>>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:???
ところで rgst.cgi で変なファイルを作れる可能性って ?
(これこそが最も知りたいところ)
量の制限は早急に対処したいと思いますが...
627 :
nobodyさん
2006/11/09(木) 16:01:13 ID:???
nullは呼んでない
628 :
nobodyさん
2006/11/09(木) 17:48:40 ID:???
>>621
日本語コメントのどこが問題なの?
629 :
nobodyさん
2006/11/09(木) 19:51:53 ID:???
利用者から見えない変数名、関数名を縮める意味があるのかと小一時間。
630 :
nobodyさん
2006/11/09(木) 22:54:18 ID:???
Perlにケチつけるまえに自分の頭の程度を疑えよな
631 :
nobodyさん
2006/11/09(木) 23:12:35 ID:???
日本語のコメントを入れないのが良いって…
なにその英語はカッコイイ、日本語はダサいっていう中学生wwwww

それに、日本人なんだから直感的にわかりやすい日本語で注釈をつけておくのが、
あとを引き続く人へのマナーだと思うんだが。
632 :
nobodyさん
2006/11/09(木) 23:15:19 ID:???
English is cool!!
633 :
◆.PT9876/4U
2006/11/09(木) 23:35:05 ID:???
予想していたとはいえ, ボロボロだなぁ.
まあ, 他人様に使ってもらおうとするのなら それなりの配慮が必要だろう.
しかし, 僕は自分のために作ったんだ.
最低限, 同じ server 利用者に迷惑を書けない配慮をすれば済む話なんだ.

僕が知りたかったのはその部分に問題があるかどうか なんだけど,
話は あらぬ方向に...
634 :
nobodyさん
2006/11/09(木) 23:45:04 ID:???
率直に言ってゴミ.基本から勉強し直した方がいい.
というかまずは普通の学校の勉強を頑張った方がいい.
635 :
nobodyさん
2006/11/09(木) 23:46:24 ID:???
ひとつだけヒントを.

> read(STDIN,$u,$ENV{'CONTENT_LENGTH'});

たとえ寝ぼけて他としてもこの一行を書いてしまうようでは CGI 書くのは辞め
た方がいい.
636 :
nobodyさん
2006/11/10(金) 03:57:46 ID:???
プログラムの途中に文字列リテラルを埋め込むな、というなら解らないでもない。
ただ、それは日本語に限った事じゃないな。
637 :
◆.PT9876/4U
2006/11/10(金) 06:34:00 ID:???
>>634
んじゃ~ゴミでない script を書いてくらはい.
あっしは それを使わせていただきますだ. (イヒヒ)

>>635
>この一行を書いてしまうようでは CGI 書くのは辞めた方がいい
して, その理由は ?
それと read.cgi に security hole は ないのかどうかが知りたいのだけどなぁ.

-------------------------------------------------------------------
なんだか僕の質問に きちんと答えた回答はない.
ここを当てにした僕が愚か者ってことですかい ?
638 :
nobodyさん
2006/11/10(金) 07:10:46 ID:???
まだ分かってないみたいだね.

>>この一行を書いてしまうようでは CGI 書くのは辞めた方がいい
>して, その理由は ?
セキュリティホールになるから.理由は自分の頭で考えなさい.

>それと read.cgi に security hole は ないのかどうかが知りたいのだけどなぁ.
当然ある.
639 :
nobodyさん
2006/11/10(金) 07:14:05 ID:???
>>637
よく分かっていないようだからキミがすべきことを具体的に言おう。
スクリプト冒頭の#!/usr/local/bin/perlを、
#!/usr/local/bin/perl -T
use strict;
use warnings;
に書き換えてデバッグしなさい。
640 :
nobodyさん
2006/11/10(金) 11:09:25 ID:???
n u l l は 出 て 行 け
641 :
nobodyさん
2006/11/10(金) 11:30:01 ID:???
>>633>>637でカンマを多用したり、
>>638でドットを使ったり、
キモチワルイ。流行ってるのか?

というかプログラマのくせに
「、」や「。」の代わりに「,」「.」使う奴って
なんだかなぁ…
642 :
nobodyさん
2006/11/10(金) 11:46:05 ID:???
>read(STDIN,$u,$ENV{'CONTENT_LENGTH'});

この一行は書いてもいいよ。その前の行で$ENV{'CONTENT_LENGTH'}の最大値を
決めてチェックしていればね。
643 :
606
2006/11/10(金) 12:23:56 ID:???
>>637
人に物事を頼む態度じゃないよね?
こっちはみんな善意で見てるってこと忘れてる?
嫌なら他行ったら?

最初に自分で書いてたみたいだけど、他人のソースのつぎはぎスクリプトでしょ?
何の価値があるの?
まずはダサくてもきちんと問題なく動く物を作ることからじゃない?


利用者のことを考えないスクリプトなんて糞だと思います。
644 :
606
2006/11/10(金) 12:26:14 ID:???
ちなみにおいらのほうは、鯖が不調で繋がりません。
どうにもならんのでしばらく放置~

まだ様子見てくれてる人とかいるのだろうか・・・
もし居たら感謝
645 :
nobodyさん
2006/11/10(金) 14:20:19 ID:???
自分がよく理解していない言語で書いたプログラムを
なぜ共用サーバーで使おうと思えるのか、その神経が理解できない。
プログラムよりも、その意識や存在自体が危険。
646 :
nobodyさん
2006/11/10(金) 16:16:14 ID:???
>>637
>なんだか僕の質問に きちんと答えた回答はない
「きちんと答えた回答」があることにさえ気付けてないだけ。
自分の無知を棚に上げておきながら、
コードに目を通してマジレスしてくれた住人に対して
>ここを当てにした僕が愚か者ってことですかい?
とは随分とご挨拶だな。

ま、オレが見た限りでは
お前の掲示板CGIscriptには何のsecurity holeもないよ。
安心して使って良い。オレが保証する。
647 :
nobodyさん
2006/11/10(金) 16:46:46 ID:???
>>646
ちょwwおまwww
648 :
nobodyさん
2006/11/10(金) 19:08:49 ID:???
でも実際「大丈夫、何の問題もないよ」としかレスされてなかったら、
ということを◆.PT9876/4Uは考えてみた方が良い。
645も指摘してる通り、今の時点では自分にその言葉が正しいのかどうかすらも
判断できないのに、共用サーバーで自作CGIを使おうとしていることがどれだけ危険か考えてみろ。
極端なことを言えば、それらしい説明があって「これを書き足した方が良い」と言われれば、
それが危険なコードであっても追記してしまうんじゃないのか?

少なくともこれだけマジレスしてくれたり
お世辞にも読みやすいとは言えないようなコードを読んでくれただけでも感謝すべきなのに
「まずこれをやれ」と言われたことはやらず、
自分のレベルの低さを指摘されると反省するどころか逆ギレして
637のような皮肉と煽りに満ちたようなレスしかできないことを恥ずかしいとは思わないのか?
649 :
◆.PT9876/4U
2006/11/10(金) 19:14:39 ID:???
うわっ, お祭りになってる~ (~_~)
(突っ込まれると思った global variable の突っ込みは なぜかないのね)

>>639
なるほろ...
さっそく確かめてみますだ~.

>>642
おありがとうごぜますだ~.
650 :
◆.PT9876/4U
2006/11/10(金) 19:29:01 ID:???
なんだか怒ってる人が居るみたいだけど,
こういうときは百計逃げるにしかず... (ぴゅ~)
651 :
nobodyさん
2006/11/10(金) 19:36:37 ID:???
36
652 :
nobodyさん
2006/11/10(金) 20:12:51 ID:???
age
653 :
nobodyさん
2006/11/10(金) 20:53:05 ID:???
サブルーチンの宣言ってなんじゃらほい?
スクリプトが見れないし何の事を言ってるのかわからんち。

>>641
理系の論文はそういう仕様らしいぞ。
654 :
nobodyさん
2006/11/10(金) 20:57:05 ID:???
情報系の大学院でまともな教育受けた人間なら気持ち悪いとは思わない気がする.
気持ち悪がるのは専門学校程度しか行けなかったやつか基本をろくに知らない文系プログラマじゃね?
655 :
nobodyさん
2006/11/10(金) 21:14:08 ID:???
おかしいな、ここは日本語で話しをする場所じゃなかったのか?
いつから自分の投稿を論文調で発表する場になったんだ?

とりあえず、読みづらい。
読み手を考えないのは、物づくりで使い手を考えないのと同じ。
邪魔
656 :
nobodyさん
2006/11/10(金) 21:28:17 ID:???
あれだ、脳内補完で「,」も「.」も消し去っていた件
657 :
nobodyさん
2006/11/10(金) 21:39:13 ID:???
別にそんなに気にする程のことでもないだろ。
ウザイのは句読点じゃなくてnullの存在なだけなんだし。
658 :
nobodyさん
2006/11/10(金) 22:29:05 ID:???
>>657
激しく同意
659 :
◆.PT9876/4U
2006/11/10(金) 23:42:37 ID:???
どうい されて たまるか !
どうでもいいけど...
いや, やめておこう...
...
660 :
nobodyさん
2006/11/10(金) 23:53:13 ID:l2n6SZM/
sub file_read {
my $a = $_[0];
open( FH , $a );
while (<FH>) {
print;
}
close FH;
}
こんなサブルーチンを作ったのですがうまく動きません
なぜですか?
661 :
nobodyさん
2006/11/11(土) 00:48:26 ID:???
>>660
スレ違い
662 :
nobodyさん
2006/11/15(水) 22:13:43 ID:???
>>660
スレ違いにも程がある。これはまぎれもなく板違いでもない!
ドメイン違いの質問だ。よそのドメインいけ
663 :
nobodyさん
2006/12/04(月) 16:34:03 ID:???
さすがに句読点でいちゃもんをつけるのはどうかと思う。
664 :
nobodyさん
2010/02/26(金) 22:46:54 ID:1vcgNIKQ
ping
665 :
○~
2010/02/26(金) 23:15:50 ID:1vcgNIKQ
性懲りもなく, 評価依頼:
 http://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
そして誰にも相手にされず>>665は1年が経ったのであった
                     糸冬わり
667 :
忍法帖【Lv=40,xxxPT】(1+0:8) 【24.4m】 電脳プリオン ◆3YKmpu7JR7Ic
2012/09/30(日) 15:48:22.27 ID:???

          | | ガガガッ
          | |
          人
  ∧_∧   <  >_∧∩
  ( ・∀・)   人`Д´)/ ←>>203
 と    )  <  >_∧∩
   Y /ノ    .人`Д´)/ ←>>259
    / )    <  >_∧∩
  _/し' //. V`Д´)/ ←>>433
 (_フ彡        /
668 :
カタヤマ
2013/12/31(火) 01:08:42.56 ID:NACGwKVa
宇土成

うまく逃げたな
247KB

lud20160424045925
このスレへの固定リンク: http://5chb.net/r/php/1049514428/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「自作CGIを評価するスレ」を見た人も見ています:
顔うp評価スレ
顔うp評価スレ
なりきり評価スレ
USM再評価スレ
顔面評価スレpart1
あくたん再評価スレ
酒井和男再評価スレ
りっきー再評価スレ
ゴロフキン再評価スレ
2017年夏アニメ評価スレ
新番組を評価するスレ 8323
新番組を評価するスレ 8304
新番組を評価するスレ 5807
サンシャイン再評価スレ
新番組を評価するスレ 7799
新番組を評価するスレ 7523
新番組を評価するスレ8119
【MHW】条件付きTA評価スレ
TAC 税理士講師評価スレ関東
アマオケの演奏会評価スレ2
新番組を評価するスレ 8756
新番組を評価するスレ 8043
新番組を評価するスレ 8043
「Zガンダム」再評価スレ。
新番組を評価するスレ 8364
クソガキ再評価スレ #2320
新番組を評価するスレ 8762
新番組を評価するスレ 8699
新番組を評価するスレ 8728
新番組を評価するスレ 8692
DQ5仲間キャラ評価スレ28匹目
銀河漂流バイファム再評価スレ
あなたの写真の評価スレ.1枚目
DQ5仲間キャラ評価スレ29匹目
新番組を評価するスレ pant8818
■■ HP評価スレッド vol.55 ■■
新番組を評価するスレ 8735
新番組を評価するスレ 8682
★橋谷彰英を語るスレ 低評価4★
必要な整形は何かを聞く顔面評価スレ
真剣にみんなで音源評価するスレ
自分の買ったマジック評価スレ 35
俺の自慢の水槽を評価するスレ
自分の買ったマジック評価スレ42
自分の買ったマジック評価スレ41
自分の買ったマジック評価スレ42
自分の買ったマジック評価スレ 35
新番組を評価するスレ Pant8774
数学者を10点満点で評価するスレ
自分の買ったマジック評価スレ 37
低評価押すスレ [無断転載禁止]
自分の買ったマジック評価スレ 38
【絵評価スレ】絵描いたから評価して
自作チップチューン曲をみんなに評価してもらうスレ
びっぷらコテ評価スレ [無断転載禁止]
新番組を評価するスレ8226 [無断転載禁止]
ネットでの人材募集ノウハウ・募集文評価スレ
深夜の岡尚大さん再評価スレ [無断転載禁止]
こんな評価スレ欲しくない? [無断転載禁止]
新番組を評価するスレ8141 [無断転載禁止]
新作アルバムを10点満点で評価するスレ 58
2016年アニメを評価するスレ [無断転載禁止]
新番組を評価するスレ8202 [無断転載禁止]
新番組を評価するスレ8153 [無断転載禁止]
新刊エロマンガ(単行本)評価スレッド 95 ©bbspink.com
20:09:54 up 127 days, 21:08, 0 users, load average: 21.52, 32.28, 24.21

in 0.012719869613647 sec @0.012719869613647@0b7 on 082309