>>368
いいんじゃないかな。
while文の所は・・・
while ($retry--) {
return 0 if rename($lock_file, $lockex_file);
}
&error( 'Lock error' );
こうの方が良いかな。
自作CGIを評価するスレ
369nobodyさん
03/06/22 09:04ID:???370368
03/06/22 10:02ID:???371nobodyさん
03/06/24 13:54ID: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;
このルーチンだと穴がある。経験則だけど、アクセスが殺到すると簡単に壊れる。
説明するのめんどいので、
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;
372368
03/06/24 14:57ID:??? >>371
ありがとうございます。
ロックが甘いということは分かりましたが、アンロックはどうでしょうか?
まだ371さんがおっしゃったサイトは見てないのでなんとも言えませんが…。
もう少し勉強してみることにします。
指摘されたリトライですが、
if (--$retry <= 0) {
こうですね。
ありがとうございます。
ロックが甘いということは分かりましたが、アンロックはどうでしょうか?
まだ371さんがおっしゃったサイトは見てないのでなんとも言えませんが…。
もう少し勉強してみることにします。
指摘されたリトライですが、
if (--$retry <= 0) {
こうですね。
373nobodyさん
03/06/24 15:24ID:??? >>371
> このルーチンだと穴がある。経験則だけど、アクセスが殺到すると簡単に壊れる。
> 説明するのめんどいので、
> http://www.din.or.jp/~ohzaki/perl.htm#File_Lock
> この辺りでも読んでみて。
その辺り読んで、載ってるルーチンそのまま使ってテストした所、
ファイル壊れました。
俺は、>>368くらいの簡単なロックで良いと思うけど。
このロックで壊れるようなアクセス受けてるって事は、
その説明に載ってるようなルーチンでも、ほぼ壊れる。
どんなロックしててもファイルは壊れるんだから、
小細工いれた重いロック処理するより、
簡単にロックする処理入れた方が良いような。
> このルーチンだと穴がある。経験則だけど、アクセスが殺到すると簡単に壊れる。
> 説明するのめんどいので、
> http://www.din.or.jp/~ohzaki/perl.htm#File_Lock
> この辺りでも読んでみて。
その辺り読んで、載ってるルーチンそのまま使ってテストした所、
ファイル壊れました。
俺は、>>368くらいの簡単なロックで良いと思うけど。
このロックで壊れるようなアクセス受けてるって事は、
その説明に載ってるようなルーチンでも、ほぼ壊れる。
どんなロックしててもファイルは壊れるんだから、
小細工いれた重いロック処理するより、
簡単にロックする処理入れた方が良いような。
374nobodyさん
03/06/24 15:33ID:??? >どんなロックしててもファイルは壊れるんだから
そんなことはないよ。ただ言えることは、この板ではまだまともにロックできて
いるルーチンが1つも書かれてないな。
そんなことはないよ。ただ言えることは、この板ではまだまともにロックできて
いるルーチンが1つも書かれてないな。
375nobodyさん
03/06/24 15:35ID:???378nobodyさん
03/06/24 15:40ID:??? ↓これでもこわれる?(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;
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;
379374
03/06/24 15:41ID:??? >絶対壊れないファイルロックってある訳ない
この根拠がどこからくるのかわからないが、
少なくともとてつもないアクセス集中に対応できるように非ブロックモードで
タイムアウトを備えてないとまず無理だということは教えておこう。
この根拠がどこからくるのかわからないが、
少なくともとてつもないアクセス集中に対応できるように非ブロックモードで
タイムアウトを備えてないとまず無理だということは教えておこう。
380378
03/06/24 15:41ID:??? あ、EUCにしてからSJISにもどすの忘れてるけど、そこは気にしないで
381371
03/06/24 15:46ID:01cZwzPj > どんなロックしててもファイルは壊れるんだから、
そんなことはない。
というか、上(大崎氏の)のルーチンでファイル壊れたんならファイルシステムに
不備があるか、打ち間違いがあるかパーミッションやらの設定を誤ってるかどれか。
ファイルシステム上でrenameが衝突しないという条件の元でならうまく行くはず。
アクセス集中でファイルが壊れるのはロックの機構に不備がある
だけで、正しい状況下で行われたUNIX系OSでのflockでは、ファイルシステム
にバグがあるか、ファイルシステム自体のクラッシュでもない限り壊れない。
>>375
flockはNFS越しの場合に失敗するから、ファイスシステムを予め
調べておく必要がある。
NFS越しだとPOSIXモジュール使うかfcntl使う必要があった気がする。
>>376
> どんなに集中アクセスを受けても、
> 絶対壊れないファイルロックってある訳ない。
> あったら、ぜひ見て見たい。
非ネットワークファイルシステム+UNIX系OSでのflock。stableなバージョン上で
これで壊れたって話は逆にあったら見てみたい。
そんなことはない。
というか、上(大崎氏の)のルーチンでファイル壊れたんならファイルシステムに
不備があるか、打ち間違いがあるかパーミッションやらの設定を誤ってるかどれか。
ファイルシステム上でrenameが衝突しないという条件の元でならうまく行くはず。
アクセス集中でファイルが壊れるのはロックの機構に不備がある
だけで、正しい状況下で行われたUNIX系OSでのflockでは、ファイルシステム
にバグがあるか、ファイルシステム自体のクラッシュでもない限り壊れない。
>>375
flockはNFS越しの場合に失敗するから、ファイスシステムを予め
調べておく必要がある。
NFS越しだとPOSIXモジュール使うかfcntl使う必要があった気がする。
>>376
> どんなに集中アクセスを受けても、
> 絶対壊れないファイルロックってある訳ない。
> あったら、ぜひ見て見たい。
非ネットワークファイルシステム+UNIX系OSでのflock。stableなバージョン上で
これで壊れたって話は逆にあったら見てみたい。
382371
03/06/24 15:48ID:01cZwzPj383371
03/06/24 15:54ID:01cZwzPj 変な憶測並べる前にFAQくらいみんな読もうよ。
http://elib.cs.berkeley.edu/~loretta/perl/nmanual/pod/perlfaq5/How_can_I_lock_a_file_.html
http://elib.cs.berkeley.edu/~loretta/perl/nmanual/pod/perlfaq5/How_can_I_lock_a_file_.html
384nobodyさん
03/06/24 18:50ID:??? 追加書き込みすれば壊れない。
385371
03/06/24 19:10ID:01cZwzPj390371
03/06/24 20:45ID:??? >>386
symlinkにしろ、rewriteにしろ、mkdirにしろ、OSがファイルシステム上で衝突しないように
設計されているという大前提で作られてるし、実際衝突するかどうかはOS次第なので、
OSに非依存で汎用可能なアルゴリズムっていうのは原理的に不可能じゃないかと。
symlinkにしろ、rewriteにしろ、mkdirにしろ、OSがファイルシステム上で衝突しないように
設計されているという大前提で作られてるし、実際衝突するかどうかはOS次第なので、
OSに非依存で汎用可能なアルゴリズムっていうのは原理的に不可能じゃないかと。
392nobodyさん
03/06/24 20:48ID:??? >OSがファイルシステム上で衝突しないように設計されているという大前提で作られてるし。
OS側でAtomicでもプログラム側がそうでなけりゃ・・・。
OS側でAtomicでもプログラム側がそうでなけりゃ・・・。
394nobodyさん
03/06/25 00:00ID:??? 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までカウントなんぞできんぞ。
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までカウントなんぞできんぞ。
396nobodyさん
03/06/25 00:39ID:??? >>395
はぁ?
全体に一度だけかけろとか言うのか?
それでも壊れる。
何がまともに使えないだよ・・・
ルーチン呼び出すのに使えるも使えないもないだろヴォケ。
文句言う前に試せやハゲ。
試して、壊れなかったら文句言いにこいや。
はぁ?
全体に一度だけかけろとか言うのか?
それでも壊れる。
何がまともに使えないだよ・・・
ルーチン呼び出すのに使えるも使えないもないだろヴォケ。
文句言う前に試せやハゲ。
試して、壊れなかったら文句言いにこいや。
397374
03/06/25 00:47ID:??? ルーチンをまともに使えないヤシが晒されるスレはここでつか?
398nobodyさん
03/06/25 00:57ID:??? >>397
だから。
試せってよ・・・。
試しもしないで、使えてねーとか、使い方悪いとか。
そんな事言われても、説得力ねーっちゅーの。
こういう使い方したらファイル壊れないとか、
このタイミングでルーチン呼び出したら大丈夫だとか、
まー試しもしないで語ってるヤツに、
ロクな答えなんて返ってきそうにないけどな。
だから。
試せってよ・・・。
試しもしないで、使えてねーとか、使い方悪いとか。
そんな事言われても、説得力ねーっちゅーの。
こういう使い方したらファイル壊れないとか、
このタイミングでルーチン呼び出したら大丈夫だとか、
まー試しもしないで語ってるヤツに、
ロクな答えなんて返ってきそうにないけどな。
399371
03/06/25 00:59ID:Q5i43+wA >>396
> 全体に一度だけかけろとか言うのか?
だってそうしないとカウントが飛んじゃうでしょ。
> 試して、壊れなかったら文句言いにこいや。
一度に5プロセス動かして1000までやってみたけど壊れないね。
FreeBSD2.2.2 + Perl5.6.0だけど。
OS何使ってて壊れるの? > 396
> 全体に一度だけかけろとか言うのか?
だってそうしないとカウントが飛んじゃうでしょ。
> 試して、壊れなかったら文句言いにこいや。
一度に5プロセス動かして1000までやってみたけど壊れないね。
FreeBSD2.2.2 + Perl5.6.0だけど。
OS何使ってて壊れるの? > 396
400371
03/06/25 01:03ID:Q5i43+wA プロセスを7つに増やしてテスト中。
時々ロックファイルが消えるな・・・。renameしかしてないはずなので、
ファイルシステムのバグか?
でもデータが壊れるということは今のところない模様。テスト続行中。
時々ロックファイルが消えるな・・・。renameしかしてないはずなので、
ファイルシステムのバグか?
でもデータが壊れるということは今のところない模様。テスト続行中。
401371
03/06/25 01:13ID:Q5i43+wA FreeBSD2.2.8 + Perl 5.6.0でも実験したところ、20000件超えてるけど、特に問題なし。
FreeBSD2.2.2の方も、10000件行ってエラーなし。
合計30000件実験してみたけど衝突は起こってない模様(プロセスの譲り合いで片方のプロセスが
ブロックする現象は見られたが)。
単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ
とか、そういうオチじゃなくて?>>398
FreeBSD2.2.2の方も、10000件行ってエラーなし。
合計30000件実験してみたけど衝突は起こってない模様(プロセスの譲り合いで片方のプロセスが
ブロックする現象は見られたが)。
単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ
とか、そういうオチじゃなくて?>>398
402371
03/06/25 01:22ID:??? ファイルが消える現象は、ロックファイルをディレクトリにすることで回避
# mkdir lockdir/lockfile
で、20プロセス同時起動で、30000件やってみたけど、全く問題なし。
さすがに30000回連続で20プロセスが同時に1つのファイルにアクセス
する状況はありえないだろうから、少なくともウチの環境上では
きちんとロック機構が機能してると思われる。
で、たった2プロセス同時起動で10000件持たないファイルシステムを
持つ環境がどんな環境なのかとても気になるので早く教えてください>>398
あなたの言う条件↓は満たしましたよ。
> 文句言う前に試せやハゲ。
> 試して、壊れなかったら文句言いにこいや。
# mkdir lockdir/lockfile
で、20プロセス同時起動で、30000件やってみたけど、全く問題なし。
さすがに30000回連続で20プロセスが同時に1つのファイルにアクセス
する状況はありえないだろうから、少なくともウチの環境上では
きちんとロック機構が機能してると思われる。
で、たった2プロセス同時起動で10000件持たないファイルシステムを
持つ環境がどんな環境なのかとても気になるので早く教えてください>>398
あなたの言う条件↓は満たしましたよ。
> 文句言う前に試せやハゲ。
> 試して、壊れなかったら文句言いにこいや。
403nobodyさん
03/06/25 01:30ID:??? おっと、ご苦労さん。
マジで?
ファイル壊れない?
こっちの環境は、Win2kだけど。
> 単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ
んな訳ない。
2kで、そんなバグ聞いた事ない。
ずっとテスト環境は2kだったからなぁ〜。
とりあえず、こっちもVineの環境があるから、そっちでも試す。
>で、たった2プロセス同時起動で10000件持たないファイルシステムを
>持つ環境がどんな環境なのかとても気になるので早く教えてください>>398
煽りですか。
あんた、一言多いね。
マジで?
ファイル壊れない?
こっちの環境は、Win2kだけど。
> 単にrenameシステムコールが衝突するようなファイルシステムを持つOSを使ってるだけ
んな訳ない。
2kで、そんなバグ聞いた事ない。
ずっとテスト環境は2kだったからなぁ〜。
とりあえず、こっちもVineの環境があるから、そっちでも試す。
>で、たった2プロセス同時起動で10000件持たないファイルシステムを
>持つ環境がどんな環境なのかとても気になるので早く教えてください>>398
煽りですか。
あんた、一言多いね。
404371
03/06/25 01:49ID:??? > こっちの環境は、Win2kだけど。
多分そのせいじゃないかなぁ。ファイルシステム何になってます?
こっちは今のところ30プロセス同時起動で30万件ノンストップで突破してるので、
スクリプト自体に問題があるとは思えない。
まぁ、このルーチンはrenameの堅牢性に頼ってるので、その点において汎用性は
薄いということを証明する形にはなったかも。
> 2kで、そんなバグ聞いた事ない。
1秒間に同じファイルを数十回renameする必要性ってあまりないからなぁ。
renameのファイルの取り合いって普通の状況だとまず起こりえないし。
ソース読んだら分かると思うけど、renameの空振り以外に原因は考えにくい
ので、再現性あるなら追試してレポート出してみたら?
多分そのせいじゃないかなぁ。ファイルシステム何になってます?
こっちは今のところ30プロセス同時起動で30万件ノンストップで突破してるので、
スクリプト自体に問題があるとは思えない。
まぁ、このルーチンはrenameの堅牢性に頼ってるので、その点において汎用性は
薄いということを証明する形にはなったかも。
> 2kで、そんなバグ聞いた事ない。
1秒間に同じファイルを数十回renameする必要性ってあまりないからなぁ。
renameのファイルの取り合いって普通の状況だとまず起こりえないし。
ソース読んだら分かると思うけど、renameの空振り以外に原因は考えにくい
ので、再現性あるなら追試してレポート出してみたら?
405nobodyさん
03/06/25 02:14ID:??? >>404
ファイルシステムは、もちろんNTFS
Vineで試してみた。
たしかに、2kの時は途中ファイルが壊れてカウントが1に戻ったりしたけど、
Vineはそんな事なかった。
・・・が、おかしい。
3つのプロセスで動かしたが、ログがおかしい。
同じ数字のカウントをする場面がある。
3つのプロセスでカウントしていったら、
同じ数字がカウントのログとして出るのはおかしいでしょ?
そっちでは、ちゃんとカウントしていってる?
ファイルシステムは、もちろんNTFS
Vineで試してみた。
たしかに、2kの時は途中ファイルが壊れてカウントが1に戻ったりしたけど、
Vineはそんな事なかった。
・・・が、おかしい。
3つのプロセスで動かしたが、ログがおかしい。
同じ数字のカウントをする場面がある。
3つのプロセスでカウントしていったら、
同じ数字がカウントのログとして出るのはおかしいでしょ?
そっちでは、ちゃんとカウントしていってる?
406371
03/06/25 02:28ID:???407nobodyさん
03/06/25 02:44ID:??? >>406
あ・・・悪い。
修正してなかった。
ちゃんと動いてる。
もっと沢山のプロセスと、もっと沢山のループで試したかったけど、
Vineが入ってるPCのCPUが弱いんでやめた。
なんだ・・・今回の実験で、2kがいかに糞なのかが証明されたのか・・・?
結果は、壊れないファイルロックが存在したって事か?
・・・俺が、間違ってますた。 スマソ
あ・・・悪い。
修正してなかった。
ちゃんと動いてる。
もっと沢山のプロセスと、もっと沢山のループで試したかったけど、
Vineが入ってるPCのCPUが弱いんでやめた。
なんだ・・・今回の実験で、2kがいかに糞なのかが証明されたのか・・・?
結果は、壊れないファイルロックが存在したって事か?
・・・俺が、間違ってますた。 スマソ
408371
03/06/25 11:01ID:??? >>407
> 結果は、壊れないファイルロックが存在したって事か?
昨日、あのまま30プロセス同時起動のまま寝て、今朝見たら400万件を
突破してました。もちろんノンストップで。
30プロセスが400万回連続で殺到しても平気だということなんで、
少なくともウチの環境では、ほぼ「絶対に壊れないロック機構」と言い切って
差し支えないと思う。
どうでもいいけど、このテストスクリプトだと、count.txtを書き込みオープンした
瞬間にプロセスが落ちるとカウンタリセットされるよね。堅牢なスクリプトを作ろうと
思ったらそこまで気を遣う必要があるかも。
>>377
flockに書き換えて同じ事やってみたけど、20プロセス10万件で壊れずに
行ってます。やっぱりOSの問題か、flock over networkが原因ではないかと。
スレ違いなようなので、この辺で。
> 結果は、壊れないファイルロックが存在したって事か?
昨日、あのまま30プロセス同時起動のまま寝て、今朝見たら400万件を
突破してました。もちろんノンストップで。
30プロセスが400万回連続で殺到しても平気だということなんで、
少なくともウチの環境では、ほぼ「絶対に壊れないロック機構」と言い切って
差し支えないと思う。
どうでもいいけど、このテストスクリプトだと、count.txtを書き込みオープンした
瞬間にプロセスが落ちるとカウンタリセットされるよね。堅牢なスクリプトを作ろうと
思ったらそこまで気を遣う必要があるかも。
>>377
flockに書き換えて同じ事やってみたけど、20プロセス10万件で壊れずに
行ってます。やっぱりOSの問題か、flock over networkが原因ではないかと。
スレ違いなようなので、この辺で。
409nobodyさん
03/06/25 14:12ID:??? 結論的には何が一番?
410368
03/06/25 18:02ID:???413nobodyさん
03/06/26 06:18ID:EBHZ+AEW .
414nobodyさん
03/06/26 09:03ID:??? NFSなんか使うなよ(;´Д`)
416nobodyさん
03/06/26 11:36ID:??? なるほど(;´Д`)
420nobodyさん
03/07/06 16:49ID:orJjX/H+ 別スレでrename失敗どうたらこうたら、言ってるんですが、
そんなにrename失敗することあるんですか?
そんなにrename失敗することあるんですか?
421nobodyさん
03/07/06 16:50ID:??? 権限がなければ
422nobodyさん
03/07/06 17:08ID:GI5yk6yl 権限があれば100%renameできるんですね?
423nobodyさん
03/07/06 17:34ID:??? 誰がそんなことを言った?
425nobodyさん
03/07/06 21:38ID:??? L⇔R
426nobodyさん
03/07/06 21:48ID:??? 横浜⇔東京
428nobodyさん
03/07/06 23:40ID:??? 将軍が彪の追い出しに成功してボリボリ食われちゃう一休さんの>422
429nobodyさん
03/07/07 11:59ID:??? -=⇒
430山崎 渉
03/07/15 11:08ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
431nobodyさん
03/07/25 23:38ID:??? あげ
432_
03/07/25 23:47ID:???433山崎 渉
03/08/02 02:24ID:??? ∧_∧
( ^^ )< ぬるぽ(^^)
( ^^ )< ぬるぽ(^^)
434ぼるじょあ ◆ySd1dMH5Gk
03/08/02 04:52ID:??? ∧_∧ ∧_∧
ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
435nobodyさん
03/08/06 01:58ID:u4hkzo1r まだ評価していただけますか?
436nobodyさん
03/08/06 02:05ID:??? どうぞ
437435
03/08/06 02:10ID:u4hkzo1r それでは。
ttp://www.42ch.net/UploaderSmall/source/1060103401.zip
昔作った掲示板です。今ではもうこんなにかけません。
ttp://www.42ch.net/UploaderSmall/source/1060103401.zip
昔作った掲示板です。今ではもうこんなにかけません。
438nobodyさん
03/08/06 02:44ID:???439nobodyさん
03/08/06 03:48ID:??? ttp://www.42ch.net/UploaderSmall/source/1060108917.zip
良かったらお願いします。
使い方はcgi呼び出して?ってリンク見ると大体書いてあります。
典型的な我流でCGIしか書いたことの無い人のソースだとは思います。
非常識な部分があればご指摘頂きたいです。
#普段タブ使っているのですが、環境に依存しそうなので
#アップの際に、全てスペースに変換しました。
#個人的な情報も消してあります。ご理解ください。
良かったらお願いします。
使い方はcgi呼び出して?ってリンク見ると大体書いてあります。
典型的な我流でCGIしか書いたことの無い人のソースだとは思います。
非常識な部分があればご指摘頂きたいです。
#普段タブ使っているのですが、環境に依存しそうなので
#アップの際に、全てスペースに変換しました。
#個人的な情報も消してあります。ご理解ください。
440向こうの472=475
03/08/06 10:05ID:??? >>439
コーディングスレの469さんか。(w
名前空間の扱いに振り回されてる感じがする。
基本的にパッケージ名や定数のハードコーディングは避けた方がいいし、
依存し合うものを別ファイルに分けると見通しが悪くなるだけだよ。
どうしても分けたいのなら各パーツはもっと役割分担を
はっきりさせて汎用性を上げ、OO なスタイルで組むが吉。
コーディングスレの469さんか。(w
名前空間の扱いに振り回されてる感じがする。
基本的にパッケージ名や定数のハードコーディングは避けた方がいいし、
依存し合うものを別ファイルに分けると見通しが悪くなるだけだよ。
どうしても分けたいのなら各パーツはもっと役割分担を
はっきりさせて汎用性を上げ、OO なスタイルで組むが吉。
441nobodyさん
03/08/06 10:38ID:??? >>440
ここ過疎なので人すくなくてばれるだろうとは思ってました。。。
分けるのは、基本的に改造向けではじめました。
(HTML部分を分ける、とか。)
あと、機能追加のたびに追加したりとかって感じです。
最初はあまり深く考えないで分けていたんですが
最近えらい悩むようになってしまって
つきつめるとOOPにするしかないような気もしてきてしまします。
次になにか0から書くことがあったら、OOで書きたいとは思います。
これは今ある程度完成してしまってますし
身内で使ってくださる方がいるのであまりスタイルを変えるつもりはないです。
総書き直しでOOにしようとか毎晩のように思ったりするのですが
なかなか手出しする気力も時間も・・・
やっぱOOかー
ここ過疎なので人すくなくてばれるだろうとは思ってました。。。
分けるのは、基本的に改造向けではじめました。
(HTML部分を分ける、とか。)
あと、機能追加のたびに追加したりとかって感じです。
最初はあまり深く考えないで分けていたんですが
最近えらい悩むようになってしまって
つきつめるとOOPにするしかないような気もしてきてしまします。
次になにか0から書くことがあったら、OOで書きたいとは思います。
これは今ある程度完成してしまってますし
身内で使ってくださる方がいるのであまりスタイルを変えるつもりはないです。
総書き直しでOOにしようとか毎晩のように思ったりするのですが
なかなか手出しする気力も時間も・・・
やっぱOOかー
442441
03/08/06 10:58ID:??? しかもコーディングスレであとで言われたとこ
直す前のうpしてた ウワーン
直す前のうpしてた ウワーン
443nobodyさん
03/08/12 15:36ID:QPay4kE6 >>442
age
age
444山崎 渉
03/08/15 22:37ID:??? (⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
445nobodyさん
03/08/30 22:39ID:??? 52 名前:nobodyさん :03/08/30 20:46 ID:???
>>50
自作CGIを評価するスレ
http://pc2.2ch.net/test/read.cgi/php/1049514428/
>>50
自作CGIを評価するスレ
http://pc2.2ch.net/test/read.cgi/php/1049514428/
446nobodyさん
03/08/31 01:55ID:6GeG39LL Blogの試作公開
http://ex.1000gex.net/blog.zip
common.phpで初期設定。
排他制御も何も入れてないがとりあえず動いた。
これからトラックバックを盛り込むけど難儀するだろうなぁ
http://ex.1000gex.net/blog.zip
common.phpで初期設定。
排他制御も何も入れてないがとりあえず動いた。
これからトラックバックを盛り込むけど難儀するだろうなぁ
447nobodyさん
03/08/31 02:19ID:??? 何?評価して欲しいの?
ただの宣伝?
ただの宣伝?
448nobodyさん
03/08/31 02:27ID:6GeG39LL ダメ出しきのん。
SAFE_MODEでさっそく引っかかったが
SAFE_MODEでさっそく引っかかったが
449nobodyさん
03/08/31 02:54ID:??? 微妙な物作るな
450ガイキチ厨房
03/08/31 06:44ID:???PHPでカウンタを作ってみたのですが、どなたかご意見下さい。
http://popup3.tok2.com/home/program/cgi-bin/uploader/source/File:0011.txt
451nobodyさん
03/08/31 11:38ID:??? こちら素人だが、ざっと読んで気づいた点を。
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(); を使ってファイルを切り詰める必要あり。
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(); を使ってファイルを切り詰める必要あり。
452nobodyさん
03/08/31 11:40ID:??? ■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(); が力技で
解消しているように見える。
ログファイルが壊れる(例えば 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(); が力技で
解消しているように見える。
453nobodyさん
03/08/31 21:50ID:??? 本7に対してそこまでしなくていいのに
454nobodyさん
03/08/31 21:56ID:6GeG39LL455nobodyさん
03/09/01 00:56ID:??? まずsageろ
話はそれからだ
話はそれからだ
456nobodyさん
03/09/01 01:41ID:??? 相変わらず発言が電波過ぎる…
457ガイキチ厨房
03/09/01 16:10ID:??? >>452
詳しく指摘していただきありがとうございます。
とりあえず''に統一し、関数名とレフトブラケットの間のスペースを
制御構造のみ入れるようにしました。
また、書き込み処理を行った後に、
// ファイルを切り詰める
ftruncate($fp, ftell($fp));
という処理を加えました。
ロックのバグについてなのですが、Googleで調べたところ、
flockはデフォルトでブロックモードになっているらしいのですが、
http://itbtech.itboost.co.jp/perl/perl_06.php
よろしくお願いします。
詳しく指摘していただきありがとうございます。
とりあえず''に統一し、関数名とレフトブラケットの間のスペースを
制御構造のみ入れるようにしました。
また、書き込み処理を行った後に、
// ファイルを切り詰める
ftruncate($fp, ftell($fp));
という処理を加えました。
ロックのバグについてなのですが、Googleで調べたところ、
flockはデフォルトでブロックモードになっているらしいのですが、
http://itbtech.itboost.co.jp/perl/perl_06.php
よろしくお願いします。
458ガイキチ厨房
03/09/01 18:57ID:???459nobodyさん
03/09/01 23:17ID:??? Perlでも評価してもらえます?
461nobodyさん
03/09/02 16:15ID:??? >457
ああごめん。Manualみたらおもっくそそう書いてあった、、。
flockでとまるから一般の環境なら多分大丈夫だね。
こっちの検証スクリプトの間違いなのでflockとrewindの話しはなかったことに。
秒間50リクエストくらいでは問題なかったです(php4.3.0 apache1.3.27 RHLinux)。
ftruncate ( $fp , ftell ( $fp ) ) ; は ( $fp , strlen ( $newdata ) ) ; なんちゅう書き方もある。
ああごめん。Manualみたらおもっくそそう書いてあった、、。
flockでとまるから一般の環境なら多分大丈夫だね。
こっちの検証スクリプトの間違いなのでflockとrewindの話しはなかったことに。
秒間50リクエストくらいでは問題なかったです(php4.3.0 apache1.3.27 RHLinux)。
ftruncate ( $fp , ftell ( $fp ) ) ; は ( $fp , strlen ( $newdata ) ) ; なんちゅう書き方もある。
462ガイキチ厨房
03/09/02 19:51ID:???なるほど、参考になりました。ありがとうございます。
463nobodyさん
03/09/03 02:03ID:6rADPhxn とある会社の部活動のHPを管理している者です。
Web上で部の共有資産の貸し出し申し込み等の管理を行えるといいなぁ、と思いいろいろとCGIを探してはいるのですがなかなか見つかりません。
探しているのは、次のようなCGIです。
1.画面で借りたい物を選択・自分の名前・貸出期間等の入力、申し込み
2.画面上では「貸し出し中」等に表記が変化(それか削除されるなど、申し込みが行えない状態に変化)
3.sendmailが使えないサーバなので、申し込みがあったことをログに吐き出し、管理人が定期的にそれをチェックし貸し出す
こういうものです。
サーバはinfoseekのiswebでPerl、Python、Ruby、PHPが使えます。
ショッピングカートCGIを活用してもいいなと思ったのですが、sendmailを利用する物がほとんどで、上記のようにログにのみはき出す物はあったことはあったのですがシェアウェア(\15K!)でした。
それほど資産の数が多いわけでもなく、貸し出し回数もそんなに多くないので、15000円もかけるわけにはいきません。
出来れば無料、もしくは1〜2千円程度で利用できるCGIがありましたら、教えてください。
よろしくおねがいします。
Web上で部の共有資産の貸し出し申し込み等の管理を行えるといいなぁ、と思いいろいろとCGIを探してはいるのですがなかなか見つかりません。
探しているのは、次のようなCGIです。
1.画面で借りたい物を選択・自分の名前・貸出期間等の入力、申し込み
2.画面上では「貸し出し中」等に表記が変化(それか削除されるなど、申し込みが行えない状態に変化)
3.sendmailが使えないサーバなので、申し込みがあったことをログに吐き出し、管理人が定期的にそれをチェックし貸し出す
こういうものです。
サーバはinfoseekのiswebでPerl、Python、Ruby、PHPが使えます。
ショッピングカートCGIを活用してもいいなと思ったのですが、sendmailを利用する物がほとんどで、上記のようにログにのみはき出す物はあったことはあったのですがシェアウェア(\15K!)でした。
それほど資産の数が多いわけでもなく、貸し出し回数もそんなに多くないので、15000円もかけるわけにはいきません。
出来れば無料、もしくは1〜2千円程度で利用できるCGIがありましたら、教えてください。
よろしくおねがいします。
465sage
03/09/03 12:28ID:Udj8Y4pI >464
463です
え〜と。
スレ違いだ、ということですか…?
…すいませんでした。
463です
え〜と。
スレ違いだ、ということですか…?
…すいませんでした。
466nobodyさん
03/09/03 13:26ID:??? sageはmail欄でw。
どっかに「こんなCGI探してます」的なスレあったハズだよ。
どっかに「こんなCGI探してます」的なスレあったハズだよ。
467nobodyさん
03/09/03 13:44ID:???468nobodyさん
03/09/03 18:02ID:???470nobodyさん
03/10/02 12:00ID:??? y
471nobodyさん
03/10/02 22:11ID:??? perlでRead-Write Lockを実装してみますた。
複数プロセスでの10,000件書き込み耐久試験もクリアしたっぽいです。
ただ、ちょっと遅いように感じるのですがどでしょ?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
複数プロセスでの10,000件書き込み耐久試験もクリアしたっぽいです。
ただ、ちょっと遅いように感じるのですがどでしょ?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
472nobodyさん
03/10/02 22:50ID:??? flockがあるし。
473nobodyさん
03/10/07 02:23ID:86/MwT3y475nobodyさん
03/10/07 04:42ID:???477手裏剣
03/10/07 06:29ID:???478nobodyさん
03/10/07 09:34ID:86/MwT3y >>476=印刷屋をクビになったオヤジ
479nobodyさん
03/10/07 09:34ID:86/MwT3y >>474
片手間で1週間ぐらい
片手間で1週間ぐらい
480nobodyさん
03/10/07 18:52ID:??? > 知識ゼロからがんばって XML化にこぎつけました。
___Λ____
|知識ゼロのまま|
___Λ____
|知識ゼロのまま|
481nobodyさん
03/10/07 21:30ID:??? 常識や社会性は?
482nobodyさん
03/10/08 10:35ID:??? よいXMLの見本が見たい。
483nobodyさん
03/10/19 04:34ID:faEGA12Q ●●●マスコミの 「盗聴/盗撮」 は許されるの?その4●●● http://natto.2ch.net/mass/kako/994/994602694.html
62 名前: 文責:名無しさん 投稿日: 2001/07/10(火) 12:21
小型盗聴器、電話盗聴、web(電子メール)盗聴、郵便物の開封、
集合住宅の隣に引っ越してきて壁に聴診器、または集音マイクを向ける。
関係者からの聞き込み、ごみあさり、ストーキングにより行動パーターンの把握、
行動パターンを調べた上での待ち伏せ。全部、人海戦術を使えば十分可能です。
323 名前: 文責:名無しさん 投稿日: 2001/07/30(月) 20:48
集団で盗聴なり、付きまといなり、身辺調査なりした後で、集めた個人情報を利用して、
メディアを通じて本人にしかわからないように「監視してる」とほのめかしたり。
待ち伏せや尾行などしておいて、本人の前で「監視してるぞお〜」と、嫌がらせをしてみたりする。
これを一定期間継続して繰り返す。
一定期間、上記の嫌がらせを繰り返すと、加害者がすでに嫌がらせをしていなくても、
被害者は、ずう〜っと嫌がらせが続けられてると思い込んでしまう。
(痴漢の被害者が、外であった人が全員痴漢だと思い込むのと同じ)
それと同じように、ここのスレッドに書かれている、盗聴した情報を二次利用する嫌がらせを
やっていないときでも、被害者は自分から自分と関わりがある
情報をメディアから探し出して自分に関係があるのではないかとこじつけてしまう(関係妄想)。
関係妄想を引き起こすように嫌がらせを行うそれ自体がマインドコントロールの一過程である。
被害者が関係妄想を引き起こした時点で今度は精神病にかかったと噂を流して、さらにからかう真似をする。
ノイローゼになるように追い込んで、更に自殺するように持っていこうとする。
被害者がこういった心理状態になるのを嫌がらせの関係者は経験的に知っているのだろう。
62 名前: 文責:名無しさん 投稿日: 2001/07/10(火) 12:21
小型盗聴器、電話盗聴、web(電子メール)盗聴、郵便物の開封、
集合住宅の隣に引っ越してきて壁に聴診器、または集音マイクを向ける。
関係者からの聞き込み、ごみあさり、ストーキングにより行動パーターンの把握、
行動パターンを調べた上での待ち伏せ。全部、人海戦術を使えば十分可能です。
323 名前: 文責:名無しさん 投稿日: 2001/07/30(月) 20:48
集団で盗聴なり、付きまといなり、身辺調査なりした後で、集めた個人情報を利用して、
メディアを通じて本人にしかわからないように「監視してる」とほのめかしたり。
待ち伏せや尾行などしておいて、本人の前で「監視してるぞお〜」と、嫌がらせをしてみたりする。
これを一定期間継続して繰り返す。
一定期間、上記の嫌がらせを繰り返すと、加害者がすでに嫌がらせをしていなくても、
被害者は、ずう〜っと嫌がらせが続けられてると思い込んでしまう。
(痴漢の被害者が、外であった人が全員痴漢だと思い込むのと同じ)
それと同じように、ここのスレッドに書かれている、盗聴した情報を二次利用する嫌がらせを
やっていないときでも、被害者は自分から自分と関わりがある
情報をメディアから探し出して自分に関係があるのではないかとこじつけてしまう(関係妄想)。
関係妄想を引き起こすように嫌がらせを行うそれ自体がマインドコントロールの一過程である。
被害者が関係妄想を引き起こした時点で今度は精神病にかかったと噂を流して、さらにからかう真似をする。
ノイローゼになるように追い込んで、更に自殺するように持っていこうとする。
被害者がこういった心理状態になるのを嫌がらせの関係者は経験的に知っているのだろう。
484nobodyさん
03/12/07 15:31ID:ohQC6Gec485nobodyさん
03/12/09 13:27ID:Dust1o+d すいません、午前中探したんですけど、見つかりませんでした。
パソコンと携帯3社兼用の掲示板で、スレッドまたはツリー表示でかつ
パスワードで入る人の管理が出来るCGIご存じありませんか?
スレッド、パスワードどちらかだけだとあったんですが・・・。
パソコンと携帯3社兼用の掲示板で、スレッドまたはツリー表示でかつ
パスワードで入る人の管理が出来るCGIご存じありませんか?
スレッド、パスワードどちらかだけだとあったんですが・・・。
486nobodyさん
03/12/10 13:25ID:/scbZ0TM 誤爆でしたとさ
487SERA
03/12/10 21:19ID:cJpFW25/ 箱庭諸島PHP版の改造版、箱庭諸島S.Eを今日公開配布開始しました。
488nobodyさん
03/12/12 00:32ID:??? で、評価しろと?
489nobodyさん
03/12/19 17:18ID:s0hPhfIy491nobodyさん
03/12/20 01:11ID:A80S/toC493nobodyさん
03/12/20 01:26ID:m9BC3a2H >491-492 ネタは他所でやれよ馬鹿
494nobodyさん
03/12/20 01:27ID:A80S/toC496nobodyさん
03/12/20 02:58ID:??? > サーバーサイドで動いているのでCGIです。
CGIは動いたりしない。
CGIは動いたりしない。
497nobodyさん
03/12/20 03:19ID:??? >もっと勉強してください。
悪代官が黄門様に無礼者と言ってるのを思い出しちゃったw
悪代官が黄門様に無礼者と言ってるのを思い出しちゃったw
498nobodyさん
03/12/20 10:48ID:rKU28so3499nobodyさん
03/12/20 10:49ID:rKU28so3500nobodyさん
03/12/20 13:51ID:??? >498-499
501nobodyさん
03/12/20 13:55ID:??? ヘタレが。
502nobodyさん
03/12/20 14:07ID:??? CGIはシステムでも仕掛けでもない。
インターフィエスの一仕様。
モジュールからプロセス作ることもできるが、
あれもCGI?
インターフィエスの一仕様。
モジュールからプロセス作ることもできるが、
あれもCGI?
503nobodyさん
03/12/20 18:53ID:FBPjlTLi03/12/20 21:23ID:???
unlessはほかの言語と混同するからやめれ
とか書いてある本があった気がする
ほかの言語を使わなければいいだけの話なのに・・・
とか書いてある本があった気がする
ほかの言語を使わなければいいだけの話なのに・・・
505nobodyさん
03/12/21 00:57ID:??? >>504
マジ?
それって、if ははほかの言語と混同するからやめれというのと同じことだよね
マジ?
それって、if ははほかの言語と混同するからやめれというのと同じことだよね
506nobodyさん
03/12/21 15:53ID:??? 汎用的なプログラミングの作法を身につける為なんじゃないかな?if だと他の言語でも大抵応用が効く。
同じような理由でperlの$_(暗黙の代入)はなるべく使うなとか書いてる本もあったよ。
同じような理由でperlの$_(暗黙の代入)はなるべく使うなとか書いてる本もあったよ。
508nobodyさん
03/12/22 15:58ID:??? 頭の弱いのが何人か・・
510nobodyさん
03/12/26 20:54ID:???511nobodyさん
03/12/26 21:46ID:??? 洒落だろ
513nobodyさん
03/12/31 15:09ID:OIDb7RDT514nobodyさん
04/01/05 13:20ID:8h9t8BrG515nobodyさん
04/01/12 07:57ID:fR13iSUk age
516nobodyさん
04/01/17 13:56ID:kOvCn6Ho518nobodyさん
04/01/17 18:12ID:??? 上と下に出てる「1」って何だ?
519nobodyさん
04/01/17 19:01ID:??? >>516
http://fine.tok2.com/home/moritomo/cgi/accesstakelog.txt
http://fine.tok2.com/home/moritomo/cgi/admin_remote_log.txt
http://fine.tok2.com/home/moritomo/cgi/akusesu.txt
http://fine.tok2.com/home/moritomo/cgi/countlog.txt
http://fine.tok2.com/home/moritomo/cgi/hatugen.txt
http://fine.tok2.com/home/moritomo/cgi/newaccesslog.txt
http://fine.tok2.com/home/moritomo/cgi/newcount.txt
http://fine.tok2.com/home/moritomo/cgi/newdomain.txt
以下略
ヴァカですか?
http://fine.tok2.com/home/moritomo/cgi/accesstakelog.txt
http://fine.tok2.com/home/moritomo/cgi/admin_remote_log.txt
http://fine.tok2.com/home/moritomo/cgi/akusesu.txt
http://fine.tok2.com/home/moritomo/cgi/countlog.txt
http://fine.tok2.com/home/moritomo/cgi/hatugen.txt
http://fine.tok2.com/home/moritomo/cgi/newaccesslog.txt
http://fine.tok2.com/home/moritomo/cgi/newcount.txt
http://fine.tok2.com/home/moritomo/cgi/newdomain.txt
以下略
ヴァカですか?
521nobodyさん
04/01/18 02:22ID:??? ところで、ちゃんと評価してるのって最初のほうだけだね。
522nobodyさん
04/01/18 03:41ID:??? >>521
・ここは見た目じゃなくコードを評価するスレだ。
・use strict; しろ。
・perlstyle 読め。
・デカいの持ってきても面倒だから読まんぞ。
…のどれかに該当していたら、まともなレスは返ってこない。
・ここは見た目じゃなくコードを評価するスレだ。
・use strict; しろ。
・perlstyle 読め。
・デカいの持ってきても面倒だから読まんぞ。
…のどれかに該当していたら、まともなレスは返ってこない。
523nobodyさん
04/01/18 21:22ID:??? コードの見た目を評価するスレの間違い。
524>>516
04/01/25 15:17ID:yPaa9elS DirectoryIndexの設定をしているtoktokも問題かと思うが。
Forbiddenにしたみたいだけど、
せめてファイル名変えなよ。
Forbiddenにしたみたいだけど、
せめてファイル名変えなよ。
525nobodyさん
04/03/06 14:54ID:??? 誰も居ない……ケチつけるなら今のうち。
if-elsifの書き方、
if{
..
}elsif{
..
}
より
if{
..
}
elsif{
..
}
の方が俺にとっては読み易いんだコンチクショー。
if-elsifの書き方、
if{
..
}elsif{
..
}
より
if{
..
}
elsif{
..
}
の方が俺にとっては読み易いんだコンチクショー。
528nobodyさん
04/05/09 20:52ID:??? 例えば既成の掲示板の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
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
529528
04/05/09 21:13ID:??? すいません、上の奴.txtで終わってるのに何故か実行しようとしてエラーになるので
ファイル名変更しました。
アクセス解析 http://torihamlog.s55.xrea.com/search/axlog_pl.txt
ログビューワー http://torihamlog.s55.xrea.com/search/axlogv_cgi.txt
ファイル名変更しました。
アクセス解析 http://torihamlog.s55.xrea.com/search/axlog_pl.txt
ログビューワー http://torihamlog.s55.xrea.com/search/axlogv_cgi.txt
530nobodyさん
04/05/09 21:49ID:??? >>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 のマニュアル参照。
とりあえず 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 のマニュアル参照。
531nobodyさん
04/05/09 22:26ID:??? >>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
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
532528
04/05/10 19:23ID:??? >>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(); }
こうゆう風にしようと思っています。
評価ありがとうございます。
色々参考になります。
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(); }
こうゆう風にしようと思っています。
533nobodyさん
04/05/11 00:31ID:??? >>532
・CSS を変更する為にスクリプトを編集する危険を冒す必要がある。
・外部に CSS を持つのに対し、常に二倍の回数実行される。
・CSS を使い回す時に悩む事になる。
これらのデメリットを考慮の上で、なお一つにまとめるメリットの方が
勝ると判断したならいいんじゃないか?
・CSS を変更する為にスクリプトを編集する危険を冒す必要がある。
・外部に CSS を持つのに対し、常に二倍の回数実行される。
・CSS を使い回す時に悩む事になる。
これらのデメリットを考慮の上で、なお一つにまとめるメリットの方が
勝ると判断したならいいんじゃないか?
534528
04/05/14 20:45ID: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の設置とかできて、ほんのちょっとだけいじれる程度人向けのつもりです。
自己レス
すげー馬鹿なこと書いていた
if ($mode eq "css") { Style_Sheets(); }
elsif (($pass) && ($pass ne $pw)) { Error('パスワードが違います。') }
elsif (($pass eq $pw) && ($mode eq "view") && ($ENV{'REQUEST_METHOD'} eq "POST")) { View(); }
else { Pass_form(); }
たぶんコレでいいかな…
作った動機はなんとなくなんだけど、実用性とかどうでせう?
一応CGIの設置とかできて、ほんのちょっとだけいじれる程度人向けのつもりです。
いろいろわからんことだらけで作りましたが
添削して下しさい。
【スクリプト】http://www.tcn.ne.jp/~majima/dog/quiz.txt
【動作例】http://www.tcn.ne.jp/~majima/dog/quiz/quiz.cgi
添削して下しさい。
【スクリプト】http://www.tcn.ne.jp/~majima/dog/quiz.txt
【動作例】http://www.tcn.ne.jp/~majima/dog/quiz/quiz.cgi
538nobodyさん
04/07/04 05:12ID:??? >>535
もじゅーるは使えない鯖なんでつか?
使えるんなら使ったほうがいいでつよ。
Image::Magick、CGI、Jcode等々
何に使うのかは自分で調べてね。
EUCで書いたり表示したりしたほうがいいと思うけど、Shift_JISでやりたいのなら反対しないさ。
所々myを付けているが、どうせなら全部に付けちゃいな。
strictしろってこった。
ついでにHTML的にも4.01strict すれば?
もじゅーるは使えない鯖なんでつか?
使えるんなら使ったほうがいいでつよ。
Image::Magick、CGI、Jcode等々
何に使うのかは自分で調べてね。
EUCで書いたり表示したりしたほうがいいと思うけど、Shift_JISでやりたいのなら反対しないさ。
所々myを付けているが、どうせなら全部に付けちゃいな。
strictしろってこった。
ついでにHTML的にも4.01strict すれば?
539ager
04/07/09 18:40ID:??? age
540nobodyさん
04/10/08 20:39:40ID: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";
}
というようなデータが数行あるような場合
それらを読んできて切り分けるって処理を
してます。
これの評価お願いします。
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";
}
541nobodyさん
04/10/09 00:21:55ID:??? >>540
myで複数宣言するときは()がいる
hushじゃなくてたぶんhashね. 連想配列っていみなら
ハッシュのスライスを使うとエレガントかも
@hash{qw/title time contents/} = split /::/;
foreachつかえよ
for(...$#ref)
myで複数宣言するときは()がいる
hushじゃなくてたぶんhashね. 連想配列っていみなら
ハッシュのスライスを使うとエレガントかも
@hash{qw/title time contents/} = split /::/;
foreachつかえよ
for(...$#ref)
542540
04/10/09 02:08:52ID:??? 541>
>ハッシュのスライスを使うとエレガントかも
>@hash{qw/title time contents/} = split /::/;
ありがと、参考になりました。
my は複数でも()いりませんよ。バージョンによるだろうけど
最後に、今更foreach使ってる人いるんですか?w
>ハッシュのスライスを使うとエレガントかも
>@hash{qw/title time contents/} = split /::/;
ありがと、参考になりました。
my は複数でも()いりませんよ。バージョンによるだろうけど
最後に、今更foreach使ってる人いるんですか?w
543nobodyさん
04/10/09 02:43:14ID:??? >>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.
#--- 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.
544nobodyさん
04/10/09 03:20:52ID:??? >>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 を目指すならこだわる必要のない部分だと思うな。
>>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 を目指すならこだわる必要のない部分だと思うな。
545nobodyさん
04/10/09 05:06:54ID:??? >>540
%hush(多分hash?)の宣言の位置。
GCのコストを考慮した場合に、変数の再利用をするはあるけど...、
ループないで初期化してないとフィールドの数が少ない時に困るよ。
split/::/の代わりに正規表現を使ってデータを切り出すと、
データのチェックとsplitを同時にできて便利。
chompはデータ格納前に済ませておいた方が良いんじゃないかな。chomp(@tmp)
もしくは、大抵はファイルから読み込むだろうからその時に。
%hush(多分hash?)の宣言の位置。
GCのコストを考慮した場合に、変数の再利用をするはあるけど...、
ループないで初期化してないとフィールドの数が少ない時に困るよ。
split/::/の代わりに正規表現を使ってデータを切り出すと、
データのチェックとsplitを同時にできて便利。
chompはデータ格納前に済ませておいた方が良いんじゃないかな。chomp(@tmp)
もしくは、大抵はファイルから読み込むだろうからその時に。
546540
04/10/09 05:35:12ID:??? >>544
どうもありがとう。foreachは普通に使えるんだろうけど、
大抵forで済ませてしまうのです。言い方悪かったです、スイマセン。
>>545
ありがとうございます。
>ループないで初期化してないとフィールドの数が少ない時に困るよ。
というのは、forのループ内で undef(%hush); (ほんとはhashでしたw)
でいいですか?
あと、フィールドの数が少ない時というのはどういうことでしょうか?
>split/::/の代わりに正規表現を使ってデータを切り出すと
どう書いたらいいのか思いつきません。宜しかったらご教授下さい。
>chompはデータ格納前に済ませておいた方が良いんじゃないかな。
そうですね。
open(FH,"file_name");
@tmp = <FH>;
chomp(@tmp);
close(FH);
どうもありがとう。foreachは普通に使えるんだろうけど、
大抵forで済ませてしまうのです。言い方悪かったです、スイマセン。
>>545
ありがとうございます。
>ループないで初期化してないとフィールドの数が少ない時に困るよ。
というのは、forのループ内で undef(%hush); (ほんとはhashでしたw)
でいいですか?
あと、フィールドの数が少ない時というのはどういうことでしょうか?
>split/::/の代わりに正規表現を使ってデータを切り出すと
どう書いたらいいのか思いつきません。宜しかったらご教授下さい。
>chompはデータ格納前に済ませておいた方が良いんじゃないかな。
そうですね。
open(FH,"file_name");
@tmp = <FH>;
chomp(@tmp);
close(FH);
547541
04/10/09 11:14:32ID:???548540
04/10/09 12:28:12ID:??? my () つけなくてもエラー出てないです。 という事は
省略も可って事ではないでしょうか?
省略も可って事ではないでしょうか?
549nobodyさん
04/10/09 14:26:51ID:??? >>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.
エラーにならないのは 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.
550nobodyさん
04/10/09 17:41:00ID:??? >>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は教えてくれない。
> あと、フィールドの数が少ない時というのはどういうことでしょうか?
これは、今回のケースでは問題なかったです。
でも、変数を再利用する時は気を付けないと、前の値が残っていたり、
意図しない場所の値を書き換えてしまったりするので注意。
例えば、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は教えてくれない。
551nobodyさん
04/10/09 18:04:19ID:??? ここってものすごいでかいスクリプトでも細かい所まで見てくれるの?
552nobodyさん
04/10/09 18:09:49ID:??? >>550 何かおかしな日本語だった。訂正
s/他の方に/他の方からも/
あと、正規表現を使った方法を書き忘れてたのでついでに、、
例えば time が整数の場合の例
if (/^(.+)::(\d+)::(.+)$/) {
@hash{qw/title time contents/} = ($1, $2, $3)
}
s/他の方に/他の方からも/
あと、正規表現を使った方法を書き忘れてたのでついでに、、
例えば time が整数の場合の例
if (/^(.+)::(\d+)::(.+)$/) {
@hash{qw/title time contents/} = ($1, $2, $3)
}
555nobodyさん
04/10/09 22:37:35ID:??? 何書いたって叩かれるんだから、結城出していいと思う
556540
04/10/09 23:53:30ID:??? ほんとにこんなに色々な方が、教えてくださるとは思ってませんでした。
どうもありがとうございます。
特にエレガントな方法を教えてくださった542氏
ハイレベルな(少なくとも今の私には)指摘をしてくれた
545=550=552氏には感謝します。
その他あのようなケチなコードに意見を下さった方々ありがとう。
またお世話になるかもしれません。m(_ _)m
どうもありがとうございます。
特にエレガントな方法を教えてくださった542氏
ハイレベルな(少なくとも今の私には)指摘をしてくれた
545=550=552氏には感謝します。
その他あのようなケチなコードに意見を下さった方々ありがとう。
またお世話になるかもしれません。m(_ _)m
557nobodyさん
04/10/10 20:44:07ID:??? > my は複数でも()いりませんよ。バージョンによるだろうけど
> 最後に、今更foreach使ってる人いるんですか?w
こんなこと言うやつはもう来なくていい
> 最後に、今更foreach使ってる人いるんですか?w
こんなこと言うやつはもう来なくていい
558540
04/10/11 01:40:27ID:21NinhME ごめんね
561かぼ
04/10/22 19:30:44ID:EM8OHCfb563nobodyさん
05/01/23 00:46:42ID: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
評価というか不具合の問題です
初めてperl書いてみました。
簡易的な計算のプログラムを作ってみたんですがうまく動作しません。
ちょっと見て頂き、不具合等御指摘下さい
特定の計算式で、入力(1項目だけセレクトボックスにより選択)した数値を計算するものです。
ソース
http://tool-ya.ddo.jp/2ch/trash-box/contents.jsp?file=20050123003423509.txt
URL
http://sr-cafe.chu.jp/kok/calc.html
564nobodyさん
05/01/23 03:00:10ID:3FhDUp9J565nobodyさん
05/01/23 13:10:26ID:???566nobodyさん
05/01/23 20:04:18ID:??? >>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; ← 最後に追加
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; ← 最後に追加
567nobodyさん
05/01/24 11:42:30ID:YsLCruPH >>566
改行コード2つとダブルクォーテーション必要無くね?
改行コード2つとダブルクォーテーション必要無くね?
568nobodyさん
05/01/24 12:10:13ID:??? \n\nはいらんね。
ヒアドキュメントのダブルクォートはどちらかというとあったほうが・・・
ヒアドキュメントのダブルクォートはどちらかというとあったほうが・・・
569563
05/01/25 02:27:15ID:???570nobodyさん
05/01/25 04:00:44ID:??? >>569
うちのサーバでスクリプト試したんだけどちゃんと動くぜ。
おまい、サーバに嫌われてるんだ。きっと。
問題は print <<END_OF_DATA 〜 END_OF_DATA までか、
まさかと思うがパーミッションか、perlの指定。
一度 print <<END_OF_DATA 〜 END_OF_DATA を
たいした行数じゃないんだし、print "〜\n"; に置き換えてみ。
それからコメント行やめろ。余計見づらくなる。
うちのサーバでスクリプト試したんだけどちゃんと動くぜ。
おまい、サーバに嫌われてるんだ。きっと。
問題は print <<END_OF_DATA 〜 END_OF_DATA までか、
まさかと思うがパーミッションか、perlの指定。
一度 print <<END_OF_DATA 〜 END_OF_DATA を
たいした行数じゃないんだし、print "〜\n"; に置き換えてみ。
それからコメント行やめろ。余計見づらくなる。
571566
05/01/25 04:01:58ID:??? >>569
今試したら566の変更だけで動いたわけだが。
Content-typeの行はそのままでも良いみたい。
動かないとしたらCGIの設置方法の問題。
まさかとは思うがローカルでテストしてるよね?
今試したら566の変更だけで動いたわけだが。
Content-typeの行はそのままでも良いみたい。
動かないとしたらCGIの設置方法の問題。
まさかとは思うがローカルでテストしてるよね?
572nobodyさん
05/01/25 04:03:19ID:??? →まさかとは思ってない法則
573566
05/01/25 04:07:06ID:??? つーか563のソースのままでも、ちゃんと結果出るじゃん。
問題はコードではない予感。
問題はコードではない予感。
574nobodyさん
05/01/25 04:14:49ID:??? >>573
経験で言うとさ、ヒアドキュメントはサーバの機嫌で、最初はうまく動作して
くれないことがある。Cookieなんか入れるとどうも変なんだよな。
そういうとき俺はメンドーでも print "〜\n" に置換えてやる。すると、あとは
「ヒアドキュメントでも読込んでやるかぁ」ってことでサーバは折り合ってくれる。
経験で言うとさ、ヒアドキュメントはサーバの機嫌で、最初はうまく動作して
くれないことがある。Cookieなんか入れるとどうも変なんだよな。
そういうとき俺はメンドーでも print "〜\n" に置換えてやる。すると、あとは
「ヒアドキュメントでも読込んでやるかぁ」ってことでサーバは折り合ってくれる。
576nobodyさん
05/01/25 04:34:21ID:??? いや、あるんだって。コード書く時も、こうした方が処理が楽だろ、とか
ムリしなくっていいから、とか気を使ってやると機嫌よくなる。ほんとだぜ。
ムリしなくっていいから、とか気を使ってやると機嫌よくなる。ほんとだぜ。
578nobodyさん
05/01/25 06:47:43ID:??? 577はコード丸写しで自作CGIと称してるだろw。
多かれ少なかれ576のような感じはあるな。
多かれ少なかれ576のような感じはあるな。
580nobodyさん
05/01/27 18:28:04ID:??? 皆さん本当スイマセンでした!
パーミッションの所為だった…
元のままでも566のコードでもどちらでも動きました。
>>571-572
そのとおりです。
ローカルでテスト出来るという事すら知りませんでした。
勉強します。
パーミッションの所為だった…
元のままでも566のコードでもどちらでも動きました。
>>571-572
そのとおりです。
ローカルでテスト出来るという事すら知りませんでした。
勉強します。
581nobodyさん
2005/06/06(月) 19:56:57ID:??? ねるねるねるねは Ψ(`∀´)Ψイッヒッヒッヒッヒ
_▲_
ねればねるほど ((φ(..。) 色が変わって
_▲_
こうやってつけて р(゚Д゚ )
*_▲_*
ウマイ━━━*━ヘ(゚∀゚)ヘ━*━━━━!!!! テ-レッテレ-♪
_▲_
ねればねるほど ((φ(..。) 色が変わって
_▲_
こうやってつけて р(゚Д゚ )
*_▲_*
ウマイ━━━*━ヘ(゚∀゚)ヘ━*━━━━!!!! テ-レッテレ-♪
583nobodyさん
2005/09/21(水) 17:05:52ID:54UaWl8q age
584nobodyさん
2006/05/18(木) 17:31:45ID:Ip4qBE+B ttp://c.hibi.info/Apple-1.zip
どなたか評価(清書?)お願いします_ _
指定されたスレの中から前日から当日までの既定の時間にあるレスを抽出して、
そのレスから株価コードを抜き出し株価の前日比、前日比率でソートしランキングを作成した後スレに書き込むツールです。
2chへの書き込み時のCookiee処理に曖昧な点があるのと、処理の最適化をして貰えると嬉しいです。
宜しくお願いします_ _
どなたか評価(清書?)お願いします_ _
指定されたスレの中から前日から当日までの既定の時間にあるレスを抽出して、
そのレスから株価コードを抜き出し株価の前日比、前日比率でソートしランキングを作成した後スレに書き込むツールです。
2chへの書き込み時のCookiee処理に曖昧な点があるのと、処理の最適化をして貰えると嬉しいです。
宜しくお願いします_ _
585nobodyさん
2006/05/18(木) 22:33:53ID:??? 他のスレから来ました。
Perlで他のサイトを取得して表示したいと思っています。
(著作権侵害とかそういうことをしたいのではないです)
お時間のある方にお願いしますが、次のコードで@niftyのトップページを取得してみたら
どうなるか教えていただけませんでしょうか?
print "Content-Type: text/html\n";
print "\n";
use LWP::Simple;
print get( 'http://www.nifty.com/' );
私のところだと、ブラウザ上での表示がぐちゃぐちゃになるんですが…。
Perlで他のサイトを取得して表示したいと思っています。
(著作権侵害とかそういうことをしたいのではないです)
お時間のある方にお願いしますが、次のコードで@niftyのトップページを取得してみたら
どうなるか教えていただけませんでしょうか?
print "Content-Type: text/html\n";
print "\n";
use LWP::Simple;
print get( 'http://www.nifty.com/' );
私のところだと、ブラウザ上での表示がぐちゃぐちゃになるんですが…。
586nobodyさん
2006/05/18(木) 22:56:52ID:??? >585
マルチポストすんな
マルチポストすんな
>>585は私じゃないです。スルーしてください。
588nobodyさん
2006/06/06(火) 15:21:29ID:Re1RmuFG 簡易予定表のようなものを組んでみたんですが、なんだかモッサリしてる気がします。
もっと簡潔に書けるような気がするんですが自分ではこれが限界でした。
あと、ファイルロックのやり方が合っているのか自信がありません。
一応動いていることは動いているんですが、問題はないでしょうか。
改良すべき点、根本的にこういう書き方に直した方が良い、とかあればアドバイスお願いします。
大まかな内容は以下のようなものです。
予定として保存する内容は「予定日(月と日)」と
「予定内容(長くても200バイト程度)」の2つでフォームから渡します。
予定を保存するファイルは月単位で作成します。
例えば2006年6月の予定の場合なら「200606.txt」というファイル名です。
保存するファイルがないときはその都度作成し、
6月1日
6月2日
6月3日
.
.
.
という風に日付だけを先に入れておきます。
保存するファイルがあるときは、
フォームから渡された「予定日」とマッチした日付の次の行に「予定内容」を書き込みます。
内容は以上です。次レスにコードを晒します。
もっと簡潔に書けるような気がするんですが自分ではこれが限界でした。
あと、ファイルロックのやり方が合っているのか自信がありません。
一応動いていることは動いているんですが、問題はないでしょうか。
改良すべき点、根本的にこういう書き方に直した方が良い、とかあればアドバイスお願いします。
大まかな内容は以下のようなものです。
予定として保存する内容は「予定日(月と日)」と
「予定内容(長くても200バイト程度)」の2つでフォームから渡します。
予定を保存するファイルは月単位で作成します。
例えば2006年6月の予定の場合なら「200606.txt」というファイル名です。
保存するファイルがないときはその都度作成し、
6月1日
6月2日
6月3日
.
.
.
という風に日付だけを先に入れておきます。
保存するファイルがあるときは、
フォームから渡された「予定日」とマッチした日付の次の行に「予定内容」を書き込みます。
内容は以上です。次レスにコードを晒します。
589nobodyさん
2006/06/06(火) 15:22:42ID:??? # 保存するファイル名
$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";
}
$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:17ID:??? # 該当する月のファイルがなければ作成
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);
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);
591nobodyさん
2006/06/06(火) 15:45:22ID:??? >>589
まだちゃんと読んでないが…。
>if($MON == 1|3|5|7|8|10|12){
>}elsif($MON == 4|6|9|11){
これって比べてるのは、両方とも $MON == 15 だよね。
どっちの条件にも入らないと思うけど…正しく動作してるの?
まだちゃんと読んでないが…。
>if($MON == 1|3|5|7|8|10|12){
>}elsif($MON == 4|6|9|11){
これって比べてるのは、両方とも $MON == 15 だよね。
どっちの条件にも入らないと思うけど…正しく動作してるの?
592nobodyさん
2006/06/06(火) 15:51:41ID:??? >$a = sprintf("%04d%02d",$YEAR,$MON)
セミコロンは?
動作するヤツうp
セミコロンは?
動作するヤツうp
593nobodyさん
2006/06/06(火) 15:52:34ID:??? ビット演算子を使っているんだ。
高度だな。
高度だな。
594nobodyさん
2006/06/06(火) 16:09:34ID:??? 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 "そんな月知らん" }
}
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 "そんな月知らん" }
}
595589
2006/06/06(火) 16:39:31ID:??? レス遅くなりました。すみません。
該当部分を切り出して動作するコードをUPしてきます。
該当部分を切り出して動作するコードをUPしてきます。
596589
2006/06/06(火) 17:02:59ID:??? ttp://up.isp.2ch.net/up/b2611f9a934e.zip
UPしました。パスは「589」です。
日付のところは594さんのアドバイスにしたがって書き換えました。
アドバイスの方よろしくお願いします。
UPしました。パスは「589」です。
日付のところは594さんのアドバイスにしたがって書き換えました。
アドバイスの方よろしくお願いします。
597589
2006/06/06(火) 17:11:06ID:???598nobodyさん
2006/06/06(火) 17:20:53ID:??? いやperlではswitchは使えない。
599nobodyさん
2006/06/06(火) 17:24:17ID:??? Switch なんてモジュールがあるのか知らんかった。
600nobodyさん
2006/06/06(火) 18:59:27ID:??? cgi-lib.pl ktkr
601nobodyさん
2006/06/07(水) 00:26:35ID:??? PerlはPHPとは違ってCPANを探せば考えられる大体の車輪は既にある。
602nobodyさん
2006/06/20(火) 01:54:40ID:jChy1x4Z >>596
見れない・・
見れない・・
603nobodyさん
2006/07/08(土) 12:44:17ID:hGiPCYN9 switchがあったとは・・・
604nobodyさん
2006/07/21(金) 16:23:10ID:BWWkPiVe605nobodyさん
2006/10/07(土) 10:40:01ID:L17fbc1O @@@
特定の板のスレタイ検索をして、選んだスレから画像とかのサムネイルを表示するスクリプトを書いてみまスた(・ω・`)
恐ろしく見づらいと重いまスが・・
http://vip.ty.land.to/image/
http://pc8.2ch.net/test/read.cgi/php/1160569533/
でボチボチいじくったり、新しいことやったりしていきたいと思ってまスが、評価して欲しいス(・ω・`)
勉強かねてるので、車輪の再開発なのは承知でス
恐ろしく見づらいと重いまスが・・
http://vip.ty.land.to/image/
http://pc8.2ch.net/test/read.cgi/php/1160569533/
でボチボチいじくったり、新しいことやったりしていきたいと思ってまスが、評価して欲しいス(・ω・`)
勉強かねてるので、車輪の再開発なのは承知でス
607nobodyさん
2006/10/11(水) 23:36:54ID:??? >>606
言葉遣い荒いけど、ばーっと書いた弊害なので許して。
取りあえずぱっとみてこんなもん。
・一部のうpろだは、リファラが不味いと弾かれる。
・画像がない場合の画像を一々作るのは無駄。
・CGIモジュール使え。
・グローバル変数も宣言しろ。
・これは好みだけど、設定の変数はハッシュに纏めた方が分かりやすいこともある。
・メインの流れはブロック作ってラベル付けた方が分かりやすいかも。
・正規表現の|は案外コストがかかる。配列にしてマッチング。
・先頭にrequire バージョン名;
・use warningsは〜?
・汚染チェックもきれい好きな方にはオススメ。
・サブルーチンを先頭で宣言して欲しい。
・変数名に日本語はいやん。
・データーベースつかってほすぃ。
言葉遣い荒いけど、ばーっと書いた弊害なので許して。
取りあえずぱっとみてこんなもん。
・一部のうpろだは、リファラが不味いと弾かれる。
・画像がない場合の画像を一々作るのは無駄。
・CGIモジュール使え。
・グローバル変数も宣言しろ。
・これは好みだけど、設定の変数はハッシュに纏めた方が分かりやすいこともある。
・メインの流れはブロック作ってラベル付けた方が分かりやすいかも。
・正規表現の|は案外コストがかかる。配列にしてマッチング。
・先頭にrequire バージョン名;
・use warningsは〜?
・汚染チェックもきれい好きな方にはオススメ。
・サブルーチンを先頭で宣言して欲しい。
・変数名に日本語はいやん。
・データーベースつかってほすぃ。
>>607
おぉぉぉレスもらえたス(;ω;`)アリガタイ
感謝しまス!
>・正規表現の|は案外コストがかかる。配列にしてマッチング。
>・先頭にrequire バージョン名;
>・use warningsは〜?
>・サブルーチンを先頭で宣言して欲しい。
良くわからないス(・ω・`)
>・変数名に日本語はいやん。
英語苦手ス・・・毎度翻訳スかね・・頑張るス
>・データーベースつかってほすぃ。
現在勉強中でス!
生暖かい目で見守ってやってくださいス・・(・ω・`)
やっぱレベル高い人の意見は参考になるス!
文句なし!って言われるようなものをいつか作りたいス(・ω・`)thnkス
おぉぉぉレスもらえたス(;ω;`)アリガタイ
感謝しまス!
>・正規表現の|は案外コストがかかる。配列にしてマッチング。
>・先頭にrequire バージョン名;
>・use warningsは〜?
>・サブルーチンを先頭で宣言して欲しい。
良くわからないス(・ω・`)
>・変数名に日本語はいやん。
英語苦手ス・・・毎度翻訳スかね・・頑張るス
>・データーベースつかってほすぃ。
現在勉強中でス!
生暖かい目で見守ってやってくださいス・・(・ω・`)
やっぱレベル高い人の意見は参考になるス!
文句なし!って言われるようなものをいつか作りたいス(・ω・`)thnkス
609nobodyさん
2006/10/12(木) 04:41:48ID:??? >>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
うる覚えなんだが
if($i_m_f){
use Image::Magick;
}
これって意味ないんじゃなかったっけ?
$i_m_fが真ならImage::Magickを使うって事なんだろうけど、
この書き方だと$i_m_fが偽でもImage::Magick呼ぶんじゃなかったっけ?
識者の方レスよろ
ファイルハンドルは大文字で
最後から10行目くらい@cache[$i]は$cache[$i]じゃないの?
print文中の"をエスケープするんならprint qq|ここに"文章"|;
こーすりゃいちいちエスケープしなくておk
>>609
サンクス
>最後から10行目くらい@cache[$i]は$cache[$i]じゃないの?
どちらも同じ意味だったはず
(若干の差はあるかもだが、使い方に大差なしでは?)
>print文中の"をエスケープするんならprint qq|ここに"文章"|;
>こーすりゃいちいちエスケープしなくておk
mjdsk!?
次から挑戦してみる
色々アドバイスやら素敵な解決策をありがとう
サンクス
>最後から10行目くらい@cache[$i]は$cache[$i]じゃないの?
どちらも同じ意味だったはず
(若干の差はあるかもだが、使い方に大差なしでは?)
>print文中の"をエスケープするんならprint qq|ここに"文章"|;
>こーすりゃいちいちエスケープしなくておk
mjdsk!?
次から挑戦してみる
色々アドバイスやら素敵な解決策をありがとう
611nobodyさん
2006/10/12(木) 13:46:42ID:??? useするかどうか切り替えたいなら
BEGIN{}で囲ったほうがいいな。
BEGIN{}で囲ったほうがいいな。
612nobodyさん
2006/10/12(木) 22:51:01ID:??? >>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_
>うる覚えなんだが
http://www.tt.rim.or.jp/~rudyard/hirago014.html
> これって意味ないんじゃなかったっけ?
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item_use_Module_VERSION_LIST
> ファイルハンドルは大文字で
bareword で扱わず変数で取り回す方が今風。
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq5.html#how_can_i_make_a_filehandle_local_to_a_subroutine_how_do_i_pass_filehandles_between_subroutines_how_do_i_make_an_array_of_filehandles
>>610
> どちらも同じ意味だったはず
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq4.html#what_is_the_difference_between__array_1__and__array_1_
あちこちから routin をかき集めて自作しました :
alter.s225.xrea.com/cgi/bbs/read.cgi?log=0
1. 評価と言うよりも bug の あぶり出しを希望します.
2. 操作がわかりづらいとの意見があります.
率直な ご意見をお願いいたします
3. 自信がないのが security 関連
・ 念のため, 全ファイルを upload しておきます:
alter.s225.xrea.com/bbs.zip
alter.s225.xrea.com/cgi/bbs/read.cgi?log=0
1. 評価と言うよりも bug の あぶり出しを希望します.
2. 操作がわかりづらいとの意見があります.
率直な ご意見をお願いいたします
3. 自信がないのが security 関連
・ 念のため, 全ファイルを upload しておきます:
alter.s225.xrea.com/bbs.zip
615nobodyさん
2006/11/07(火) 08:23:24ID:??? IDなんだしもっと短く付けろよなw
文章そのままって酷すぎるw
文章そのままって酷すぎるw
618nobodyさん
2006/11/08(水) 10:54:37ID:??? >>618
>CGI以前の問題ね
確かに... JavaScrit の bug がぁ〜〜〜
(絶対に書き込めない)
おまけに... WaMCom (Mozilla1.31) では問題とならなかった error が
IE5.17(Mac版) では発生して処理が止まる〜〜〜.
>613は釣りとしか思えない
釣りでは ありませぬ.
僕の環境で確認できる bug は退治しました.
引き続き あら探しをお願いいたしまする〜.
>CGI以前の問題ね
確かに... JavaScrit の bug がぁ〜〜〜
(絶対に書き込めない)
おまけに... WaMCom (Mozilla1.31) では問題とならなかった error が
IE5.17(Mac版) では発生して処理が止まる〜〜〜.
>613は釣りとしか思えない
釣りでは ありませぬ.
僕の環境で確認できる bug は退治しました.
引き続き あら探しをお願いいたしまする〜.
620nobodyさん
2006/11/08(水) 20:37:07ID:??? つっこみどころが多すぎるなぁ…。
まず、「何を作ったのか」という概要や大まかな処理の流れすら書いてない。
>評価と言うよりも bug の あぶり出しを希望します.
評価するスレ。デバッグする所ではない。てか、デバッグなめすぎ。
>操作がわかりづらいとの...
具体的にはどういう操作?
>自信がないのが security 関連
どのファイルの何行目のどういう処理?
>JavaScrit の bug がぁ
JavaScritのスレへどうぞ。
>WaMCom (Mozilla1.31) では問題とならなかった error が
>IE5.17(Mac版) では発生して処理が止まる
と書いていながら
>僕の環境で確認できる bug は退治しました
ってどうよ。
何より、CGIについて無学なのがバレバレです。
背伸びせずPerlからでもきちんとお勉強しましょう。
まず、「何を作ったのか」という概要や大まかな処理の流れすら書いてない。
>評価と言うよりも bug の あぶり出しを希望します.
評価するスレ。デバッグする所ではない。てか、デバッグなめすぎ。
>操作がわかりづらいとの...
具体的にはどういう操作?
>自信がないのが security 関連
どのファイルの何行目のどういう処理?
>JavaScrit の bug がぁ
JavaScritのスレへどうぞ。
>WaMCom (Mozilla1.31) では問題とならなかった error が
>IE5.17(Mac版) では発生して処理が止まる
と書いていながら
>僕の環境で確認できる bug は退治しました
ってどうよ。
何より、CGIについて無学なのがバレバレです。
背伸びせずPerlからでもきちんとお勉強しましょう。
621nobodyさん
2006/11/08(水) 20:38:25ID:??? これさぁ、変数の検査とか書き込む条件とかまったくないじゃん。
最低でも変なファイル作られないようにするとか異常にでかい投稿は
書き込まないようにするとかしないと。
叩き専門の人にとっては叩く必要もないほどへなちょこだけど
プログラムに日本語を含めないつくりはいいと思う。
プロでもソースのいたるところに日本語を埋め込む人はいるからね。
ぶっちゃけそれくらいしか褒めようがないんだけどw
nullぽっぽはもしかしてOperaメインなの?
最低でも変なファイル作られないようにするとか異常にでかい投稿は
書き込まないようにするとかしないと。
叩き専門の人にとっては叩く必要もないほどへなちょこだけど
プログラムに日本語を含めないつくりはいいと思う。
プロでもソースのいたるところに日本語を埋め込む人はいるからね。
ぶっちゃけそれくらいしか褒めようがないんだけどw
nullぽっぽはもしかしてOperaメインなの?
622nobodyさん
2006/11/08(水) 21:25:25ID:???623nobodyさん
2006/11/09(木) 02:37:09ID:??? nullはクラシックMacのiCab使いだった筈。
624nobodyさん
2006/11/09(木) 05:11:43ID:Rlngnc6w まず, 皆さんにお礼を...
ありがとう ごぜ〜ますだ.
>>620
一応, 掲示板 CGI script (のつもり)
>デバッグする所ではない
言葉を間違えたかも ?
debug を他人に依頼するようでは問題外だと思っております.
動作はするけれど server 利用者に迷惑を書けるような
security hole に気づいていないかも知れない.
そんな問題があったら指摘して欲しかったですだ.
>>621
>変数の検査とか書き込む条件とかまったくないじゃん
おおせの通りです.
ようするに書きこみの部分を改良しなければならないのね ?
で, read.cgi の方は どうでしょう ?
人に迷惑を書けるような security hole が あったなら ご指摘くださいませ.
>CGIについて無学なのがバレバレです
弁解の余地もありません.
でも, 半端者の僕が言うのもアレですが
拾って来れるものには満足できなかったのら.
そもそも perl って できの悪い土台に無理な建て増しをした印象が...
ありがとう ごぜ〜ますだ.
>>620
一応, 掲示板 CGI script (のつもり)
>デバッグする所ではない
言葉を間違えたかも ?
debug を他人に依頼するようでは問題外だと思っております.
動作はするけれど server 利用者に迷惑を書けるような
security hole に気づいていないかも知れない.
そんな問題があったら指摘して欲しかったですだ.
>>621
>変数の検査とか書き込む条件とかまったくないじゃん
おおせの通りです.
ようするに書きこみの部分を改良しなければならないのね ?
で, read.cgi の方は どうでしょう ?
人に迷惑を書けるような security hole が あったなら ご指摘くださいませ.
>CGIについて無学なのがバレバレです
弁解の余地もありません.
でも, 半端者の僕が言うのもアレですが
拾って来れるものには満足できなかったのら.
そもそも perl って できの悪い土台に無理な建て増しをした印象が...
>>621
>プログラムに日本語を含めないつくりはいいと思う
日本語を書きこむと文字化けするのでwww (僕の環境は一般的でない)
僕なりに いろいろ拾って来て解読を試みました.
その時, "皮肉にも comment が見通しを悪くしている" と思ったの.
徹底的に簡素化するのが先決だと...
> nullぽっぽはもしかしてOperaメインなの?
MacOS9.22 上で まともに動く Opera はなさそうです.
現在は WaMCom(Mozilla1.31+) がメインですだ.
動作確認に iCab, IE も立ち上げることがありますが,
あくまでも参考程度です.
>>622
メモメモ...
>>623
今では動作確認の参考程度ですだ.
改良されたかと思うと別の不具合が発生するのが許せません.
>プログラムに日本語を含めないつくりはいいと思う
日本語を書きこむと文字化けするのでwww (僕の環境は一般的でない)
僕なりに いろいろ拾って来て解読を試みました.
その時, "皮肉にも comment が見通しを悪くしている" と思ったの.
徹底的に簡素化するのが先決だと...
> nullぽっぽはもしかしてOperaメインなの?
MacOS9.22 上で まともに動く Opera はなさそうです.
現在は WaMCom(Mozilla1.31+) がメインですだ.
動作確認に iCab, IE も立ち上げることがありますが,
あくまでも参考程度です.
>>622
メモメモ...
>>623
今では動作確認の参考程度ですだ.
改良されたかと思うと別の不具合が発生するのが許せません.
ところで rgst.cgi で変なファイルを作れる可能性って ?
(これこそが最も知りたいところ)
量の制限は早急に対処したいと思いますが...
(これこそが最も知りたいところ)
量の制限は早急に対処したいと思いますが...
627nobodyさん
2006/11/09(木) 16:01:13ID:??? nullは呼んでない
629nobodyさん
2006/11/09(木) 19:51:53ID:??? 利用者から見えない変数名、関数名を縮める意味があるのかと小一時間。
630nobodyさん
2006/11/09(木) 22:54:18ID:??? Perlにケチつけるまえに自分の頭の程度を疑えよな
631nobodyさん
2006/11/09(木) 23:12:35ID:??? 日本語のコメントを入れないのが良いって…
なにその英語はカッコイイ、日本語はダサいっていう中学生wwwww
それに、日本人なんだから直感的にわかりやすい日本語で注釈をつけておくのが、
あとを引き続く人へのマナーだと思うんだが。
なにその英語はカッコイイ、日本語はダサいっていう中学生wwwww
それに、日本人なんだから直感的にわかりやすい日本語で注釈をつけておくのが、
あとを引き続く人へのマナーだと思うんだが。
632nobodyさん
2006/11/09(木) 23:15:19ID:??? English is cool!!
予想していたとはいえ, ボロボロだなぁ.
まあ, 他人様に使ってもらおうとするのなら それなりの配慮が必要だろう.
しかし, 僕は自分のために作ったんだ.
最低限, 同じ server 利用者に迷惑を書けない配慮をすれば済む話なんだ.
僕が知りたかったのはその部分に問題があるかどうか なんだけど,
話は あらぬ方向に...
まあ, 他人様に使ってもらおうとするのなら それなりの配慮が必要だろう.
しかし, 僕は自分のために作ったんだ.
最低限, 同じ server 利用者に迷惑を書けない配慮をすれば済む話なんだ.
僕が知りたかったのはその部分に問題があるかどうか なんだけど,
話は あらぬ方向に...
634nobodyさん
2006/11/09(木) 23:45:04ID:??? 率直に言ってゴミ.基本から勉強し直した方がいい.
というかまずは普通の学校の勉強を頑張った方がいい.
というかまずは普通の学校の勉強を頑張った方がいい.
635nobodyさん
2006/11/09(木) 23:46:24ID:??? ひとつだけヒントを.
> read(STDIN,$u,$ENV{'CONTENT_LENGTH'});
たとえ寝ぼけて他としてもこの一行を書いてしまうようでは CGI 書くのは辞め
た方がいい.
> read(STDIN,$u,$ENV{'CONTENT_LENGTH'});
たとえ寝ぼけて他としてもこの一行を書いてしまうようでは CGI 書くのは辞め
た方がいい.
636nobodyさん
2006/11/10(金) 03:57:46ID:??? プログラムの途中に文字列リテラルを埋め込むな、というなら解らないでもない。
ただ、それは日本語に限った事じゃないな。
ただ、それは日本語に限った事じゃないな。
638nobodyさん
2006/11/10(金) 07:10:46ID:??? まだ分かってないみたいだね.
>>この一行を書いてしまうようでは CGI 書くのは辞めた方がいい
>して, その理由は ?
セキュリティホールになるから.理由は自分の頭で考えなさい.
>それと read.cgi に security hole は ないのかどうかが知りたいのだけどなぁ.
当然ある.
>>この一行を書いてしまうようでは CGI 書くのは辞めた方がいい
>して, その理由は ?
セキュリティホールになるから.理由は自分の頭で考えなさい.
>それと read.cgi に security hole は ないのかどうかが知りたいのだけどなぁ.
当然ある.
639nobodyさん
2006/11/10(金) 07:14:05ID:??? >>637
よく分かっていないようだからキミがすべきことを具体的に言おう。
スクリプト冒頭の#!/usr/local/bin/perlを、
#!/usr/local/bin/perl -T
use strict;
use warnings;
に書き換えてデバッグしなさい。
よく分かっていないようだからキミがすべきことを具体的に言おう。
スクリプト冒頭の#!/usr/local/bin/perlを、
#!/usr/local/bin/perl -T
use strict;
use warnings;
に書き換えてデバッグしなさい。
640nobodyさん
2006/11/10(金) 11:09:25ID:??? n u l l は 出 て 行 け
641nobodyさん
2006/11/10(金) 11:30:01ID:???642nobodyさん
2006/11/10(金) 11:46:05ID:??? >read(STDIN,$u,$ENV{'CONTENT_LENGTH'});
この一行は書いてもいいよ。その前の行で$ENV{'CONTENT_LENGTH'}の最大値を
決めてチェックしていればね。
この一行は書いてもいいよ。その前の行で$ENV{'CONTENT_LENGTH'}の最大値を
決めてチェックしていればね。
643606
2006/11/10(金) 12:23:56ID:??? >>637
人に物事を頼む態度じゃないよね?
こっちはみんな善意で見てるってこと忘れてる?
嫌なら他行ったら?
最初に自分で書いてたみたいだけど、他人のソースのつぎはぎスクリプトでしょ?
何の価値があるの?
まずはダサくてもきちんと問題なく動く物を作ることからじゃない?
利用者のことを考えないスクリプトなんて糞だと思います。
人に物事を頼む態度じゃないよね?
こっちはみんな善意で見てるってこと忘れてる?
嫌なら他行ったら?
最初に自分で書いてたみたいだけど、他人のソースのつぎはぎスクリプトでしょ?
何の価値があるの?
まずはダサくてもきちんと問題なく動く物を作ることからじゃない?
利用者のことを考えないスクリプトなんて糞だと思います。
644606
2006/11/10(金) 12:26:14ID:??? ちなみにおいらのほうは、鯖が不調で繋がりません。
どうにもならんのでしばらく放置〜
まだ様子見てくれてる人とかいるのだろうか・・・
もし居たら感謝
どうにもならんのでしばらく放置〜
まだ様子見てくれてる人とかいるのだろうか・・・
もし居たら感謝
645nobodyさん
2006/11/10(金) 14:20:19ID:??? 自分がよく理解していない言語で書いたプログラムを
なぜ共用サーバーで使おうと思えるのか、その神経が理解できない。
プログラムよりも、その意識や存在自体が危険。
なぜ共用サーバーで使おうと思えるのか、その神経が理解できない。
プログラムよりも、その意識や存在自体が危険。
646nobodyさん
2006/11/10(金) 16:16:14ID:??? >>637
>なんだか僕の質問に きちんと答えた回答はない
「きちんと答えた回答」があることにさえ気付けてないだけ。
自分の無知を棚に上げておきながら、
コードに目を通してマジレスしてくれた住人に対して
>ここを当てにした僕が愚か者ってことですかい?
とは随分とご挨拶だな。
ま、オレが見た限りでは
お前の掲示板CGIscriptには何のsecurity holeもないよ。
安心して使って良い。オレが保証する。
>なんだか僕の質問に きちんと答えた回答はない
「きちんと答えた回答」があることにさえ気付けてないだけ。
自分の無知を棚に上げておきながら、
コードに目を通してマジレスしてくれた住人に対して
>ここを当てにした僕が愚か者ってことですかい?
とは随分とご挨拶だな。
ま、オレが見た限りでは
お前の掲示板CGIscriptには何のsecurity holeもないよ。
安心して使って良い。オレが保証する。
648nobodyさん
2006/11/10(金) 19:08:49ID:??? でも実際「大丈夫、何の問題もないよ」としかレスされてなかったら、
ということを◆.PT9876/4Uは考えてみた方が良い。
645も指摘してる通り、今の時点では自分にその言葉が正しいのかどうかすらも
判断できないのに、共用サーバーで自作CGIを使おうとしていることがどれだけ危険か考えてみろ。
極端なことを言えば、それらしい説明があって「これを書き足した方が良い」と言われれば、
それが危険なコードであっても追記してしまうんじゃないのか?
少なくともこれだけマジレスしてくれたり
お世辞にも読みやすいとは言えないようなコードを読んでくれただけでも感謝すべきなのに
「まずこれをやれ」と言われたことはやらず、
自分のレベルの低さを指摘されると反省するどころか逆ギレして
637のような皮肉と煽りに満ちたようなレスしかできないことを恥ずかしいとは思わないのか?
ということを◆.PT9876/4Uは考えてみた方が良い。
645も指摘してる通り、今の時点では自分にその言葉が正しいのかどうかすらも
判断できないのに、共用サーバーで自作CGIを使おうとしていることがどれだけ危険か考えてみろ。
極端なことを言えば、それらしい説明があって「これを書き足した方が良い」と言われれば、
それが危険なコードであっても追記してしまうんじゃないのか?
少なくともこれだけマジレスしてくれたり
お世辞にも読みやすいとは言えないようなコードを読んでくれただけでも感謝すべきなのに
「まずこれをやれ」と言われたことはやらず、
自分のレベルの低さを指摘されると反省するどころか逆ギレして
637のような皮肉と煽りに満ちたようなレスしかできないことを恥ずかしいとは思わないのか?
651nobodyさん
2006/11/10(金) 19:36:37ID:??? 36
652nobodyさん
2006/11/10(金) 20:12:51ID:??? age
653nobodyさん
2006/11/10(金) 20:53:05ID:???654nobodyさん
2006/11/10(金) 20:57:05ID:??? 情報系の大学院でまともな教育受けた人間なら気持ち悪いとは思わない気がする.
気持ち悪がるのは専門学校程度しか行けなかったやつか基本をろくに知らない文系プログラマじゃね?
気持ち悪がるのは専門学校程度しか行けなかったやつか基本をろくに知らない文系プログラマじゃね?
655nobodyさん
2006/11/10(金) 21:14:08ID:??? おかしいな、ここは日本語で話しをする場所じゃなかったのか?
いつから自分の投稿を論文調で発表する場になったんだ?
とりあえず、読みづらい。
読み手を考えないのは、物づくりで使い手を考えないのと同じ。
邪魔
いつから自分の投稿を論文調で発表する場になったんだ?
とりあえず、読みづらい。
読み手を考えないのは、物づくりで使い手を考えないのと同じ。
邪魔
656nobodyさん
2006/11/10(金) 21:28:17ID:??? あれだ、脳内補完で「,」も「.」も消し去っていた件
657nobodyさん
2006/11/10(金) 21:39:13ID:??? 別にそんなに気にする程のことでもないだろ。
ウザイのは句読点じゃなくてnullの存在なだけなんだし。
ウザイのは句読点じゃなくてnullの存在なだけなんだし。
sub file_read {
my $a = $_[0];
open( FH , $a );
while (<FH>) {
print;
}
close FH;
}
こんなサブルーチンを作ったのですがうまく動きません
なぜですか?
my $a = $_[0];
open( FH , $a );
while (<FH>) {
print;
}
close FH;
}
こんなサブルーチンを作ったのですがうまく動きません
なぜですか?
663nobodyさん
2006/12/04(月) 16:34:03ID:??? さすがに句読点でいちゃもんをつけるのはどうかと思う。
664nobodyさん
2010/02/26(金) 22:46:54ID:1vcgNIKQ ping
665○~
2010/02/26(金) 23:15:50ID:1vcgNIKQ 性懲りもなく, 評価依頼:
ttp://homepage2.nifty.com/alter/
・ 以前指摘された部分には一応, 対策を施したつもりっす.
・ CGI は perl script で, HTML の代わりに外部 js ファイルを吐き出す仕様.
(Ajax と違って, web-browser の影響が なく, 文字コードの問題も回避できる)
・ script 内の HTML 記述が皆無なので見通しが良く, 動作も軽快.
ただ, 注意して作ったつもりですが,
見落とした bug が潜んでいる可能性が大きいっす.
ttp://homepage2.nifty.com/alter/
・ 以前指摘された部分には一応, 対策を施したつもりっす.
・ CGI は perl script で, HTML の代わりに外部 js ファイルを吐き出す仕様.
(Ajax と違って, web-browser の影響が なく, 文字コードの問題も回避できる)
・ script 内の HTML 記述が皆無なので見通しが良く, 動作も軽快.
ただ, 注意して作ったつもりですが,
見落とした bug が潜んでいる可能性が大きいっす.
666 忍法帖【Lv=6,xxxP】
2011/10/14(金) 19:38:24.52ID:5RDtymiP そして誰にも相手にされず>>665は1年が経ったのであった
糸冬わり
糸冬わり
668カタヤマ
2013/12/31(火) 01:08:42.56ID:NACGwKVa 宇土成
うまく逃げたな
うまく逃げたな
669nobodyさん
2017/12/30(土) 13:06:44.88ID:YhlYw6jg 誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
8CQR9BVF30
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
8CQR9BVF30
670nobodyさん
2018/02/20(火) 04:34:47.26ID:??? ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
671nobodyさん
2018/06/20(水) 23:23:44.85ID:UnZq46Ab プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。
OT97Q
OT97Q
672nobodyさん
2023/09/24(日) 04:27:28.28ID:??? ハイテンションプリーズ!
レスを投稿する
ニュース
- 【自維】鮭おにぎり198円に絶望、コンビニすら遠い存在に…「生き延びられない」物価高で広がる生活苦★6 [ひぃぃ★]
- 【W杯】韓国が大窮地 悪夢のシナリオ止まらず 決勝T進出順位ボーダーの8位に転落 セネガル、イランに抜かれる ★5 [尺アジ★]
- イチロー氏、野球と比べてサッカーが「うらやましい」と語る 「チームのためにという感じが」「野球は個人で成績を出さないとボロカス」 [冬月記者★]
- 【サッカー】ブラジル戦、NHKは地上波なし 本田圭佑はBSで解説… 悲鳴続出「マジかよ」 地上波はフジテレビが生中継、解説は小野伸二 [冬月記者★]
- 【サッカー】W杯の「日本VSブラジル」を他で例えると…Xで問いかけ話題「湘北vs山王」「明徳義塾vs大阪桐蔭」「ドトウvsオペラオー」★2 [o(^・-・^)o★]
- 不快に感じる作業音3位は「パソコンのキーボード音」2位に「ボールペン等のノック音」…1位は?日本人は音に敏感すぎる? [muffin★]
- とらせん
- 〓たかせん〓
- 巨専】
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★218修正【メキシコ/カナダ/アメリカ】
- おりせん
- 2026 MotoGP Lap42【オランダGP】
- 地震 [904880432]
- 朝からうんこぶっこいて幸せになってしまった…
- なんでウンコする時にケツアナ気持ちよくならないの?
- あれれ、台風は?
- また赤信号な学園アイドルマスター学マススレ
- 休日だし>>2のキャラかいてあそぶ