bby -- スレッド情報一元管理システム構築スレ
■ このスレッドは過去ログ倉庫に格納されています
2chにある全スレッドの情報を一元で管理するシステム(通称bby)について議論したり構築したり 雑談したりするスレッドです。 関連スレ bbs.cgi再開発プロジェクト2 http://qb3.2ch.net/test/read.cgi/operate/1069144193/l50 【広告】新機能 Rock54【自動排除】 2 http://qb3.2ch.net/test/read.cgi/operate/1067770666/l50 >>173 おお〜っ! って、後ろに付いとる数字はなんじゃ!subback叩くなゴラーw >>173 もしかして30秒ごとにsubject.txtかsubback.htmlをGETしてるんですか? >>173 感想。 「鯖」「板」という内輪の言葉は使わない方がいいんじゃないかなー。 >>173 すげ〜イイ!! ただ、今回の閉鎖騒動を見てふと思ったんだけど、このbbyを拡張して、2chだけでなく色んな ニュース系BBSのスレをヘッドライン的に出してくれるサイト作んないかな? サーバーや開設者や運営陣は別々に分散してて、システムの一部の仕様はヘッドラインに乗せるため 共通で。BBS共同体みたいなの・・・ あ、あと http://www6.big.or.jp/ ~beyond/bbsnews/ こんなのも、、 >>180 >>181 なるほど・・・ ただ2chだけだと、今は管理人の方は一人なので、何らかの理由で閉鎖とかなっちゃうともったいない なーと思ったので。管理者の責任とか負荷とかをもっと分散できてる状態で、かつ、利用者が便利な 状態が望ましいのかなぁ〜と思いました。 ただの世迷言ですw >>184 あれ、おいらはいけるんだけどなぁ、、 >>183 ある程度の責任を負える人ってのが 実はほとんどいないと思うのですね。 >>186 失礼。こっちの回線の問題だったようです。 そうですね。ある程度以上の規模があると責任は重いですからね。 といって、ちいさなBBSでニュースだとそれだけでは何の魅力もないでしょうし・・・ あくまで世迷言ですので・・・w tsugaru は C で書いてるんだけど DNS的手法を使ったスレタイ等の取得は形勢不利と決め付けて 各サーバにdat取りに行くことにしよっかな、 んで C でhttp使って別のサーバにdatを取りに行くのはどうやって やるんで? 教えてエロい人。 >>189 普通にsocket/bind/connectすればいいわけですが、 なんだか「負け」な気がするなぁ。 DNS以外を使うなら、新スレ通知の段階からDNS以外で まとめてやった方が効率良かったりしない? bbs.cgiが、URL・タイトル・投稿者名等をbbyにhttpでPOSTするとかさ。 DNSを全くつかわないなら bb* ではなくなってしまうわけだが。 誰かサブルーチン書いてちょ int BBYgetDat(char *dat1line,char *server,char *ita,char *key) { /* http://server.2ch.net/ita/dat/key.dat を取ってくる */ /* char *dat1line に一行目の生データを格納 */ /* strcpy(dat1line, xxxxx); ってな感じ dat1line は上で十分な長さが確保されている */ return 0; /* だめだった */ return 1; /* うまく行った */ } >>193 最終目標を失っちゃったら面白くないでしょ。 ちょっと遠出して高級羊羹を買ってくるつもりが、途中で つい買い食いしてしまった安物羊羹でなんだか満足、 ってな事にならなければいいけどね。 うちのcygwinではこんなソースで動いた。 int BBYgetDat(char *dat1line,char *server,char *ita,char *key) { FILE * fp; int fd; int ret; struct hostent * hp; struct sockaddr_in a; short port = 80; char * databuffer = malloc(2048); char * buffer = malloc(96); char * server0 = malloc(64); //declaration if (-1 == (fd = socket(AF_INET, SOCK_STREAM, 0))) return 0; /* get server address */ strcpy(server0,server); if (0 == (hp = gethostbyname(strcat(server0,".2ch.net")))) return 0; /* connect to server */ a.sin_family = AF_INET; a.sin_addr.s_addr = *((unsigned long *)hp->h_addr); a.sin_port = htons(port); if (-1 == connect(fd, (struct sockaddr *)&a, sizeof(a))) return 0; if(NULL == (fp = fdopen(fd, "r+"))) return 0; fprintf(fp, "GET /%s/dat/%s.dat HTTP/1.1\n", ita, key); fprintf(fp, "Host: %s:%d\n\n", server0, port); //dat1line = malloc(2048); while(1) { if (fgets(buffer, 64, fp) == NULL) break; else if(strcmp(buffer,"\r\n") == 0){ while(1) { if (fgets(buffer, 64, fp) == NULL) break; if(strcmp((buffer+strlen(buffer)-1),"\n") == 0){ strncat(databuffer,buffer,strlen(buffer)-1); break; }else{ strcat(databuffer,buffer); } } break; } } strcpy(dat1line, databuffer); close(fd); close(fp); return 1; } ただ、もしかしたら改行コードの関係で else if(strcmp(buffer,"\r\n") == 0){ の行を else if(strcmp(buffer,"\n") == 0){ にしないとだめかも。 あ、おもいっきしdatファイルがないときの 処理とか書いてないし、、 ま、いっか。 >>189 >DNS的手法を使ったスレタイ等の取得は形勢不利と決め付けて なぜこのように思われたのでしょうか? エンコードとか分割などの方法があると思うのですが。 >>199 ほぅほぅ どうやるんですか? ( ̄ー ̄)ニヤリッ エンコード。聞きたいですねぇ。 p.iに流用したら、ヘタレ検索が治るかも? >>197 わーい、どもですー こんな風に言われました ヘッダは何がいるですか? tsugaru.c: In function `BBYgetDat': tsugaru.c:33: storage size of `a' isn't known tsugaru.c:40: `AF_INET' undeclared (first use in this function) tsugaru.c:40: (Each undeclared identifier is reported only once tsugaru.c:40: for each function it appears in.) tsugaru.c:40: `SOCK_STREAM' undeclared (first use in this function) tsugaru.c:43: warning: assignment makes pointer from integer without a cast tsugaru.c:46: dereferencing pointer to incomplete type tsugaru.c:72: warning: passing arg 1 of `close' makes integer from pointer withou >>202 こんなんでしたー。 #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <assert.h> ←これはこの部分ではいらんかも、、 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> どもです コンパイル通りましたー 一箇所だけ cc -o ../tsugaru.cgi tsugaru.c tsugaru.c: In function `BBYgetDat': tsugaru.c:76: warning: passing arg 1 of `close' makes integer from pointer without a cast と言われたので、 fclose(fp); にしましたー >>205 あ、ファイルポインタのクローズだから 正しくはそうですね_| ̄|○ ナンデウゴイタンダロウ、、 了解ですー。 >>200 スレッドタイトルなどを送れない原因は (1)使用禁止文字があるとDNS問い合わせが失敗する。 (2)文字数制限がある。 の2つであってますでしょうか? (1)の解決方法 ->URLエンコード(?)などを行う (例) --- $title =~ s/(.)/unpack('H2',$1)/eg ; --- (2)の解決方法 ->A.最大転送可能量で切る (例) --- $title = substr($title,0,62) if ( length($title) > 63 ) ; --- ->B.複数回に分けて送信する などでは駄目ですか? なんかどんどんわけわからんものに・・・。 トリップは </b>◆AAAAAAAAAA <b> ってな感じでタグが入るから、出力に気を付けた方がええよ。 じゃあトリップ廃止しちゃえば解決するね(´・ω・`) 単純にBase64デコード・エンコードすればいいような。 bbs.cgi側 gethostbyname(base64string2.base64string1.key.2chdomain.bby.2ch.net) IPと同じ発想で逆順で要素を並べる。 サブジェクトはBase64エンコードして、63文字で区切る。 bby側 文字を後ろから見ていって、key以降はサブジェクトで判断。 サブジェクトを結合してBase64デコードする。 >>212 もしホスト名で使用可能な文字にするためにエンコードしようとしているなら、 Base64ではだめですよ。 強いて言えば、Base32とかBase36ってことになるのかな。 例えばIDN(国際化ドメイン名)では以下の方式を使用。 http://www.ietf.org/rfc/rfc3492.txt >>213 質問です。 >>207 のエンコードでは駄目なんですか? 分割の方法に関しては、いま、考えている方法があるので、 後でまとめて書き込みます。 すんません、erimoのall.txt及びnews.txtのデータカラムの統合をできないでしょうか? 現在は 日付 時刻 アドレス datデータ となっていますがかみ合わないので、データカラムを「<>」に統合できませんか? bizplusは最新スレッドのnews系には含めないんですか? たしかに、、 news系サーバに入れば出てくるんですけどネ ==========ひたすら自作自演あらわる。(痛すぎ)=========== http://school.2ch.net/test/read.cgi/shikaku/1053458042/ http://school.2ch.net/test/read.cgi/shikaku/1052906008/ 橋下弁護士スレッドと北村弁護士スレッド に現われた彼。 IDとメール欄が全く同じなのに 自作自演を繰り返し(一目でわかる) 必至で取り繕ってるイタィ香具師が出現しました。 これは満足していただけると思います。 すさまじい痛さをお召し上がりください。 ずいぶんdat取得に失敗しとるなー 2004/02/03 17:40:55 http://pc.2ch.net/test/read.cgi/mac/1075797655/ pc<>N/A<>N/A<>N/A<>データ取得できませんでした 2004/02/03 17:35:17 http://pc4.2ch.net/test/read.cgi/yahoo/1075797317/ 名無しさん(新規)<><>04/02/03 17:35 ID:KR60/eTp<> みたいな経験はありませんか? <>【知り合い】落札者が会社の上司でした【家族】 2004/02/03 17:27:45 http://pc3.2ch.net/test/read.cgi/jisaku/1075796865/ pc3<>N/A<>N/A<>N/A<>データ取得できませんでした 2004/02/03 16:30:47 http://pc3.2ch.net/test/read.cgi/hard/1075793416/ pc3<>N/A<>N/A<>N/A<>データ取得できませんでした 2004/02/03 16:30:47 http://pc3.2ch.net/test/read.cgi/hard/1075793416/ pc3<>N/A<>N/A<>N/A<>データ取得できませんでした 2004/02/03 16:30:47 http://pc3.2ch.net/test/read.cgi/hard/1075793416/ pc3<>N/A<>N/A<>N/A<>データ取得できませんでした 2004/02/03 16:30:47 http://pc3.2ch.net/test/read.cgi/hard/1075793416/ pc3<>N/A<>N/A<>N/A<>データ取得できませんでした なんとなくオモロイけどex2がスレ立ちまくるわりに read.cgiが止まっててクリックでスレがみれないのが プチムカツク 動いてみると、なかなかいい感じすね、これ。 私はありものを設定したりチューニングしたり力を発揮させたりするのは好きだけど、 こういうプログラムをサクっと作れるセンスはないからなぁ。 最新スレ取得してヘッドラインを作る人が沢山します。 また、そんなソフトを作って配布している方なんかもいるかも知れません。 沢山の人がヘッドライン欲しさに各板の subject.txt をものすごい勢いで 取得しているんです。各サーバの負荷を減らすためにも BBY を使って 実現してください > ヘッドラインな人たち 各板の subject.txt を取得するより遥かに安価なコストで 最新スレの状況をGetすることが可能です。 早い、安い、旨い。 >>231 ホットゾヌ2だとゾヌ内で一般のページを表示できる上に、 その中のリンクが2ch内なら自動的に2chブラウザモードで開いてくれる。まじ便利。 >>232 >>215 で質問があります。 ----------- >>221 の説明を簡単にすると まず、ユニークなIDを作り、 送りたいデータをエンコードし、分割し、それぞれにIDをつけて転送します。 下のような感じで送ります。 --- 0000000000AAAA000 -> uniqeな文字列(結合時のIDとして使う) BBBBBBBBBBBBBBB -> データ部(63ごとに区切る) --- gethostbyname(0000000000AAAA000.BBBBBBBBBBBBBBBBBB.BBBBBBBBBBBBBBBB.BBBBBBBBBBBBB.bby.*******.jp); gethostbyname(0000000000AAAA000.BBBBBBBBBBBBBBBBBB.BBBBBBBBBBBBBBBB.BBBBBBBBBBBBB.bby.*******.jp); gethostbyname(0000000000AAAA000.BBBBBBBBBBBBBBBBBB.BBBBBBBBBBBBB.bby.*******.jp); --- サーバ側ではID毎にメッセージを固めて、デコードすれば復元できます。 これによって、任意の文字を任意の量だけ送ることが出来るようになります。 と言うのではいかがでしょうか?>>200 >>235 トータルなコストの比較をざっくりするとどうなるですかねぇ? どこの板から引っ張ってきてるのか、わかるといいな。 いいっすねコレ ニュース各板のローカルルールに加えて( ゚д゚)ホスィ… 特に+ >>233 えりもは、「BBYからの結果がリアルタイムにわかるところ」で動いているから、 出力をリアルタイムで出せる、という話があったりして。 何かの方法で、BBYからの結果を、BBY側に必要以上に負荷がかかることなく、 割とリアルタイムに外部から取り出せるようなしくみが、あればいいのかな。 >>236 >>221 のサンプルはもうちょっとコードを最適化出来ると思います。 その時、 ・bbs.cgiが数行増え、BBYのためのDNS問い合わせが(今まで1回だったのが)2回以上になる場合がある。 のと、 ・後から、ソケットを開いてサーバにdatを取りに逝く というのと、どっちがコストが安いということでしょうか? --- >>235 の追加で ・利点 のちにdatファイルを取得しても得られない情報(例えば、IPとか?)も送信可能。 ・欠点 DNS問い合わせが複数回になる可能性があるので、 「DNSに何らかの仕掛けを行って、DNSの返答によってbbs.cgi側で処理を変更する」 ということが難しくなる。 それと、スレのkey、鯖、スレッドタイトル程度だったら、ほとんど1回のメッセージに まとまるような気がするので(具体的には実験して無いですが) なので、最大値を決めて、それを超えたら、切ってしまうと言う方法も有効だと思います。 >>109 使わないとは思いますが、一応ユーザー権限でのインストールのmakelogを示します。 ---- % tcsh % setenv PERL5LIB /you/home/directory/lib % perl -MCPAN -e shell cpan> o conf make_arg -I~/lib cpan> o conf make_install_arg -I~/lib cpan> o conf makepl_arg LIB=~/lib PREFIX=~ INSTALLMAN1DIR=~/man/man1 INSTALLMAN3DIR=~/man/man3 cpan> install Net::DNS perlスクリプトの方に -- use lib '/you/home/directory/lib'; -- を追加 ----- ところで、ふと思ったのですが、 TXTレコードってzoneファイルに定義するものであって、 クライアントはそれを受け取るだけで、送信するものでは無いと思っていたのですが、 クライアントから送信することって可能なのでしょうか? #ちょっと調べて見た感じでは、そう言う使い方が出来るのか不明だったんです。 ニュース系は板名が区別できるよう 記者の名前でも色分けして欲しいっす >>242 ん、やっぱ、PERL5LIB定義ですか。なるほど。 送信できなきゃ、応答もできんですよ。 DNSって、送信と受信のパケットフォーマットが全く同じなんです。 2004/02/03 18:44:24 【パクリ】 B’z の戦略!?【おまけ商法】 名無しのエリー を最後に更新止まってます? >>244 >DNSって、送信と受信のパケットフォーマットが全く同じなんです。 なるほど、 どうやるかちょっと興味あったりします。 あと、>>221 に何か欠点があれば何なりと コマンドはちゃんと呼ばれてますね。 DNS側は異常には見えんです。 状況かわらず。 コマンドはちゃんと呼ばれてるの確認できてるんで、これ以上わからんです。 # これからしばらくオフライン。 ついでに風邪ひいた俺のノドも「ごにょごにょ」とかで直してくだせぇ>rootタソ おあそび というか、2ちゃんねるそのものに意味が(ry 運営側に立て付く馬鹿キタ━━━━━━(゚∀゚)━━━━━━ !!!!! ID:0dacPRiAは違法・薬板の自治スレにて雑談しないで下さいと言った 運営側に立て付いています!!! http://tmp2.2ch.net/test/read.cgi/ihou/1074211413/ と思ってニュー速いったみたら・・・ 既にスレストだった。ショボ゙ーン >>266 カチューシャはdatファイル読みに逝くので、 2chの普通のdatファイルと同じフォーマットのファイルを作って 適切なディレクトリに置けば良いだけだから 実装自体は簡単に出来ると思う。 2getをスクリプトで取りに行かれると、元の鯖のほうにも負荷がかかるかも。 いっそbbs.cgiが自動で2getして広告かなんかを書き込んでしまえ。 >>266-267 非公式のやつでいいならやりますが、、、 >270 スレッドに書き込む感じにすればいいような ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる