【CGI】合同開発室
■ このスレッドは過去ログ倉庫に格納されています
0001当方へたれですが
01/10/02 00:35ID:GsMMcvtMiswebだけどアプロダ置いてみました。
http://isweb36.infoseek.co.jp/computer/perldev/
参加してくれる人キボン
0002当方へたれですが
01/10/02 00:35ID:GsMMcvtM私はちまちまサブルーチンやアプロダをやる予定。
チャットとかもやってみたいけど設計はとくにへたれだからなぁ。
0003100%
01/10/02 00:38ID:???0005100%
01/10/02 00:50ID:???でもPG板でソースアプ板無いのも何かと不便だから
「ソースなら良いですよ」ってスタイルならポインタ示したい
時なんかに便利じゃないかな、それで副産物的にテクニックが学べると
いいね お互い
0006当方へたれですが
01/10/02 01:04ID:???exeやrmとか置かれるとさすがに困るけど,
Cとかのソースなら範囲内と思てます。
アプロダはざっとしかソース見てないんでちょと不安。
はやく把握したいけど私にはむつかしい・・・
0007当方へたれですが
01/10/02 01:20ID:GsMMcvtM0008名無しさん@お腹いっぱい。
01/10/02 01:44ID:???まあ方向的には良さそうだが・・・
0009名無しさん
01/10/02 08:30ID:6SpiWnfc0010名無しさん@お腹いっぱい。
01/10/02 09:41ID:???もっとも、あのスレは共同開発の雰囲気でもないよね。
0011当方へたれですが
01/10/02 22:51ID:???クッキー読み書き,フォームデコード。
今回,POST・GETの切り分け,自動判別や,GETのみ取得,ファイルアップロード対応,とかは保留。
アプロダはテンポラリファイル削除でエラー出てるのをなんとかしたい。
上のを実装したらアプロダ作りに挑戦する予定。
0012当方へたれですが
01/10/04 00:42ID:/0/769eoメソッド判別して,POST・GETそれぞれのデコード関数に振り分けるように。
次はファイルアップロードのを予定。
あそこに上げたのはいじられる覚悟の上ですんで,
修正や添削してもらえるとありがたいです。
いじられるのに同意してくれて俺の関数もどうよ?
って人が何人かいると共同開発の雰囲気になるかなぁ。
0013名無しさん@お腹いっぱい。
01/10/04 00:56ID:???0014当方へたれ
01/10/04 01:48ID:???そのままGETみたくデコードしてました。
とほほとかで調べてみます。
ちんたら調べてる間に添削されたのがアプされてたりなんかすると,
オープンソース開発ぽいかも。
0015名無しさん@お腹いっぱい。
01/10/04 03:39ID:f6uUGLLk0016当方へたれですが
01/10/04 03:51ID:???残念ながら実力不足で実装までいけそうにないです。
>15
学習用にと思いまして。
0017名無しさん@お腹いっぱい。
01/10/04 04:17ID:???>オープンソース開発ぽいかも。
申し訳無いが、今の所「いまさらそれ?」的なものだけなのでね。
CGI.plにしても15の言うとおり、CGI.pmがあるわけだし。
まぁ頑張って下さい(スレと関係無いのでサゲ
0018名無しさん@お腹いっぱい。
01/10/04 06:14ID:???ここがそうなればなぁと思ってましたが,私じゃ力不足だったようです。
だれかが作ってくれないかなぁと思って待ってても
できなかったので,自分がアプロダ置きました。
何も無いところにアプする人がいるとも思えなかったので,
自分が書いたのを上げました。
ランダムアクセスとか,超高速日本語コード変換とか,
すごい人の 役にたてるのを作れるほどの実力があるとは思えないので,
自分くらいのレベル向けにいろんなののをメモしとこうと
書いてました。
人が来るようになったら誰かにアカウント移そうと思ってましたが,杞憂でしたね。
0019当方へたれ=18
01/10/04 06:19ID:???「私のプログラムを添削してください」ですね。
0020名無しさん@お腹いっぱい。
01/10/04 06:40ID:???2週間ぐらいスレが生き延びれば定着するよ。
そのためにはネタを出し惜しみして、
ヘッドラインから消えたらageるぐらいでちょうどいい。
002120
01/10/04 06:50ID:???う。全然ちょうどよくねえ!
よく見たら最終書き込み9月25日の雑談スレが
まだヘッドラインに残ってるじゃねーかよ!
この板の回転の遅さを甘く見ていた。
あらためて寂寞を感じる今日このごろ。。。
0022名無しさん@お腹いっぱい。
01/10/04 07:29ID:???には知らない事が多すぎる自分。
multipart/form-data は、先日(勉強も兼ね)自前で実装させたん
ですがRFCやらCGI.pmやら見てかなり泥縄でやったので見せるほどの
物でも無し…(ブラウザごとの実装の違いの可能性はほぼ気に
しなかったし…)。
とは言うものの、スレの趣旨は悪くないので出来たら応援したいっす。
>>21
でも不思議な事に糞スレやら糞カキコは後を絶えないんですよね…。
0023名無しさん@お腹いっぱい。
01/10/05 04:53ID:???似たようなスレの末路
http://ebi.2ch.net/test/read.cgi/php/1001318195/
0024当方へたれですが
01/10/05 23:52ID:1j62Ctwg条件式と変数のリファレンスを渡すと,条件が偽の時STDERRに
条件式と,パッケージ・ファイル・行,変数の内容を吐きます。
たぶん今回も車輪の再開発です。
0025名無しさん@お腹いっぱい。
01/10/06 04:28ID:???というわけで、CGI.pmの問題点とか挙げていこーよ。
とりあえず、h1とかHTML生成用のメソッドと、paramとかを分離してくれ。
#HTML::Templateを主に使っているので、h1とかいらないんだよね〜。
0026名無しさん@お腹いっぱい。
01/10/06 07:06ID:???ファイル名をAssert.pmにして、assertって関数名を
mainパッケージにエクスポートすると使いやすくない?
正式にExporterのサブクラスにするとかの
おおげさなことじゃなくて、どっかに1行
*main::assert = \&assert;
を入れてmainからアクセスできるだけでもいいと思うんだけど。
こんなふうに、必要なとこでrequireして使う感じ
:
require Perldev::Assert;
$_ = 'AAA';
my $hoge = 'BBB';
assert( q[$_ eq ""], (\$_, \$hoge) );
:
0027名無しさん@お腹いっぱい。
01/10/06 12:02ID:???0028名無しさん@お腹いっぱい。
01/10/06 12:07ID:???0029名無しさん@お腹いっぱい。
01/10/06 13:01ID:0fYRCZ0Muse CGI qw(:cgi);
でいいかと。
0030名無しさん@お腹いっぱい。
01/10/06 13:04ID:???もらったよ。use overloadの勉強用に。
0031名無しさん@お腹いっぱい。
01/10/06 14:08ID:???だから全部".txt"だったのかよ!
0032当方へたれですが
01/10/06 17:03ID:???たぶんこれで.plと.pm置けるようになったはず。
Boolean.pm見て勉強してきます。
0033名無しさん@お腹いっぱい。
01/10/07 00:37ID:rgyPDIMY0035名無しさん@お腹いっぱい。
01/10/07 13:50ID:???0036名無しさん@お腹いっぱい。
01/10/07 21:03ID:???サポート掲示板によると,isweb36サーバーの一部が落ちてるみたいです。
0037名無しさん@お腹いっぱい。
01/10/11 00:56ID:???ついでに画像閲覧とかFTPとかの使わなそうな機能を削りました。
0038hage
01/10/15 07:49ID:???00391
01/10/16 03:42ID:TCS0inSEこのペースだと来年すぎまでかかりそうなので,
今回は自分でフォームデコードはせずに,CGIとFile::Copy使ってます。
content-typeだけでファイルタイプを判定してるので,
plやpmはtxtになっちゃいます。
CGI.pm使ってHTMLを書いたけど,使いづらいしソースも見づらいので
こういうのに便利らしいHTML::Templateを調べてきます。
0040名無しさん@お腹いっぱい。
01/10/16 07:33ID:???0041ちんげん
01/10/16 19:55ID:5A+7lSiO「CGI」の「テキスト」カウンターできたよ〜。
0042名無しさん@お腹いっぱい。
01/10/16 20:32ID:???@file = <IO>;
foreach (@file){ }
より
while(<IO>){ }
の方が良いと思われ。
0043ちんげん
01/10/16 21:11ID:???0044!42
01/10/16 21:44ID:???サーバーにも優しいカウンターになる、という意味だと思われ。
0045!44
01/10/16 21:56ID:???例えばトップが50KBのhtmlとかだと50KBの配列が出来ちゃう
と言うかテキストカウンターっぽい事をしたいなら
読み書きモードでopenして、カウンターの位置までseekしてprint
した方が良いよ。ヘッダなんかを書き換えた時はメンテする必要が
有るけどね。
0046名無しさん@お腹いっぱい。
01/10/16 21:57ID:/3a8HFEeうん、Perl5に標準添付されているライブラリ assert.pl があるよ。
# Usage:
#
# &assert('@x > @y');
# &assert('$var > 10', $var, $othervar, @various_info);
#
# That is, if the first expression evals false, we blow up. The
# rest of the args, if any, are nice to know because they will
# be printed out by &panic, which is just the stack-backtrace
# routine shamelessly borrowed from the perl debugger.
0047名無しさん@お腹いっぱい。
01/10/17 00:23ID:???ロックのところは open or die "Error:$!" みたいに
if ! 使わずに or 使ったり $! も表示したりしたほうがいいと思う。
0048名無しさん@お腹いっぱい。
01/10/17 04:46ID:???>41 参戦感謝。
>46 情報感謝。
CPAN繋がらなかったんで検索しなかったんですが,標準で付いてましたか。
標準添付のを見てみたら,以外とライブラリもあるんですね。初めて知りました。
--
HTML::Template調べたところ,以外と簡単そうです。
今日は試しにアプロダの,テンプレだけを書いてみました。
0049名無しさん@お腹いっぱい。
01/10/17 08:37ID:???> foreach (@source){
> if ($source[$i] =~ /<!--count-->([\d]+)<!--\/count-->/ig) {
> $count = $1;
> $count++;
> $source[$i] =~ s/<!--count-->[\d]+<!--\/count-->/<!--count-->$count<!--\/count-->/ig;
> }
> $i++;
> }
こんなわけのわからない処理は止めなさい。
foreachの使い方がわかってない。
あと、変換はs///eg一発で出来るよ。
もっと言うと、テンポラリファイルに書き出してからrenameしたほうがいい。
openの戻り値はきちんとチェックしようね。
&lock_file;
open SRC "$source" or die;
open TMP "> $tmp" or die;
while (<SRC>) { s///eg; print TMP $_; }
close SRC;
close TMP;
rename($tmp, $source);
&unlock_file;
こんな流れで。
0050ちんげん
01/10/17 09:12ID:???どうも、ありがとうです。
一回の読み書きOPENで書き換えするのに、seekでカウンター値の先頭への
ポインタを得る方法を考えていたら頭から煙が出てきました。
# なんか見当はずれなことしてんのかなぁ。
>>49
> こんなわけのわからない処理は止めなさい。
厨スクリプトでお目汚しスマソ。
> あと、変換はs///eg一発で出来るよ。
s///egってのがあるんで?勉強してきます。
> もっと言うと、テンポラリファイルに書き出してからrenameしたほうがいい。
そか、一旦、テンポラリに書き出してそれからリネームすればいいのか。
それで昨晩ずーっと悩んでました。
> openの戻り値はきちんとチェックしようね。
Σ(;´Д`)
あっ、ホントだ。してなかった。鬱だ。
大変参考になりました。ありがとうございました。勉強になります。
出直して参ります。
0051名無しさん@お腹いっぱい。
01/10/18 02:40ID:???my $cl = new Caller;
print $cl->line;
use Caller qw(caller) でオーバーライドも。
00521
01/10/18 04:29ID:???勉強用にいただきました。じっくり読めばなんとか理解できそうです。
39:*pkg = \&pakcage;
typoぽいです。
--
すごいなー私も頑張ろう!とあぷろだ上げました。
変更点は,昨日のテンプレ修正と,ファイル名変更,表示部にテンプレ導入,他に少しです。
0053名無しさん@お腹いっぱい。
01/10/18 22:27ID:???こうすればメンテ不用になるぞ、っと。
while (<HTM>){
    if (/<!--count-->(\d+)<!--\/count-->/){
        seek HTM,-length,1;
     #書き換え
        last;
    }
}
でも�dだ時HTMLごと逝っちゃうのはイヤな感じかも (w
0054名無しさん@お腹いっぱい。
01/10/18 22:55ID:???これなに?
0055名無しさん@お腹いっぱい。
01/10/18 23:02ID:???s///eg のeオプションはいらないだろう。
0056名無しさん@お腹いっぱい。
01/10/18 23:07ID:???たとえば、
s/(\d+)(?=<!--\/count-->)/$1+1/eg
とか。
0057名無しさん@お腹いっぱい。
01/10/18 23:27ID:???いやだから、上記の例では必要ないだろうと言っているの。
005845
01/10/18 23:30ID:???そっかバックすれば良いんだネ、うちはカウンターまで4行しかないから
イイ(・∀・)感じになったヨ
:でも�dだ時HTMLごと逝っちゃうのはイヤな感じかも (w
うちは閑古Webだからネ、一応ロックバリバリにしてるけど今の所大丈夫みたい
200hit/DAYって感じだからかナ
>54
seek HTM,-length($_),1だヨ
0059名無しさん@お腹いっぱい。
01/10/18 23:32ID:???s/// だけでカウンタインクリメント出来ると?
0060名無しさん@お腹いっぱい。
01/10/19 06:41ID:???00611
01/10/19 06:46ID:UfCiRs0I投稿削除ができるようになりました。
変更点は,ログフォーマット,delete.pl・delsetup.tmpl導入,他少し。
ログフォーマットも大体固まったので明日あたりにiswebにサンプル置きます。
--
>45 >>58
HTML書き出し式カウンタを使ってるんですか?
実際に使うには,普通の,カウントを別ファイルに持つ形式より
危険な感じがするんですが,利点とかてありますか?
煽りとかじゃなくて,純粋に気になったので。
006261
01/10/19 07:04ID:???SSI使えないサーバでも使える。ってのがたぶん利点。
それ以外では使う理由ない。
あ、あとはカウンタ表示自体ではCGI起動しないってのもかな。
006362
01/10/19 07:15ID:???0064名無しさん@お腹いっぱい。
01/10/19 07:34ID:???このカウンタって
・htmlにアクセス・表示
・IMG経由でCGI呼び出し
・htmlを解析してカウンタ部分を加算
・html書き出し
という方法ですよね?
これだと以下みたいなのと比べると,
毎回htmlを書き出すんで負荷やあぼーん率が高くなりそうと思って。
・cgiにアクセス
・index.tmpl読み込み
・count.dat読み込み
・カウント
・index.tmplの特種タグ(0<!-- __%%COUT%%__ -->とか)置き換え
・count.dat書き出し
うー,ちょっと混乱してます・・・
0065名無しさん@お腹いっぱい。
01/10/19 10:54ID:???index.htmlのimgタグ(ボクはiframe)でcount.cgiをキック
index.htmlをopen (+<モード)
特種タグ(0<!-- __%%COUT%%__ -->とか)までseekでジャンプ
特種タグ(0<!-- __%%COUT%%__ -->とか)だけ書き換え
close; exit;
ですヨ
理由はSSI出来ないからデス、後UAとかHOSTとか要らないので
外部ファイルは無いデス、(一応重複防止にクッキー吐いてるケド。。。)
だからファイルを一つだけ、一回だけ開いてexitデス。
:あぼーん率が高くなりそうと思って。
うー、これはボクがwriteシステムコールの
アトミック性を理解出来て無い(どれ位で分割されるのカ)のでアレですケド、
実は多分0バイトにはなりようが無いデス、truncateして無いので0バイト
になる瞬間が無いのデス、VMWARE使って、ファイルロック無し、
forkで50プロセス×3ホストから同時アクセスを何十セットかしてモ、ミスカウントは
したけど飛ばなかったですから。。(この辺は突っ込み歓迎デス)
これはflockが信頼出来なくて0になると鬱な時とかちょっと(・∀・)イイかも
知れませン、例えばカウントファイル(カウントだけ)を、、、
open (DAT,"+<foo");
flock (DAT,2);
truncate DAT,0;
seek DAT,0,0;
print DAT "$count";
じゃ無くテ
open (DAT,"+<foo");
flock (DAT,2);
seek DAT,0,0;
print DAT "$count";
truncate DAT,length($count);
とか。。(これも突っ込み歓迎デス)
取り合えず今のところ50000くらいだけど�dでないのデス。
0066名無しさん@お腹いっぱい。
01/10/19 16:37ID:???>truncate DAT,length($count);
ここで小さくなったりしないのか、、しないよな、うーん。
■ このスレッドは過去ログ倉庫に格納されています