1read 100read
2013年06月WebProg300: 【CGI】合同開発室 (181) TOP カテ一覧 スレ一覧 2ch元 削除依頼
Servlet (153)
天才WEBプログラマの方々に一生のお願い… (121)
【読み方】Open Laszlo スレ【わからん】 (182)
【Python】TurboGearsスレ Part 1【Framework】 (172)
【ANTI】今、あえてPerlで攻める【PHP】 (160)
オブジェクト指向perl (127)

【CGI】合同開発室


1 :01/10/02 〜 最終レス :2013/01/02
合同で学習用スクリプトとかの開発をできないかと思って
iswebだけどアプロダ置いてみました。
http://isweb36.infoseek.co.jp/computer/perldev/
参加してくれる人キボン

2 :
もちろん私もなるたけ参加します。
私はちまちまサブルーチンやアプロダをやる予定。
チャットとかもやってみたいけど設計はとくにへたれだからなぁ。

3 :
空中分解するでしょう  w

4 :
>>3
掲示板改造するって人らが来てくれるかなぁとか思ってるんですが
うう,やっぱそうですかね。

5 :
つかここ人少ないからねー ヽ(´ー`)ノ
でもPG板でソースアプ板無いのも何かと不便だから
「ソースなら良いですよ」ってスタイルならポインタ示したい
時なんかに便利じゃないかな、それで副産物的にテクニックが学べると
いいね お互い

6 :
>>5
exeやrmとか置かれるとさすがに困るけど,
Cとかのソースなら範囲内と思てます。
アプロダはざっとしかソース見てないんでちょと不安。
はやく把握したいけど私にはむつかしい・・・

7 :
Network.plを上げてみた。

8 :
またいきなり厨房臭いところから攻めてきたね  :-)
まあ方向的には良さそうだが・・・

9 :
ここの掲示板をつくろうスレって結局完成したんだっけ?

10 :
何人か作ったと思うけど、共同では完成してないよ。
もっとも、あのスレは共同開発の雰囲気でもないよね。

11 :
CGI.plアプ。
クッキー読み書き,フォームデコード。
今回,POST・GETの切り分け,自動判別や,GETのみ取得,ファイルアップロード対応,とかは保留。
アプロダはテンポラリファイル削除でエラー出てるのをなんとかしたい。
上のを実装したらアプロダ作りに挑戦する予定。

12 :
へたれっぷりを再認識しつつCGI.plのフォームデコード部分をアプしてみました。
メソッド判別して,POST・GETそれぞれのデコード関数に振り分けるように。
次はファイルアップロードのを予定。
あそこに上げたのはいじられる覚悟の上ですんで,
修正や添削してもらえるとありがたいです。
いじられるのに同意してくれて俺の関数もどうよ?
って人が何人かいると共同開発の雰囲気になるかなぁ。

13 :
マルチパートを綺麗にデコードしてくれー  (笑

14 :
multipart/form-dataのフォーマットがわからなかったので
そのままGETみたくデコードしてました。
とほほとかで調べてみます。
ちんたら調べてる間に添削されたのがアプされてたりなんかすると,
オープンソース開発ぽいかも。

15 :
CGI.pmじゃだめなの?

16 :
マルチパートデコード調べてみました。
残念ながら実力不足で実装までいけそうにないです。
>15
学習用にと思いまして。

17 :
> ちんたら調べてる間に添削されたのがアプされてたりなんかすると,
>オープンソース開発ぽいかも。
申し訳無いが、今の所「いまさらそれ?」的なものだけなのでね。
CGI.plにしても15の言うとおり、CGI.pmがあるわけだし。
まぁ頑張って下さい(スレと関係無いのでサゲ

18 :
 遠慮なく人のソースいじるってのは他のとこだとできないんで,
ここがそうなればなぁと思ってましたが,私じゃ力不足だったようです。
 だれかが作ってくれないかなぁと思って待ってても
できなかったので,自分がアプロダ置きました。
 何も無いところにアプする人がいるとも思えなかったので,
自分が書いたのを上げました。
 ランダムアクセスとか,超高速日本語コード変換とか,
すごい人の 役にたてるのを作れるほどの実力があるとは思えないので,
自分くらいのレベル向けにいろんなののをメモしとこうと
書いてました。
 人が来るようになったら誰かにアカウント移そうと思ってましたが,杞憂でしたね。

19 :
というかこれは「合同開発室」じゃなくて
「私のプログラムを添削してください」ですね。

20 :
この板住人の数が少ないからねー。もすこし待っててみ。
2週間ぐらいスレが生き延びれば定着するよ。
そのためにはネタを出し惜しみして、
ヘッドラインから消えたらageるぐらいでちょうどいい。

21 :
>ヘッドラインから消えたらageるぐらいでちょうどいい。
う。全然ちょうどよくねえ!
よく見たら最終書き込み9月25日の雑談スレが
まだヘッドラインに残ってるじゃねーかよ!
この板の回転の遅さを甘く見ていた。
あらためて寂寞を感じる今日このごろ。。。

22 :
一応自作Scriptを書くらいは何とかなるんですが、人様に教える程
には知らない事が多すぎる自分。
multipart/form-data は、先日(勉強も兼ね)自前で実装させたん
ですがRFCやらCGI.pmやら見てかなり泥縄でやったので見せるほどの
物でも無し…(ブラウザごとの実装の違いの可能性はほぼ気に
しなかったし…)。
とは言うものの、スレの趣旨は悪くないので出来たら応援したいっす。
>>21
でも不思議な事に糞スレやら糞カキコは後を絶えないんですよね…。

23 :
>>1
似たようなスレの末路
http://ebi.2ch.net/test/read.cgi/php/1001318195/

24 :
CのをまねしてAssert.pl作ってみました。
条件式と変数のリファレンスを渡すと,条件が偽の時STDERRに
条件式と,パッケージ・ファイル・行,変数の内容を吐きます。
たぶん今回も車輪の再開発です。

25 :
CGI.plを勉強用で片付けないで、CGI.pmを超えるものを作ればいいじゃん。
というわけで、CGI.pmの問題点とか挙げていこーよ。
とりあえず、h1とかHTML生成用のメソッドと、paramとかを分離してくれ。
#HTML::Templateを主に使っているので、h1とかいらないんだよね〜。

26 :
>>24
ファイル名をAssert.pmにして、assertって関数名を
mainパッケージにエクスポートすると使いやすくない?
正式にExporterのサブクラスにするとかの
おおげさなことじゃなくて、どっかに1行
*main::assert = \&assert;
を入れてmainからアクセスできるだけでもいいと思うんだけど。
こんなふうに、必要なとこでrequireして使う感じ

require Perldev::Assert;
$_ = 'AAA';
my $hoge = 'BBB';
assert( q[$_ eq ""], (\$_, \$hoge) );


27 :
遅くなるだけで無意味だけどBoolean.pm

28 :
つーか.plと.pmの拡張子は認めてくれよ。

29 :
>>25
use CGI qw(:cgi);
でいいかと。

30 :
>>27
もらったよ。use overloadの勉強用に。

31 :
>>28
だから全部".txt"だったのかよ!

32 :
アプロダの設定変えました。
たぶんこれで.plと.pm置けるようになったはず。
Boolean.pm見て勉強してきます。

33 :
ドキュメントをpodで埋め込まないなんてナンセンスだよ。

34 :
>>33
ごもっとも。自分でもそう思った。
学習用のなんだから面倒くさがらずにやりゃよかったな。

35 :
おい、行けなくなってるぞ。

36 :
突然動かなくなったのでいろいろいじってみましたが治せませんでした。
サポート掲示板によると,isweb36サーバーの一部が落ちてるみたいです。

37 :
サーバー復帰したみたいです。
ついでに画像閲覧とかFTPとかの使わなそうな機能を削りました。

38 :
age

39 :
低機能アップローダあげました。
このペースだと来年すぎまでかかりそうなので,
今回は自分でフォームデコードはせずに,CGIとFile::Copy使ってます。
content-typeだけでファイルタイプを判定してるので,
plやpmはtxtになっちゃいます。
CGI.pm使ってHTMLを書いたけど,使いづらいしソースも見づらいので
こういうのに便利らしいHTML::Templateを調べてきます。

40 :
何か知らんけど頑張れ!  (・∀・)

41 :
ヘタレながら参戦。
「CGI」の「テキスト」カウンターできたよ〜。

42 :
>>41
@file = <IO>;
foreach (@file){ }
より
while(<IO>){ }
の方が良いと思われ。

43 :
ヘタレにつき、詳細キボンヌ。スマソ。

44 :
いちいち@fileに入れずに、while(<IO>)で一行ずつ処理する方が、
サーバーにも優しいカウンターになる、という意味だと思われ。

45 :
あれ位のHTMLなら気にする事も無いのかもだけどね
例えばトップが50KBのhtmlとかだと50KBの配列が出来ちゃう
と言うかテキストカウンターっぽい事をしたいなら
読み書きモードでopenして、カウンターの位置までseekしてprint
した方が良いよ。ヘッダなんかを書き換えた時はメンテする必要が
有るけどね。

46 :
>>24
うん、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.

47 :
>41
ロックのところは open or die "Error:$!" みたいに
if ! 使わずに or 使ったり $! も表示したりしたほうがいいと思う。

48 :
>40 ありがとう。ちまちまやってきます。
>41 参戦感謝。
>46 情報感謝。
 CPAN繋がらなかったんで検索しなかったんですが,標準で付いてましたか。
 標準添付のを見てみたら,以外とライブラリもあるんですね。初めて知りました。
--
HTML::Template調べたところ,以外と簡単そうです。
今日は試しにアプロダの,テンプレだけを書いてみました。

49 :
> my ($i, $count) = (0,0);
> 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;
こんな流れで。

50 :
>>44 >>45
どうも、ありがとうです。
一回の読み書きOPENで書き換えするのに、seekでカウンター値の先頭への
ポインタを得る方法を考えていたら頭から煙が出てきました。
# なんか見当はずれなことしてんのかなぁ。
>>49
> こんなわけのわからない処理は止めなさい。
厨スクリプトでお目汚しスマソ。
> あと、変換はs///eg一発で出来るよ。
s///egってのがあるんで?勉強してきます。
> もっと言うと、テンポラリファイルに書き出してからrenameしたほうがいい。
そか、一旦、テンポラリに書き出してそれからリネームすればいいのか。
それで昨晩ずーっと悩んでました。
> openの戻り値はきちんとチェックしようね。
Σ(;´Д`)
あっ、ホントだ。してなかった。鬱だ。
大変参考になりました。ありがとうございました。勉強になります。
出直して参ります。

