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

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

dat->html化自動処理プログラムをつくるスレ

1 :デフォルトの名無しさん:02/01/29 22:23
dat->html化自動処理プログラムを作るスレです。

◎主な仕様(夜勤さんより)
http://teri.2ch.net/test/read.cgi/accuse/1009278465/34-38
1、長時間はしるようなスクリプトは避ける(二分以内?)
2、サーバ負荷が高いときは、動いちゃダメ(LoadAve < 2.00くらい?)
3、板の新設、移動等があっても知らん顔して動く。
4、ls -l 風の動作は負荷が高い(相対的に許されない)ので極力おこなわない。
5、cron 使って起動かな? でも、せいぜい一時間に一回くらいかな?

「read.cgi改良スレッド3」からの分岐です。
参考:http://pc.2ch.net/test/read.cgi/tech/1002820903/426-465

87 :想像力なしさん:02/02/07 23:24
とりあえず、サーバのloadavg取得ルーチンの、BSD対応版
4.3BSDのころから、この機能がつかえるらしいので、
だいたいのBSDでオッケーなんでは?
取得できなければ -1、取得できれば整数部分だけ返す
あとは、#ifdefなどで、OSによって処理を分ければいいかな?

#include <stdlib.h>

#define LOAD_AVE_NELEM ( 3 )

/* 1min - 0 ; 5min - 1 ; 15min - 2 */
#define LOAD_AVE_ELEM ( 0 )

int get_loadavg(void)
{
    double loadavg[LOAD_AVE_NELEM];
    if (getloadavg(loadavg, LOAD_AVE_NELEM) == -1)
        return -1;
    else {
return (int) loadavg[LOAD_AVE_ELEM];
    }
}


88 :デフォルトの名無しさん:02/02/08 00:49
gzwrite使うと更新日時が保存されなくていや〜んなのよね〜
compress2も圧縮自体は全く同じだから、
差が出てくる理由は、crcの計算を細切れにすることで
キャッシュの効果が現れているだけ(結構差が出てる)。
それなら、全体をsprintfに置き換えて
「書き出した.htmlをもう一度読みこむ」のをやめるのがいいと思うな。
同時にz_streamを使って圧縮も細切れにする、と。

89 :デフォルトの名無しさん:02/02/08 00:52
loadavgは、2chの鯖以外はテスト環境でしょ?
実際に他の環境で使用するとしても、loadavgを気にしながら実行することって
あまりないと思うんだけど。
もし、それでいいなら、linuxとそれ以外で切り分けて、
linux以外は全てOKを返すようにしてもいいんじゃないかな。

90 :デフォルトの名無しさん:02/02/08 01:15
>85-86
やったつもり

91 :デフォルトの名無しさん:02/02/08 01:30
/kako/xxxx/xxxxx/index.html のことなんだけど、dat2htmlは
"dat番号,スレタイトル,レス数\n"
の連続する index.txt を /kako/xxxx/xxxxx/ に作ることにして、
index.htmlは別途作ることにした方が、
/kako/index.html や /kako/index9.html の作成にも応用できていいと思うのだけど、どう?

既存の過去ログを洗い直す必要があるのが難点だが。

92 :デフォルトの名無しさん:02/02/08 03:11
同じく、index.htmlの更新について、考えてました。

夜勤さんの話に、
 不要  /accuse/kako/index.html
 不要  /accuse/kako/index9.html
 ??  /accuse/kako/1000/index.html
 作成  /accuse/kako/1000/10004/index.html
とあったので、/1000/index.htmlも作る必要があると思っていたのですが、
調べてみると板名や鯖名などSETTING.TXTからも
直接取得できない要素が幾つもあります。
/kako/index.htmlから取得することも考えたのですが、
よくよく見直すと/kako/index.htmlと/kako/1000/index.htmlは、
ほぼ同じ形式で、同じスクリプトで作られているようです。
とすれば、/1000/index.htmlは作らないでも良さそうです。

で、/1000/10004/index.html(/999/index.html)だけ考えます。
こちらは、一覧以外の部分は非常に簡素になっているので、
読みこんで解析(既変換分を取得)し、新規に変換されたものを加えて
書きこむ形でよさそうです。(d2chhtml.hから流用出来る部分もあります)
新規作成/再構築する場合でも、板毎に異なるのは「掲示板に戻る」の
リンクだけなので、ロジックは簡単だと思います。

