5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

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

【Perl】掲示板を使ろう!

1 :名無しさん@お腹いっぱい。:2001/05/03(木) 20:56 ID:lB9ErFH.
-前スレッド http://tako.2ch.net/test/read.cgi?bbs=perl&key=959378033&ls=50
-PHP版  http://corn.2ch.net/test/read.cgi?bbs=php&key=982779383&ls=50

今のところのまとめ。
■ほういち氏
  ▽サンプル掲示板
    http://www13.big.or.jp/~bell/nanashi/perl/
  ▽ソースコード
    http://www13.big.or.jp/~bell/cgi-bin/files/
    http://xbbs21.virtualave.net/xbbs/up/src/up010.lzh
■347氏
  ▽サンプル掲示板
    http://takotubo.virtualave.net/bin/board.cgi
  ▽ソースコード
    http://xbbs21.virtualave.net/xbbs/up/src/up022.lzh
■570氏
  ▽サンプル掲示板
    http://maasa.antique.to/2ch/sample/index.html
■panton氏
  ▽ソースコード
   http://www.panton.f2s.com/bbs/lib/IndexedFile.html
   http://www.panton.f2s.com/bbs/lib/IndexedFile.pm.txt

2 :名無しさん@お腹いっぱい。:2001/05/03(木) 21:58 ID:???
弐編氏はどうした(ワラ

3 :panton:2001/05/03(木) 22:42 ID:???
ども。
俺のは下のURLに変えているので、
http://www.panton.f2s.com/bbs/lib/IndexedFile.pm
訂正させてください。
一応説明させていただくと、
データファイルの高速ランダムアクセスを、
インデックスファイルにより実現するモジュールです。
データの要素にはハッシュが格納できます。
構想中のBBSシステム用に作った物ですが、汎用のモジュールなので、
使ってみてバグを見つけてくれるとうれしい。

4 :名無しさん@お腹いっぱい。:2001/05/03(木) 23:23 ID:???
暇だからpanton氏のも試してみるかな。
347氏もそろそろハンドルを名乗るのがいいと思われ。
ほういちさんの所は止まってるなあ・・・
570氏のはどうだろう・・・・
gunzipさん最近見かけないな。病院が忙しいのかな?

5 :名無しさん@お腹いっぱい。:2001/05/03(木) 23:34 ID:???
>>2
絶対要らない。
perl板の汚点弐編

6 :名無しさん@お腹いっぱい。:2001/05/04(金) 01:03 ID:???
使るに突っ込んでいい?

7 :名無しさん@お腹いっぱい。:2001/05/04(金) 02:44 ID:???
>>6
使る?

8 :名無しさん@お腹いっぱい。:2001/05/04(金) 05:45 ID:???
「作ろう!」だな・・・・
一体どんな打ち間違いをしたのか・・・

9 ::2001/05/04(金) 08:20 ID:???
。。。。。。。コピペしたから気付かなかった。。。。。。

10 :81:2001/05/04(金) 08:22 ID:???
>>9
あう、重ね重ね申し訳ない・・・

11 :名無しさん@お腹いっぱい。:2001/05/04(金) 23:12 ID:???
誰もいないの?

12 :名無しさん@お腹いっぱい。:2001/05/04(金) 23:26 ID:???
>>11
(1) みんな黄金週間で遊びまわっている。
(2) 世間が黄金週間のうちに仕事の遅れをとりもどそうと必死。
私は(2)です・・・

13 :11(暇人):2001/05/04(金) 23:33 ID:???
>>12
頑張ってくだされ〜

14 :347:2001/05/06(日) 16:48 ID:???
>>4
名無しさんの逆ってのが良くてそのまま使ってましたが。。。
これじゃだめかな?

しばらくやれるかどうか。。。

15 :4:2001/05/06(日) 19:13 ID:???
>>14
なるほど・・・・言われてみれば確かに逆。
いやいやハンドルは何だっていいです。頑張って

16 :_gunzip@お仕事やめたい:2001/05/07(月) 06:04 ID:???
■■■■■■■□□□□□□□□□□□□□□□□□□□
0      20      40      60      80       100

■終わった
-IxAccessFile.pm (ログ、スレッド管理の入出力関係用)
-Article.pm (各投稿記事用クラス)
-post.cgi (1スレッド用・・・極めていいかげん)
-rm.cgi (投稿者/管理者記事削除)

□手を付けてない
-投稿制限 #後回し
-記事訂正 #コレは簡単
-admin.cgi (そのまま) #面倒くさい
-setup.cgi (そのまま) #たぶん要らない
-post.cgi (複数スレッド用) #時間無い

▽あるといいな(なくてもいいな)
Storable or FreezeThaw or Data::Dumper
▽気が向けば
-tmpl_parse.pl (テンプレートファイルからコードを書かせ・・・たいなあ)

#コメント
入出力関係のは出来ているので(一応)、後は割とラクダと思う。
GW殆ど(というか全く)休めず、時間が全くとれないので捗らん(ぐは)

17 :_gunzip@お仕事やめたい x 50:2001/05/07(月) 06:13 ID:???
>>panton氏
=line 248
>my $pointer = $self->_getpointer($id);
この部分は不要ですよね。既に$idからファイル内の位置が得られているのですから。
----------
あと、ドキュメントのBUGSとTODOに記載されている各項について
("バリューに改行が入っているデータは扱えない。"・・・とか)
何か書こうかと思ったけれど・・・ちょっと後回しにします。
#「配列、スカラーへの対応」とかはどうするのかなあ・・・と興味が。

18 :_gunzip@お仕事やめたい x 500:2001/05/07(月) 06:17 ID:???
248->253 だな。はぁ

19 :名無しさん@お腹いっぱい。:2001/05/07(月) 06:28 ID:???

  ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,・∀・) < あんまり無理するなよ