51 :
Caller.pm上げてみた。
my $cl = new Caller;
print $cl->line;
use Caller qw(caller) でオーバーライドも。

52 :
>51
勉強用にいただきました。じっくり読めばなんとか理解できそうです。
39:*pkg = \&pakcage;
typoぽいです。
--
すごいなー私も頑張ろう!とあぷろだ上げました。
変更点は,昨日のテンプレ修正と,ファイル名変更,表示部にテンプレ導入,他に少しです。

53 :
>>45
こうすればメンテ不用になるぞ、っと。
while (<HTM>){
    if (/<!--count-->(\d+)<!--\/count-->/){
        seek HTM,-length,1;
     #書き換え
        last;
    }
}
でもdだ時HTMLごと逝っちゃうのはイヤな感じかも  (w

54 :
> seek HTM,-length,1
これなに?

55 :
>>50
s///eg のeオプションはいらないだろう。

56 :
>>55
たとえば、
s/(\d+)(?=<!--\/count-->)/$1+1/eg
とか。

57 :
>>56
いやだから、上記の例では必要ないだろうと言っているの。

58 :
>53 おー さんちぇ!
そっかバックすれば良いんだネ、うちはカウンターまで4行しかないから
イイ(・∀・)感じになったヨ
:でもdだ時HTMLごと逝っちゃうのはイヤな感じかも  (w
うちは閑古Webだからネ、一応ロックバリバリにしてるけど今の所大丈夫みたい
200hit/DAYって感じだからかナ
>54
seek HTM,-length($_),1だヨ

59 :
>>50 に書いてある流れで、
s/// だけでカウンタインクリメント出来ると?

60 :
55は49を読んでないツッコミ症候群だと思われ、、、

61 :
あぷろだv0.1.0上げました。
投稿削除ができるようになりました。
変更点は,ログフォーマット,delete.pl・delsetup.tmpl導入,他少し。
ログフォーマットも大体固まったので明日あたりにiswebにサンプル置きます。
--
>45 >>58
HTML書き出し式カウンタを使ってるんですか?
実際に使うには,普通の,カウントを別ファイルに持つ形式より
危険な感じがするんですが,利点とかてありますか?
煽りとかじゃなくて,純粋に気になったので。

62 :
>>61
SSI使えないサーバでも使える。ってのがたぶん利点。
それ以外では使う理由ない。
あ、あとはカウンタ表示自体ではCGI起動しないってのもかな。

63 :
あれ、すみません、俺は61じゃない。

64 :
>>62
このカウンタって
・htmlにアクセス・表示
・IMG経由でCGI呼び出し
・htmlを解析してカウンタ部分を加算
・html書き出し
という方法ですよね?
これだと以下みたいなのと比べると,
毎回htmlを書き出すんで負荷やあぼーん率が高くなりそうと思って。
・cgiにアクセス
・index.tmpl読み込み
・count.dat読み込み
・カウント
・index.tmplの特種タグ(0<!-- __%%COUT%%__ -->とか)置き換え
・count.dat書き出し
・print
うー,ちょっと混乱してます・・・

65 :
えっと、
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でないのデス。

66 :
truncate ってどんな実装よ?
>truncate DAT,length($count);
ここで小さくなったりしないのか、、しないよな、うーん。

67 :
おおお、しばらく見ないうちにおいらの分からないエリアに入ってる...
これを作ったのは、某所で、CGIのテキストカウンターってないの?
という話があったからなんです。で、んじゃ作るかと思って作ってみた
ものなのですが、いやぁ、おのれのあまりの未熟さを痛感しました。
なんか場違いでスマソ。 >1,ALL

68 :
>>66
カウントファイル的には桁数が前より小さくなることは無いので、
truncate DAT,length($count);では小さくならないね。
ってことは truncate かける意味も無いけど。

69 :
>>67
CGIのテキストカウンター
http://www.around.ne.jp/software/fastky/library/index.html#counter

70 :
>>65 ありがとう。なんとなくわかりました。
>>67
ぜんぜん場違いでないと思いますよ。
スレが活発化しました。

71 :
>>65のソースキボン、、イマイチ解らん    鬱

72 :
>>69
それ、なってない。

73 :
>>69
<counter></counter>なんてワケのわからないタグを使用している時点でアウト。
仕組みは同一だし。

74 :
+> 使ってるのなんて始めて見た。
しかもこの場合意味無いどころか、いったんtruncateされるので
タイミングによってはindex.htmlが正常に見られない。

75 :
お、何か盛りあがってますネ
良く考えたらアプ板なんでボクもあげましたヨ >>71
>>53さんのが入ってるでス
flockコメントアウトしたりしていぢめてみてくださイ
調子にのるとカーネルらー に突っ込まれそうなのでこの辺で退散   ササッ(((・∀・;)
http://isweb36.infoseek.co.jp/computer/perldev/cgi-bin/upload/source/017.txt

76 :
ところで>>1よ。
アプロダの
A:hover {color: red; font-weight: bold;}
このドキュソスタイル指定を消してくれ。マジウザイ。

77 :
カーネルらー、ってなーに??

78 :
>76 了解。消しました。
--
あぷろだ,テスト設置してみました。
iswebなので,コピペで飛んでください。
ttp://isweb36.infoseek.co.jp/computer/perldev/cgi-bin/tiny_upbrd/upload.cgi
まだ拡張子の判定がイマイチです。

79 :
>78=1
拡張子指定できるようにしました。
http://isweb36.infoseek.co.jp/computer/perldev/
からもいけます。

80 :
>>75
これ良いな、ちょっとflock外して5万回位叩いてみたけどHTMは勿論カウンタデータも飛ばないよ
良く考えたらとびようが無いんだな。syswrite使っとけばより安心って所かな?
俺の使ってる所時々ファイルが飛ぶから、上のKY何とかみたいなのは怖くて使えないんだよ
俺もアクセス解析とか要らない派だから外部ファイル無いのも気に入った
ちょっと弄って使わせてもらうよ THANKS!!

81 :
>>80
flockしなかった場合に本当に常に1ずつインクリメントされるかどうかは疑問。

82 :
疑問って・・・される訳ないだろ  藁

83 :
>>80
5万回つーても、同時アクセス数いくつに設定?

84 :
先生!出直してきました。
また見てやってくださいませ。
http://isweb36.infoseek.co.jp/computer/perldev/cgi-bin/upload/source/018.lzh

85 :
何っつーか、、
>>81 やってみれば?
>>83 5万回÷俺の環境で許されるほぼ最大のプロセス数だけど?、
つーか君はディスクアクセスなんてオーバーヘッドの馬鹿デカイ処理に対して
単にローカルでforすりゃ十分って事が分からないのかい? 
まー良いや取り合えず>>75 有難う!

86 :
>>85
いやーん怒んないで。Apacheのおまけについてくる
abコマンドでベンチマークとったのかと思ったんですよう。

87 :
あ、こっちもスマソ fork×50でtrigger.plをexec trigger.plで1000forて感じ。
これ以上はNTだとヤバイから、ローカルはIISだからabコマンドは解らないよ
HTMをパースしてそこだけ書き換えるってのが、本物SSIっぽくて
ちょっと良いなと思っただけ、別に飛ばない方法なら幾らでもあるし
と言う事で外野は去る事にする。

88 :
疑問っつうか、されない事わかってて言ってますよ:-)

89 :
ゴミどもめ。
早く死になさい

90 :
(´-`).。oO(また変な流れになってきたね・・・)

91 :
わかってて疑問なのかよっ!!

92 :
>>84
取り合えずCGIならdieは辞めとけ、エラールーチン書いてそこに飛ばせ
ただ例えばファイルが100kbだとして、書き換えたいのは20バイト足らずなのに
毎回全部書き直すってのは効率はよろしくないってこった、
その程度の効率は俺は気にしないけどな、それが嫌なら75のをパクれ

93 :
100kbのHTMLファイルなんてヤダ!(いや、わかってるよ

94 :
あぷろだのネタが思いつかなくなってきたので,XBM表示CGI作りました。
<IMG src="xbm.cgi?100">で100と表示します。
サンプルは
http://isweb36.infoseek.co.jp/computer/perldev/cgi-bin/print_xbm/view.cgi
です。
□と■の文字列から画像データを生成するようにしてみしたが,
変換処理,ごちゃごちゃして少し読みづらくなっちゃいました。

95 :
(´-`).。oO(移転あげなの・・・)

96 :
>95
ありがとです。
今ちまちまとネタCGI(物語自動作成)作ろうとしてるんですが,
いきなりデータ形式でつまってます。
作ってみたいのいくつかあるんで,浮気しながらちょこちょこ書いてこうかと思います。

97 :
(´-`).。oO(ちょっと別スレで使わせてもらっちゃった・・・・ダメ? )

98 :
>>97 全然問題ないです。そういう意味もこめて置いたので。
--
改造工房用にアプロダ置いたら,どのくらい利用されると思いますか?>ool

99 :
>>98
ログ設定を大きくしていると利用されやすいかも。
すぐに流れると、投稿する方も閲覧する方もツマンナイし。
(ぁゃιぃ風味は止めた方が良いですよ)

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
PHPの使える鯖 (150)
【Python】TurboGearsスレ Part 1【Framework】 (172)
携帯電話以外からのアクセス禁止にしたい (101)
俺専用の板 (139)
PHPで作られたサイト (156)
超高機能CMS TYPO3 (134)
--log9.info------------------
碧井椿 PART1 (115)
ちゃら★☆Chara☆★チャラ16 (622)
【沖縄在住】 砂川恵理歌 【29歳・介護士】 (103)
【FunnyWalker】 松倉サオリ 【松倉佐織】 (152)
有花 ★ARIKA★ Part1 (106)
未来玲可 (189)
【咲きましょう】 berry 【どんな色でもいいさ】 (176)
【佐賀発】 椿 【TSUBAkI】 (105)
DAHLIA 〜 I'LL BE YOUR LOVE〜Part.1 (122)
【何だか知らんが】 Akashi Part1【立ててみた】 (115)
★masumi★ (130)
川島だりあ (102)
lecca (124)
【元・川越春菜】 Lunakate (ルナケイト) Part 2 (153)
高田梢枝 part2 (125)
UA Part16 (130)
--log55.com------------------
【ガラガラポン】業田良家【独裁くん】
又野尚
【ぷにぷに】さわらせてっ!あみかさん【トフ子】
【いしかわじゅん】毎日新聞『桜田です!』を語ろう★1
【井上純一】中国嫁日記539【井上純弌/希有馬】
もういい加減終わらせろと思う4コマ
みずしな孝之 3
主任がゆく!スペシャル