トップページ⇒tech
984コメント345KB

2chブラウザののログコンバーターを作ろう

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
乱立する2chブラウザですが、ログの形式がそれぞれ違う為に
移行するにしても過去ログを捨てなければいけません。
そこで共通のログコンバーターを作ろうというスレッドです。

ちなみに私はプログラムはVC++が出来ますが、
プロでもないし、それ程の実力も無いので協力者を募集します。

関連スレ
monazilla.org (w
http://www.monazilla.org/
0232デフォルトの名無しさんNGNG
<!ELEMENT name - - CDATA>
<!ELEMENT mail - - CDATA>
<!ELEMENT id  - - CDATA>
<!ELEMENT rh  - 0 (name?, mail?, id?)>
<!ATTLIST rh
 id  ID  #REQUIRED -- レス番 --
 date CDATA #REQUIRED -- yyyy-mm-dd --
 time CDATA #REQUIRED -- hh:mm(:ss)? --
 >
<!ELEMENT ref  - 0 EMPTY>
<!ATTLIST ref
 id  IDREFS #REQUIRED -- レスの参照 >>1 --
 >
<!ELEMENT br  - 0 EMPTY>
<!ELEMENT % inline "ref, br">
<!ELEMENT rb  - - ((%inline;)|PDATA)*>
<!ELEMENT res  - - (rh, rb)>
0233デフォルトの名無しさんNGNG
スレ違いかもしれないけど
DTDとスキーマってどっちがはやってるの?
0234デフォルトの名無しさんNGNG
流行りも何もDTDが主流だろ
0235デフォルトの名無しさんNGNG
>>233
流行という意味ではschema

というか上 >>229,232 にでてるDTDはSGMLのであってXMLのじゃない。
0236デフォルトの名無しさんNGNG
XML Schema はだるいので、RELAX-NG 希望。
0237デフォルトの名無しさんNGNG
すべてだるいので、マークアップだけ希望
0238デフォルトの名無しさんNGNG
すべてだるいので1が作り終わるまで待ちます
0239デフォルトの名無しさんNGNG
>>231
タブはヌル文字アタックでゲーハー板がForbidden攻撃などの結果
他の制御文字もろともフィルタリングされるようになりますた。
0240デフォルトの名無しさんNGNG
2ch 互換サイトはまた違うだろうね。
0241デフォルトの名無しさんNGNG
openjane→かちゅのコンバータの需要あります。もしかしたら
私一人かも知れませんが。がんばって作っていただけるとうれしいです。
0242デフォルトの名無しさんNGNG
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0005.zip

XMLの形式はまとまるのにまだ時間がかかりそうだし、
>>1は友人のケコーン式に行っておそらく今ごろ二次会か三次会で
騒いでいるかもしれないので、プラグイン形式の模索版を作ってみました。
一応、OpenJaneログ→>>215式XMLに "なんちゃって変換" する
プラグインとそのソースも同封しています。その他はReadme.txtをご覧あれ。
0243デフォルトの名無しさんNGNG
>>241
悲しいけどここ作ろうスレなのよねぇ
0244デフォルトの名無しさんNGNG
>>242 gj

今のところXMLは
要素名、属性名は >>215、
ツリー構造は >>219、
res要素以下の構造は >>215 か>>230 ってところですかね。

で、その>>215と>>230で違っているのが.datの各フィールドを
そのまま保存するか、
パーシングして保存するか。

前者は楽チン、
後者はログコンバータとしては2度手間、だけどマークアップ的にはより良い。

例:日付フィールド
<date>03/03/05 10:06 ID:3TyuvqLs</date>
<rh date="03/03/05" time="10:06">
0245デフォルトの名無しさんNGNG
date とかのデータ型は XML Schema に従った方が楽そう。
http://www.w3.org/TR/xmlschema-2/
0246242 ◆GsQAUnYIlM NGNG
一応。
http://www.geocities.co.jp/Beautycare/4965/public/logconv.html
02471 ◆LirUghTKBo NGNG
帰還。

    |
    |  ('A`) ハァ...
   / ̄ノ( ヘヘ ̄ ̄
02481 ◆LirUghTKBo NGNG
何となくIO別冊のXML即効レッスンというのを買ってた。
よく読むと欲しかった情報があまり無かったり…。

>>242
CFileFindとGetProcAddressあたりに目から鱗が落ちた気分。
プラグインと言っても作り方、利用方法が漠然としてて
全然わからなかったので非常に参考なります。感謝。

>>238
待ってくれるだけ良いですね。('ー`)
0249デフォルトの名無しさんNGNG
他 2ch 形式の BBS までを考慮に入れた場合
構造は
ドメイン(2ch)
 +- 板(プログラム)
   +- スレッド(ログコンバータを作ろう)
     +- レス(1-n)
この形で表現できると思う。
それを踏まえた上で、
ボトムアップでフォーマットを決めて行けば
色々と作業しやすいんじゃないだろうか?

お帰り >>1
0250デフォルトの名無しさんNGNG
>>1
朝帰りですか…
0251242 ◆GsQAUnYIlM NGNG
関係ないが、アプロダのup0002.xmlが水曜どうでしょうスレか・・・
実は俺、道民。
0252242 ◆GsQAUnYIlM NGNG
http://www.geocities.co.jp/Beautycare/4965/public/logconv.html
ちょっと手直し版です。プラグイン呼び出しを別スレッドにしました。
XMLも、とりあえず<res>内をそのまんま出力するようにしてみました。
0253デフォルトの名無しさんNGNG
>>247
朝帰りってまさか結婚式で出会った女性とちょめちょめしたんじゃないだろうな。
もしも>>1がそんなナンパな奴なら俺はこのプロジェクトを降りる!
02541 ◆LirUghTKBo NGNG
まぁまぁ、もちつけおまいら。
下らないスレ違いの戯言だけどさ、聞いてくれよ。
2次会行ったんですよ、2次会。
それは楽しく終了して帰ろうと思って電車の時間を確認したら
終電の時間過ぎてたんですよ。えぇ。
してね、始発の時間を確認したら4時間あるんですよ。
その間どう過ごそうかと。
で、3次会行ったんですよ。3次会。
カラオケ2時間歌って閉店なので終了。
残り2時間くらいはまぁ、駅で過ごそうかと。そう思ったんですよ。
駅に戻ったら

鍵かかってたんですよ。

後ろ向いて繁華街だった場所を見直したんです。
適当なところで時間潰そうかと思って。

真っ暗なんです。

気温ですか?マイナス20度ですよ。
以下想像どおり。(場合によっては絶する)
0255253NGNG
>>254
疑ってすまなかった。参加させていただくます。
02561 ◆LirUghTKBo NGNG
・・・なんて自らでスレの方向曲げてどうするのだと。

修正。

改めて参考になるような本を探してみたら
XMLを扱っている参考書ではJavaやPerl、PHPばっかりで後は.NETぐらい。
MSXML4付属の英語マニュアル読めって事ですか…。
頑張るか('A`)
02571 ◆LirUghTKBo NGNG
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0006.zip
とりあえず前回とほとんど変わってませんが
レスの数だけかましていたメモリリークを修正しました。
流石に放置しておくのもアレなんで…。
02581 ◆LirUghTKBo NGNG
>>244
BBSによって記述が違うみたいです。

(Janeの2ch DAT)
03/02/28 10:01 ID:???
(JaneのしたらばJBBS DAT)
2002/05/13(月) 08:40 ID:???

こういう場合もありますし、そのままやった方が
良いのではないかと思います。
0259デフォルトの名無しさんNGNG
かちゅのログって、カンマ区切りにするために中身色々変更してるっ
ぽいけど、あの辺の仕様って公開されてんの?
0260デフォルトの名無しさんNGNG
>>259
>>70らしいでつ
0261デフォルトの名無しさんNGNG
せめて各ログのサンプルをアプしてくれないかな・・・
0262デフォルトの名無しさんNGNG
このスレのログを各ブラウザでうpしたらどうだろう。
共通だし。
0263デフォルトの名無しさんNGNG
>>262
このスレのOpenJaneログ
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0007.zip
0264デフォルトの名無しさんNGNG
# ゾヌ1 \log\pc2.2ch.net\tech\1046742687.inf
DateTime=2003/03/10 00:14:37
Size=78075
Url=http://pc2.2ch.net/tech/dat/1046742687.dat
BOLD=0
REVERSE=0
COLOR=clWindowText
ABONE=0
INVISIBLE=0
READ=263
BBSTYPE=0
BOARDURL=http://pc2.2ch.net/tech/
TOP=15981
READALL=0
PRIORITY=0
READ_POS=0
UPDCHECK=0
LAST_LOAD=03/03/10 00:44:13
TITLE=2chブラウザののログコンバーターを作ろう
LAST_SENT=03/03/08 02:02:19
0265デフォルトの名無しさんNGNG
>>262
ホットゾヌ1.0β2.9
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0008.zip
0266デフォルトの名無しさんNGNG
あのあの。
中間形式を XML で持つんだったら、XPath とか XSLT とか使って
レスのフィルタリング機能とか実装しませんか?

中間形式 XML のログ * フィルタリング情報 XML ファイル
 = フィルタリング済み HTML ログ

よく2ちゃんのまとめサイトで、必要な情報や、より価値のあるレスだけを
抜き出してまとめて整理してあるところってあるじゃないですか。スレの杜とか。
そういう「選ぶ・まとめる・整理する」というのを自動化して、
フィルタリング結果を javadoc みたいに HTML にレンダリングできたら、
面倒くさくなくていいと思いません?

「有意義なレスを抽出する」作業を分散できるので、特定のサイト管理者が
全部やらなくちゃいけないこともなくなるから、2ちゃんの膨大な資源を
みんなで効率良く発掘できる手段になると思うんですが・・。

まぁ必ずしも XML でやる必要もないでしょうけど。
0267デフォルトの名無しさんNGNG
考えてるフィルタリング情報は以下の通り。

selection
 「いる/いらない」情報をもつフィルタ。
 いわゆる荒らし対策のあぼ〜ん情報を保持するフィルタと考えてください。
score
 「どれだけ価値があるか」情報。selection の上位版。
 それぞれのレスに non-negative number のスコアを与えます。
 0/1 の値だけを持つ score 情報は、selection と等価。
hierarchy(tree)
 ベタ形式 → Tree 形式
 先例はこちら:
 http://nmgm.s2.xrea.com/x/class/
link
 hierarchy の上位版? それぞれのレスに関連したレスの情報の情報を保持。
walkthrough
 読む順番と関連レスを保持。
memo
 レスに対するコメントや捕捉、メモなどの情報を保持。
0268デフォルトの名無しさんNGNG
フィルタリング自体は手でやるの?
自動化や共有をする?
0269デフォルトの名無しさんNGNG
フィルタリング情報の使い道のひとつに、これらの情報を組み合わせて
使うというのがあります。

たとえば、スレを斜め読みしたい人は、selection * hierarchy で
スレのだいたいの像がつかめます。
より有意義と思われる情報を読みたい人は、score + score で得点の高い
レスを目印に読み進めます。
そして、辞書的に使いたい人は、selection + link といった風です。

>>268
フィルタリングのやり方は、どういうフィルタを作りたいかという
価値観によって変わるでしょうか・・。
人の手が必要な場合もあるでしょうし、レスの tree 関係を抽出するだけなら、
http://nmgm.s2.xrea.com/x/class/
で示されているように '>>数字' を元に機械的に処理してもいいでしょうし。
もちろん '>>数字' に投稿者によるミスが含まれていたら、手動で直す
こともできるでしょうね。

>>268さんのおっしゃるとおり、フィルタリング情報を共有することによって
ログのブラウズ作業がより効率化することにもつながると思います。

そのフィルタリング情報は、どんなファイル形式で持ってもいいと思います。
XML でもいいし、もっとコンパクトにシリアライズして、スレの締め 950-1000
あたりに「これがこのスレのハイライトでした」と貼りつけてもいいでしょうし。
0270デフォルトの名無しさんNGNG
もう少し言えば、例えば XPath や XSLT で抽出・HTML レンダリングを実装すれば、
フィルタリング情報ファイルを共有するアップローダを用意しさえすれば、
クライアントがローカルに HTML レンダリングできるので、CGI に HTML
レンダリングさせてサーバに負荷をかけることはないと思います。
0271デフォルトの名無しさんNGNG
>244
date要素にID入ってていいの?
0272デフォルトの名無しさんNGNG
>>266
各monazillaツール互換以外にHTMLでの出力プラグインの話は前にも少し出てたよね。
そっちを作る話と一緒にすればいいかも。
あー、でもゾヌ2のしおりを出力するようなもんなのかな。
0273266NGNG
>>272
なるほど・・。既にそういう話はあったんですね。コメントありがとうございます。
中間形式 XML の書式が決まったら、既存の XSLT ツールで
レンダリングするのも簡単で柔軟な対応ができるでしょうから、ぜひ
このスレでもその点を考慮に入れてくださいませ。

しおりを共有できるのは面白いですね。
>>267に追加させてください。
bookmark
 しおりの情報を保持。
0274デフォルトの名無しさんNGNG
>>266
いいですね。
スキン対応とかも含めていいんでしょうか?(漏れだけ違う話かも…)
0275デフォルトの名無しさんNGNG
>>271
2ch のログ形式に依存してるよね。
2ch 中でも何もなかったり、ID だったり、リモートホストだったりと
板によって異なるからプラグイン側で面倒を見るべきかと。
02761 ◆LirUghTKBo NGNG
VC++6プロジェクトファイル
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0009.zip

仮ですがMSXML(2?)を利用したXML出力をしました。
中身のDATを水曜どうでしょうから>>263の物へ変更。
XMLのフォーマットは仮に>>215を参考に。
<res num="1">のようなアトリビュート(?)の出し方が
よくわからないので保留…。

一応吐き出したXMLもウpしておきます。
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0010.xml

MSXMLも昔の奴は全然資料無くて困ります。
02771 ◆LirUghTKBo NGNG
晒しage忘れた
02781 ◆LirUghTKBo NGNG
げ、IEで表示はされるけどソースが酷いことに(´Д`)
0279デフォルトの名無しさんNGNG
>>276
<res num="1">
じゃなくて
<res>
 <num>1</num>
にすればいいじゃん。
ただ、dat自体もレス番号を保持していないし<num>は不要という話もある。
0280デフォルトの名無しさんNGNG
ここは2ちゃんをXMLで表現しようスレですか?
02811 ◆LirUghTKBo NGNG
>>279
単なるDATを解析するついでに保持していたぐらいなので
言われてみれば確かにレス番号を保持する必要は無いかもしれません。
でも>>266のようなことをしたい人もいるでしょうし、XSLTを使う要素の一つとして
持つぐらいは良いんじゃないかなと思っています。

で、一応XSLTで利用しやすい形で<res num="1">なんですよね?
・・・と、私が皆さんに聞いてみたり。

ごめんなさい、XMLそのものを知って日が浅いので
私からは何とも言えないです。鬱('A`)

>>280
わかってるくせに。( ´ー`)σ)Д`)
0282デフォルトの名無しさんNGNG
>>280
私はそれでいいと思うんだけどな。
ちゃんとした仕様だけ決めてしまえばいい。
そしたら、思いもよらない使い方をするやつが現れたりするかも。

ある1つのデータ形式の書き方の違いで、2ch全体の全てのログを表すことも、
たった1つのレスを表すことも出来るようにすれば、友達同士でログ交換できるし。
2ch ブラウザ開発者が、もしかするとその形式に対応してくれるかもしれないし。
0283デフォルトの名無しさんNGNG
>>281
スレッドのタイトルをtitle要素にした方がよくない?
<title>2chブラウザののログコンバーターを作ろう</title>
0284デフォルトの名無しさんNGNG
>>282
レスにハッシュコードつけて共有(w
0285デフォルトの名無しさんNGNG
>>284
ん?言ってる意味がわからない。
ハッシュコードについては理解しているつもりだが・・・。
0286デフォルトの名無しさんNGNG
いや、掲示板の p2p キャッシュになるなってこと。
0287デフォルトの名無しさんNGNG
>>286
よくわかんないけど、●買わなくてもよくなる、ってこと?
02881 ◆LirUghTKBo NGNG
>>283
ありがとうございます。修正します。

>>284
ゥィ=-しすぎです。
02891 ◆LirUghTKBo NGNG
吐き出したXMLの
>>244
>>258
に抽出バグ発見。

なんでだろ
0290デフォルトの名無しさんNGNG
      ∧_∧  
     /  ´∀)
     |  U /
     ( ヽノ
      ノ>ノ  ヒタヒタ
. 三  しU


         ∧_∧  
        / ´∀`) < ぬるぽ
        |  U /
        ( ヽノ
         ノ>ノ
        しU
02911 ◆LirUghTKBo NGNG
わかった・・・(;´Д`)
「ID:」が本文までに含まれてしまうとID付きスレッドの処理と勘違いして
やっちまうらしい…。
まず区切りまでの部分を先に抽出しなきゃ駄目ね。

と言うことで叩かせて頂きます!!

  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>290
02921 ◆LirUghTKBo NGNG
VC++6プロジェクトファイル
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0011.zip

ID無しのスレで本文にID:があるとおかしくなるのを修正。
トリップ付きの名前だと「1 </b>◆LirUghTKBo <b>」になってるので念のためCDATAで確保。
スレ名を<title>でくくるように修正。
レス番号を<num>1</num>でとりあえず追加。

吐き出したXML。
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0012.xml


出力したXMLもちゃんとUTF-8になっているらしく激しく感動。
きっと>>125も安心ですね。
02931 ◆LirUghTKBo NGNG
それはそれとして、出力したXMLってソースで見ると改行無いから凄い見づらいです。
何とかならないかな…。
0294デフォルトの名無しさんNGNG
>>276
http://www.w3.org/TR/REC-DOM-Level-1/
http://www.w3.org/TR/REC-DOM-Level-1/idl-definitions.html
0295242 ◆GsQAUnYIlM NGNG
http://www.geocities.co.jp/Beautycare/4965/public/logconv.html

XMLを>>244形式に近づけた。ただし<res>内はそのまんま出力。
まぁ、これ(OpenJaneToXml)はあくまでも動作確認用のプラグインなので、
実際の共通XML作成プログラムは>>1に任せるとする。
で、今回のバージョンの2chブラウザログコンバータ(仮)には
通知関数を付けてみた。

例えば、ログにtechのサーバはpc2.2ch.netと記録されてたとする。
ところがその後サーバがpc20.2ch.netに変更されたとする。
このとき、プラグインはコンバータ本体に問い合わせて、
正しいサーバを取得できるようにしてはどうかというもの。
コンバータ本体は最新の板一覧情報をプラグイン側に通知する。
今のところコンバータはSettingsフォルダに入ってるbbsinfo.iniから取得してるけど。

"tech"自体が変わっちゃったら意味ないけどな・・・
0296デフォルトの名無しさんNGNG
CDATAの特殊記号の扱いだけど
<name>,<msg>,<mail>(?)
でどうするん?
1)実体参照にするのか。
2)実体参照が指す文字にするのか。
3)その他。
0297デフォルトの名無しさんNGNG
>>95の問題があるからOpenJaneから過去ログの正しい場所を探すのって不可能じゃない?
0298デフォルトの名無しさんNGNG
>>296
]]>
って現れる可能性ある?
0299デフォルトの名無しさんNGNG
]]> → ]]&gt;
に変換してからCDATAセクションに文字列を埋め込むのがXMLの仕様だから、読み取り時には出てこない。
0300デフォルトの名無しさんNGNG
Chalice for vimも仲間にいれてよ!!
0301デフォルトの名無しさんNGNG
>>300
logをupシル!
0302デフォルトの名無しさんNGNG
<title>はCDATAにしなくていいの?
0303デフォルトの名無しさんNGNG
numとdate以外はCDATAだろうね。
0304デフォルトの名無しさんNGNG
serverとかにガバッと囲まれてるのは違和感あるので>>219の構造に一票なんだが。
0305244NGNG
XML のことでいくつか書きます。

まず Schema のサンプルとそのインスタンスを作りました。
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0013.zip

基本的には >>215, >>219 をあわせたもので、変更点は

[bbslog要素]
意味が広すぎるので要素名を monalog に変更。

[namespace]
これは逆に 2ch のみのログとは限らないので
http://www.2ch.net/log から http://monazilla.org/log に変更。
(サンプルでは http://www.monazilla.org/log-030311)

[abone属性]
abone 以外に Over 1000 Thread , 移転, 等々も
表すため state 属性に変更(省略可、初期値 normal)。
0306迷ったところNGNG
>>215 のままでは date 要素に ID や remoteHost が入る問題

『そのままでいく』>>258
この場合、要素名を変更するか、もしくは date の解釈を
レスの日付ではなくデータベースの日付フィールドにある値、とする(無理矢理)。

『回避』>>271,>>275
する場合、別途要素か属性を設る。
「あぼーん」や「Over 1000 Thread」等のメッセージもここに入ってくるので、
その場合も意味を通すために要素自体を省略するか、空白にする。

<res num="2" state="abone">
<name><![CDATA[あぼーん]]></name>
<mail>あぼーん</mail>
<date>あぼーん</date>
<msg><![CDATA[あぼーん]]></msg>
</res>
↓
<res num="2" state="abone" />

こうしておくと >>266-270 のようなことをする場合に便利。。。というより
こうしておかないとXMLにした意味が薄れる。

他に、
server 要素の属性は
uri : http://pc2.2ch.net/
name : pc2.2ch.net
どちらかよいか。

num の有無。
トリップの抽出は?
メッセージ内のアンカー情報保存 >>230 は?等々。
0307244NGNG
>>305
http://monazilla.org/log
↓修正
http://monazilla.org/monalog
03081 ◆LirUghTKBo NGNG
>>306
とりあえずトリップの抽出について
トリップを別に用意する場合、
>1 ◆LirUghTKBo
こんな感じの普通のトリップなら問題ないんですが

>ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★

こういう特殊な場合はどういう風にデータを持てば良いのか
という問題が。
03091 ◆LirUghTKBo NGNG
あー、やっとアトリビュート付いたよママン!(つД`)
というわけで>>305,244氏の内容に沿って作り直してみます。

ところでその中のXMLで一つ確認したいんですが、
<server uri="http://pc2.2ch.net/" type="2ch" />
urlではなく、uriは誤植ですか?それとも意味有りで正しいですか?
0310デフォルトの名無しさんNGNG
Uniform Resource Identifiers
03111 ◆LirUghTKBo NGNG
>>310 即レス感謝
03121 ◆LirUghTKBo NGNG
で、駄レスでも。

>>294
ありがとうございます。

>>295 242 ◆GsQAUnYIlM氏
通知の流れがどういう順番で来てるのかわからなかったり…。
また後でソース読ませていただきます。

> 実際の共通XML作成プログラムは>>1に任せるとする。

このスレ読んでる9割近い人が凄い不安を感じてると思います。
というよりも、私が不安です。

>>300
全ての2chブラウザは平等です。
が、今まだ下地を作ってる段階なので待って下さい。
あと工作員の中の人も大変だなとか、Jane川必死だな(藁とか
('ー`)クスッと笑える程度なら結構ですが、それもほどほどに。
0313242 ◆GsQAUnYIlM NGNG
>>312
あの中に入ってるプラグインは通知関数を使ってないので見てもわかりにくいかも。
流れとしては、
コンバータが通知関数ポインタ(NotifyCallbackProc)を
プラグインのLogConv関数に渡す
 ↓
プラグインは渡された関数ポインタを使って問い合わせる
例)
BBSINFO bi;
lstrcpy(bi.szBoard, "tech"); // "tech"のサーバ名を問い合わせる例
lpNotifyCallback(hWnd, コマンド, &bi);
 ↓
コンバータの通知関数(NotifyCallbackProc)が呼び出される
int CALLBACK CLogconvDlg::NotifyCallbackProc(HWND hWnd, int nCommand, LPVOID pParam)
{
  BBSINFO* pbi = (BBSINFO*)pParam;
  if(lstrcmp(pbi->szBoard, "tech") == 0)
    lstrcpy(pbi->szServer, "pc2.2ch.net"); // プラグイン側へサーバ名を渡す
}

みたいな感じ。要するにコールバック。
0314242 ◆GsQAUnYIlM NGNG
http://www.geocities.co.jp/Beautycare/4965/public/logconv.html

通知関数の使用例とプラグイン設定ダイアログ表示例を
追加したサンプル1プラグインのソースも添付。
03151 ◆LirUghTKBo NGNG
VC++6プロジェクトファイル
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0014.zip

XMLのフォーマットを>>305の物に変更。
アトリビュート付加。(何でこんな悩んでたんだ…)

出力したXML
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0015.xml

とりあえずスレッドのキーやサーバーなどは決め打ちですので
その辺は後日対応って所で。
03161 ◆LirUghTKBo NGNG
>>313-314 242 ◆GsQAUnYIlM氏
解説ありがとうございます。
OKです。大体わかりました。

近いうちに私の方で組んでいるプログラムを
これに従ってDLL化しようかと思ってます。
0317デフォルトの名無しさんNGNG
>>315
305のことだけど
1 </b>◆LirUghTKBo <b>
は
<b>1</b>◆LirUghTKBo <b></b>
じゃない?

>>315
の構造だけど
<monalog>
<log> or <thread> //ラップしておいたほうがmonalogに複数logをおけるかも
<head> //ヘッダ
<body> //内容
</log> or </thread>
</monalog>
0318317NGNG
>>315
の構造...
..以下
はなんか勘違いしてたんで無視して。
0319デフォルトの名無しさんNGNG
>>317
> ラップしておいたほうがmonalogに複数logをおけるかも
賛成です。
1氏の>>315の形式ですと、1ファイル内に1つのログしか置けないです。
代わりの案としては、

・body を thread に置き換えて、thread-id をその属性もしくは要素として持たせる
 → 1ファイル内に、1板の複数のスレのログを保持できる。
・<monabbs><head /><body /></monabbs> 相当の形式にする
 → 1ファイル内に、サーバとスレにかかわらずいくつもログを置ける

あと <head /> とか <body /> とか general 過ぎるタグ名使うのたるいんで、
http://logconvert.s28.xrea.com/cgi-bin/uploader/source/up0004.xml
↑みたいに、<head /> の代わりに <original /> とか、<body /> の代わりに
<postings /> や、あるいは <res-set />、<thread /> というように、
より具体的な名前を使って欲しいです。これは個人的な希望。
0320デフォルトの名無しさんNGNG
>>319
1つのファイルに複数のログを入れる必要ってあるのかな・・・
あんまり大きなサイズのXMLは避けたほうがいいと思うんだけど。
0321デフォルトの名無しさんNGNG
>>319
置き換えるよりもさらにラップするほうが簡単。
<monalogarchive>
   <monalog>
   </monalog>
   <monalog>
   </monalog>