〜(___ノ   \_______________

20 :名無しさん@お腹いっぱい。:2001/05/07(月) 17:13 ID:???

  ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,・∀・) < 楽しみに待ってるぞ >>all
〜(___ノ   \_______________

21 :名無しさん@お腹いっぱい。:2001/05/09(水) 20:46 ID:???
みんな死んでる...........................................

22 :名無しさん@お腹いっぱい。:2001/05/09(水) 20:47 ID:???
0

23 :panton:2001/05/09(水) 22:30 ID:???
>>17 _gunzip氏
(248行目でしたが・・)確かにそうですね。修正します。

> ("バリューに改行が入っているデータは扱えない。"・・・とか)
> 何か書こうかと思ったけれど・・・ちょっと後回しにします。
> #「配列、スカラーへの対応」とかはどうするのかなあ・・・と興味が。

うーん、考えどころです。
StorableとかFreezeThawとか使っちゃえば、必然的にそこらへん
全て解決するし、もっと言えば、メッセージオブジェクトとか
突っ込んじゃえばさらに楽だよなぁ・・・とか。

24 :名無しさん@お腹いっぱい。:2001/05/10(木) 17:06 ID:???
皆さん忙しいんでしょうね

25 :age:2001/05/18(金) 18:49 ID:???
age

26 :名無しさん@お腹いっぱい。:2001/05/19(土) 09:58 ID:???
そして誰もいなくなった

27 :age:2001/05/22(火) 17:48 ID:VQJfqVeI
age

28 :名無しさん@お腹いっぱい。:2001/06/01(金) 16:13 ID:???
終わっちゃダメェ!!!!

29 :名無しさん@お腹いっぱい。:2001/06/02(土) 07:33 ID:???
長らくご愛顧頂き誠にありがとうございました。

===========終了===========

30 :名無しさん@お腹いっぱい。:2001/06/07(木) 14:41 ID:???
>>29 age

31 :名無しさん@お腹いっぱい。:2001/06/07(木) 15:35 ID:???
気を取り直して
=======================再開============================

32 :名無しさん@お腹いっぱい。:2001/06/07(木) 16:01 ID:???
特に2ch型とかにしなくてもいいから、とりあえず基本中の基本、
みたいなシンプルなヤツを誰か書いてくれんだろうか…
Perl上手い人ほど、わざわざシンプルなのって書かないんだよね。

33 :名無しさん@お腹いっぱい。:2001/06/07(木) 16:28 ID:???
いつぞやの七行BBS
#!/usr/local/bin/perl
%f=map{tr/+/ /;s/%(..)/pack("H2",$1)/eg;s/</&</;s/>/&>/;$_}split/[&=]/,
$ENV{QUERY_STRING};$f{n}||="名無し";open F,"+<bbs.dat";flock F,2;$e=
"$f{n} &>$f{m}<BR>\n"if($f{m});@e=($e,<F>)[0..20];seek F,0,0;print F @e;
print"content-type: text/html\n\n<title>BBS</title><h1>BBS</h1><form
action='bbs.cgi'><p>名前<input name=n value='$f{n}'><br>記事<input name=m
size=50><br><input type=submit></p></form><hr><p>@e</p><hr>";
__END__
>>32
シンプルだぞ(笑)

34 :名無しさん@お腹いっぱい。:2001/06/07(木) 20:12 ID:???
>>33 そのスクリプトすごい好き。7行なのに名無し機能まである。

35 :名無しさん@お腹いっぱい。:2001/06/07(木) 21:20 ID:???
>>33
元スレの25だけど、無駄なファイルアクセス避けるためには、
$e="$f{n} &>$f{m}<BR>\n"if($f{m});@e=($e,<F>)[0..20];seek F,0,0;print F @e;
は、下みたいにしたほうがいいかもね。
@e=<F>;if($f{m}){seek F,0,0;print F @e=("$f{n} &>$f{m}<BR>\n",@e)[0..20]}

36 :33:2001/06/07(木) 21:53 ID:???
>>35
なるほど。発言があったときのみ書き込むわけですね。

ぢつは33=元スレの20だけど、こりゃ20原案25作成ですね。
フォームの解析なんてホント目から鱗でした。
マジ勉強になります。

37 :32:2001/06/07(木) 22:44 ID:???
>>33
それ、スゴーク好きなんだけど、もうちょっと何か…(;´ー`)y-~~
でも勉強になりました。

38 :名無しさん@お腹いっぱい。:2001/06/07(木) 23:32 ID:???
Tiny BBSでいいじゃん?
http://yasu.asuka.net/soft/tinybbs.html

39 :名無しさん@お腹いっぱい。:2001/06/09(土) 00:41 ID:???
なんか7行見て引いちゃったんだけどさ
漏れみたいな素人がminibbsパクッタのでもいいかい?

40 :名無しさん@お腹いっぱい。:2001/06/09(土) 08:33 ID:???
>>38
誰か、Tiny BBSのソース上げておくれ。

41 :名無しさん@お腹いっぱい。:2001/06/09(土) 09:49 ID:???
>>40
なんで?落とせないか?

42 :名無しさん@お腹いっぱい。:2001/06/09(土) 14:42 ID:???
mx使って認証してるのか?
@以下のアドレスを@geocities.co.jpとかでDLしろよ

43 :名無しさん@お腹いっぱい。:2001/06/09(土) 16:10 ID:???
FTP ソフトで入れ。

44 :名無しさん@お腹いっぱい。:2001/06/09(土) 16:39 ID:???
>>39
use strictな掲示板ならどんなんれもいいのれすー

45 :rubbish_lister:2001/06/11(月) 22:47 ID:oKTfyTH6
panton氏のIndexedFile.pmを見ましたが、いいですねぇ。
BBSを作るのがかなり楽になりそうです。

恩恵に預かるだけでは良くはならないので、
ソース中で幾つか気になった点を書いておきます。


* line 154
これは
sub articles{ return @{ $_[0]->{_idxlist} } }
でいいのではないでしょうか。

* IO::File
IO::Fileはかなり大きいので使わずに済ませてもいいのでは?
CGIスクリプトとしての動作が前提なので、軽くしてまずいという事は無いかと。

* "$_"
気付いておられると思いますが、
所々暗黙の$_を使用していますね。
これもついでに。

46 :名無しさん@お腹いっぱい。:2001/06/11(月) 23:13 ID:???
>>45
素人&場違いで悪いんだけど
$_って駄目なの?

47 :rubbish_lister:2001/06/11(月) 23:30 ID:oKTfyTH6
>>46
いや、$_がダメってことは無いですよ。
ただ使うならばlocal宣言して欲しい…ということです。

# 消えるとまずいデータは極力$_に入れないようにしてはいますが

48 :46:2001/06/12(火) 00:23 ID:???
>>47
そういう意味なんすか
サンクス

49 :初期不良:2001/06/12(火) 01:00 ID:MAetbv9U
>>47
確かにそれ関係でばぐった時はちょっとやっかいだった

50 :名無しさん@お腹いっぱい。:2001/06/20(水) 02:05 ID:???
ほういち氏は何処行った?

51 :ウェブ作成初心者:2001/06/27(水) 00:45 ID:DrGg5Duk
PERLなんて奇特なもんしりゃーせんです、ハイ。
知ってるのは“REMEMBER PEARL HABOR”くらいッス。

www.tripod.lycos.comとかはどうやって ウェブサイトや掲示板を作るかよくわかりません。
とりあえずトライポッドに無料サイトを開設して掲示板を設置したいのですが、
ウェブ作成関連のプログラミングにめちゃ詳しい方教えてください。
メモ帳でcgiファイル?を作ってアップする?とか意味がわかるようでわからないです。

52 :名無しさん@お腹いっぱい。:2001/06/27(水) 09:08 ID:???
>>51 死ね。

53 :名無しさん@お腹いっぱい。:2001/06/27(水) 09:11 ID:???
>ウェブ作成関連のプログラミングにめちゃ詳しい方教えてください。

プ

54 :名無しさん@お腹いっぱい。:2001/06/27(水) 13:30 ID:???
>>51
知らなかったら勉強しろ。
ここでも逝け。
ttp://wakusei.cplaza.ne.jp/twn/

ネタニマジレスカナ

55 :名無しさん@お腹いっぱい。:2001/06/29(金) 02:23 ID:4xodowQE
いま掲示版作っています。

データファイルをCSVに使用と思ってるのですが、CSVって、クオーテーションマークだけをエスケープすれば委員ですよね。
あと、CRとかLFとかもエスケープしたいのですが、どうすればいいですか・?

<br>に変換するにはあんまり美しくない気がして。

56 :名無しさん@お腹いっぱい。:2001/06/29(金) 02:33 ID:4xodowQE
うん

57 :名無しさん@お腹いっぱい。:2001/06/29(金) 02:37 ID:???
>>55
パーサの仕様によっては、カンマもエスケープの必要有りでは?

58 :名無しさん@お腹いっぱい。:2001/06/29(金) 11:56 ID:HUBABICM
>>55
CRLFも、クオーテーションマークでくくれば、
エスケープの必要なし。

59 :58:2001/06/29(金) 11:57 ID:HUBABICM
惜しい、もうすこしでIDがBASICだったのに…

60 :名無しさん@お腹いっぱい。:2001/06/29(金) 14:32 ID:???
>>58
ただのBASICではなくてHu-BASICだというところが泣かせる。

61 :名無しさん@お腹いっぱい。:2001/06/29(金) 18:52 ID:???
>>58
改行はだめだろ、レコード区切りだから

ところで、CSVの仕様書ってどこかにあるの?

62 :名無しさん@お腹いっぱい。:2001/06/30(土) 20:10 ID:rUTTiUww
CSVについて
" " で囲みさえすれば、エスケープする必要があるのは、" 自身だけではないのでしょうか。

63 :名無しさん@お腹いっぱい。:2001/06/30(土) 20:18 ID:???
掲示板のデータファイルを考えているのですね。
CSVのモジュールを使えば、そんなこと考えなくてもいいのでは。

64 :auctionSys.CGI:2001/07/01(日) 00:15 ID:tVWGPIcU
◆ネットオークションシステムCGIレンタル◆

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

ヤフーオークションの様なネットオークションを自分で経営することが
できたら!そんな、あなたの思いを実現する画期的なプログラムが出来
ました!CGIプログラムを貼り付けるだけで初心者でも安心!
詳しくは以下のサイトまで!

http://members.fortunecity.com/electricsun/index.html

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

65 :名無しさん@お腹いっぱい。:2001/07/01(日) 09:11 ID:Q4XVcLok
uzee

66 :panton:2001/07/04(水) 04:10 ID:iYqhBR52
>>45 rubbish_lister様
遅レスで申し訳ないです。

> * line 154
> これは
> sub articles{ return @{ $_[0]->{_idxlist} } }
> でいいのではないでしょうか。

あれ?こうすると、配列でなくリストで返されて、スカラーコンテキストだと、
採用されるのは要素数ではなく最後の要素になっちゃうと思ったんですけど、
違うんですね。勉強になりました。
オーバーヘッド的にはどうなんでしょう?
挙動から予想すると、配列全部ではなく、
要素数が帰ってるみたいなので、大丈夫なんでしょうか?

IO:Fileはそのとおりです。
以前TODOに入れてたような気がしたけど、ないですね。TODOで。

$_ は個人的に混乱しない限り使わせていただきます。
Perl大好きっ子なんで。

67 :名無しさん@お腹いっぱい。:2001/07/06(金) 22:51 ID:???


  ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,・∀・) < さっぱりだよ。
〜(___ノ   \_______________

68 :名無しさん@お腹いっぱい。:2001/07/08(日) 17:52 ID:???
初歩的な質問ですみませんが、
データファイルって、読み込みの時にもロックした方がいいですか?

それから、レスを多次元配列に入れてから書き出したいのですが、
配列全体のサイズが100KBとかになっても問題ないですか

69 :名無しさん@お腹いっぱい。:2001/07/09(月) 00:38 ID:vYQpj6T6
>>68
おれはflockが使えるときは読み込みのときでも
flock(FILE, LOCK_SH) ってやってるよ。
ただしsymlinkを使ったりする場合は読み込みではロックしない。

配列サイズは、サーバのメモリ容量とアクセス頻度を考慮して
判断すべきだから一概にいえないけど、
うちの環境では100KBならまず気にしない。1MBだと気にするかも。

70 :名無しさん@お腹いっぱい。:2001/07/09(月) 10:12 ID:8Wkoq3g6
>69
気にしてください、お願いします

71 :名無しさん@お腹いっぱい。:2001/07/09(月) 10:21 ID:???
専用鯖なんじゃないの?
共用鯖だったら締め頃したくなるところだが

72 :名無しさん@お腹いっぱい。:2001/07/09(月) 10:34 ID:???
>>70
そっか、そうすると
たとえばデータファイルで100行分、まあ、レス100を表示するとすると、
データファールから1行読み込んで、書き出し、1行読み込んで書き出し
みたいにするのが現実的デスカ。

たとえばスレッドID、はじめのレス番号、最後のレス番号を与えると、
そのレスの内容を配列で返す。みたいな関数を作って、というのが楽そうだったのだけど、
あまりおすすめできないと言うことですね。

73 :名無しさん@お腹いっぱい。:2001/07/09(月) 11:06 ID:???
そうすると、>>69はファイルロックの話も含めて、ネタか?

74 :名無しさん@お腹いっぱい。:2001/07/10(火) 22:56 ID:???
>>73
ファイルロックは必要。しないとログファイル壊れるよ。

75 :名無しさん@お腹いっぱい。:2001/07/10(火) 23:59 ID:???
更新時に、

lock
更新対象読み込み
更新対象変更
更新対象書き込み
unlock

すれば、壊れないよ。
ただ、更新中に読む奴がいたら表示は狂う。

いちばんいいのは、全部一時ファイルに書き出して一気にrename。
これなら事実上ほとんど表示も狂わない。
ただ、読み込みアクセスが多いと更新失敗する確率は高くなるけど。

76 :panton:2001/07/14(土) 06:17 ID:8g/6IMoE
オヒザシブリデゴザイマス
IndexedFile.pm を更新しました。
http://www.panton.f2s.com/bbs/lib/IndexedFile.pm
http://www.panton.f2s.com/bbs/lib/IndexedFile.html

IO::Fileの使用廃止と、色々バグ修正があります。
前のバージョンには重大なバグがありました。

見つからなかったってことは、全然使われてねーんだな。
っと思って、手抜きテスト用ボードなんか用意してみました。
http://www.panton.f2s.com/bbs/sbbs.txt
http://www.panton.f2s.com/bbs/sbbs.txt (ソース)

たいしてテストしてないのでまだバグあるでしょう、・・見つけてよーん。

77 :panton:2001/07/14(土) 06:19 ID:8g/6IMoE
ぶっ、やっちまった。
http://www.panton.f2s.com/bbs/sbbs.cgi
テスト用ボードはこちらでございます。

78 :_gunzip:2001/07/14(土) 08:49 ID:???
では二つ三つ.......。
--------------------------
キー名に英数字以外のものが含まれているとおかしくなりますね。
("@threads"とか"perl-user"とか。)
196行目の
>my %hash = ('DUMMY', split /^(\w+?):/m, readline($self->_dathandle));

my %hash = ('DUMMY', split /^(.+?):/m, readline($self->_dathandle));
にすれば回避は出来ますが...。
--------------------------
modify_row()使用時、更新されたデータは、
データファイルの末尾に追加+インデックス更新されるわけですが、
頻繁に同じ項目を更新するような場合、ファイルの肥大化が問題にならないかな....。

例えば、掲示板のスレッド毎に情報をハッシュの形で格納してある場合
%thread = (
    count => 77, #投稿数
    subject => "【Perl】掲示板を使ろう!",
    key => 988890976,
    server => "http://corn.2ch.net/",
    dir => "php"
);
投稿がある→そのスレッドの情報を取得( get_by_id() )→(何らかの処理)
→投稿数をインクリメント→スレッド情報更新( modify_row() )
Ex.
$thread = $logfile->get_by_id($id);
$thread->{ count }++;
$logfile->modify_row($id, $thread);
とすると、投稿の度にハッシュ$threadの内容は末尾に追加されるので
(スレッドの情報ログのサイズ) = ( (スレッドの情報サイズ) * (投稿回数) ) * (スレッド数)
になってしまいますね。

・・・と、ここまで書いたときにsynchronize()を思い出した....。
例えば、スクリプト側で
if( $thread->{ count }++ % 5 ){
     $logfile->synchronize();
}
としておけば問題ないね。

いくらかのパディングを余分に取っておいて、
更新された情報が元の場所に収まりそうならそのまま上書きし、
無理なら末尾に回す、とするのもイイかもかも。

79 :_gunzip:2001/07/14(土) 08:49 ID:???

あと、198行目の
>chomp $hash{$_} foreach keys %hash;
は、スライスで
chomp @hash{ keys %hash };
と書けたりします。(参考までに)

80 :名無しさん@お腹いっぱい。:2001/07/15(日) 07:23 ID:???
あっげ

81 :名無しさん@お腹いっぱい。:2001/07/16(月) 17:17 ID:???
はじめまして。現在機能優先で掲示板を作っていて、コードの
効率は後回し中なのですが、いくつか質問があります。

・一般ではOpenでテキストを読み書きするのが多いようですが、
(MINIBBS程度の規模でも)TieやDBOPENを使ったものが見かけないのは
なぜですか?負荷について問題があるのでしょうか?

・発言データに関して、追加書き込みモードを基本にしてもファイルロックは
必要でしょうか?またどの程度の堅牢性を期待すべきでしょうか?

・読み出しに関して、基本的なスクリプトでは@LINE=<FILE>と
していますが、While(<FILE>)やその他の方法のうち、お勧め
なのはどれでしょうか?また、Seekを使った読み出しについて
教えてくださいませんか?

82 :panton:2001/07/16(月) 19:29 ID:YjhPdxYw
>>81
ageで書いてもいいんじゃないかと思うけどなんでsage?

> ・TieやDBOPENを使ったものが見かけないのはなぜですか?
>  負荷について問題があるのでしょうか
掲示板の場合リニアなデータ構造が多いのでハッシュがメインの
タイは不向きといえば不向き。配列を結びつける事も出来るが、
インターフェイスが不完全。

> ・追加書き込みモードを基本にしてもファイルロックは
>  必要でしょうか?
必要です。堅牢性についてはデータの重要性によります。

> ・読み出しに関して、基本的なスクリプトでは@LINE=<FILE>と
> していますが、While(<FILE>)やその他の方法のうち、お勧め
> なのはどれでしょうか?
>>69あたりからを読んでください。
seekに関しては、固定長なら使えるけど、掲示板のように
データ長が不定なデータだと不向き。

そこら辺を解決するためにIndexedFile.pmを作ってるんですが・・・

83 :名無しさん@お腹いっぱい。:2001/07/16(月) 19:58 ID:SlpU2cdo
>>82
age忘れです。

リニアな構造ということですが、発言IDやTIMEをキーにして
残りは従来のままスカラーでもよいと思ったんですが、、、。
負荷についてわからないというのは、ハッシュでは数百発言とも
なると負荷がかかるのかとか、あるいは値のサイズによって
負荷が変わるのかとかも考えたのですが。

追加書き込みモードについては、一般に恐れているのは
全部読み出し>退避+追加>全部書き出しの過程での全データ
消失だと思うので、追加書き込みでの危険性があまり認識
できないのです。

84 :panton:2001/07/17(火) 15:17 ID:/BDSxh5c
>>83
リニアというのは、掲示板は発言の並びに順番があるということです。
TIMEなどをキーにしてkeysでsortなんかをすることも出来ますが、
DBMの起動オーバーヘッドなんかを考えると、
あえて使う必要も無いかなという程度です。
記事数や値のサイズによる負荷の増加は気にするほどではないと思いますが、
よく知りません。

ファイルロックについては、いろんなところで調べてみるといいと思います。
追記モードでも同時に起こると、ファイルの同じ位置に書き込もうとして
データがおかしくなります。

85 :名無しさん@お腹いっぱい。:2001/07/17(火) 17:07 ID:sUEgTyfs
>>84
ありがとうございます。

あと他にも、疑問が生じたときに、理由は自分で考えてみたのですが
これでいいのでしょうか?

while (<FILE>)よりも@line <FILE>のほうが、読み込み時に
早くcloseを行うのでよさげ
・・・・>読み込み時は共有可、書き込み時はどっちみちロック

ANHTTP環境ではflock不可
・・・・>Renameロックかflockコメント化で我慢

全読み>全書き込みvs追加モード
・・・・>ファイルアクセスより管理性重視?

レスポンスお願いします。

86 :名無しさん@お腹いっぱい。:2001/07/17(火) 19:00 ID:???
特定の行を抜き出すとき、

$line = (<FILE>)[5];

っていう方法はどうなんですかね。

87 :名無しさん@お腹いっぱい。:2001/07/17(火) 19:12 ID:HRgjK2II
>>86
それは最悪でしょう。
そいういうものこそDB_FileのDB_RECNOを使うほうが良いと思いますがね。

88 :名無しさん@お腹いっぱい。:2001/07/17(火) 19:13 ID:???
なして最悪?

89 :名無しさん@お腹いっぱい。:2001/07/17(火) 22:22 ID:???
>>85
> while (<FILE>)よりも@line <FILE>のほうが
なんでそんな結論になったのか知らないけど、普通ダメ。過去ログ読めよ。
> ANHTTP環境ではflock不可
HTTPDとflockは関係ありません。
> 全読み>全書き込みvs追加モード
質問の意味がわかりません。

なんか基本的なところがわかってないんじゃない?
CGI-MLとかの過去ログでも漁って勉強してきましょう。

>>88
全部読み込んでから[5]だけ残して他は捨てるっていう動作。

90 :名無しさん@お腹いっぱい。:2001/07/18(水) 01:34 ID:???
>>85
> while (<FILE>)よりも@line <FILE>のほうが、読み込み時に
> 早くcloseを行うのでよさげ
いくらclose()したって、ねぇ…。
89さんの言う通り、避けるべきかと。
「負荷」とか「メモリ」という言葉を(以下略

91 :名無しさん@お腹いっぱい。:2001/07/18(水) 13:28 ID:aJuOjafs
>>90
それは今になってみたら分かります。が、
初心者はこんなことを思っていたという、、、、。

>> ANHTTP環境ではflock不可
>HTTPDとflockは関係ありません。
御免なさい、WIN95+ActivePerl+〜というべきでした。

>> 全読み>全書き込みvs追加モード
>質問の意味がわかりません。
何で追加モードがあるのに、わざわざ全読み全書き込みするのか、という
ことです。

92 :名無しさん@お腹いっぱい。:2001/07/18(水) 19:10 ID:???
>>91
つまり貴方には「全読み込み+全書き込み」と「追加書き」が同じ様に思えると?
正直ワケ分かりませんが。

93 :名無しさん@お腹いっぱい。:2001/07/19(木) 04:20 ID:???
>>91
追加は追加。増える一方。
書き換えも行わない。

全読み全書きは、中途での処理の可能性を残している。
本当に全部書いてるのか?
加えて、書き換えてるんなら同じじゃない。

実際にテストして考えてから書き込んでくれ。

94 :名無しさん@お腹いっぱい。:2001/07/19(木) 04:23 ID:???
>>91
flockは evalかけろ。

95 :名無しさん@お腹いっぱい。:2001/07/19(木) 13:12 ID:???
(既存の掲示板スクリプトは)何で追加モードが・・・
ってこと?
そういうのばかりでもないし、そうする必要があるのかもしれないし、
ただ馬鹿なだけかもしれない。
どっちにしろ他人のスクリプトなんてどうで良い。

96 :名無しさん@お腹いっぱい。:2001/07/19(木) 15:48 ID:???
>>94
flockはevalかけるな。

97 :名無しさん@お腹いっぱい。:2001/07/19(木) 17:50 ID:???
.

98 :名無しさん@お腹いっぱい。:2001/07/19(木) 19:13 ID:FUSlV7zU
>>95
納得。 レス感謝

あとはレス行為に感謝

99 :名無しさん@お腹いっぱい。:2001/07/19(木) 21:37 ID:1tfXBWXc
>>96 >>94
どっちなの

100 :名無しさん@お腹いっぱい。:2001/07/19(木) 21:44 ID:???
eval{flock(FILE,2)};
eval{flock(FILE,8)};
flockはevalをかければ非対応の環境でも致命的エラーにならない。

101 :名無しさん@お腹いっぱい。:2001/07/19(木) 21:54 ID:???
そんな貴方に
set PERL5OPT=-m-flock
flock.pmは自分で用意してね♥

102 :名無しさん@お腹いっぱい。:2001/07/20(金) 00:21 ID:???
>>100
その代わり実は効いていないのに気がつかない可能性がある

103 :名無しさん@お腹いっぱい。:2001/07/20(金) 01:19 ID:AwYw1thE
#!/usr/local/bin/perl
use CGI $a=new CGI;print"Content-type: text/html\n\n<form action=n.cgi>";
print"<input name=n><input name=t>\n";$n=$a->param('n'),$t=$a->param('t');
if($t){$t=~s/,|<|>|:/*/g;if(!$n){$n="名無しさん@お腹いっぱい";}open(I,">>y"),print I"$n,$t\n";}
open(I,"y"),@I=<I>;for($i=$#i;$i>$#i-10;$i--){($j,$k)=split(/\,/,$I[$i]),print"<hr>$j: $k";}

5行

104 :103:2001/07/20(金) 01:29 ID:AwYw1thE
一時間で書いたから最低なソースだ。
素人丸出し。
でも一応動く。
動けばいいよね。
だめ?

105 :名無しさん@お腹いっぱい。:2001/07/20(金) 01:32 ID:WE74UShE


106 :名無しさん@お腹いっぱい。:2001/07/20(金) 01:34 ID:WE74UShE
あっ 掲示板か ゴメ

107 :わ、:2001/07/20(金) 03:36 ID:O.8zSDuM
age

108 :103:2001/07/20(金) 21:47 ID:AwYw1thE
#!/usr/local/bin/perl
use CGI $a=new CGI;print$a->header,"<form action=n.cgi><input
name=b><br><input name=c>";($b,$c)=($a->param('b'),$a->param('c'));
if($c){$c=~s/<|>|:/*/g;if(!$b){$b="名無しさん";}open(A,">>d");
print A"<hr>$b:$c\n";}open(A,"d");@e=<A>;@f=reverse(@e);print @f;

少しだけ短くなったかな?

109 :103 = 108:2001/07/20(金) 22:30 ID:AwYw1thE
なんかアドバイスきぼーん。
もっと短くしたいです。

110 :名無しさん@お腹いっぱい。:2001/07/20(金) 22:33 ID:???
CGI.pmをつかって「もっと短く」と言われてもなぁ…と思ってしまう。

111 :103:2001/07/21(土) 10:50 ID:???
#!/usr/local/bin/perl
use CGI $a=new CGI;print$a->header,"<form><input name=b><br><input name=c>";
($b,$c)=($a->param('b'),$a->param('c'));if($c){$c=~s/<|>|:/*/g;if(!$b){$b="名無し";}
open(A,">>d");print A"<hr>$b:$c\n";}open(A,"d");@e=<A>;@f=reverse(@e);print @f;

<form action=n.cgi> => <form> #actionはデフォルトで自分自身らしい。
名無しさん => 名無し #これはどうでもいいか・・・。
これで横に長いが何とか4行

112 :JAPU:2001/07/21(土) 16:18 ID:???
どうでもよい話かもしれないが、actionは#REQUIREDです。

113 :名無しさん@お腹いっぱい。:2001/07/21(土) 17:04 ID:???
>>112
DOCTYPE宣言がない以上ほんとにどうでもよい話ですね。

114 :103:2001/07/21(土) 20:30 ID:???
#!/usr/local/bin/perl
use CGI $a=new CGI;print$a->header,"<form><input name=b>";$b=$a->param('b');
if($b){$b=~s/</</g;open(A,">>c");print A"$b";}open(A,"c");print<A>;

これ以上はむりかな。
だんだん飽きてきた。
つーかこんなのは掲示板じゃない。

115 :名無しさん@お腹いっぱい。:2001/07/26(木) 11:54 ID:.3Y7gM7s
何で止まっちゃったの?

116 :JAPU:2001/07/26(木) 13:52 ID:???
>>113
一応補足しておくと、action が #REQUIRED である限りクライアントによってはうまく動作しないことがあるかも知れないという意味を含めていました。

117 :名無しさん@お腹いっぱい。:2001/07/27(金) 20:56 ID:6tE5j.uU
JAPU死ね

118 :名無しさん@お腹いっぱい。:2001/07/27(金) 21:47 ID:???
>>117
いきなりなんなんだチミわ

119 :名無しさん@お腹いっぱい。:2001/07/27(金) 21:48 ID:???
JAPUさん、負けないで。

120 :名無しさん@お腹いっぱい。:2001/07/27(金) 22:43 ID:???
>>118
ただの夏房だから放置が吉。

121 :panton:2001/08/19(日) 03:50 ID:Mz6GQnDY
沈みすぎなのでアゲ。

IndexFile.pm改め、IxFile.pmを作りました。
ハッシュだけでなく配列やスカラなどにも対応。
データ構造が変わったので、IndexedFile.pm とはデータ互換性なしです。
詳しくは、
http://www.panton.f2s.com/bbs/lib/IxFile.html
http://www.panton.f2s.com/bbs/IxFile.tar.gz (ブツ)
http://www.panton.f2s.com/bbs/sbbs.cgi (テスト用掲示板)

122 :名無しさん@お腹いっぱい。:2001/08/24(金) 05:23 ID:DAq2T8i2
何気にVerアプ期待してまっせ

123 :名無しさん@お腹いっぱい。:2001/08/24(金) 17:32 ID:???
http://script.lovely.to/bbs/infolng.cgi?print+200108/01080035.txt
ほういち氏発見!連行せよ。

124 :xx:2001/08/24(金) 17:38 ID:???
xxx

125 :名無しさん@お腹いっぱい。 :2001/08/24(金) 18:02 ID:???
あ、ホントだ (^^
開発に疲れちゃったんだろーなー

126 :名無しさん@お腹いっぱい。:2001/08/24(金) 19:48 ID:???
>>ほういち氏
八月半ばに他のQ&A-BBSでも見かけたよ。
でも2chにはこない…。

127 :名無しさん@お腹いっぱい。:01/09/07 18:48 ID:bc3oxQQc
定期age

128 :名無しさん@お腹いっぱい。:01/09/08 02:44 ID:???
タイトルのtypo発見した、ちょっとトクした気分だ。。。

129 :名無しさん@お腹いっぱい。:01/09/10 19:41 ID:72uN3czc
use base 'IxFile';で継承すると
殆どのフィールドを継承できない(フィールド名が_で始まっている為)のですが、
それは仕様ですか?

130 :panton:01/09/10 20:07 ID:???
お、意外にも使おうとしている方が・・・
仕様と言えば仕様ですね。
お好みで適当に変えちゃってください。
ただ、今全面的に仕様変更考えてるので微妙です。
特に、インデックスの内部保持方法とその保存形式、
ハッシュや配列へのTieインターフェイスとかいろいろ。
仕事忙しいのでいつになるかわからないけど・・・
なんか意見あったら言ってください。

131 :名無しさん@お腹いっぱい。:01/09/10 21:52 ID:???
ナルホド。
弄り始めたばかりですし、特に今のところ意見は無いです。
応援してますんで頑張ってください。

132 :名無しさん@お腹いっぱい。:01/09/12 16:10 ID:Hityt.0Q
age

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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)