負荷的にも「/10004/index.htmlを一度読みこみ、新規変換スレを加えて書き出す」
だけなら、終了直前に毎回行っても問題にならないでしょう。
(ただ、index.htmlがない場合は「過去ログの.htmlを全て開いてタイトルを取得」
しか方法はないと思います)

93 :デフォルトの名無しさん:02/02/08 03:12
問題は、「過去ログのスレ削除」にどう対処するかでしょう。
新規変換分を追加する一方だと、削除されてもリンクが残ったままです。
「追加があった倉庫に対しては、同時にディレクトリ内の.html一覧を取得し、
.htmlが存在するスレのみを書き出す」という方法もありますが、
倉庫に追加される度にディレクトリを開くのは、ファイルが多い板の場合には
(例えばhttp://corn.2ch.net/entrance/kako/index9.htmlの下には
.html .html.gz .dat.gz合計で1万を超えているのが幾つもあります)
無視できない重い処理になる可能性があります。
また、この方式であっても、
「1つも新規に変換したスレがない倉庫内でスレ削除があった」時は
削除自体に気がつかず、indexを更新することができません。

結局、index.htmlのスレと実際に.htmlがあるスレとの整合性を保つためには
「過去ログのスレ削除が行われたら、どれでもいいから同じ倉庫内の
他のスレを(html等は残したままで)もう一度HTML化待ちに加える」という
方式を(削除スクリプト/削除した人が)とらない限り、
何らかの手段/時点で、全倉庫を調べる必要が生じます。
起動オプション等でこれを行うようにするのは問題ないでしょうが、
「スレ削除が行われるたびにindex.htmlを最初から作成し直す」のは、
できる限り避けたいところです。

それと、/kako/以下の各index.htmlも、あらかじめindex.html.gzが
作成されているようなので、これも更新したら圧縮する必要があります。
また、.gzの圧縮率は皆 gzip -6 相当(オプションなし=DEFAULT)のようです。
mod_gzipも(SETTING.TXT取得時に確認した限りでは)同等です。

94 :デフォルトの名無しさん:02/02/08 03:13
で、作りかけてます。

一つの板が終了(時間切れ含)する時に、index.htmlを更新する必要がある倉庫について
 index.htmlが既にあったら、既変換分を読みこむ
 なければディレクトリと既存の.htmlから読みこむ
し、
 新規に変換した分をマージし
 index.htmlを書き出す
という動作を考えています。
この程度の動作なら極端に重くはないと思われるので、
起動毎に行っても構わないと思います。また、終了前に更新されるので
「変換済み一覧(done.txt)」が不要になります。

「なければディレクトリと既存の.htmlから読みこむ」が
ちょっと面倒なのでこれを後回しにして
 あれば新規変換分と合わせて更新し、なければ新規変換分だけでindex作成
まで作って、なんとか動くようになったらcommitするつもりです。

あと、/accuse/kako/index.htmlと/accuse/kako/1000/index.htmlの方なんですが、
こちらはタイトルやレス数は必要なく、必要なのはスレッド数だけなので
夜勤さんスクリプトの方で、ls等を使って調べている気がします。

95 :デフォルトの名無しさん:02/02/08 03:17
みんなおつかれー。

>>93
削除関係は、レス削除にしてもスレ削除にしても、削除スクリプトとの兼ね合いから
考える必要がありますね。
夜勤さんとの話し合いになると思いますが、過去ログ削除は例外的なことなので、
削除スクリプトの方で(もしくは簡易のシェルスクリプトか何かで)対応するのが
現実的かなと思います。

96 :94:02/02/08 05:00
一応動いた。
まだ、「index.html新規作成時に倉庫内のhtmlを探す」動作はしていない

97 :デフォルトの名無しさん:02/02/08 11:18
index.htmlの作成と圧縮を付けた。これで、一応は要求仕様を満たした、、と思う。

98 :デフォルトの名無しさん:02/02/10 18:18
少しおかしかったところをhttp://mentai.2ch.net/accuse/
http://teri.2ch.net/test/read.cgi/accuse/1013276728/113のお願いを見て、
あわてて直した。
.SUFFIXEXや-lstdc++が必要かも。

