■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50

monazilla Part 5

401 :デフォルトの名無しさん :2006/02/20(月) 14:32:43
今どんなブラウザがあるかって、まとめてるサイトあるかな?
仮仮仮仮と2ch browser project MacOSXくらいしか知らんのだけど、
他にあれば教えてください。。。

402 :デフォルトの名無しさん :2006/03/09(木) 01:51:36
http://pc.2ch.net/tech/kako/981/981726544.html
のようにhtmlとして保存されている過去ログは全て
http://pc.2ch.net/tech/kako/981/981726544.dat.gz
のようにgzipされたdatも対に存在していると考えて良いのかな?

403 :デフォルトの名無しさん :2006/03/09(木) 02:12:10
確か、圧縮されていない場合もあったはず。(特に最近の分?)

404 :デフォルトの名無しさん :2006/03/09(木) 09:05:13
>>402
http://qb5.2ch.net/operate/kako/1099/10991/1099135298.dat
はあるけど
http://qb5.2ch.net/operate/kako/1099/10991/1099135298.dat.gz
はない模様。

405 :402 :2006/03/09(木) 09:51:08
というと非圧縮でもdatファイル自体は必ずあるのかな?

406 :委員長 ◆/DABoneCRY :2006/03/09(木) 21:02:24
>405
そうとは限らなかったように思います。
datをまず取りに行き、なければ、.dat.gzで試みるという感じになるかと
思います。


407 :デフォルトの名無しさん :2006/03/09(木) 21:15:29
逆じゃね?

408 :委員長 ◆/DABoneCRY :2006/03/09(木) 22:00:50
ああ、逆の方が良いかもしれない。
.dat.gzを後付け対応したA Boneでは上記の形になっていたんだ。
二度手間になる率がどっちが高いのか調べてないので何とも言えないけど
スレッド丸ごと取得なら、事前に圧縮されている.dat.gzを優先するべきかな?

409 :402 :2006/03/09(木) 22:04:38
ああいや>>405で言いたかったのは、過去ログHTMLがある場合
datも圧縮、非圧縮最低どちらかが必ずあるのかなと。
存在の有無確認としては
dat.gz、dat、htmlの順になると思いますが。


410 :デフォルトの名無しさん :2006/03/10(金) 13:03:18
過去ログ二変換されてたらdatはないよなあ

411 :デフォルトの名無しさん :2006/03/11(土) 00:10:01
JBBSの post/get の仕様ってどうなってるんでしょうか?
資料等公開されていないのでしょうか?

412 :デフォルトの名無しさん :2006/03/11(土) 01:41:39
http://jbbs.livedoor.jp/bbs/read.cgi/computer/351/1040452916/126-
http://jbbs.livedoor.jp/bbs/read.cgi/computer/351/1091172832/
あたり?

413 :デフォルトの名無しさん :2006/03/11(土) 04:58:00 BE:5594876-
・HTML化された過去ログはhtmlとdatの両方がある。
・datは ".dat" か ".dat.gz" のどちらかである。
・".dat" にアクセスするときも、gzipを許可すると圧縮されて送られてくる。

414 :デフォルトの名無しさん :2006/03/11(土) 05:09:12 BE:7459878-
.dat.gz と .dat 、どちらを優先するか。

最近はほとんどHTML化されてないけども、されるときは、
見た限り全て .dat なので、最近のログに限って言えば
.dat を優先するのが効率的。

HTML化がそれなりにされ、.dat.gz が主流だった時代のログ、
更にそれ以前の、圧縮なんて全くされていなかった時代のログ、

はて、どのログへのアクセスが多いのだろうか。

415 :402 :2006/03/11(土) 09:29:12
ふむ。じゃあ、
URLは、http://pc.2ch.net/tech/kako/981/981726544.dat
Accept-Encoding: gzip
とリクエストすれば圧縮か非圧縮のどちらかが返ってくるってことですね。
それで返ってこない場合はスレッドが存在しないと判断でいいかな。
htmlの有無は見ない。


416 :デフォルトの名無しさん :2006/03/11(土) 15:02:31
>>412
ありがとうございます。そちらを見てみます。

417 :402 :2006/03/12(日) 23:11:01
むぅ、
http://pc.2ch.net/tech/kako/981/981726544.dat
へアクセスするときAccept-Encoding: gzipつけても人大杉になるな・・・
http://pc.2ch.net/tech/kako/981/981726544.dat.gz
だとAccept-Encoding: gzipつけようがつけまいがgzipで返ってくる。
つまり>>404と逆のケースで、
http://pc.2ch.net/tech/kako/981/981726544.dat.gz
はあるけど
http://pc.2ch.net/tech/kako/981/981726544.dat
はない模様。
ぬるぽ。

