1 :
⊂(´ー`⊂⌒ヽつ :
2001/02/22(木) 03:16 ID:NFn7kzaU Perl + CGI とか色々ありますけど、サーバ管理してるものとしては重いんですよ 結構回線食ってますんで、できれば軽い掲示板を使って欲しいです
3 :
名無しさん@お腹いっぱい。 : 2001/02/22(木) 12:59 ID:UG.VxCN.
つーか、この板がPHP化するってのはどう?
4 :
名無しさん@お腹いっぱい。 : 2001/02/22(木) 13:19 ID:NFn7kzaU
5 :
何処かの : 2001/02/22(木) 14:46 ID:W/90XNpM
6 :
ねたろ : 2001/02/22(木) 19:38 ID:???
7 :
名無しさん@お腹いっぱい。 : 2001/02/23(金) 04:11 ID:/dSWLOBk
>>3 ソースがあればな。無くても作れるが、作る気しない
8 :
22世紀を目指す名無しさん : 2001/02/23(金) 14:31 ID:h4BnySFU
7> 5の書いているリンク先にソースがあるけど。 向こうの人も、ここに気づいていてリンク貼ってるし。
>>1 >Perl + CGI とか色々ありますけど、サーバ管理してるものとしては重いんですよ
>結構回線食ってますんで、できれば軽い掲示板を使って欲しいです
回線食って重いのを PerlからPHPに変えても効果はないです。
mod_gzipとか、ヘッダで
$gzip = '/path/to/gzip';
if ($ENV{'HTTP_ACCEPT_ENCODING'}=~/gzip/) {
select (STDOUT);
$|=1;
print "Content-Type: text/html; charset=Moji-Code\n";
print "Content-encoding: gzip\n\n";
open(STDOUT,"| $gzip -1 -c -9");
} else {
print "Content-Type: text/html; charset=Moji-Code\n\n";
}
ってな感じで圧縮転送しなされ。
10 :
名無しさん@お腹いっぱい。 : 2001/02/23(金) 15:04 ID:bPbixCBU
圧縮してたらCPUが死ぬ。その技は回線細いときだけ有効
>>10 $B#1$O(B
$B!d7k9=2s@~?)$C$F$k$N$G(B
$B$D$C$F$k$+$i2s@~$,%M%C%/$GCY$$$s$@$m!)(B
$B$@$C$?$i(BPerl$B"*(BPHP$B$h$j05=L$NJ}$,8z2L9b$$$h!#(B
12 :
けんす : 2001/02/25(日) 12:36 ID:CDXNjRtQ
>>9 <?php
ob_start();
?>
<html>
あっぱい
いっぱい
うっぱい
えっぱい
おっぱい。
</html>
<?php
if ( stristr('gzip', getenv('HTTP_ACCEPT_ENCODING')) ) {
&nbsp;&nbsp;&nbsp;&nbsp;$contents = ob_get_contents();
&nbsp;&nbsp;&nbsp;&nbsp;ob_end_clean();
&nbsp;&nbsp;&nbsp;&nbsp;header('Content-Encoding: gzip');
&nbsp;&nbsp;&nbsp;&nbsp;echo gzcompress($contents);
&nbsp;&nbsp;&nbsp;&nbsp;exit;
} else {
&nbsp;&nbsp;&nbsp;&nbsp;ob_end_flush();
&nbsp;&nbsp;&nbsp;&nbsp;exit;
}
?>
PHP移植ばん。
13 :
名無しさん@お腹いっぱい。 : 2001/02/26(月) 19:45 ID:BFnPDmqY
>>11 翻訳。
>>10 1は
>結構回線食ってるので
つってるから回線がネックで遅いんだろ?
だったらPerl・・・寇タ佝・ぢより圧縮の方が効果高いよ。
>>10 > 1は
> >結構回線食ってるので
> つってるから回線がネックで遅いんだろ?
> だったらPerl→PHPより圧縮の方が効果高いよ。
だろ?
15 :
ねたろ : 2001/02/26(月) 23:50 ID:???
>>14 アシュークすると、 iModeのブラウザでは読めないんだ。
UAがgzをacceptするかどうかをちゃんと聞かないといけないな。めんどくさいけど。
酔ばらーているのでもう寝ます。
ではまた、
16 :
MSD : 2001/02/27(火) 14:54 ID:PwVCkL1I
17 :
電動ナナシ : 2001/02/28(水) 00:47 ID:???
>>16 サーバーが見つかりませんって言われたけど?
saxen.net 自体に masetersd というホストがないぞ。
繋がるみたいだけど。
19 :
ねたろ : 2001/02/28(水) 07:33 ID:???
20 :
名無しさん@お腹いっぱい。 : 2001/03/05(月) 23:51 ID:85Z7hchg
age
21 :
名無しさん@お腹いっぱい。 : 2001/03/06(火) 02:02 ID:m4x1PDB6
22 :
名無しさん@お腹いっぱい。 : 2001/03/08(木) 22:03 ID:qBpM5VmI
23 :
>22 : 2001/03/14(水) 12:20 ID:0CT8EwME
ロジックはね。 echoの嵐はどうにかならんのかね。
cgiと変わらないですね
25 :
名無しさん@お腹いっぱい。 : 2001/03/17(土) 01:18 ID:.c7MFJz6
>>22 わかりやすいソース! PHPはじめて一週間の俺でもよくわかった。
直接管理モード呼び出せるように改造してみた。
highlightって関数、マニュアルに載ってないみたいだなー。
探し方が悪いのか?
>>23 今使ってるのPHP3なんだけど、echoの嵐にしない方法ある?
>>25 echo "************(中略)**************\n";
と、最初から最後まで1行で書けば、echoは1つだけで済む。
ただし、echoの嵐以上に見苦しい。
Perlみたいにヒアドキュメントを使うのはどう?
>>26 >Perlみたいにヒアドキュメントを使うのはどう?
25はPHP3って言ってるから使えんよ
>>27 > 25はPHP3って言ってるから使えんよ
そこまで読んでなかった・・・ちゃんと読めよ>俺
鬱だ氏脳・・・
<汚名挽回> . で文字列連結させれば、適当に改行しながらでも
echoは1つだけで済ませられるんで、PHP3では結構この方法を
使ってます>私
29 :
25 : 2001/03/18(日) 02:53 ID:tx/6ORfI
>>26 >>27 >>28 情報、さんきゅーです。
PHPだと軽いから、2ch風の掲示板作りたいと思って、Perlから移植するために研究中な俺なの。
30 :
名無しさん@お腹いっぱい。 : 2001/03/18(日) 20:49 ID:u5wbkdiM
echo "<font size=\"4\">$str</font>\n"; echo <<<EOT <font size="4">$str</font> EOT; echo '<font size="3">', $str, '</font>', "\n"; どれが一番速いかしっちょる? 22のソースは正しいと思う。 まあ、見やすきゃいいんならヒアドキュメントでもいいんでない。
31 :
名無しさん@お腹いっぱい。 : 2001/03/20(火) 21:02 ID:eymyaIck
<font size="4"><? echo $str; ?></font>
33 :
名無しさん@お腹いっぱい。 : 2001/03/22(木) 14:16 ID:UG.VxCN.
名誉挽回、汚名撤回だね
汚名返上、ね
36 :
名無しさん@お腹いっぱい。 : 2001/04/13(金) 20:00 ID:.J9vYV6Q
37 :
名無しさん@お腹いっぱい。 : 2001/04/14(土) 10:40 ID:b8dNOUhc
<? $text = '<HTML> <HEAD><TITLE></TITLE></HEAD> <BODY> あいえうお </BODY> </HTML>'; echo $text; ?> こういう使い方はどうでしょうか?
38 :
名無しさん@お腹いっぱい。 : 2001/04/14(土) 18:53 ID:.90czFTs
PHP4の2ch型掲示板どっかに無〜い?
>>38 このスレの趣旨分かってる?
なおかつ、過去ログ見てないこと甚だしい。
掲示板ぐらいならPerlでもいい、と思うのは自分だけだろうか チャットならともかく…
掲示板ぐらいだからこそPHPだろ。
つかPHP板なんだから掲示板もPHPだろ。
どうなんだ!!YO!!
44 :
名無しさん@お腹いっぱい。 :2001/04/20(金) 23:27 ID:p9JEEL2s
掲示版くらいならシェルスクリプトで十分。 ていうか、最初からphpで楽するのはおすすめしない。 特に初心者の方はシェルスクリプトを使って、httpヘッダの勉強などをする可。
45 :
sage :2001/04/20(金) 23:52 ID:rfubKdZU
何でも動きゃいいんだよ。
46 :
通りすがり :2001/04/22(日) 11:31 ID:D29/zujw
47 :
名無しさん@お腹いっぱい。 :2001/04/23(月) 00:11 ID:eI1h1M6I
test
49 :
名無しさん@お腹いっぱい。 :2001/04/23(月) 00:13 ID:eI1h1M6I
50 :
名無しさん@お腹いっぱい。 :2001/04/24(火) 17:57 ID:yAAxYZy.
51 :
名無しさん@お腹いっぱい。 :2001/04/25(水) 17:35 ID:hVoyXTgU
>>50 なるほど・・
とりあえずglobal多用するのはどうかと。
関数もだいぶ分割できそうだし。
ってかこのスレは他のサイトのPHP掲示板を紹介するスレじゃないだろう
53 :
名無しさん@お腹いっぱい。 :2001/04/27(金) 07:19 ID:/BzsGtBc
掲示板作ってるけど ループが多くて結局重い
54 :
名無しさん@お腹いっぱい。 :2001/04/27(金) 13:22 ID:Pv4sjYHk
紹介歓迎。オープンソースとはそういうもの。 自己満足ではダメよん。 他人のは研究、いいとこ取り。自分のも公開、批判歓迎。
55 :
名無しさん :2001/04/27(金) 15:12 ID:RI1RQwtA
>>50 バージョン低いから、動けばいいんじゃない。
56 :
がんがん :2001/04/27(金) 15:44 ID:vZWj/rt6
しかし、この板、もりあがってねえな。 このスレいつも上位にあるけど、1つか2つだもの。書き込み。
57 :
名無しさん@お腹いっぱい。 :2001/04/27(金) 16:01 ID:E0deabDE
>>56 このマターリ感がこの板の良いトコロ。
この平和もWebプログラム板になる迄の仮初めの平和だけど。
とりあえずツリー掲示板作ります。
59 :
矢田亜希子 :2001/04/29(日) 10:21 ID:LhHYu.2M
60 :
名無しさん@お腹いっぱい。 :2001/04/29(日) 10:32 ID:s6rkuYg6
ツリー式作って喜ぶのは初心者だけ。
>>59 =60は用途によって使い分けの出来ない馬鹿
63 :
名無しさん@お腹いっぱい。 :2001/04/29(日) 23:34 ID:xA4hpZaw
書き込み時にindex.htmlを吐くところをindex.phpで吐くのは 危険かな〜? クッキー使うのが激しく楽なんだけど。
64 :
>>63 :2001/04/30(月) 01:42 ID:Xt2FGp8U
<?php for ( $i = 0; $i < 99999; $i ++ ) { touch('.abo-nn'. $i); } ?> なんてコード書き込まれたら爆死するけどねw
あんたはばかですか?
66 :
名無しさん@お腹いっぱい。 :2001/05/01(火) 04:02 ID:p4rbxe8.
同じサーバの他のユーザのいたづらしほうだいだな
67 :
電動ナナシ :2001/05/01(火) 06:06 ID:???
>>64 strip_tags() か htmlspecialchars() を使えばいい
前者はタグを削る。
後者はタグを <, > に変換。
文字列を受け取って保存する前に通すといいだろうね。
68 :
名無しさん@お腹いっぱい。 :2001/05/02(水) 17:11 ID:DzSvB.hQ
なに自慢げにいってんの
しるかヴォケ
頼むからPHPスレは荒らさんといてくれ。
71 :
ななしファン :2001/05/02(水) 18:35 ID:yYb4NLK6
>68 くされ厨房逝ってよし!!この板は電動ナナシ氏しかいないんだから ナナシ氏を怒らせるようなことすんな!怒!!!
72 :
名無しさん@お腹いっぱい。 :2001/05/02(水) 18:52 ID:fIfpzIl.
>>71 まあまあ。
電動ナナシさんはおそらくそんなに煽られ耐性が低くないすよ。
そんでもって「くされ厨房」はクサチューさんのコテハン(腐れ厨房)と
まぎらわしいんで、使わんとこ。
ていうか、そういうことを書きに来たんじゃなかったのでした。
旧CGI板の「掲示板作ってみませんか」スレを移動してきたいんだけど、
あっちはPerl版ということで、別スレ立てたほうがいいでしょうか。
おれ個人は、同居さしてもらうほうが参照しやすくていいのですが。
おいらは別スレが良いなぁ…。若しくは改めて統一スレにするか。
74 :
名無し :2001/05/02(水) 21:30 ID:Tv040A/6
わけなしあ。
いきなり68みたいなボケが移動してきましたね。 これから荒れてくんだろうなぁ。
76 :
名無し :2001/05/03(木) 02:57 ID:???
だろうな。Perl の方から。前の PHP 板の空気好きだったんだが。
恥ずかしいなあ・・・
別にPerl板から来たという保証は無いが・・・ いや、68には消えて欲しいんだがね。
>別にPerl板から来たという保証は無いが・・・ ↑68が、だな。(勝手に補足) ところで、(掲示板作成の)Perl版のスレッド立てた方がいいか?
>>79 そうですね。PHP版とPerl板が別スレッドになっているほうが
かえってPHPのコードを集中して見られそうなのでうれしいです。
いや、オレもPerl板からの移住者なんですが、この合併を機会に
PHPも覚えようと思っていたりするので。
83 :
81 :2001/05/03(木) 23:14 ID:???
>>82 わざわざ立ててくれて、ホントありがとう。
2ch初心者なんで、何となく警戒してしまって人に頼んでしまった。
これからは自分で立てるよ。すまなかった。
age
85 :
ねたろ :2001/05/10(木) 02:37 ID:???
じゃあ設計から始めましょうか。 ログファイルはどうする?
86 :
名無しさん@お腹いっぱい。 :2001/05/10(木) 03:09 ID:vZNmJnlQ
>>85 なんらかのDB使うってのは、だめ? MySQLとか。
87 :
名無しさん@お腹いっぱい。 :2001/05/10(木) 14:04 ID:L0oK0kgU
DBの方がよさそうだけど、状況的にまだまだファイルベース? PHP3?PHP4?
88 :
名無しさん@お腹いっぱい。 :2001/05/10(木) 14:51 ID:q8f1TK2I
>>87 PHP4+DBがいいよー。そういう環境が広まりつつあるんだし。
ログファイル版とDB版を平行して作るのなら、それもいい。
#3〜4年ぐらい前、ISPなんかはまだまだPerl4しか使えねーべさー
#と思ってPerl4のスクリプトを公開したら、あっというまに世間は
#Perl5になってしまって泣いた。
MySQLの2ch型が見てみたい気がする。
広めるなら DB はダメだろ。 まだまだ少ない。
PHP使えるサーバは少ないんだから、まだ広まらない。 とりあえずDBに一票
92 :
電動ナナシ :2001/05/11(金) 12:35 ID:???
どちらでも利用できるようにすればいいんじゃない? メッセージの処理クラスと永続化クラスを分けて、必要に応じて永続化クラスの 方を切り替えるという方式。PHPLIB/Pear のように。 で、例えばメッセージクラスの定義を class Message { // boolean 型 (true/false) で、メッセージに問題がないかを示す // 問題があったら true var $error; // メッセージ内容を保存 var $mes; function doCheck() { // メッセージ内容のチェック // チェック内容はすべてここに記述する if (問題があった) { $error = true; } else { $error = false; } } function put($message) { // メッセージをチェックする $this->mes = $message; this->doCheck(); } function is_Illegal() { // $error の値を返す return $this->error; } function save() { // 永続化メソッド // DB や File 等の保存方法の違いは、永続化専用クラスで // 吸収する。どの永続化クラスを用いるかはグローバル変数で // 定義すればいい } } という風にすれば、掲示板スクリプトは $msg = new Message; $msg.put($POSTED_MESSAGE); if ($msg.is_Illegal()) { // エラー処理 } else { $msg.save(); echo "ありがとうございました"; } という風に書けばいいと思う。
93 :
電動ナナシ :2001/05/11(金) 12:36 ID:???
やべ、doCheck() はこうだ。 function doCheck() { // メッセージ内容のチェック // チェック内容はすべてここに記述する if (問題があった) { $this->error = true; } else { $this->error = false; } }
94 :
電動ナナシ :2001/05/11(金) 17:13 ID:???
ちょっとまとめなおし。 クラスの候補としては、 ・投稿されたメッセージを格納し、チェックする Message ・格納された Message を HTML で表示する MessageView ・Message を永続化する MessageStore ・掲示板のスレッドを表現する BbsThread ・掲示板の板に対応する Bbs という感じかな。 で、 ・ポストされたメッセージを保存するスクリプト BbsWriter.php ・板を表示するスクリプト BbsReader.php が最低限あればいいよね。 BbsWriter.php は投稿されたメッセージを Message に格納して、 問題がなければ保存するのがその責務。 BbsReader.php は指定された BBS 名に対応する全スレッドの一覧と、 選択されたスレッドの上位 n 件を表示するのが責務。
95 :
電動ナナシ :2001/05/11(金) 17:14 ID:???
BbsThread のリストは、Bbs に問い合わせると取得できるようにする。 したがってそういうメソッドを実装する必要がある。 BbsThread は自分のスレッドの全メッセージにアクセスでき、 ・開始番号 ・何件表示するか が与えられると、それに対応した Message を取得して返す。 BbsReader.php は BbsThread から受け取った Message を MessageViewer を 使って HTML 化して表示する。 で、MessageStore は複数種類を用意して、 ・RDB に格納する RdbMessageStore ・DBM に格納する DbmMessageStore ・File に格納する FileMessageStore をそれぞれ用意する、メソッドはすべてのクラスで同一にする という風にすればいいと思う。
96 :
名無しさん@お腹いっぱい。 :2001/05/11(金) 20:44 ID:poaesXtw
すごい、、頭いいね。 クラスよくわかんないからぜんぶfunctionでやってたよ。 パールだなこれじゃ、、 電動ナナシ作BBSスクリプトきぼーんぬ
97 :
ななしファン :2001/05/12(土) 19:39 ID:Fpi3.E9Y
敬意を表してage
98 :
初期不良 :2001/05/13(日) 06:22 ID:tjO6DiEU
>>95 仮想関数とかがあれば同一にする苦労なんて無いのにね。
いつかやってみようと思ってたネタがあるんでマージ希望。
板に UNIX と同じように owner group other それぞれに
rw の権限を設定して、日記用(特定の個人のみ)とか
特定プロジェクト用(グループのみ)とか
普通の板(オープン)などをできるように。
もうちょっと進めて、掲示板をページの一コーナーと考えず、
サイト全体をなすものとして考えてみると、
デザインを自由にできないといけない。
ここはデザイナー部として独立して考えた方がいいかも。
要するに、サイトにこの php を設置すればそれ以降は
全部 web インターフェイスでできるような形にできると
おもしろいかなと。
広げすぎかも知れないんで適当なバランスをとった方がいいと思う。
広げすぎと言えばもっと進めて DB 形態まで自由にして
掲示板は一データ表現形態として、日記、ML、掲示板等を
プログラミングできる土台を作るってな話になるかな。
>>96 電動さんはどっちかというと監督だ。
お前は勉強して働けゴルァオレモナー
99 :
松下 :2001/05/13(日) 14:08 ID:FJ4XPUMM
100 :
初期不良 :2001/05/13(日) 22:23 ID:tjO6DiEU
>>99 あとの方はサイトの中心に据えているという点では方向性は同じだね。
それと、掲示板システム全般についてだけど、
板、スレッド、書き込みの3層構造に絞る必要って
無いんじゃないかと思うんだけど。DB 的に甘い考えかも知れないけど、
板もスレッドも同じクラス(例えば Thread)で、
最後の書き込みの層だけがリンク先を持つことができない
末端属性を持つ Leaf とでもしておくわけだ。
Thread extend Leaf で他のスレッドの可変長配列を持てる
ようにする、と。
こうしておけば、Leaf を使わなければスレッド型掲示板、
2段階目に Leaf を使えば、板、書き込みのシンプルな掲示板、
3段階目に Leaf を使えば、板、スレッド、書き込みの3層構造、
それで、板の層は管理者のみ書き込み可で、板の増設は
設置者の自由、場合によってはスレッドも管理者のみ書き込み可にしても
いいと思う。スレッドまでユーザに作られると困るって向きも多いだろう。
>>100 Composit Pattern を使うってことだね。
・class Thread
・class LeafThread extends Thread
・class CompositThread extends Thread
を用意して、
class composit {
// Thread のリストを保持
var $thread_list = array();
:
function addThread($thread) {
// $thread が Leaf/Composit のインスタンスだったら
// 追加許可。
}
:
}
という感じにすればいいかもね。
とりあえず 2ch 相当の機能があればいいかな?と思ってそれ以上は
考えていなかったよ。
先のアクセス権については
・ユーザー情報(認証情報)を格納する class User
・Thread クラスでアクセス権を保持するように責務を追加
ということで実現できるかな。
>>96 なかなか時間がなくて、コードのフラグメント以上にならないよ・・・。
掲示板についてのノウハウもないから、どんなチェックをしたらいいか
分からないし。ある程度形になったら公開するね。
>>98 監督だなんて滅相もない。まあ気長に作ろう。
クラスについてくわしく書いてあるサイト知りませんか?
105 :
初期不良 :2001/05/15(火) 01:13 ID:qIx5vtWI
>>101 デザインパターンって全然知らないのよね。
多少 OOP も分かってきたことだし一通り読んでおこうかな...
>>106 様はつけないでいいよ。ちょっと気恥ずかしいから。
108 :
初期不良 :2001/06/01(金) 05:36 ID:scKj0Xko
109 :
初期不良 :2001/06/02(土) 00:19 ID:???
110 :
初期不良 :2001/06/07(木) 14:26 ID:v8J6N31c
ちょっとアルバイトで phpnuke いじってるんだけど、 ひどいコーディングだ。オブジェクト指向してないのはまだしも コード自体がスパゲッティで混乱しまくってる。 何であんなにもてはやされているのかわからん。 やっぱりここでなんかまともなの作らなきゃなぁとか思ったり。 コードの再利用性を重点に置いたほうがいいと思う。 それができない言語じゃないと思うし。 とか思う。 と思う。
>>110 やっぱOOPするには、php4の方がいいですか? 文字コードUTF8を使いたい関係でphp3+i18nで野郎と思ってるのですが。
112 :
初期不良 :2001/06/15(金) 15:48 ID:qIx5vtWI
>>111 オブジェクト指向関連はどう変わったんだっけ?
俺としては関数の前方参照ができるとか、
jcode mbereg とかがもうすぐ統合されるとかの部分で
php4 がいいんじゃないかと思ってたんだが。
逆に php3 との互換性を持たせるにはどれくらい
考えなきゃいけないことがあるんだろ?
php3 への対応はそれ次第じゃないかな?
113 :
名無しさん@お腹いっぱい。 :2001/06/15(金) 17:29 ID:qNIf6Y6E
クラスわけわかめ。逝ってよし。
114 :
初期不良 :2001/06/18(月) 01:00 ID:vO5h5Je.
そんなこと言わずに
>>113 避けられるわけないんだから
age
↑ソースきたない
118 :
名無しさん@お腹いっぱい。 :2001/07/03(火) 03:07 ID:Sq8VmwMQ
いまphpであめぞう型の掲示版作っているのですが、 スレッドで構成された板を表示するクラスと レスで構成されたスレッドを表示するクラスって、 相似ですよね。 こういう場合、掲示版を表示するクラスboard.classを作って、 それを継承したthread.classを作るのがよいのでしょうか。 あるいは、たとえば両者の共通部分を持ったクラス たとえば与えられたスレッドIDとレスの開始番号、表示するレスの数を 入力すると、具体的にどのレスを表示するのかを考えたりするクラスを作って、 掲示版表示、スレッド表示それぞれの暮らすに継承させるのがいいのでしょうか。 同じように、ログを書き込むクラス、削除するクラスなどの継承関係についても悩んでいます。
>>118 ログの書き込み・削除を別クラスにする意義がいまいちよく分からない。
クラス設計に正解はないので、以下のはあくまで一つの案として捉えて
ほしい。
2ch というかあめぞう型掲示板で、意味のあるデータの最小単位はたぶん
各メッセージ。そしてメッセージのコンテナとしてのスレッドがあり、
スレッドのコンテナとしての板があり、板のコンテナとして BBS がある
という階層構造になっていると思われる。
そうだとすると、削除には実は 3 つの種類があることになる。つまり
メッセージの削除とスレッドの削除と板の削除。この削除は対象となる
オブジェクトのコンテナから当該オブジェクトへの参照をなくすことに
よって実現できる。そうだとすると
・メッセージ削除 = コンテナであるスレッドからメッセージへの参照を解除
・スレッド削除 = コンテナである板からスレッドへの参照を解除
・板削除 = コンテナである BBS からメッセージへの参照を解除
ということになる。つまり、削除機能は、上位のコンテナの備えるべき
責務として構成できる。
書き込みというのは、逆に下位要素のコンテナへの追加として表現できる。
ちょうど削除と逆の関係が成立する。
このように書き込み・削除はともに削除対象の上位のコンテナの責務と
して表現できるから、クラスを別にする意味はそれほどないと思う。
よって継承についてはそれほど悩む必要はないと思う。
>>118 それから継承は最近では「置換可能性があること」を意味すると言われて
いる(『C++ FAQ』を参照のこと)。例えば「鳥」クラスのサブクラス
として「鳩」クラスと「雀」クラスを定義するということは、「鳥」が
使われている部分を常に「鳩」や「雀」で置き換えることができることを
意味する。
> こういう場合、掲示版を表示するクラスboard.classを作って、
> それを継承したthread.classを作るのがよいのでしょうか。
あめぞう型の場合、メッセージをスレッドで、スレッドを板で置き換える
ことはできない。スレッドの中にスレッドを入れたりすることができない
ということ。そうだとすると、置換可能性がないからここで継承を使うのは
適切ではないと思われる。
掲示板はど〜でもいいがナナシたんのもっと蘊蓄話聞きたいage
>>121 電動さんの蘊蓄をうまく引き出すような質問をすべし
123 :
名無しさん@お腹いっぱい。 :2001/07/05(木) 17:16 ID:FH4vSBdo
クラスについて教えてください!!(>o<)
1学年あたりの人数が多いとき、ひとつのクラスに纏めると 先生の目が行き届かないので、一クラス40人程度に分けます。
126 :
名無しさん@お腹いっぱい。 :2001/07/06(金) 15:08 ID:Bl7s3ZQQ
>>125 わざわざすいません。
ネタのつもりで書いたんですが…
PHPってメソッドをオーバーライドするとき、スーパークラスの同名のメソッドを呼び出すことはできないんでしょうか? サブクラスで細かいことをあれこれさせようとするとき、やりにくくてしょーがないんですが。
128 :
127 :2001/07/06(金) 17:55 ID:???
あ、スレ趣旨と関係ない質問してしまったですね。反省。
>>127 PHP の
http://www.php.net/manual/en/language.oop.php では
以下のようなやり方が示されている。
<?php
class Parent {
var $str;
function myMethod($str) {
$this->str = $str;
}
function getStr() {
return $this->str;
}
}
class Child extends Parent {
var $value;
function myMethod($str1, $str2) {
Parent::myMethod($str1);
$this->value = $str2;
}
function getValue() {
return $this->value;
}
}
$x = new Child();
$x->myMethod("String for Parent", "String for Child");
echo "str: " . $x->getStr() . "<br>\r";
echo "value: " . $x->getValue() . "<br>\r";
?>
やばい、違うのを書いてしまった。正しくはこちら。 <?php class Parent { var $str; function myMethod($str) { $this->str = $str; } function getStr() { return $this->str; } } class Child extends Parent { var $value; function myMethod($str) { Parent::myMethod($str); $this->value = $str; } function getValue() { return $this->value; } } $x = new Child(); $x->myMethod("String"); echo "str: " . $x->getStr() . "<br>\r"; echo "value: " . $x->getValue() . "<br>\r"; ?>
131 :
127 :2001/07/10(火) 07:14 ID:???
>>130 遅くなりました。m(_"_)m
なるほどPHPでも"::"でアクセスできるんですね〜。
ありがとうございました。
♪ ♪ ♪ ♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄ ( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん .⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪ 〜( つノ〜( つノ〜( つノ〜( つノ . \_____ (/ (/ (/ (/
♪ ♪ ♪ ♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄ ( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん .⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪ 〜( つノ〜( つノ〜( つノ〜( つノ . \_____ (/ (/ (/ (/
♪ ♪ ♪ ♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄ ( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん .⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪ 〜( つノ〜( つノ〜( つノ〜( つノ . \_____ (/ (/ (/ (/
♪ ♪ ♪ ♪ ∧∧ ∧∧ ∧∧ ∧∧♪ / ̄ ̄ ̄ ̄ ̄ ( ゚Д゚) ( ゚Д゚) .( ゚Д゚) ( ゚Д゚) < カステラ一番 電波は2ちゃん .⊂ つ⊂ つ⊂ つ⊂ つ | 3日はモナーの誕生日♪ 〜( つノ〜( つノ〜( つノ〜( つノ . \_____ (/ (/ (/ (/
136 :
名無しさん@お腹いっぱい。 :2001/07/10(火) 21:54 ID:VaMPoT2k
137 :
PHPはいいのかな? :2001/07/25(水) 20:00 ID:tQkHrkGs
ハジメマシテ。ワタシハCGI初心者デス。
今、掲示板のような情報登録システムを作ろうと思っています。
http://world.gokinjo.net/ ↑こんなかんじのやつです。
情報を登録してもらう件数が、1000件程度ならPerlで作ればいいのかなと思ってます。
しかし、1万〜10万件の登録数になったら、PHP+DBでないと検索が遅くなってしまうのかなと心配しています。
オライリーのプログラミングPerlを10ページほど読んだだけですが、できればPerlで作りたいと思っています。
もし、PHP+DBを使う場合は、Perlに比べてどのような優位性がありますか?
よくわからんのですが、Java+DBとPHP+DBではどんな違いがありますか?
(=プログラミングやメンテナンスの難易度、動作の速さ、コスト等)
4649
139 :
Thanks :2001/07/27(金) 11:32 ID:Mtq49UWA
>> 138 ありがとうー。
PHP+MySQLで2ch型の掲示板を作ろうと思うのですが、テーブル1個では 無理ですかね。 MiniBBSタイプの追加していくだけのものならできるのですが、レス付きの age sage のさせ方が思いつかなくて。 上のMiniBBSタイプの掲示板程度の簡単なものしか作ったことがなく 経験は浅いです。<この程度でMySQL使うなよーって言われそうですが
>>140 俺も初心者でよくわからんけどレスのテーブル作るのは?
メインのテーブルにスレッド更新時間フィールド作って
age の時だけそれを更新したら期待する動作になると思うけど。
age
insert into res (....)
update main set (updatetime=... where id=...)
sage
insert into res (....)
てか、これ以外の方法でいいの知ってる人
教えてほしいです。頭弱くて他に思いつかん・・・
142 :
名無しさん@お腹いっぱい。 :2001/08/16(木) 14:22 ID:gmLqYaug
1つのテーブルでも出来ると思うけど、RDBMSの良さを生かすには
>>141 の言うようにテーブルを2つ分けるのが良いと思う。
1つのテーブルでやろうとするなら、こんなテーブルかな。
create table bbs(
ita_id int /* 板ID */
thread_id int /* スレッドID */
name text /* 発言者名 */
mail text /* 発言者メールアドレス */
comment text /* 発言内容 */
comment_date date /*発言日時 */
update_time date /* 更新日時 各スレの1のみ利用 */
);
select thread_id from bbs where ita_id = '板id' and update_time is not null order by update_time desc limit 20;
1つでやれと言われたら、俺ならこうするだろうな。
,を入れるの忘れてた。鬱堕詩嚢・・・
>>142 それだと板名、スレ名は別テープルになってしまうのでは。
1テーブルにするにはvarchar型の板名、スレ名フィールドにしなければ。
でも order by の部分がどうなるのか複雑すぎて考えたくない。ナナシたんなら分かるかも。
145 :
名無しさん@お腹いっぱい。 :2001/08/16(木) 16:55 ID:1.nHpY.w
>>144 板名とスレ名のことを忘れてた。
となると、板IDなんていらないのかな、1テーブルで全てを
処理しようとするなら。類似スレタイトルが出てくる可能性も
あるわけだから、スレIDは良いとしても、スレ名フィールドも
必要だね。
掲示板表示に関しては1つのSQL文で全ての処理を行うのは
無理じゃないかなぁ。特に2ch型の場合。
>>145 >>140 は1つのテーブルで実現したいと言っているんだ、これが。
複数のテーブルを使った方が楽なのは2ch型の場合明白でしょう。
俺でもヘッドライン用、ログ用と最低でも2つは用意するね。
148 :
名無しさん@お腹いっぱい。 :2001/08/17(金) 01:28 ID:/R.1WTn.
横からすいませんPHPってフリーですか?
うん
テーブル1個で十分じゃん
151 :
140 :2001/08/17(金) 02:39 ID:???
皆様ありがとうございました。
やはりテーブルは複数の方がよいようですね。
>>145 のPhorumが、とりあえず動いたので、ちょっと勉強して
真似してみます。
SQL逝ってよし。
はいはい。(´ー`)sage
>>140 テーブル一個で済ますのはあまりよろしくないね。
分割するがよろし。板一個に付き一個。
create table bbs(
NO INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, //記事NO
RNO INT UNSIGNED NOT NULL, //レスポンス時の親記事NO
NAME TINYTEXT, //名前
MAIL TINYTEXT, //メアド
TITLE TINYTEXT, //親記事の場合の記事タイトル
MSG TEXT, //内容
DATE INT UNSIGNED, //発言日時
TS INT UNSIGNED //タイムスタンプ(age,sage用)
);
あとは適当なフィールドをINDEXにする。
>>154 板ごとにテーブル作る必要ないんじゃないの?
その方が邪魔臭い。板NOを作れば済むと思うぞ。
158 :
名無しさん@お腹いっぱい。 :01/08/30 21:56 ID:YzLgVA/.
掲示板の書き込み内容をデータベースに入れると楽だけど、 いまんとこnamazuで全文検索出来ないのが痛いんだよねえ。 みんなはその辺、どうしてるの?
159 :
名無しさん@お腹いっぱい。 :01/08/30 23:31 ID:M8F0Dr3g
なんだっけ。 MLに流れてたけど、テーブルの内容全部書き出してそれにインデクサかけるんだっけ?
160 :
名無しさん@お腹いっぱい。 :01/09/01 02:49 ID:8xYEHKqE
161 :
名無しさん :01/09/02 03:19 ID:zatSDIFM
愛の!プライドなーんてもぅっ!ハァハァ
163 :
名無しさん@お腹いっぱい。 :01/09/05 00:52 ID:0Ucsm3so
お邪魔しました、何気に管理部のセッション管理がphpっすね。 横漏れチェックはOKでした (w
165 :
名無しさん@お腹いっぱい。 :01/09/05 13:23 ID:h3vD9HpA
たいしたもんだのう。
166 :
163 :01/09/05 15:57 ID:kmB.nBhs
>>164 テストサンクス。
indexをPHPで吐いてるんで穴が恐い。
167 :
ちたん :01/09/05 16:25 ID:5qOPNXQ6
168 :
名無し :01/09/05 20:26 ID:VpO1BIGg
>>166 >indexをPHPで吐いてるんで穴が恐い。
これってどういうことですか?
169 :
名無しさん@お腹いっぱい。 :01/09/05 20:39 ID:mVb.tFT2
>>168 掲示板トップをindex.phpで吐いてるってことでしょ?
>>168 SSI呼出やらHTML・PHPタグの除去を上手く出来ないと怖い事に
なるってところでしょうね。
でも良い感じですね〜、163さん。
171 :
168 :01/09/05 20:49 ID:VpO1BIGg
172 :
名無しさん@お腹いっぱい。 :01/09/07 23:07 ID:P553JcYI
インデックスを.phpで出力する意味は? .htmlでいいじゃん。
173 :
名無しさん@お腹いっぱい。 :01/09/07 23:25 ID:ig7A6p6A
>>172 .phpにすればクッキーが使える。
SSIは動かないだろ
176 :
名無しさん@お腹いっぱい。 :01/09/08 12:56 ID:KBW0zPWM
>>175 javaスクリプトで抜けばいいだろ。
.phpなんかでファイル吐いたらセ
キュリティーも糞も無くなる。
初心者は黙って名。藁
>>176 >.phpなんかでファイル吐いたらセ
>キュリティーも糞も無くなる。
詳しく知りたいのですが...
>>176 意味不明なんですが・・・
> .phpなんかでファイル吐いたらセキュリティーも糞も無くなる。
htmlファイルを吐いてブラウザにはそれを見せるのは危険ってこと?
って事は.phpで直接表示しろって事だよね?
> javaスクリプトで抜けばいいだろ。
ならPHPでクッキー使えばいいじゃん。
179 :
名無しさん@お腹いっぱい。 :01/09/08 16:59 ID:h6rIpquU
180 :
ちたん :01/09/08 21:30 ID:9w.nIrBA
PHPってCGI使えてPHP3とか使えないとダメなの?
意味不明...
182 :
ちたん :01/09/08 22:44 ID:9w.nIrBA
ごめん PHPは手を出した事が無いんだけど 今いろいろ乗ってるサイトで調べたら PHPは全くCGIとは別物なんだね ribbon.toってとこのスペースにでも置くか
183 :
名無しさん@お腹いっぱい。 :01/09/09 21:54 ID:YAPKaUzk
厨房でスマソ。 indexにphpファイル使うのがヤヴァイってことですか? ファイル名がindexでなければ大丈夫? index.htm置いても関係なっしんぐですか? ribbon.toのスペース借りたので、PHPも挑戦してみようと 思ってるんですが、さっぱり進みません。
184 :
163 :01/09/09 23:05 ID:FMpp59YY
>>183 index.htmlなら大丈夫。index.phpで吐いてphpタグの除去漏れが
あったりすると悲惨な攻撃を喰らう可能性が。
例えばディレクトリ内の全ファイル削除するphpスクリプトを書き
込まれたり。
185 :
名無しさん@お腹いっぱい。 :01/09/09 23:29 ID:wbHvU30k
>>184 どうやって書き込むんですか?
パスワードをハックするんですか?
186 :
名無しさん@お腹いっぱい。 :01/09/09 23:40 ID:FMpp59YY
>>185 あくまでPHPで掲示板やチャット作る場合ね。
フォームからの入力を受け付けないスクリプトなら
問題無いです。
187 :
185 :01/09/09 23:45 ID:wbHvU30k
フォームからスクリプト書き込まれたら危ないのか…。 知らなかった ありがとうございます。
PHPは使ったこと無いからあんま知らないけど、 たとえばフォームから$varにPHPコード入ってる入力受けたとして、 echo $var ってやったら $var に入ってるコードが実行されるの? そんなわけないよね? $var を直接unlinkやsystemやexecやevalとかしなけりゃ問題ないでしょ? 他には$varにSSIのコードが入っててPHPからhtml「ファイル」を 書き出すときに$varをそのまま埋め込んでそのhtmlにアクセスされた時に SSIが実行されちゃうとかでしょ。 なんか勘違いしてる人ばっかりっぽい。 それとも俺が勘違い?
189 :
183 :01/09/10 00:30 ID:???
>184 早々レスありがとうございます! 自分がいかに厨房か身にしみました。 レンタルなんで、他のユーザに迷惑かけるのもアレだし、 もっと勉強してから設置します。
俺も使ったこと無いからあんま知らないけど それが出来るのがphpなのでわ? $varは汚れているってやつ
191 :
163 :01/09/10 00:37 ID:nli.P4co
あくまでクッキー使うとかの理由で「.php」ファイルを吐く 場合に限りってことですので。
192 :
188 :01/09/10 00:47 ID:???
あ、「.phpファイル」を吐くって話だったのか。やっと納得した。 そりゃ気を使わないといけないね。 「indexをPHPで吐いてる」 を単にindex.phpが動的にデータ読んでHTML生成してる という意味だと思ったよ。
193 :
185 :01/09/10 01:16 ID:WNjUYDFQ
…。
>>192 と同じ事考えてました…。
phpがphpを吐く場合ですか。そりゃそうかも。
まだよく分かってないけど…。
194 :
163 :01/09/10 12:00 ID:???
2ちゃんタイプの掲示板だとログをMySQLとかのDBに持たせる のと従来通りスレッド毎にファイルで持たせるのだとどっちが 効率いいんでしょう? なんかDB化すると書き込み時にSELECT連発になりそうで不効 率なイメージがあるんだけどDB詳しくないので分かんないや。
195 :
名無しさん@お腹いっぱい。 :01/09/10 13:45 ID:RS6j19mI
漏れも知りたいage
196 :
ちたん :01/09/10 14:22 ID:NewyOZz.
俺は公開を待つだけで何もしてやれないのが残念だ
197 :
名無しさん@お腹いっぱい。 :01/09/10 14:23 ID:unceqOvo
ちたんってFFDQ板にいる奴と同一人物か?
198 :
ちたん :01/09/10 14:26 ID:NewyOZz.
199 :
名無しさん@お腹いっぱい。 :01/09/10 14:52 ID:LD3E6s7.
スレッドテープル、レステーブルの2テーブル作る感じで考えたけど、 スレ立て時にINSERT二回、レス時にSELECT,UPDATE,INSERT各一回 でできると思う。
200 :
163 :01/09/10 15:23 ID:RS6j19mI
>>198 インデックスページ吐くときに表示スレッド数だけのSELECTが必要
になりますね。
あと、全板のログが入り乱れたテーブルからSELECTで必要な発言持
ってくるのって凄い効率悪そうに思えるんですけど、レスの数が膨大
になった場合の不可なんかはどんなもんなんでしょう?
201 :
163 :01/09/10 15:24 ID:???
202 :
名無しさん@お腹いっぱい。 :01/09/10 16:05 ID:KqO6xo7o
ところで、PHPってオブジェクト指向?
203 :
名無しさん@お腹いっぱい。 :01/09/10 16:29 ID:LD3E6s7.
>>200 ファイルでやったら表示スレッド数だけのファイルを開いて閉じてを
繰り返さなければダメですよね?それよりは速いとおもう。
きちんとレステーブルにスレッドIDのフィールド作って
インデックス張っておけば問題ないレベルでしょう。
>>202 も出来る。
204 :
672 :01/09/13 13:48 ID:7asnw6oI
>>202 PEAR使うとOOPが、でけそう気配だ。
205 :
名無しさん@お腹いっぱい。 :01/09/13 22:50 ID:Nq5e6DE2
スレッドごとにテーブル作ってテーブルの数がいっぱいになるのと テーブル一つに全スレッド放り込むのとどっちがいいですか。 あるいは板ごとにテーブル作って(以下同文) ようするにテーブルはいっぱい作らない方がいい?
206 :
202 :01/09/14 04:28 ID:YRsOR1eU
PHPのオブジェクト指向には、あんまり期待できなさそうな。(^-^; PerlのOOと似たようなもんかな。。
207 :
163 :01/09/14 14:44 ID:NHumwnBY
208 :
ななしさん :01/09/14 21:40 ID:I5Sj1HiA
わーいありがとう。大丈夫そうだね。
209 :
名無しさん@お腹いっぱい。 :01/09/14 21:48 ID:5kAOJ0Zk
>>207 ageってどうやってんの?
書き込まれたらスレッドの順番書いてあるフィールド書き換えてるの
か?何か効率悪っぽいな。ファイルの方がいいんじゃねぇ?
スレッド一覧テーブルにDATETIME型とかのフィールド作って ageの時は現在時刻入れておいて降順で並べればよいと思われ。
211 :
けん :01/09/19 11:08 ID:hhAgINVo
デザインださ・・・しかもこみゅこみゅって(プ
213 :
名無しさん@お腹いっぱい。 :01/09/19 17:45 ID:tSRZDv1c
214 :
名無しさん@お腹いっぱい。 :01/09/22 16:41 ID:G0469FQk
>>211 のようなレンタルの場合は、MySQLのライセンス料の支払は必要?
215 :
名無しさん@お腹いっぱい。 :01/09/22 16:52 ID:hg/f7G7g
217 :
けん :01/09/23 07:40 ID:gaxvcfRo
なんかからかわれてますね〜 このサーバーは友達がADSLで構築しています。 \200/月 で使用できます。
218 :
けん :01/09/23 22:29 ID:5jHAZsXA
>>214 MySQLってフリーだからいらないですよ。
219 :
ちたん :01/09/24 02:26 ID:???
けんってネカマ?
220 :
名無しさん@お腹いっぱい。 :01/09/28 21:01 ID:yatlQWYk
あげ
221 :
名無しさん@お腹いっぱい。 :01/09/30 06:52 ID:Adl10q6o
PHPだと文法エラー等がある場合、エラーメッセージが出ると聞いたのだが、 そんなもんは出なくて、 白紙(IEでソース見るとレンタルサーバの広告のみ)しか出ない。 これはいったい何のエラーなんだか。
222 :
名無しさん@お腹いっぱい。 :01/10/05 01:08 ID:vTyw9JIM
223 :
名無しさん@お腹いっぱい。 :01/10/09 12:21 ID:ATYJfjH.
PHPよく分からんage
224 :
名無しさん@お腹いっぱい。 :01/11/06 22:17 ID:BzxtU/sO
225 :
名無しさん@お腹いっぱい。 :01/11/07 01:45 ID:FJMcKMjy
>>221 サーバによっちゃエラーメッセージでないよ。
226 :
名無しさん@お腹いっぱい。 :01/11/07 01:56 ID:jj1CZs+f
ファーストキスはエラー吐く。 しかし奴はECUで書かなないとあかんのでめんどいのー。 ところでレンタルスペースのミルトクラブはトップからphpなのはいいが、 エラーメッセージさらしっぱなしでひじょうにみっともないんだが…。 直す気ないのか?
227 :
名無しさん@お腹いっぱい。 :01/11/07 02:14 ID:FJMcKMjy
228 :
名無しさん@お腹いっぱい。 :01/11/07 03:13 ID:MaWgfgVW
PHPの掲示板でお勧めのLOCKあります? $fp = fopen ("$logfile","a"); flock($fp,2); fputs($fp, $hoge); flock($fp,3); fclose($fp); で効きますか? 配布などは考えてません。
230 :
名無しさん@お腹いっぱい。 :01/11/08 12:53 ID:A2A4Idoa
231 :
名無しさん@お腹いっぱい。 :01/11/09 16:15 ID:t6/s73d3
>>229 さんではありませんが、私も良いLOCK方法を知りたいっす。
Cのflockと同じものなのか、それともPHPらしくもちょっと実用的にっていうか
229さんが書いたコードでオッケーな感じになっているのか……。
PHPのflockの中身を知りたいです。
あ。ソースを見ればいいのか。逝ってきます……。
PHP初心者だけどPHPを学習しつつ スレッドフロート式掲示板の開発を進めている。 学習しながらなんで非常に時間掛かってるけど。 只今の進行状況:3%ってとこか?
でもPerlの心得はあるからそれほど苦労はしてないけどね。
234 :
hogehoge :01/12/20 16:19 ID:gQq9NcEn
PHP+RDBMSを使ったツリー型のBBSで、
ツリー表示をする際のアルゴリズムとデータベースの構成を説明して貰えませんかのう。
PHP-Nukeのソース読んだけど理解出来ない...(・ A ・)
・[ 1 ] 逝ってヨシ
・[ 2 ] あぼーん
・[ 4 ] あぼーん
・[ 3 ] ワショーイ
↑こういう表示がスマートにできるようなアルゴリズム.....。
レスのテーブルに子レスIDのデータを持たせようとすると、
複数のレスがついた場合を考えて配列にしなきゃいけない。
レスのテーブルに親レスIDのデータを持たせると、
こんどは描画の際に面倒。
あとはレスに階層の深さテーブルを持たせるとか、
子レスの「数」を親レスに持たせるとか...。 ああ面倒。
php-nukeはいったいどうやって。
ttp://phorum.org/support/list.php?f=1&collapse=0
>>234 データベースは知らんが
W1・新規スレッドの
>>1 とそれに対するレスを区別しないで時間順にテーブルにぶち込む。
その際、ユニークなメッセージIDを振る。
W2・レスはその返信先のIDをリファレンスとして保持、
>>1 は空欄のまま。
R1・書き出し時にリファレンスの項目を参照して1を取り出す。(時間順に並んでいれば普通は最初だが)
R2・1のメッセージIDでリファレンスを検索。一致するものを配列として取り出す。見つからなければreturn。
R3・とりだした配列の要素へR2の手順を実行。
な感じじゃないか?
要はただの再帰呼び出しだが。
ウチは、IDとか親記事のIDと階層の数字(*)を持たせて 再帰呼び出ししてます。 ・[ 1 ] 逝ってヨシ *0 ・[ 2 ] あぼーん *1 ・[ 4 ] あぼーん*2 ・[ 3 ] ワショーイ *1
PHPでアプロダのソース教えれ
だれかシンプルでスマートな掲示板作ってよ
自分で作れ
244 :
nobodyさん :02/10/27 04:08 ID:ZBwddCFf
(´-`).。oO(
>>163 はどこに逝ってしまったんだろう…?)
246 :
nobodyさん :02/11/09 17:59 ID:FW57v7fV
247 :
nobodyさん :02/11/09 18:16 ID:2u49zYCG
249 :
nobodyさん :02/11/10 03:38 ID:CKDMXs5s
bbsxml.php$B$H$+$G7G<(HD$,(BXML$B=PNO$5$l$k$H$J$*M3(B
251 :
nobodyさん :02/11/12 17:44 ID:84Orx8vW
??247
252 :
nobodyさん :02/11/17 00:06 ID:rKD6R3WV
2ちゃんねる風の掲示板はどの様に作ればいいのですか? 教えて下さい。あと、素材があったら貼っといて下さい。
254 :
nobodyさん :02/11/17 23:26 ID:qfDL9fIH
つーか瓦番でいいだろ
>>253 >PHPで掲示板なら昔作ったけど。ソースいる?
俺も作った。好感しようか(w
age
簡単な掲示板ならperlでかくより、PHPのほが楽じゃないすか? 便利そうな関数がごまんとあるし(perlでも多いと思ったのに・・) データベースをそこそこさわり始めるとある程度の事までは わかるんだけど、バキュームとかバックアップやらの事が出てきはじめると ワケワカメになる。 掲示板とかでDB使うとそうとうグシャグシャな状態になりそうな気が するんだが、大丈夫なもんなのか? 容量の問題もあるし・・・
259 :
でもさぁ :02/12/06 16:01 ID:e3P89aGI
もし、2ch型の掲示板をPHP+RDBMで作る場合、 テーブルの構造はどんな感じになるんだろうか? PHPの側からテーブル作ったりできんのか? なんかイメージするにスレッド毎にテーブルがあった方が スッキリ管理しやすいようにおもうんだが、、、、、 でも、それじゃぁDB使う意味ないのか? まぁ、厨房の独り言でし。
>便利そうな関数がごまんとあるし PHPに5万も標準の関数はありませんとか言ってみるテスト >もし、2ch型の掲示板をPHP+RDBMで作る場合、 >テーブルの構造はどんな感じになるんだろうか? 1つの板につきスレッドテーブルと記事テーブルを各1個
261 :
でもさぁ :02/12/06 19:13 ID:e3P89aGI
>1つの板につきスレッドテーブルと記事テーブルを各1個 そんだけでいいんだ。そうだよなぁDBでしかもリレーショナルだもんね(ワ。 漏れがPerlで作ったBBSはしこたまファイルが出来るから dataやらのディレクトリをのぞく度に鬱になる。
つーか Perl + CGI って何?
263 :
nobodyさん :02/12/06 19:25 ID:e3P89aGI
>>262 それは、もしかしてPerl + CGIの事ですか?
>>262 + = de
Perl + CGI = Perl de CGI
php+MySQLで掲示板作っているけど、スレッドテーブルなんか使わないなぁ。 親スレで検索すればいいだけじゃん。テーブルを分ける必要は無いと思うのだが。。
266 :
でもさぁ :02/12/06 23:13 ID:e3P89aGI
でも、想像してみるに、記事用のテーブルはいろんな スレッドのデータがグチャグチャに入ってて、そのグチャグチャを DBは一生懸命検索しなきゃいけないわけでしょ。 もし、1スレッドに1テーブルだと検索する手間が省けてかなり 早くなりそうな気がするんだが・・・・。 メンテ的にも1掲示板で持てるスレッド数が決まっている場合、 さくっとテーブルの削除ができる。 ところでスレッドの順位のテーブルも必要なんじゃないか?
267 :
265 :02/12/06 23:20 ID:???
親スレを示すフィールドと、スレッドの順番を示すフィールドがあれば、ソート出来るじゃん。 検索し、並び替えるのが得意なDBにとって、順番やスレッドがぐちゃぐちゃなんてたいした手間じゃないと思うけどな。
>262 まさか、perl == CGI とか思ってやしないよな。 と煽り返してみる。
必要以上にテーブル分けして、外部ジョイーンとか連発しなければ遅くはならないとYO。 あと、like で or な検索連発してみたり(しないか)。 つーか、BBS程度のシステムなのに、絶賛稼動中なロジックの中で create table するのって、 ちょっと正気の沙汰とは思えない、とか。 1スレ=1テーブルって、どういう設計よ。
>つーか、BBS程度のシステムなのに、絶賛稼動中なロジックの中で create table するのって、 >ちょっと正気の沙汰とは思えない 禿同
ありがちな例: "板コード"をpKeyにして、"スレコード"で別テーブルぶらさげて、 他になんか文言とか付随データをVARCHARでいくつか付けておいて、 その後その別テーブル上に「書き込みindex」をキー、スレコードはfKeyで、 カキコの中身はVARCHAR(256)位でまとめればいいんじゃないのかな。
DBだと記事の削除とか楽だからいいよね。 テキストファイルだと削除が大変。 漏れは 1) 該当スレのログファイルをオープン 2) ファイル全体を配列に読み込む 3) 該当行を配列から削除 4) 元ファイルに書き込む 5) スレッドインデックスファイルの「レス数」を変更 という風にやっています。 なんかいい方法ありませんかね。
>>272 さん。
その処理って、ナニでやってるの?Perl?
オレは基本的にJava野郎で、Perlはすでにウロ覚え状態です。
前にServlet(&JSP)で、個人的にソレっぽいもの作った時は、
TextFileとして記録されるLogのフォーマットを、HTTPのPOST内容っぽい
(つまりバウンダリ文字列で区分する)形で記録するようにしました。
それ専用の汎用ParserClassを作って、Servletで使用って感じで。
でも、結局TextFileに記録って時点で、あまり凝った事はやりづらいです
よね。
Stringの塊を整形して、取り出す時は部分取得して...。
それでもPerlの場合正規表現は最初からあったけど、JavaにRegExpが標準パッケージ
として含まれたのって最近だし...。
やっぱDBがイイすね。楽。
>>272 1) 該当スレのログファイルをオープン
2) 新しいファイルを作る
ループ{
1) ログファイルから次の「1行ダケ」読み込む
2) 該当行じゃなければ、新しいファイルに行を書込む
}
3) 元ファイルを削除
4) 新しいファイルを元ファイル名に変更
5) 「レス数」とやらを変更
とやるのが一般的だよっと。
世間の参考書は全行読むのが多いよなあ。
出版社にはこの辺チト配慮してほすぃ。
275 :
272 :02/12/08 19:00 ID:???
>>274 どもです。
確かにメモリ食いまくりですね。
私も最初は、
1) インデックスファイルなど小さいモノはそのまま読み込む
2) 大きいモノは1行づつ読み込む
としていましたが、
掲示板の内容をhtmlに書き出すときに、
<html>から</html>まで全部変数に入れて、
一気に書き出す。
という方法をとってからは、ファイル全部読み込むことにしました。
まあ、ログサイズは大きくならないようにしてますけど。
276 :
272 :02/12/08 19:06 ID:???
続き たとえば「最新10レスを表示」する場合、 最初の設計時には 1) 最新10レスが何番目のレス(start)から何番目のレス(end)なのかを計算 2) ログファイルをオープン 3) 1行づつ読んで、(1)のstartにきたら内容を配列に読み込む endにきたらファイルを閉じる という風に考えていたのですが、 よく考えてみれば、(1)を計算するにはファイルをあけて何行あるかを feof まで1行づつ読み込むループをして調べなくてはならないですね。 それなら最初から全部読み込んでしまえ。となったわけです。 それからstart、endを計算して、いらない部分を配列から消すと。
272は始めから改善する気がなさそうな気もするけど、一応レスってみる事に。 例えば、PHPで初めの10行をとばすなら、 $begin = 10; while($rec = fgets($FP,'12345') and $begin) {$begin--;} while($rec = fgets($FP,'12345')) {読み込みたい件数だけ配列に入れてループ抜ける} Perlかもしれないから一応補足。 while($rec = <FH>) {$begin--; last if(!$begin);} while($rec = <FH>){読み込みたい件数だけ読み込む} てな感じでやりなって。 HDへのアクセス時間短縮&メモリ空間になるでしょ。
278 :
nobodyさん :02/12/08 22:51 ID:fkqPp+lS
うちで作ったスレ式掲示板はこんなかんじ。 板毎にファイルを2つ作りそれぞれ A:書き込みに番号を付け1行にまとめて追記 B:スレッドの構造を1スレ1行に書き込み番号を連ねて収納 スレッドを表示する時はB内の所望の行を読み、それに基づきA内の行を吐く。 age処理はBの行の順番を入れ替える。レス削除はBの該当番号を消し、 スレッド削除はBの1行を消す。Aは出来るだけいじらない。 lockの手順とかしっかりしないと嵌る。 SQLはいじった事ないけどねヽ( ´ー`)ノ
漏れの作った2ch型はレス毎の位置を記録したのを別に持っていて、 read.cgiではseekするようにしてる。
あの、Java野郎なんですけど、
2chの発言内容って、htmlタグを全て排除してるじゃないですか。
でも、
http://www.yahoo.co.jp は、別画面が出てくるように、
http://***.2ch.net/ """
はスレッドを表示する…
それと、>>n はスレ内のレスを直接表示…と、
よく出来ていると思うのですが、これに近い処理をするPHPやPerlの
ソースはありませんか。Javaで書いてみたいのですが…もしくは、
同じ処理をするJavaソースがあれば教えて下さい。。。
PHPとPerlはうろおぼえでGoogle探しても色々あって、どれがいいのか、はて、、です。
read.cgi(pl)とread.phpは17氏のスクリプトについてたが。
>>281 17にアクセスしても404なんですが、、、どこかに転がっていませんか。
googleでさがしたんですが、ウトゥ-
283 :
272 :02/12/09 16:55 ID:???
>>277 レスありがとうございます。
while($rec = fgets($FP,'12345') and $begin) で and $begin という使い方は知りませんでした。
これは便利ですね。早速使ってみます。
さて、上述の、「ファイルを舐めないと総レス数がわからないので、たとえば「最近10レス」が
どのレスからどのレスまでを計算するには、ファイルを舐めないといけない」を
上手く解決する方法はありますか? この問題さえ解決できれば、必要な行だけを配列に
読み込む方式に移行できます。
よろしくお願いします。
Perl + CGIって何だよ(藁 じゃあ Shift_JIS + html もいいのかw 誰も変だと思わないのか?
>>283 何故最新10レスを計算する必要があるのかナスカの地上絵よりも謎だが、
ツリー形式掲示板なら、記事追加時に記事の情報を別に記録しておくとか
最新記事がファイルの先頭に記録するタイプなら、最初の10件だけ読み込む
2ch式掲示板なら、書込み時にftellして、読み込み時にfseekする
固定長ファーマットにしてランダムアクセスする手もある
そもそも277と279が答え出してるだろ
Perl + CGIって何処にあるって探したら
>>1 かよ。
ログをテキストでやるのって難しそうですよね。 いっぱいファイル開いたり閉じたり面倒で気が遠くなりそうだったんで DBにしました。DBでも面倒なので放置気味ですが。 2ch型作っても、書き込み少なくてスカスカで見苦しいサイトがほとんどだし もっと一般人向けの良いアイディアの掲示板ってないですかね。
>>92-101 あたりの話をもっと聞きたいんだけど…
でも自分から話をふるほど知識がないのでsage
290 :
nobodyさん :02/12/12 16:16 ID:vEZAWx5M
電動ナナシ氏も初期不良氏も見かけなくなっちゃったからねぇ…。 まだ居るのか期待してageっ!
291 :
289 :02/12/12 23:48 ID:???
おお、自分以外にも期待している人が!
というわけで、ついでに1年以上前のことですが質問させてください。
>>95 で
>BbsThread は自分のスレッドの全メッセージにアクセスでき、
てことは、BbsThreadは自分のスレッドの全メッセージを配列で持っているの?
それともメッセージ取得メソッドが呼ばれるたびにファイルを開いて読み込むのかな?
でもそうだとDBを使うかファイルを使うかで変わってくるからMesseageStoreのように
MessageReaderを複数種類用意するってこと??
>>291 後者じゃないのかな?
>MessageReaderを複数種類用意するってこと??
うん。多分。
293 :
nobodyさん :02/12/13 08:59 ID:zYYQGita
294 :
289 :02/12/13 20:00 ID:???
>>292 レスありがとうございます。やはり後者でしたか。
ということはThreadStoreやThreadReaderも複数用意するってことかな。
ああ、電動ナナシ氏作成の掲示板見てみたいなぁ。
295 :
あし :02/12/20 12:19 ID:7MV1a4/S
てすてす
電動さん降臨キボンヌ 前に掲示板のクラス設計途中までやったよね
297 :
289 :03/01/13 11:39 ID:???
298 :
山崎渉 :03/01/15 13:41 ID:???
(^^)
このスレも中途半端か。
300 :
山崎渉 :03/03/13 17:13 ID:???
(^^)
301 :
山崎渉 :03/04/17 12:24 ID:???
(^^)
302 :
山崎渉 :03/04/20 06:09 ID:???
∧_∧ ( ^^ )< ぬるぽ(^^)
303 :
山崎渉 :03/05/22 02:11 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
304 :
山崎渉 :03/05/28 17:15 ID:???
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
305 :
ぴえ〜る ◆zowdz.TJ/Q :03/06/06 09:07 ID:cm0eL4ze
306 :
動画直リン :03/06/06 09:10 ID:6EFZr+OJ
>>307 フリーで配布するから、もし見たいなら待ってください。
まだ付けたい機能あるし、バグのチェックが不十分。量も多いし…(汗。
遅くなっても6月中には公開します。
あ、でもソース公開したところで私の「オナニー作品」なのに変わりないよ(笑)
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
∧_∧
.(・∀・ )
と )
ガッ Y /ノ
人 / )
__∧_..< > _/し'_
|(.. `Д´ V (_フ彡
|\⌒⌒⌒\←
>>310 \ |⌒⌒⌒~|
∧_∧ ( ^^ )< ぬるぽ(^^)
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
∧_∧ (。・ヮ・); ゚し-J゚
316 :
nobodyさん :04/01/18 11:29 ID:U9Y4F/+3
現在PHPで掲示板を作成してるんですが サーバーによっては、書き込みデータに "(半角ダブルクォーテーション)と'(半角シングルクォーテーション)と\(円マーク、バックスラッシュ) の文字があると、これらの文字の前に勝手に\マークを挿入して記録してしまうんです。 " → \" ' →\' \→\\ こんな感じに。何が原因なんでしょうか?
317 :
316 :04/01/18 12:00 ID:U9Y4F/+3
いま、試してみたらほとんどのサーバーで勝手に挿入されてました。 xrea.comサーバーだけは挿入されませんでした。 もちろん、挿入するような処理はスクリプト側では一切やってません。
318 :
316 :04/01/18 12:29 ID:U9Y4F/+3
321 :
316 :04/01/19 09:23 ID:???
322 :
nobodyさん :05/02/16 20:26:17 ID:N2q6vGgG
>>31 君は
まず、htmlを覚えた方がいい。
なんだfont sizeって・・・・・
>>322 4年の時空を超えたレス! マジカッコイイ!!
font sizeの何が悪いんだ?
昔の痛い書き込みをテンドンしたんだろ
痛いっつっても当時はfont size全盛だったような。
文句は俺に言え
いや悪いのは俺だ
うっせーピー
331 :
you :2005/09/24(土) 17:25:42 ID:xejww78B
どうも〜
333 :
nobodyさん :2005/11/06(日) 11:25:46 ID:szZvbyxN
軽くしたければ静的で置くか、動的でもCとかの軽い言語で実装するしかない。 このスレ終了 ーーーー
4年以上前から有る1ヶ月以上止まったスレで高らかと終了宣言する馬鹿みっけ
ツリー式の掲示板を作ってみたい!
age
部活の初級シスアドの勉強ほったらかしてスレッドフロート型掲示板を作り初めて早二週間。 スレッド一覧表示は各ページ分割もうまくいっている。 が、各スレッドの表示画面作るって事になってから、めんどくさくなってしまった。 俺が先生に今からphpやります。 と言ったら今頃php? と聞かれてしまった。 その言葉がまだよみがえる。 俺の夢はレンタルスペース管理人。そのために勉強している。 世の中はいろんな想いに溢れてんだ。 ネットの海を使って「伝えたい想いのある人」に協力したい。って思ってる。 今これを見て、多分多くは、「何と馬鹿な奴だろう」と思うだろうが、 書き込みするだけで、‥今からまたphpやってみようかな‥ って気分になれるんだ。 お前らも勉強がんばってくれ。
>>337 同じこと今日やったけど、そんなんスレッド表示用の型を1個用意して$_GETか何かでキー投げて
それでlogから記事引っ張ればいいんじゃね
せっかくだから、俺はこの赤い掲示板を選ぶぜ!
>>334 お前何か勘違いしてないか?知識なんて使って減るもんじゃないから只だと思ってんだろ?
人に物を訊くってのがどういう事だか、自覚してる?
知識ってのはな、社会人に取って金と同じく貴重な財産なんだよ。使っても減らないけど、教えたら広まった分だけ価値が下がる。それを分けてくれって言ってんの自分でわかってる?
社会で必要とされる知識ってのはな、本になんか載ってない事ばかりなんだよ。全部人から人へ、直接のコミュニケーションを介して伝わって来たモンなんだ。
そういうノウハウを分けてもらう申し訳無さみたいな物が、伝わって来ないんだよ。お前の態度からは。
猿だって仲間から餌を分けてもらう時は申し訳無さそうな顔するんだよ。ヘラヘラ笑いながら近づいてったら殴り殺されんぞ。
猿だったら今頃とっくに死んでんだよお前。そんな態度で今まで。何回も言ったよな。謝る時は申し訳無さそうな顔をしろって。
そういう学校じゃ受けられない教育を受けておきながら、社会人を経験しなきゃ得られない知識を貰っておきながら、
何にも生かせてないんだよ今のお前は。学生のサークルごっこじゃないんだから。もっと四六時中危機感を持って生きてなきゃ駄目だよ。いい加減いつまで学生気分じゃ。
ヤリマンな痛い子
http://mbga.jp/.ge2d1857/_dia_list?u=14639062 …………
ごはんどきのプロフ詳細
…………
さすらいのパチラー今はペカッを修行中…足跡を見つけたら追っかけてチン○しゃぶりますよん(笑)
カキしてください板書きミニメどちらでもOKですゥ
お返しに一発ヤ○してアゲるから…いっぱい絡んでチョ!…パチでもスロでも必勝法伝授して下さい
プロフィール…地域:石川県…職業:奴隷ちゃん…趣味:パチとS○xと男漁りとジャニ…星座:ふたご座…血液型:AB型…誕生日:6月11日
【超絶基地外12歳荒らしの判明しているコテハン】 plus01 ★ 管理人 ★ πナップル ★ きうい ★ mango+ ★ Fine ★ YV/TV ◆.Y./V..TV. ジエン ◆2.14..sI1E ネックス ◆Nex/RZxaHI いざこざ ◆Nex/RZxaHI いざこざ ◆Iza..hlnPI いざ・・ ◆Iza..hlnPI FuLL! ◆FuLL/FW.EQ 1206 ◆1206ePaU1M ふぁー ◆fah/7D.Rkk ふぁー 返し ◆fah/7D.Rkk 6分のろーぷら ◆LowPrice/6 労ぷら椅子 ◆LowPrice/6 【livevenus:20】 ◆LowPrice/6 6分のろーぷら ◆MAyUzEEE/E 6分のろーぷら ◆MYU/e0Imzi1E 6分のろーぷら ◆/UeVRo.Tv. リック◆Lick/SPaQs 連投すみません ◆Lick/SPaQs うずまき ◆vzqJXqubSg リック ◆vzqJXqubSg ナマコぞうすい ◆WgQ1EvIdds 【判明しているリモホ】 p6073-ipbffx01marunouchi.tokyo.ocn.ne.jp z232163.dynamic.ppp.asahi-net.or.jp w62.jp-t.ne.jp cw43.razil.jp
343 :
nobodyさん :2011/10/09(日) 18:55:25.85 ID:76HAGw4P
はじめの一歩
よくがんばったねw
∧_∧
( ・∀・) | | ガガッ
と ) | |
Y /ノ .人
/ ) .人 < >_∧∩
_/し' < >_∧∩`Д´)/
(_フ彡 V`Д´)/ / ←
>>312 / ←
>>302
346 :
nobodyさん :2013/03/27(水) 20:27:05.78 ID:r73Jwrfn
12年前だぞw
348 :
nobodyさん :2013/03/29(金) 14:53:58.03 ID:g9p8VP00
今気づいたけど
>>1 の書き込み12年前かww
「PHPで掲示板とか・・・」って思ったけど、12年前なら納得・・・
つか、このスレどんだけ存続してるんだよ
349 :
nobodyさん :2013/09/12(木) 08:48:48.44 ID:JOUyu+hF
12年前クソワロタwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
せっかく
作ってみませんか?
ぬるぽ
掲示板作ってみませんか?
<?php include './confg.php'; include './function.php'; if($post = bbs_post()) { bbs_write($post); } bbs_view( bbs_entries(), bbs_params() ); ?> ふぅ、できた
できてる?