[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/09 00:16 / Filesize : 226 KB / Number-of Response : 988
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

monazilla Part 5



1 名前: ◆gfD86vH6Zo [03/07/04 23:32]
2ちゃんねる専用のブラウザを作っちゃおう
というプロジェクトです。
[前スレ1より]

Part 1 pc.2ch.net/test/read.cgi/tech/981726544/
Part 2 pc.2ch.net/test/read.cgi/tech/1005282763/
Part 3 pc3.2ch.net/test/read.cgi/tech/1012544484/
Part 4 pc2.2ch.net/test/read.cgi/tech/1042432238/

monazilla.org (w
www.monazilla.org/

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 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 21:12:06 ]
急浮上?

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

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

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

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

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

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

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

431 名前:委員長 ◆/DABoneCRY mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2006/03/24(金) 04:32:04 ]
"-ERR 過去ログ倉庫で発見"を処理しないブラウザで過去ログが取得できないケースとか
offlaw.cgiで送られてくるほうが新しいというケースとかあった気がする。

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

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

436 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2006/04/12(水) 15:59:42 ]
>>435
うん、そうした。
でもなんでこんな仕様になってるのやら。

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




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

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

441 名前:デフォルトの名無しさん mailto:sage [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 mailto:c⌒っミ `Д)っφsage [2006/05/24(水) 23:00:30 BE:2200872-#]
monazilla
info.2ch.net/wiki/pukiwiki.php?monazilla
ページが刷新しました。
qb5.2ch.net/test/read.cgi/operate/1132069137/134-n
qb5.2ch.net/test/read.cgi/operate/1131503902/72-n

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

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

447 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [2006/05/26(金) 19:02:37 ]
>>448
ご指摘ありがとうございます。

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

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

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

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

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

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

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



453 名前:447 mailto:sage [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("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 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [2006/05/27(土) 16:35:43 ]
スレ立て
subject= ←スレッドのタイトル
FROM= ←名前
mail= ←メール欄
MESSAGE= ←本文
bbs= ←板のディレクトリ名。operateとかtechとか
time= ←現在時刻より小さい値を適当に。1を送っておけばよい
hana=mogera ←追加。常にmogeraを送っとけばいいのかな。

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

462 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 17:33:44 ]
クッキー認証、クッキーの必要なサーバーなら出る
sports鯖とかsports2.2ch.net/wc/

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 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 17:38:27 ]
すまん、誤爆した

466 名前:447 mailto:sage [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("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 mailto:sage [2006/05/27(土) 18:33:23 ]
>>466
いや、HttpWebRequest/HttpWebResponseの場合はHeaders.Add("If-Modified-Since",○○)
ってやっちゃ駄目なのは仕様。IfModifiedSinceプロパティを使う。

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

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

System.Net.HttpWebRequest webreq =
(System.Net.HttpWebRequest)
System.Net.WebRequest.Create("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 mailto:sage [2006/05/27(土) 20:51:15 ]
>>468
If-Modified-Since ヘッダって言うのは「この時間よりあとに未更新だったら送信しないでね」って意味だから
差分データを取得するにはさらに Range ヘッダを使わなければいけない。

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

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

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



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

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

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

475 名前:447 mailto:sage [2006/05/27(土) 22:18:47 ]
>>470-471
webreq.AddRange((int) fileSize);

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

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

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

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

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

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

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

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

480 名前:447 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2006/05/28(日) 16:18:35 ]
あ、416だった(ハズイ

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



483 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [2006/05/29(月) 19:29:37 ]
2ちゃんのスレッドを取得したときに考えられるケースとして、

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

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

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

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

487 名前:stream ◆PNstream2s mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:46:04 ]
ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/26999/1149328392/

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

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

490 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 01:29:32 ]
>>491
> レス番指定も
> ttp://jbbs.livedoor.jp/bbs/rawmode.cgi/computer/26999/1149328392/10-20

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



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

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

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

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

htmを自前でDatに変換ね

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

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

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

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

499 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2006/06/07(水) 03:05:38 ]
HTTP/1.1?

501 名前:デフォルトの名無しさん mailto:sage [2006/06/07(水) 03:11:40 ]
news2?

502 名前:stream ◆PNstream2s mailto:sage [2006/06/07(水) 14:37:34 ]
telnetしてみた

GET /newsplus/subject.txt HTTP/1.0
Host: news2.2ch.net
Accept-Encoding: gzip


HTTP/1.1 200 OK
Date: Wed, 07 Jun 2006 05:36:10 GMT
Server: Apache/2.0.58
Last-Modified: Wed, 22 Mar 2006 02:11:13 GMT
ETag: "16310f0-0-40f8be7f05240"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip                ←
Content-Length: 20
Connection: close
Content-Type: text/plain; charset=shift_jis


ただ単に中身が無いからgzipになってないように見えるだけでは?



503 名前:499 mailto:sage [2006/06/09(金) 03:18:20 ]
>>499はと〜く2ちゃんねるのをコピペしただけなので、
実際には運営情報板とかでテストしてます。

>>502
おお、telnetで試してみたらgzipで返ってきました。
でも、全く同じメッセージ送ってみてもWinsock(2.0)使った
自作プログラムではプレーンテキストが返ってくる。
う〜ん、何が違うんだろう。


504 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 16:52:14 ]
> User-Agent: Monazilla/1.00

ヘッダーにこの情報を記述しなくてもDATが取得できたんだけど
これっておまじない程度のものなの?

505 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 04:40:05 ]
過去ログにさんざん書かれてますよ。

506 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 10:13:56 ]
おなじないって言ってるうちは理解できてないってことだな

507 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 11:53:35 ]
おなじない・・・・

508 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 12:46:30 ]
おなじないヽ(`Д´)ノウワァァン