418 :402 :2006/03/12(日) 23:38:27
結局、何をてこずってるのかというと・・・
あるスレに、どこかのスレへのリンクがあるとする。
このスレの>>1みたいに過去ログへのリンクとか。
リンクはhttp:/..../test/read.cgi/..../の形式で書いてあるとする。
通常リンクを書くときはread.cgiを含んだ形式のはず。
可能性としてそのスレッドは、
-ライブスレッド
-●でしか見れない
-過去ログdat
-過去ログdat.gz
-過去ログhtml
のいずれか。
これをどう読むかを考え中です。

419 :402 :2006/03/12(日) 23:41:31
今、考えているのは
-URLを解析してライブスレッドのdatを直読みに行く
--あれば、そのまま表示して終了
  たとえば、このスレのpart1は
  http://pc.2ch.net/test/read.cgi/tech/981726544/
  だけどライブと仮定すると
  http://pc8.2ch.net/tech/dat/981726544.dat
  へアクセスすることになる。
  もしリンクがサーバー移転前のもので、まだライブスレッドならアクセスできる。
-datがない場合
-リンクのURL(read.cgi)でそのままアクセス
--過去ログ倉庫に保存されていますの場合(●でしか見れない)
---offlaw.cgiで読みに行って、あれば表示して終了
---なければ、「スレッドありません」、とエラー表示して終了
--隊長!過去ログ発見しましたの場合
---過去ログHTMLのリンクが書いてあるので解析
---それを元に過去ログdatを読みに行って、あれば表示して終了
---なければ過去ログdat.gzを読みに行って、あれば表示して終了
---これでもなければ過去ログhtmlを読みに行って、あれば表示して終了
---これでもなければ、「スレッドありません」、とエラー表示して終了

もっと負荷減らせそうな良い方法ありますかね?
最初はライブのdatじゃなくread.cgiにアクセスして判断するほうがいいのかな。

420 :委員長 ◆/DABoneCRY :2006/03/13(月) 00:04:10
UserAgentは「Monazilla」を名乗ってます?
幾分古い情報となっているかもしれませんが、以下のサイトも
参考になると思います。
http://age.s22.xrea.com/talk2ch/

421 :402 :2006/03/13(月) 00:48:49
Monazillaは名乗ってます
2ちゃんとーくにも、dat,dat.gzのいずれかがありますと書いてますが、
裏を返せば、やはりどちらかしかないことがあるということですよね。
委員長さんは、>>418の件、どのような手順でスレッド取得してますか?