99 :デフォルトの名有りさん ◆fSunOs.U :02/02/17 22:58
お久しぶり&乙カレーです.

ところで,現在どういう状態なんでしょう?
D-born対策等でそれどころじゃない!?


100 :デフォルトの名無しさん:02/02/17 23:40
SYN-flood・HDD増設・ime.nuなどで忙しくて
テストしてる暇なんか無さそうだけど、少し変更してみた。

主な変更点は
・.htmlの圧縮を、出力ファイルを読みこまずにメモリ上で行うようにした
・index.htmlの更新を板終了毎→各倉庫ディレクトリ終了毎に
・コマンドラインで多少動作を変更できるようにした
・旧形式のログの変換ミスを修正
など。
と、週末の変更が一段落ついたのでこちらにも書きこみ。

個人的には、
夜勤さんがhttp://yasai.2ch.net/test/read.cgi/event/1012552935/
に書きこむ位の暇ができたら、テストも出来るんじゃないかと。

101 :デフォルトの名無しさん:02/02/18 21:18
微修正。主な変更は
・「掲示板に戻る」のリンクを"/bbs/index.html"から"/bbs/"に
・既に変換済みのログの形式を.dat.gzから判別することも可能にした
・既に変換済みの.htmlからタイトル等を取得する部分のバグ修正

102 :デフォルトの名無しさん:02/02/19 23:11
index.html内のタグを小文字で統一し、
「投稿日」の曜日等の補完もできるようにしてみた。

103 :デフォルトの名無しさん:02/02/20 22:59
>>102
曜日補完、イイ!


104 :保全:02/02/26 04:33
保全。。。

105 :デフォルトの名無しさん:02/02/26 05:48
・壊れたdatを変換しないよう(設定で変更可能)にした
・移転後の残骸は無条件で変換しないようにした
・移転後の.datにレスが続いているもの(古いdatに存在)の扱いを
 変換する/壊れたdatと同じ から選べるようにした

106 :デフォルトの名無しさん:02/02/26 07:11
オイスターのおいちゃんが暇になった時に備えてのガイド

0.機能
・/bbs/temp/にある.datを(ファイル名の)古い順からhtmlに変換し
 .html,.html.gz,.dat.gzを作成する
・.datを変換したら、.dat自体も/kako/done/に移動する
 (移動せず削除することも可能:REMOVE_DATFILE)
・最下層のindex.html,index.html.gz(スレタイトル等が含まれるもの)を作成/更新する
・板別/鯖別でバナーを変更することも可能(make時に指定)
・動作ディレクトリ・稼働時間・プライオリティ・index.htmlの更新時の動作などは
 make時でもコマンドラインでも設定可能
・移転後の残骸は変換しない/壊れたdatも変換しない(デフォルト)
 (残骸や壊れたdatは/kako/broken/に移動する)
・詳細はdat2html.h、バナーなどはd2chhtml.h

1.ソースをDL
C++だけど、一部(コンテナとか)を除いて普通のC
http://2ch.nekoruri.jp/cvsweb.cgi/~checkout~/dat2html/dat2html.h
http://2ch.nekoruri.jp/cvsweb.cgi/~checkout~/dat2html/d2chhtml.h
http://2ch.nekoruri.jp/cvsweb.cgi/~checkout~/dat2html/dat2html.cpp
http://2ch.nekoruri.jp/cvsweb.cgi/~checkout~/dat2html/gzout.h
http://2ch.nekoruri.jp/cvsweb.cgi/~checkout~/dat2html/gzout.cpp
http://2ch.nekoruri.jp/cvsweb.cgi/~checkout~/dat2html/Makefile

2.dat2html.hの、ディレクトリを設定する(temp,done,broken)
テスト用のディレクトリにテスト用のdatを置いて試すとよいかも

3.Makefileの、zlibのあるディレクトリを設定する(read.cgiで使ったもの)
※ただし、dat2html.hのUSE_GZWRITEを定義したままCOMPRESS_LEVELを変えた場合は要注意
 dat2html.hでUSE_GZWRITEをdefineしている個所参照

4.makeする

5.試す
www-rootに相当するディレクトリで./dat2htmlとすれば2分間働く
./dat2html -h で、コマンドラインで設定可能なオプション一覧

6.不備があったら文句を言う