</monalogarchive>
みたいな感じにすれば参照も楽々。
0322デフォルトの名無しさんNGNG
>>320
なぜ?
0323デフォルトの名無しさんNGNG
>>320
複数のログを入れてもいいし、入れなくてもいい。
なるべく必要のない制限は作らないスキーマがいいと思うけど。
0324デフォルトの名無しさんNGNG
>>320
ファイルサイズがでかくなるのがいやなだけなら、
外部実体にすればいいっしょ?

っていうか、ログって言葉気をつけないと、意味が不明。
板なのかスレなのかレスなのか。
03251 ◆LirUghTKBo NGNG
皆様ぐもにん('A`)

現状でXMLのファイルをスレッド毎に保持しているのは
2chブラウザのDAT保存がそういう形になっているので
そうしているだけで、必ずしも分ける必要は無いかもしれないです。
スレッドのキー(番号)もXML側で持っていますからね。

で>>320はブラウザやエディタで開いた時の事を考えて
大きな一つのXMLは避けたいと言っているのだろうと勝手に解釈。
というわけで外部実体というのが現実的でしょうか?


・・・で、外部実体って何?
0326320NGNG
>>322 >>325
100M超えてるXMLのDOMなんか想像したくねぇぞーって事です
外部実体でも結局読むので同じかな
ちなみに
2月から使い始めたOpenJaneのログが既に120MB
マ板だけでも18MBあるのでかちゅな人とかじゃ死にそう
とおもちゃって、
でも323なのでアボーン>>俺
03271 ◆LirUghTKBo NGNG
補足。

>>317
> <b>1</b>◆LirUghTKBo <b></b>
かちゅ〜しゃのログ形式だとそうですね。
0328デフォルトの名無しさんNGNG
今一生懸命XMLを勉強している者です。

外部実体については、「たのしいXML」というページで確認しました。
たしかにこれだと、巨大なDOMってことになっちゃいますね。

ということは、XMLレベルじゃなく、monalog のレベルで外部のファイルを
参照する方法が必要ということでしょうか?


「たのしいXML」
http://www.cityfujisawa.ne.jp/~yanai/xml/
「外部エンティティ」という項があります。
0329デフォルトの名無しさんNGNG
・HTML の href のような ref="file://hoge/moge.xml" で参照
・thread-id="0fda343fdsfa" で参照し、id から実体を得る方法は別途用意
・2ch用ブラウザがやっているように、ログの配置を固定して、
 ルートからの相対パスで参照 ref="/hoge/moge.xml"
03301 ◆LirUghTKBo NGNG
・・・しばらく考え込んだ上で。
外部実体もa hrefみたいな感じかなと思っていたら丸ごと持ってくるようで、
>>329で提案された方法もプログラム側としては構わないのですが、
スタイルシートから使うのは無理になってしまうのではないかと。
(可能なら以下の行は無視してください)

で、外部参照だったら>>326で言われている超巨大なDOMにはならず、
確認もルートのXMLをIEなどで開かない限りは大丈夫だろう、ということで
結局、外部参照に落ち着きそうな結論に達しました。

いずれにしろボードリストみたいな物は持っておかないと駄目ですね。
03311 ◆LirUghTKBo NGNG
で、何か賛同なり反対なり改善案なりの意見が欲しい気分。
■ このスレッドは過去ログ倉庫に格納されています