422 :委員長 ◆/DABoneCRY :2006/03/13(月) 02:16:47
>421
> 裏を返せば、やはりどちらかしかないことがあるということですよね。
そうだと思います。
実際に専用ブラウザ開発をやってると、「結果として取れればOK」って
スタンスになってしまいますので、datとdat.gzのどちらもあるのか?とか
どっちの方が確立が高いのか?とか、そういうのは全然考えてません。(^-^;

> 委員長さんは、>>418の件、どのような手順でスレッド取得してますか?
-ライブスレッド
-過去ログdat
-過去ログdat.gz
-●でしか見れない (offlaw.cgi 経由/ログイン時のみ)
の順番で取りに行ってますね。

踏んだURLは基本的にご指摘の通り、read.cgi経由ですが
A Boneの場合、内部的には全てdatのURLで管理していますので
自動的にdatのURLに変換しており、read.cgiのURLは一切無視。
ライブスレであろうが、過去ログであろうが、単純に上記の手順です。
ただし、それはread.cgi経由のURLを踏んだ場合であって
(過去ログか判断出来ないから)、>417のようなdatのURLで書かれて
いる場合には、そのまま過去ログdatからスタートしてます。(当たり前ですが)

>419の件ですが、offlaw.cgiを最後にしています。
正解なのか分かりませんが、CGI経由は負荷的に気持ち悪いので
最後にしているというのと、dat、dat.gzでトライしてエラーコード302(だっけ?)
を見て判定しているだけなので、効率的(速度的)な問題は無視出来ますから。
何より、過去ログですから、If-Modified-Sinceを指定している限り
ライブスレッドと違い、一回取ってしまえば何度も取得しに行く訳でもないので
効率はあまり気にする必要はないかと思いますしね。(最後は華麗に逃げ)

423 :402 :2006/03/13(月) 02:52:58
>>422
なるほど、その順番いいですね。
確かに存在しないファイルのリクエストの負荷はcgiに比べて低いですし
read.cgiが出力するhtmlを解析して過去ログのありかを特定とかも面倒ですし。
さっそくそれで組んでみます。
ども、でした。

424 :stream ◆PNstream2s :2006/03/13(月) 16:42:14 BE:138759326-
差分取得とかさまざまな場面でIf-Modified-Sinceを使ってる2chブラウザが多いですが。
Last-Modifiedを使う場合、秒単位になってしまいます。

秒単位になると何が起こるかと言うと、
1秒間に複数のレスが付いた場合、レスが付いてるのに
304 Not Modified になってしまう場合があります。
特に1000付近でこれが発生すると、dat全体を再取得しないと最後まで読めなくなってしまいます。

これを防ぐには、Last-ModifiedだけでなくETagを保存しておき、
更新チェックのさいはIf-None-Matchを使用するといいです。

425 :デフォルトの名無しさん :2006/03/13(月) 21:12:06
急浮上?

426 :デフォルトの名無しさん :2006/03/13(月) 23:26:07
>>422
●の唯一公式な機能を使うのに必要なんだからofflaw.cgiの負荷は全く気にする必要ないべ

427 :402 :2006/03/15(水) 01:44:56
うん、それもそうね。
けど、offlaw先に見に行くよりはdat,dat.gz,offlawの順の方が
仕組み的に楽だったんで。もう組んじゃったし(笑

428 :デフォルトの名無しさん :2006/03/15(水) 15:54:20 BE:1065942-
HTML化されたスレをofflaw.cgiで見ようとすると、

-ERR 過去ログ倉庫で発見 ../tech/kako/981/981726544.dat.gz

とエラーになるので、先にofflaw.cgiを見て、
あれば良し、
HTML化なら過去ログ位置を得る、
「そんな板orスレッドないです。」ならおしまい、
という処理をしてもいいかもしれない。
でも面倒。

429 :402 :2006/03/15(水) 16:04:52
結局、offlaw使えるのは●ユーザーだけなんで。
●もってない人のこともかんがえて処理すると
先に述べた方法が一番かと。

430 :デフォルトの名無しさん :2006/03/15(水) 19:03:04 BE:3197838-
だねー。

431 :委員長 ◆/DABoneCRY :2006/03/15(水) 20:32:55
あえて付け加えるなら、●ユーザーであっても
offlaw.cgiを使わずにdatや、dat.gzで済むなら、
それに越したことはないので、offlaw.cgiは
最後の手段という考え方の方が良いと思いますよ。

432 :http://www.vector.co.jp/soft/win95/util/se072729.html :2006/03/18(土) 20:54:25
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

そういや64bitにネイティブ対応している2chブラウザてありましたっけ?

433 :デフォルトの名無しさん :2006/03/24(金) 04:32:04
"-ERR 過去ログ倉庫で発見"を処理しないブラウザで過去ログが取得できないケースとか
offlaw.cgiで送られてくるほうが新しいというケースとかあった気がする。

434 :デフォルトの名無しさん :2006/03/32(土) 01:53:43
JBBSのsubject.txtは、なぜ最後の行に1行目と同じ内容の物が出力されるのだろう。
全板でそうなら最後の1行スキップすればよいのだが・・・

435 :デフォルトの名無しさん :2006/04/10(月) 10:58:04
>>434
最後の行と最初の行が同じだったら
最後の行を削除したらいいじゃない

436 :デフォルトの名無しさん :2006/04/10(月) 17:30:40
あ、同じかどうか判定して・・・って意味でw

437 :デフォルトの名無しさん :2006/04/12(水) 03:17:45
 ゙lliii,,,,,,,,,,,,,      llliiiii,,     lllii,,,,、   lll,,
  .,,ill!!!!゙゙゙゙゙       .'lllll°  .lllii,, ゙!llll    'lllllii
  .”  : : :           lllll     ゙゙lllll      .,illl!
lii _,,iiilllll゙゙゙!!liii,,      !lll|   .'llii .     .,illll
lllllll!゙°  .'lllll      ゙llll,,,,,iiiiill!!!!!l      ,,ill!゙         :
..゙゙゜     .,lllll    ..,,,iiil!!!゙゙゙″       .,illllilllllllliii,,      ,,ill
       ,lllll゜  ,,iil!l゙°         ,,illll!゙° 'lllll     ,,ill!
      ,,illlll° .lll!°          ,illl!゙`   .llll|   .,,illll
    ..,,,iill!!°  .゙!lii,,_      _、  iilll!゙     .lllll,,,,,,,,iiill!!゙
 _,,,,iiil!!゙゙’      ゚゙゙!!!!!lllllllllll!!!!!!!!  '!!l°     .゙゙゙!!!!゙゙゙

438 :デフォルトの名無しさん :2006/04/12(水) 15:59:42
>>435
うん、そうした。
でもなんでこんな仕様になってるのやら。

439 :デフォルトの名無しさん :2006/04/12(水) 23:55:14
RSS配信開始で新しいプロジェクトがいっぱい出てくる予感




・・・monazillaとは関係ないところで・・・

440 :デフォルトの名無しさん :2006/05/09(火) 21:44:21
t

441 :デフォルトの名無しさん :2006/05/16(火) 18:20:34 BE:7466483-
monazillaを引き継いでみる。

442 :デフォルトの名無しさん :2006/05/16(火) 18:41:41 BE:7466483-
monazillaプロジェクト+aの勢いで

443 :デフォルトの名無しさん :2006/05/16(火) 18:45:14
>>66
いるYO!

444 :デフォルトの名無しさん :2006/05/16(火) 21:43:14 BE:9955384-
名称は「Monazila Japan」に決定。

445 :c⌒っミ `Д)っφ ◆CaKkuEV3EI :2006/05/24(水) 23:00:30 BE:2200872-#
monazilla
http://info.2ch.net/wiki/pukiwiki.php?monazilla
ページが刷新しました。
http://qb5.2ch.net/test/read.cgi/operate/1132069137/134-n
http://qb5.2ch.net/test/read.cgi/operate/1131503902/72-n

従来のページはこちらに移動です。
monazilla/develop
http://info.2ch.net/wiki/pukiwiki.php?monazilla%2Fdevelop

446 :デフォルトの名無しさん :2006/05/25(木) 01:03:41
otu

447 :デフォルトの名無しさん :2006/05/26(金) 18:26:56
http要求ヘッダ例
GET /newsplus/subject.txt HTTP/1.0
Accept-Encoding: gzip
Host: news2.2ch.net
User-Agent: Monazilla/1.00
Connection: close

ttp://age.s22.xrea.com/talk2ch/



2ちゃんのスレッドを取得するプログラムをC#で作ろうとしているんですが
ログを受信する際、こういったヘッダ情報は送信する必要はありますか?
以前試したテストプログラムではUser-AgentやAccept-Encodingは特に設定しなくても
問題なくデータが取得できてしまったんですが・・・

448 :stream ◆PNstream2s :2006/05/26(金) 18:51:22 BE:555033986-#
>>447
datファイルは特に規制かけてないみたいなので
HTTPの仕様に沿った要求を行えば特に問題ないですね。

ただ、さまざまな理由で規制がかけられないとは限らないんで
User-Agent はMonazillaを名乗っておいたほうがよさげ。

さすがに Accept-Encoding: gzip 無しが規制されるとは思えないけど、
C#って.NET2.0なら自動でgzipを展開してくれる機能があるから
それを利用して2chの負担を減らそう。

ちなみに
offraw.cgi はgzip必須だったような。
read.cgi はUser-Agent必須だったような。

449 :447 :2006/05/26(金) 19:02:37
>>448
ご指摘ありがとうございます。

> C#って.NET2.0なら自動でgzipを展開してくれる機能があるから
> それを利用して2chの負担を減らそう。

C#でgzipの圧縮・解凍ができるとは知りませんでした(汗
早速調べてみます。

ところでgzipを使ったときもログの差分取得は可能でしょうか?
そもそもgzipを使ってログを圧縮しているなら、わざわざ差分取得しなくても
鯖には大した負担はかからないでしょうか?

450 :デフォルトの名無しさん :2006/05/26(金) 19:10:24
今gzip圧縮ってしてるの?
転送量よりもCPU負荷の方を軽減したいって感じだったと思うけどうるおぼえ。

451 :デフォルトの名無しさん :2006/05/26(金) 19:44:35
Content-RangeとAccept-Encoding:gzipを同時に指定すると、
httpの意味上からは、「gzip済みのdatファイル」の途中から
しか送ってくれないので役に立たない。

452 :デフォルトの名無しさん :2006/05/27(土) 00:43:57
>>450
うろおぼえ が正しいんじゃなかったか?

>>451
初回だけgzipで取れって事?

453 :447 :2006/05/27(土) 00:54:09
>>451
その差分に関して何ですが、

ttp://age.s22.xrea.com/talk2ch/#get

によりますと、

 DAT差分を取得
 要求ヘッダに次の項目を追加する
 If-Modified-Since: リモートDATの最終更新時刻(値は応答ヘッダのLast-Modifiedを調べる)
 Range: bytes=ローカルDATのファイルサイズ-
 ※If-Modified-SinceとDateヘッダの値は、RFC1123形式で表される時刻。例えば、Fri, 30 Mar 2001 22:35:45 +0900

とのことです。そこで次のようなプログラムを記述したのですが、

System.Net.WebClient wc = new System.Net.WebClient();
wc.Headers.Add("User-Agent", "Monazilla/1.00 (mytool/1.00)");
wc.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 +0900");

System.IO.Stream st = wc.OpenRead("http://pc8.2ch.net/tech/dat/1057329161.dat");

System.Text.Encoding enc = System.Text.Encoding.GetEncoding("Shift_JIS");
System.IO.StreamReader sr = new System.IO.StreamReader(st, enc);
string html = sr.ReadToEnd();
sr.Close();
st.Close();
Console.WriteLine(html);

なぜか実行しようとするとエラーが発生してしまいます。そこで
wc.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 +0900");
のところをコメントアウトすると問題なく実行してログを取得してくれます。
差分取得するときの要求ヘッダの与え方に何か間違い等はありますか(´・ω・`)?

454 :デフォルトの名無しさん :2006/05/27(土) 01:07:51
HTTP-date = rfc1123-date | rfc850-date | asctime-date
rfc1123-date = wkday "," SP date1 SP time SP "GMT"
rfc850-date = weekday "," SP date2 SP time SP "GMT"
asctime-date = wkday SP date3 SP time SP 4DIGIT
date1 = 2DIGIT SP month SP 4DIGIT
; day month year (e.g., 02 Jun 1982)
date2 = 2DIGIT "-" month "-" 2DIGIT
; day-month-year (e.g., 02-Jun-82)
date3 = month SP ( 2DIGIT | ( SP 1DIGIT ))
; month day (e.g., Jun 2)
time = 2DIGIT ":" 2DIGIT ":" 2DIGIT
; 00:00:00 - 23:59:59
wkday = "Mon" | "Tue" | "Wed"
| "Thu" | "Fri" | "Sat" | "Sun"
weekday = "Monday" | "Tuesday" | "Wednesday"
| "Thursday" | "Friday" | "Saturday" | "Sunday"
month = "Jan" | "Feb" | "Mar" | "Apr"
| "May" | "Jun" | "Jul" | "Aug"
| "Sep" | "Oct" | "Nov" | "Dec"

455 :stream ◆PNstream2s :2006/05/27(土) 02:00:12
>>450
ほとんどの鯖でgzip圧縮してるよ

>>453
おかしいですねえ。

Headers プロパティは、WebClient が要求で送信するヘッダー情報を含む WebHeaderCollection インスタンスを格納します。これは無制限のヘッダーのコレクションであるため、HttpWebRequest などの WebRequest の子孫で制限されるヘッダーを設定できます。

と書いてあるんですけど、例えばRangeヘッダーでも同じことが起こります。これは.NET Frameworkのバグな気がします。

456 :447 :2006/05/27(土) 02:03:05
>>455
> おかしいですねえ。
> Headers プロパティは、WebClient が要求で送信するヘッダー情報を含む WebHeaderCollection インスタンスを格納します。これは無制限のヘッダーのコレクションであるため、HttpWebRequest などの WebRequest の子孫で制限されるヘッダーを設定できます。
> と書いてあるんですけど、例えばRangeヘッダーでも同じことが起こります。これは.NET Frameworkのバグな気がします。

そんなことがあるんですか(;´Д`)・・・

457 :stream ◆PNstream2s :2006/05/27(土) 11:18:07
まあ、HttpWebRequest/HttpWebResponseを使えってことなんですかねえ。
If-Modified-Since にDateTime構造体を突っ込むことが出来たりするので
ちょっと手の込んだHTTPリクエストを行う場合はWebClientより便利だと思いますよ。

458 :デフォルトの名無しさん :2006/05/27(土) 11:25:52
etag保存しといてif-none-matchを仕掛けた方がいいという話もある

459 :stream ◆PNstream2s :2006/05/27(土) 16:31:16
新しい書き込みの仕様

レス
FROM= ←名前
mail= ←メール欄
MESSAGE= ←本文
bbs= ←板のディレクトリ名。operateとかtechとか
time= ←現在時刻より小さい値を適当に。1を送っておけばよい
key= ←スレッドキー
hana=mogera ←追加。常にmogeraを送っとけばいいのかな。


Cookieは不要。

460 :stream ◆PNstream2s :2006/05/27(土) 16:35:43
スレ立て
subject= ←スレッドのタイトル
FROM= ←名前
mail= ←メール欄
MESSAGE= ←本文
bbs= ←板のディレクトリ名。operateとかtechとか
time= ←現在時刻より小さい値を適当に。1を送っておけばよい
hana=mogera ←追加。常にmogeraを送っとけばいいのかな。

461 :stream ◆PNstream2s :2006/05/27(土) 16:36:37
Cookieは不要と書きましたが、sports2はCookie無しじゃ書けないので
Cookieも今までどおり必要ですね

462 :デフォルトの名無しさん :2006/05/27(土) 17:28:01
>>453
>wc.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 +0900");

RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1

3.3 Date/Time Formats
3.3.1 Full Date

  All HTTP date/time stamps MUST be represented in Greenwich Mean Time
  (GMT), without exception.

463 :デフォルトの名無しさん :2006/05/27(土) 17:33:44
クッキー認証、クッキーの必要なサーバーなら出る
sports鯖とかhttp://sports2.2ch.net/wc/

http://pc8.2ch.net/test/read.cgi/tech/1057329161/

459 :stream ◆PNstream2s :2006/05/27(土) 16:31:16
新しい書き込みの仕様
レス
FROM= ←名前
mail= ←メール欄
MESSAGE= ←本文
bbs= ←板のディレクトリ名。operateとかtechとか
time= ←現在時刻より小さい値を適当に。1を送っておけばよい
key= ←スレッドキー
hana=mogera ←追加。常にmogeraを送っとけばいいのかな。
Cookieは不要。


460 :stream ◆PNstream2s :2006/05/27(土) 16:35:43
スレ立て
subject= ←スレッドのタイトル
FROM= ←名前
mail= ←メール欄
MESSAGE= ←本文
bbs= ←板のディレクトリ名。operateとかtechとか
time= ←現在時刻より小さい値を適当に。1を送っておけばよい
hana=mogera ←追加。常にmogeraを送っとけばいいのかな。


461 :stream ◆PNstream2s :2006/05/27(土) 16:36:37
Cookieは不要と書きましたが、sports2はCookie無しじゃ書けないので
Cookieも今までどおり必要ですね

464 :447 :2006/05/27(土) 17:36:55
>>462
> >wc.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 +0900");
> RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1
> 3.3 Date/Time Formats
> 3.3.1 Full Date
>   All HTTP date/time stamps MUST be represented in Greenwich Mean Time
>   (GMT), without exception.

wc.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 GMT");

のようにGMTに変えてみましたが依然エラーが返されるようです。
もしかしたら"If-Modified-Since"の部分が間違っているんでしょうか?

465 :デフォルトの名無しさん :2006/05/27(土) 17:38:27
すまん、誤爆した

466 :447 :2006/05/27(土) 17:56:43
>>457
HttpWebResponse/HttpWebRequestを使ってみましたが↓
やはり"If-Modified-Since"のヘッダー情報を追加すると
エラーが生じますね・・・
.Netのバグではないような気もします・・・

//HttpWebRequestの作成
System.Net.HttpWebRequest webreq =
(System.Net.HttpWebRequest)
System.Net.WebRequest.Create("http://pc8.2ch.net/tech/dat/1057329161.dat");

//サーバーからの応答を受信するためのHttpWebResponseを取得
System.Net.HttpWebResponse webres =
(System.Net.HttpWebResponse) webreq.GetResponse();

webres.Headers.Add("User-Agent", "Monazilla/1.00 (mytool/1.00)");
webres.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 +0900");

System.Text.Encoding enc =
System.Text.Encoding.GetEncoding("shift-jis");
//応答データを受信するためのStreamを取得
System.IO.Stream st = webres.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(st, enc);
//受信して表示
string html = sr.ReadToEnd();
Console.WriteLine(html);

//閉じる
sr.Close();

467 :stream ◆PNstream2s :2006/05/27(土) 18:33:23
>>466
いや、HttpWebRequest/HttpWebResponseの場合はHeaders.Add("If-Modified-Since",○○)
ってやっちゃ駄目なのは仕様。IfModifiedSinceプロパティを使う。

んでWebClientはHeaders.Add("If-Modified-Since",○○)ってやっていいはずなんだけど
実際は出来ないからバグかもしれない、ってことです。

468 :447 :2006/05/27(土) 19:03:48
>>467
あ、そういうことでしたか。早速IfModifiedSinceプロパティを使わせていただきました。

System.Net.HttpWebRequest webreq =
(System.Net.HttpWebRequest)
System.Net.WebRequest.Create("http://pc8.2ch.net/tech/dat/1057329161.dat");

webreq.IfModifiedSince = new DateTime(2006, 5, 26, 0, 0, 0);

System.Net.HttpWebResponse webres =
(System.Net.HttpWebResponse) webreq.GetResponse();

System.Text.Encoding enc =
System.Text.Encoding.GetEncoding("shift-jis");
System.IO.Stream st = webres.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(st, enc);

string html = sr.ReadToEnd();
Console.WriteLine(html);
sr.Close();

コンパイルも通り、問題なく実行もできました。
が、なぜか差分データが取得できませんね・・・
2006年5月26日移行に書き込まれたデータを取得しようとしたんですが全データが
取得されてしまうようです・・・

関係ない話ですが、もし可能ならレス番号を指定してそれ移行のデータを要求できれば
便利そうなんですが2ちゃんではそういうものには対応していないんですかね。

469 :デフォルトの名無しさん :2006/05/27(土) 20:45:54
すごい惨めな気持ちになったぞ!
どうしてくれる!

470 :stream ◆PNstream2s :2006/05/27(土) 20:51:15
>>468
If-Modified-Since ヘッダって言うのは「この時間よりあとに未更新だったら送信しないでね」って意味だから
差分データを取得するにはさらに Range ヘッダを使わなければいけない。

HttpWebRequestの場合はAddRangeメソッドを使う。

471 :デフォルトの名無しさん :2006/05/27(土) 20:52:26
>>468
> Range: bytes=ローカルDATのファイルサイズ-
はどこ行ったんだよ

472 :デフォルトの名無しさん :2006/05/27(土) 20:52:46
かぶったorz

473 :デフォルトの名無しさん :2006/05/27(土) 21:44:28
>>468
>関係ない話ですが、もし可能ならレス番号を指定してそれ移行のデータを要求できれば
>便利そうなんですが2ちゃんではそういうものには対応していないんですかね。

2000年8月危機の際にオープンソースとなり有志の手で改良された旧版 read.cgi には
raw モードとしてその機能が実装されたが、現在の read.cgi には実装されてない。

474 :デフォルトの名無しさん :2006/05/27(土) 21:55:15
2001年ではなくて?

475 :447 :2006/05/27(土) 22:18:47
>>470-471
webreq.AddRange((int) fileSize);

と指定することで差分データ取得できました\(^o^)/
ちなみにIf-Modified-Sinceヘッダをつけてもつけなくても、
またでたらめな時間や未来の時間にしても取得する差分データ
に変わりはありません。AddRangeさえ指定すればIf-Modified-Sinceは
特に指定する必要は無いんでしょうか?

>>473
便利な機能は無くなってしまったんですか(´・ω・`)
あぼ〜んがあった場合などでも問題なく差分データを取得できると
思われるので重宝すると思うんですが・・・

476 :デフォルトの名無しさん :2006/05/27(土) 22:23:43
鯖の方でいろいろやらなきゃいけないし、
FOXがコードをDSO向けにリファインした時に無くした予感

477 :デフォルトの名無しさん :2006/05/28(日) 00:27:05
ハナモゲラ絶対必要なの?

478 :デフォルトの名無しさん :2006/05/28(日) 06:48:32
あぼーんがあったときに、ローカルのデータを上書きしてくれるのでありがたい

479 :デフォルトの名無しさん :2006/05/28(日) 13:48:42
例えばレス479まで取得しているスレでリロードすると、
479までのサイズでRange〜とするわけだけど、その時に
新規投稿が無かった場合、.datファイルにはRange〜で指定した
部分は存在しないので406エラーとなる。
そこで、If-Modified-Sinceを付ければ、新規投稿が無い時には
304 Not Modified で新規投稿が無いことがわかる。

406を新規投稿無しと解釈すれば良いじゃないか、とも思えるが、
レスが削除された場合等にも、.datファイルのサイズが既得分より
減って406が出うるので、それと区別ができなくなってしまう。

ブラウザを配布するとかではなくて、個人でどうにかしたいだけなら
お好みでどうぞ、とも言えるが。

480 :447 :2006/05/28(日) 15:51:01
>>479
なるほど、If-Modified-Sinceを活用するとあぼーんの検知もできるようになるということですね。
ちなみに先ほど各種条件を試してみましたところ、

新規投稿がなく、If-Modified-Sinceを指定しなかった場合
416 RequestedRangeNotSatisfiable
が返され、

新規投稿が無く、If-Modified-Sinceを指定した場合は
304 Not Modified
が返されました。

あぼ〜んがあったと想定するためRange〜を100バイトほど多めに指定し、
If-Modified-Sinceの時刻を過去に戻したところ(あぼーん更新で更新時刻が先に変更されたとシミュレートするため)
416 RequestedRangeNotSatisfiable
が返されました。

細かい違いはありますが、
416が返された場合はあぼ〜んがあったと推測し、全ログを取得し直すようにすればいいわけですね?

481 :デフォルトの名無しさん :2006/05/28(日) 16:18:35
あ、416だった(ハズイ

482 :デフォルトの名無しさん :2006/05/28(日) 16:26:38
そっすね、全取得になるかと。
ブラウザとしてだと、自動再取得の前に、何が削除されたか
知っておきたい、という需要もあるけどね。

483 :デフォルトの名無しさん :2006/05/28(日) 16:32:30
Range指定にIf-Modified-Sinceを付加する理由として

ひとつは、HTTP/1.1の旧仕様では416が規定されておらず
Rangeが範囲外を指定しているとRangeを無視して200を返していたというのがある。
少なくとも、このスレの初代が出来た頃の2chのapache(1.x)はそうだったし
互換板等ではまだそういう鯖も存在するかもしれない。

もうひとつは、
あぼーん検出のために末尾の'\n'等数バイトを含めてRange指定で取得すると
未更新の場合でもファイルの読み書きが発生して
鯖に本来不要な負荷をかけてしまうという点がある。
If-Modified-Sinceを併用することで、これを防ぐ。

484 :447 :2006/05/29(月) 19:29:37
2ちゃんのスレッドを取得したときに考えられるケースとして、

a) 正常に取得
b) URLを間違えてしまった
c) すでに1000を超えていた
d) すでに過去ログとして倉庫落ちしてしまった
e) 人大杉

の5通りくらいあるかと思います。いずれも帰ってくるステータスコードは
200 HTTP_OKなんですがみなさんどうやってそれぞれのケースを判別されてますか?

485 :デフォルトの名無しさん :2006/05/29(月) 20:25:21
それは、
本当は302が返っているのに、リダイレクトされているだけ

486 :デフォルトの名無しさん :2006/05/31(水) 23:54:51
c)は違うだろ(まだdat落ちしてなければ)

487 :stream ◆PNstream2s :2006/06/01(木) 08:21:08
>>484
b)
AllowAutoRedirect = false
datファイルが302 Found が返ってくるかどうか。
d)と比べたいならread.cgiにもアクセスする。

c)
datファイルが1000行あるか調べる

d)
AllowAutoRedirect = false
datファイルが302 Found が返ってくるかどうか。
b)と比べたいならread.cgiにもアクセスする。

e)
datファイルで人大杉?

488 :デフォルトの名無しさん :2006/06/03(土) 19:46:04
ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/26999/1149328392/

したらばのdatってどう取得したらええんやろ(´・ω・`)?

489 :stream ◆PNstream2s :2006/06/03(土) 20:17:03
ProxomitronとかEtherealとかつかって、既存の2chブラウザが何やっているかを把握すべし

490 :デフォルトの名無しさん :2006/06/03(土) 22:35:17
>>488
> ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/26999/1149328392/

んなもん

ttp://jbbs.livedoor.jp/computer/dat/26999/1149328392.dat

とでもすればいいんじゃね〜か、と思っていたが意外と違うもんだな・・・

491 :stream ◆PNstream2s :2006/06/03(土) 22:44:03
Jane Nida で確認してみた

ttp://jbbs.livedoor.jp/bbs/rawmode.cgi/computer/26999/1149328392/

レス番指定も
ttp://jbbs.livedoor.jp/bbs/rawmode.cgi/computer/26999/1149328392/10-20

492 :デフォルトの名無しさん :2006/06/04(日) 01:29:32
>>491
> レス番指定も
> ttp://jbbs.livedoor.jp/bbs/rawmode.cgi/computer/26999/1149328392/10-20

うおっ!めちゃくちゃ便利じゃん♪
2ちゃんもしたらばみたいな方式だとありがたいんだが。

493 :stream ◆PNstream2s :2006/06/04(日) 01:32:26
>>492
CGIが動く負荷とdatファイルを読み出す負荷は10〜100倍ぐらい違うんだよ

494 :デフォルトの名無しさん :2006/06/04(日) 01:40:46
>>493
なるほど、2ちゃん規模の掲示板だと2ちゃん方式は必要悪というわけなのか。

495 :デフォルトの名無しさん :2006/06/04(日) 03:05:00
因みに過去ログは
http://jbbs.shitaraba.com/bbs/read.cgi/computer/10298/1071738986/

http://jbbs.livedoor.jp/computer/10298/storage/1071738986.html

htmを自前でDatに変換ね

496 :デフォルトの名無しさん :2006/06/04(日) 06:31:07
したらばはdat公開してないよ
IPとかもdatに保存してあるから

497 :デフォルトの名無しさん :2006/06/04(日) 15:09:36
> IPとかもdatに保存してあるから

((((((;゚Д゚))))))ガクガクブルブル

498 :デフォルトの名無しさん :2006/06/05(月) 00:08:49
そんなに怖がることはないだろ

499 :デフォルトの名無しさん :2006/06/06(火) 23:37:48
>>463
いまはsubmitってチェックしてないのかな?
間違えて「書き込む」をUTF-8でエンコードしてたけど書き込めてた。

>>455
GET /newsplus/subject.txt HTTP/1.0
Accept-Encoding: gzip
Host: news2.2ch.net
User-Agent: Monazilla/1.00
Connection: close

と、「と〜く2ちゃんねる」通りにリクエストしても
datファイルはプレーンテキストで送られてくるのですが、
どの鯖ならgzipで返ってくるんだろう。
リクエストの仕方が間違ってる?

おかげで、gzipでdatを受信した場合の動作確認ができない。
普通の応答は解凍できてるから、たぶん大丈夫だとは思うんだけど・・・。


500 :デフォルトの名無しさん :2006/06/07(水) 03:05:38
HTTP/1.1?

228KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30