107 :デフォルトの名無しさん:02/02/26 21:49
>>106
昨日声掛けたんだけど、ヒマがないらしい・・・(;´Д`)

108 :期待AGE!!!!:02/03/02 19:27
 

109 :老C屋@夜勤 ★:02/03/06 20:06
どもども、いつもお世話になっています。


110 :デフォルトの名無しさん:02/03/06 20:20
おいちゃんだ〜〜。
遅いのは気にしなくていいと思われ。
こっちはマターリ待ってますんでヽ(´ー`)ノ

111 :デフォルトの名無しさん:02/03/06 20:23
時間に余裕が出来たら、ローカル環境とかで>>106をやってみて
問題がでたら教えてくださいな

112 :デフォルトの名無しさん:02/03/06 22:29
顔出してくれてありがとー。またーりやりましょね。

113 :老C屋@夜勤 ★:02/03/12 14:30
なかなか 忙しくて、ここにこれない私。
なんとか 今週中には ダウンロードしてコンパイルに挑戦したい。

114 :デフォルトの名無しさん:02/03/12 15:31
お疲れさまです。

115 :デフォルトの名無しさん:02/03/13 03:34
なかなか 忙しくて ここにこれない夜勤 ★さん。
むしろ 漏れが 手伝ってあげたい。

116 :デフォルトの名無しさん:02/03/13 09:23
bbspinkのhtml化スクリプトはpinktower対応になってるみたいなので
http://wow.bbspink.com/leaf/kako/1015/10156/1015666572.html
・転送URL
・除外ホスト(ホストにこの文字列が含まれるURLには転送URLを付けない。
初期値は2ch.netとbbspink.com)
を指定できるようにするといいかも。
ime.nu対応の過去ログは存在が確認できませんでした。

117 :デフォルトの名無しさん:02/03/17 00:32
過去ログをime.nu固定にするのはチョトコワイ、、、

118 :デフォルトの名有りさん ◆fSunOs.U :02/03/18 21:08
こっちにも......zlib更新しなくていいのかな?
  Double Free Bug in zlib Compression Library
  http://www.cert.org/advisories/CA-2002-07.html


119 :デフォルトの名無しさん:02/03/18 21:28
>>118
double-free問題は展開時の問題。
これやread.cgiは圧縮しかしないから平気っしょ。

120 :デフォルトの名有りさん ◆fSunOs.U :02/03/18 22:28
>>119 そういえばそだね (`ο`)シンダフリ


121 :デフォルトの名無しさん:02/03/18 23:44
dat2Html が実戦投入されないのは、
dat落ち過去ログにお金払ってくれる人が減っちゃうから?

122 :デフォルトの名無しさん:02/03/21 22:49
>>121
当然でしょ


123 :デフォルトの名無しさん:02/04/03 07:19
dat2htmlを改造して、
dat落ちから○日以上たったスレだけをhtml化・・・とかでもいいけどね

124 :夜勤 ★:02/04/03 17:50
どのサーバも重くてネ (なんにもできないぞー)
まずは、サーバ増強がはじまるので、それからっ ですー スンマセン

125 :デフォルトの名無しさん:02/04/03 17:56
おつかれさまれす。

126 : :02/04/14 21:08


127 :デフォルトの名無しさん:02/04/20 23:27
 

128 :デフォルトの名無しさん:02/04/21 00:55
サーバ増強が待ち遠しいな

129 :静岡人!元気です。 ◆/6Shizuk :02/04/27 10:12
>>128
お金がかかりそうだけど。

130 :デフォルトの名無しさん:02/04/30 00:04
静岡人消えれ

131 :デフォルトの名無しさん:02/05/10 09:52
↑ちょっと同意

132 :デフォルトの名無しさん:02/05/14 13:28
ageてみる

133 :デフォルトの名無しさん:02/06/01 21:44
漏れら極悪非道のageブラザーズ!
今日もネタもないのにageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧   ∧_∧    age
 (・∀・∩)(∩・∀・)    age
 (つ  丿 (   ⊂) age
  ( ヽノ   ヽ/  )   age
  し(_)   (_)J


134 : :02/06/23 23:46
保守っとく

135 :デフォルトの名無しさん:02/07/07 17:01
保守あげ?

136 :デフォルトの名無しさん:02/07/07 17:32
夜勤め。

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

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

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)