509 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 13:20:14 ]
かくごしろ

510 名前:504 mailto:sage [2006/06/27(火) 22:58:57 ]
う〜ん・・・
特にいらないのか( ´・ω・)・・・

511 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 01:52:17 ]
そういえば、NISかなんかがgzipを無効にするとかいうのもあったっけなー。

512 名前:デフォルトの名無しさん [2006/07/01(土) 20:29:40 ]
Delphi6+Indyで簡易2chブラウザを作っています。
読み、書きはできるようになりましたが、●が書き込みに反映されません。

ちなみに認証方法はttp://kage.monazilla.org/system_DOLIB100.htmlを参考にして、
セッションIDを取得するところまではできています。

・セッションIDの取り出し
IdHTTP1.AllowCookies := False;
IdHTTP1.Request.UserAgent := 'DOLIB/1.00';
IdHTTP1.Request.RawHeaders.Add('X-2ch-UA:'+Myname);
IdHTTP1.Request.Connection := 'close';
Contents.Text:='ID='+LGId+'&PW='+LGPas;
Respons:=IdHTTP1.Post(url, Contents);
Sid := Copy(Respons,pos('=',Respons)+1,length(Respons));
//showmessage(Respons);で'SESSION-ID=Monazilla/1.00:〜〜〜'という文字列が表示されます。
//showmessage(Sid);では'Monazilla/1.00:〜〜〜'
//一番最後の文字は非改行文字であることを確認>>95

・書き込み時postするデータ
IdHTTP1.Request.Referer := SavUrl+ItaUrl;
IdHTTP1.Request.UserAgent := copy(Sid,1,pos(':',Sid)-1) +' ('+Myname+')';
Contents.Text:='bbs='+Ita+'&key='+Key+'&sid='+Sid
+'&time=1&hana=mogera&submit=書き込む&FROM='
+Name+'&mail='+Mail+'&MESSAGE='+Honbun;
Result:=IdHTTP1.Post(url, Contents);

書き込み自体はこれで成功しています。



513 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 20:44:20 ]
Indyのことはわからないから的外れな事いってたら悪いんだけど
URLエンコードはされてる?

514 名前:512 mailto:sage [2006/07/01(土) 21:15:02 ]
すみません。>>95を見て
Sid := Copy(Respons,pos('=',Respons)+1,length(Respons));

tmp1 := pos('=',Respons)+1;
Sid := Copy(Respons,tmp1,length(Respons)-tmp1);
に変えたのを忘れていました。それでも症状は変わらずです。

>>513
indyの内部で行われているようです。
名前欄の●が○になる以外で書き込んだ内容は正常に反映されていますし。

515 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 22:35:13 ]
確かSID末尾の改行がどうのというところで引っかかっていた人が過去に居たような。

516 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 23:53:56 ]
>>512
>>514
Proxomitronとか、あるいはetherealを使って
流れているデータを見るのが解決の近道

517 名前:512 mailto:sage [2006/07/02(日) 04:16:31 ]
で、でけたー
Indyのエンコード部分がいろいろとおかしいようなので封印して自前でURLエンコードしたら反映されました
>>513>>515大変参考になりました。ありがとうございます。

518 名前:デフォルトの名無しさん mailto:sage [2006/08/10(木) 20:05:03 ]
ひどい過疎

519 名前:デフォルトの名無しさん mailto:sage [2006/08/12(土) 23:49:35 ]
見舞われましたwwwwwwwwwwwwwwwwwwwwww

520 名前:デフォルトの名無しさん mailto:sage [2006/08/16(水) 17:04:57 ]
IEコンポーネントはVistaでも正常動作するか確認情報ってある?
使ってる人は少なくないと思うがそれらしい話を全く聞かないもんで

521 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 15:14:42 ]
monazilla.org ってどうして更新されなくなってしまったの?

522 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 01:33:58 ]
read.cgi 2006―JavaScriptはCGIの夢を見るか
qb5.2ch.net/test/read.cgi/operate/1153819270/749-

まだまだ実験中のやつだけど、ステータスコードが色々ですよ。
302しか想定してないブラが多かったと思うけど、404くらいには対応した方が
この先も色々慌てなくて良いかもよ。



523 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 22:27:23 ]
ステータスが 302 Found → 302 Moved Temporarily になっただけでまともに動かなくなったブラウザもあったぐらいだし
2chブラウザ作者は少しはHTTPを知っててほしい

524 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 13:51:50 ]
実装が面倒






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<226KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef