459 :
stream ◆PNstream2s :
2006/05/27(土) 16:31:16 新しい書き込みの仕様 レス FROM= ←名前 mail= ←メール欄 MESSAGE= ←本文 bbs= ←板のディレクトリ名。operateとかtechとか time= ←現在時刻より小さい値を適当に。1を送っておけばよい key= ←スレッドキー hana=mogera ←追加。常にmogeraを送っとけばいいのかな。 Cookieは不要。
スレ立て subject= ←スレッドのタイトル FROM= ←名前 mail= ←メール欄 MESSAGE= ←本文 bbs= ←板のディレクトリ名。operateとかtechとか time= ←現在時刻より小さい値を適当に。1を送っておけばよい hana=mogera ←追加。常にmogeraを送っとけばいいのかな。
Cookieは不要と書きましたが、sports2はCookie無しじゃ書けないので Cookieも今までどおり必要ですね
>>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.
クッキー認証、クッキーの必要なサーバーなら出る
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"の部分が間違っているんでしょうか?
すまん、誤爆した
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();
>>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
すごい惨めな気持ちになったぞ! どうしてくれる!
>>468 If-Modified-Since ヘッダって言うのは「この時間よりあとに未更新だったら送信しないでね」って意味だから
差分データを取得するにはさらに Range ヘッダを使わなければいけない。
HttpWebRequestの場合はAddRangeメソッドを使う。
>>468 > Range: bytes=ローカルDATのファイルサイズ-
はどこ行ったんだよ
かぶったorz
>>468 >関係ない話ですが、もし可能ならレス番号を指定してそれ移行のデータを要求できれば
>便利そうなんですが2ちゃんではそういうものには対応していないんですかね。
2000年8月危機の際にオープンソースとなり有志の手で改良された旧版 read.cgi には
raw モードとしてその機能が実装されたが、現在の read.cgi には実装されてない。
2001年ではなくて?
475 :
447 :2006/05/27(土) 22:18:47
>>470-471 webreq.AddRange((int) fileSize);
と指定することで差分データ取得できました\(^o^)/
ちなみにIf-Modified-Sinceヘッダをつけてもつけなくても、
またでたらめな時間や未来の時間にしても取得する差分データ
に変わりはありません。AddRangeさえ指定すればIf-Modified-Sinceは
特に指定する必要は無いんでしょうか?
>>473 便利な機能は無くなってしまったんですか(´・ω・`)
あぼ〜んがあった場合などでも問題なく差分データを取得できると
思われるので重宝すると思うんですが・・・
鯖の方でいろいろやらなきゃいけないし、 FOXがコードをDSO向けにリファインした時に無くした予感
ハナモゲラ絶対必要なの?
あぼーんがあったときに、ローカルのデータを上書きしてくれるのでありがたい
例えばレス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が返された場合はあぼ〜んがあったと推測し、全ログを取得し直すようにすればいいわけですね?
あ、416だった(ハズイ
そっすね、全取得になるかと。 ブラウザとしてだと、自動再取得の前に、何が削除されたか 知っておきたい、という需要もあるけどね。
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なんですがみなさんどうやってそれぞれのケースを判別されてますか?
それは、 本当は302が返っているのに、リダイレクトされているだけ
c)は違うだろ(まだdat落ちしてなければ)
>>484 b)
AllowAutoRedirect = false
datファイルが302 Found が返ってくるかどうか。
d)と比べたいならread.cgiにもアクセスする。
c)
datファイルが1000行あるか調べる
d)
AllowAutoRedirect = false
datファイルが302 Found が返ってくるかどうか。
b)と比べたいならread.cgiにもアクセスする。
e)
datファイルで人大杉?
ProxomitronとかEtherealとかつかって、既存の2chブラウザが何やっているかを把握すべし
>>492 CGIが動く負荷とdatファイルを読み出す負荷は10〜100倍ぐらい違うんだよ
>>493 なるほど、2ちゃん規模の掲示板だと2ちゃん方式は必要悪というわけなのか。
したらばはdat公開してないよ IPとかもdatに保存してあるから
> IPとかもdatに保存してあるから ((((((;゚Д゚))))))ガクガクブルブル
そんなに怖がることはないだろ
>>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を受信した場合の動作確認ができない。
普通の応答は解凍できてるから、たぶん大丈夫だとは思うんだけど・・・。
HTTP/1.1?
news2?
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 :2006/06/09(金) 03:18:20
>>499 はと〜く2ちゃんねるのをコピペしただけなので、
実際には運営情報板とかでテストしてます。
>>502 おお、telnetで試してみたらgzipで返ってきました。
でも、全く同じメッセージ送ってみてもWinsock(2.0)使った
自作プログラムではプレーンテキストが返ってくる。
う〜ん、何が違うんだろう。
> User-Agent: Monazilla/1.00 ヘッダーにこの情報を記述しなくてもDATが取得できたんだけど これっておまじない程度のものなの?
過去ログにさんざん書かれてますよ。
おなじないって言ってるうちは理解できてないってことだな
おなじない・・・・
おなじないヽ(`Д´)ノウワァァン
かくごしろ
510 :
504 :2006/06/27(火) 22:58:57
う〜ん・・・ 特にいらないのか( ´・ω・)・・・
そういえば、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);
書き込み自体はこれで成功しています。
Indyのことはわからないから的外れな事いってたら悪いんだけど URLエンコードはされてる?
514 :
512 :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の内部で行われているようです。
名前欄の●が○になる以外で書き込んだ内容は正常に反映されていますし。
確かSID末尾の改行がどうのというところで引っかかっていた人が過去に居たような。
>>512 >>514 Proxomitronとか、あるいはetherealを使って
流れているデータを見るのが解決の近道
517 :
512 :2006/07/02(日) 04:16:31
で、でけたー
Indyのエンコード部分がいろいろとおかしいようなので封印して自前でURLエンコードしたら反映されました
>>513 >>515 大変参考になりました。ありがとうございます。
ひどい過疎
見舞われましたwwwwwwwwwwwwwwwwwwwwww
IEコンポーネントはVistaでも正常動作するか確認情報ってある? 使ってる人は少なくないと思うがそれらしい話を全く聞かないもんで
monazilla.org ってどうして更新されなくなってしまったの?
ステータスが 302 Found → 302 Moved Temporarily になっただけでまともに動かなくなったブラウザもあったぐらいだし 2chブラウザ作者は少しはHTTPを知っててほしい
実装が面倒
2ch専用なのにHTTPに準拠する必要はない 速度やサイズや生産性が悪化するだけ
あとリロードのたびに1バイト読み取るバカ2chブラウザは何とかならないのかね
>>525 そんな糞プログラムが氾濫してるのか
知らなかった
2chという糞に合わせなきゃならんからな。 現実はたいへんなのよ。夢だけ語ってたら2chやれませんw
2chといえどもhttpの上に成り立ってるんじゃないのか
ただ人大杉とかdat落ちしたとかのエラーは独自だからね。 フォーマットも統一されてないし。
>>532 デマ流すな
で、普通の「まっとうな」2chブラウザは、
2chだけでなく、外部の実況板等の互換板にちゃんと対応している。
それは当然、httpに則っているということ。
もちろん302ではなく404を返すようになっても全然問題ない。
「httpに準拠しなくて良い」なんて書いてるのは
まともな2chブラウザを作ろうとしたことも無い奴のたわごとだから。
wikipediaより >準拠(じゅんきょ)とは、合致はしていないが、概ね(準)よりどころとしている事(拠)。 そういうことなら同意するよ
あんた、おふらうって知ってるかい?
2chがさくらとかのレン鯖(と一部ひろゆき自宅)で運営されていた時代を知らないで 「昔」を語られても困るわけですが、 レン鯖がhttp以外で運用されていたとでも思っているのですかね。 まさかhttpとHTMLを混同するわけないし。
独り言をこんなところに貼られても困る
まあ、まともな人はちゃんと作ってるから問題ないしね。 まともじゃない人が適当なこと(httpじゃないとか昔は違ったとか)言ってるだけだから。
httpじゃないというのならdatはどうやって取得しているのか知りたいものだな。。。
話が食い違ってるな HTTPをちゃんと実装することと HTTPを利用してることは全然違うぞ
2chがHTTPをちゃんと実装してるかって話? そりゃ、そんなわけないだろ。 2chはapacheを使っているだけで、 httpを実装しているのはapache.orgなんだから。 「2chはhttpじゃない」「昔は違った」なんて話は どう見ても「クライアント側がhttpをちゃんと処理しているか」とは なんの関係も無いし。
おまいらどう見てもhttpとHTML誤記した
>>525 に食いつきすぎですw
>>523 Live2chか
今は知らんが、あのブラウザは当時
>「302 Moved Tem,prarily」でもdat落ちと判断するようにした
って対応して、rootが「数字だけで判断するべきかと・・・」ってあきれてた
BBSPINKのフォルダ分けってどうやればいいの?
そういえばソフトウェア板のブラウザ比較スレで新ブラウザあがってたな
549 :
デフォルトの名無しさん :2006/10/13(金) 19:42:15
一応、上げときます。
なんで今更ww
safariのRSS機能で見ようとするとsafariが固まるんだが……
あ、>548のアドレスがserver.maido3.comに飛ばされるからだ スレ汚しスマンコ
556 :
デフォルトの名無しさん :2006/10/20(金) 10:52:47
最適化の結果、浴槽で眠りながら脱糞することになりました。
夢精は切り捨てられたか…… 空ループみたいだな
560 :
デフォルトの名無しさん :2006/11/09(木) 17:53:54
ん?
livedoorレンタル掲示板 開発日記:したらば掲示板”専用ブラウザ開発者様へのお知らせ”
http://blog.livedoor.jp/bbsnews/archives/50283526.html > 最近、2chブラウザ利用ユーザから問い合わせが増えてきており、
> 問合せ内容の調査の結果「read.cgi」経由でデータを取得しているソフトが多いことが判りました。
>
> したらばでは 「read.cgi」よりサーバの側処理コストが低く、フォーマットも単純な
> 「rawmode.cgi」を 2ch専用ブラウザソフト向けに提供しております。
>
> 「read.cgi」 は近々に予定している機能修正などで HTML が変更されます。
> 「rawmode.cgi」をお使い頂く事で「read.cgi」側の変更に影響されない作りにする事が可能となりますので
> 是非、下記をご参考下さい。
2ちゃんブラウザ作ってる奴でread.cgi経由で読み書きしているバカなんているか?
>>562 したらばやまちBBSはdat直読みが出来ないからread.cgi使ってるやつ多いよ。
確かrawmode.cgiが実装されたときにモナジラBBSに報告があったような。 何を使うかは作者の自由だけどさ。
>>562 いるから問題になってんじゃね?
>>563 dat 読むための rawmode.cgi じゃん。
rawmode.cgiはログ出力を偽装するものですが、 JBBSログは非公開のホスト情報を含むため、フィルタを行っております。
>>565 rawmode.cgi実装されたのわりと最近だから。
そこを言い争っても誰も得しないからやめとけ。
rawmode.cgiの出力は2chのdatと似てはいるが内容も文字コードも違う独自形式。 そのまま保存して直接出力する仕様にすると既に持っているJBBSのログと どのように整合性をとって繋げるかが問題になるし、D/Lの時に変換する仕様なら 結局はread.cgiを読むのと同じようなコンバータを作らねばならない。 既存のブラウザで乗り換えが進まなかったのはちゃんと道理があるんだよ。
こんなにこのスレ人いたのかw
俺も思ったw 2chしててプログラマだったら、このスレ見るんじゃないかな。 もっぱら使う専門な人なんで意見交換には参加できかねますが。
ネタないから普段は黙ってるだけで みんなチェック対象には入れてるんだろう。
575 :
568 :2006/11/24(金) 17:46:04
>>569 rawmode.cgiが使われていないことについて言ったんじゃなくて
「わりと最近」ってのが気になっただけなんだ。わかりづらくてスマソ。
rawmode.cgiの実装が進まない心境はよくわかるよ。read.cgiでも十分だし。
>>569 OSX向けの専ブラだと、半分くらいは2003/11以降だとおもうよ。
>>575 したらばでrawmodeの対応があったのは、わりと最近だった記憶が、実は自分もしているんだよなー。
(11月じゃなくて6月頃だった記憶がある。)
としとったから月日の感覚が麻痺しているだけなのかもしれないが(苦笑)。
盛り上がっている話題と関係なく今日気付かず苦労した点 ●ログイン時に送るデータをURLエンコードするとエラーになる
おつおつ
総合資料と個別資料ってどう住み分けしてるのん?
最近は大きな変更もないしねぇ。 rawmode使ってるけどいつ変えたか全く覚えてない・・・。
アーカイブ見たら確かに2003年11月に対応してたけど そのあとrawmode.cgi自体もちょこっと修正があったりしたな また変更があったのかと思ってびびった
wiki見てると他サイトの記事をコピペしたい衝動に駆られる
>●端末固有番号を送信しない携帯からの書込み禁止 >●IDに携帯識別符号を追加 >●IDの強制表示 >●携帯端末ID規制 鯖側のハナシだから関係なし 携帯用の作者さんは書き込み禁止について問い合わせがあるかもね。 >■新形式スレッド(新DAT)と旧形式スレッド(旧DAT)について 表示フォーマットが混在するスレもあるみたいだから、抽出機能とかつけてる人は注意、くらい? rawmode.cgiについて触れられていないようだから変化はないのだろう。
話の腰を折るかも知れんけど、思いついたから書かせて欲しい。 専用ブラウザの○○.exeを実行させて、 板・スレのアイコンをデスクトップとかにドラッグしたら、その板・スレへのショートカットを作成できて、 このショートカットを起動したら、○○.exeがコマンドライン引数付きで起動されて、その板・スレがアクティブになる。 って機能があったら便利じゃね? 例えば、ユーザーはクイック起動にでもジャンル別のフォルダ作って好きなスレのショートカットをどんどんブチ込む。 そうする事で、ユーザーは板に縛られる事も無く、好きなジャンルのスレを一括管理できる。 また、 C:\(…中略…)\Quick Launch\ガンダム\9.11Gundam'sオフ会.lnk C:\(…中略…)\Quick Launch\Off会\9.11Gundam'sオフ会.lnk C:\(…中略…)\Quick Launch\大阪府の地域ネタ\9.11Gundam'sオフ会.lnk C:\(…中略…)\Quick Launch\最近気になるスレ\9.11Gundam'sオフ会.lnk という具合に、同一のスレにアクセスするプロセスを複数作成できるので、 ユーザーが、「あのスレのショートカットどこのフォルダに入れたっけ?」と悩む事態も少なくなる。 もちろん、クイック起動以外の好きなランチャーやWindows標準Shellを利用するのもユーザーの自由。 ブラウザ製作者にも、煩雑な「ユーザーのお気に入りを管理する処理」をユーザーに丸投げできる利点がある。 ブラウザはコマンドライン引数に対応さえすれば良い。 但し、この機能を現実に実装する場合、ショートカットを作るのは容易な反面、削除をユーザーの手作業に任せるのは不親切。 「クイック起動フォルダ・ユーザー指定フォルダに含まれる、存在しないスレ・最近アクセスしてないスレのショートカットを探し出して全削除する」 みたいな機能もセットで実装したい。
公開してないがプログラム勉強用に作ってたブラウザでそういうの作ってた。 板一覧とかお気に入りも全部URLショートカットで好きなフォルダを2chブラウザに登録できる。 (IEのお気に入りみたいな感じで)
お前よく馬鹿って言われるだろ
お前は影で言われまくってるが一切それに気付けないタイプだな
それは普通だ
普通はたいして言われないし、ちょっとは気付くな
自分用の過去ログ取得スクリプトをofflaw.cgi中心に組んでみた。 エラーやら差分やらgzやら分岐が大変ね。 ## ログインしているならofflawで過去ログ取得 if ( $sid ) { $kakolog = &http(offlaw.cgiでゲットだぜ); ## 1行目と本体を分け、1行目を見て成否 ((my $stat), $kakolog) = split(/\n/, $kakolog, 2); if ( substr($stat, 0, 3) eq '+OK' ) { # OK } elsif ( $stat eq '-ERR そんな板orスレッドないです。' ){ # ないです。 } elsif ( ($stat eq "" and $kakolog eq "-ERR どこかであぼーんがあったみたいです。\n") or $stat eq '-ERR どこかであぼーんがあったみたいです。' ) { # ログ詰まりで全取得する # ここだけ1行目が空行のことがある } elsif ( (my @stat = split(/ /, $stat, 3))[1] eq '過去ログ倉庫で発見') { # html化済みでメッセージのURL $stat[2] からログをもらう # 既得があってgzでなければ差分取得する # 既得無し、gz、差分取得失敗で全取得する } else { # その他エラー } } else { ## ログインしていないのでkakoを見る } # 過去ログ $kakolog
597 :
デフォルトの名無しさん :2006/12/30(土) 00:01:55
598 :
デフォルトの名無しさん :2007/01/07(日) 12:33:40
2chブラウザってC/C++で作ってるのって少ないだね
OSX用はほとんどObjCかC++だよ。
よしじゃあ俺が
うわああああああ いつのまに規制解除されたんだコノヤローorz
Win32SDKだけで作ろうとしたけど挫折した。 コントロール作るのめんどい〜
死ぬ気か!
ATLかWTLを使おうよ。MFCはある意味SDK以上に死ぬ。
SDKで作り始める ↓ 関数ばっかりじゃんヽ(`Д´)ノ ↓ そうだファイルごとにまとめればいいんだ(・∀・) ↓ あれ?同じ処理ばっかり(´・ω・`) ↓ そうだクラス化しよう!(´Д`;) ↓ テンプレート使えばさらにスマートじゃん!(*゚∀゚)=3 ↓ どうみてもWTLです。 ああSDKで死んでみたいマゾな俺
WTLをもちっとSTLに近づけるのはおもしろそうダナ
ATL/WTLマンセーなやつ多いけどさ、フリーソフトだとDONUTくらいしかないんだよね ほんとに使ってんの? 今後でてくるならwxWidgetsあたりが意外と可能性あると思う
608 :
597 :2007/01/12(金) 10:05:56
OpenJaneをまるまるC++なんかにコンバートとか出来ないのかな? Delphiが使えないから、改造できない。
delphi学べ
C++わかるなら、今からDelphi勉強すれば今月末には余裕で読めてるだろ。 あとは自分で移植作業だ。
さてまた閉鎖騒ぎが起こっているわけだが
問題はひろゆきのやる気だな
しかし、ひろゆきも結構あこぎな生き方してるんだな。 普通のブロガーがあんなやり方を告白して開き直ってたら、 間違いなく2chで晒されて祭だろうなw
今回裁判を起こした人は一体何やって個人情報晒されたんだ?
閉鎖になると2chの情報がもったいないな・・・
>>617 げ・・・、噂には聞いていたが「35歳会社員」ってのはリアルで中国大使館オフの疑惑の人物だったのかよ・・・
2chブラウザを作るのは良い勉強になるんだけどな…
閉鎖になるわけないだろう。 ドメイン名が変更されてそれで終わり。
いや変更すら無いだろう。
変更すら無いと思うがもし変更されたらいちおうこのスレで扱う範疇だな。 1行修正するだけだと思うけど
板一覧を更新する人は作業が必要なんじゃない? いまはほとんど2ch.netってドメイン名で指定してるんだろうし。
釣られてる?
閉鎖になってもbbsmenuは更新する、っていうのをどこかで見たような気がする( ´・ω・`)
となると35歳会社員ってなにやって個人情報晒された人なんだろう? 全うに生きて晒されたのなら結構気の毒な話だと思うんだが(´・ω・`)・・・
「ひろゆきがやる気なくなって終了」はいつでもありうるんだよな・・・
>>630 いやだから中国大使館オフと今回の件は関係ないんだってばw
2chは閉鎖しないの情報が流れるとスレが止まったw きっと皆開発に勤しんでるに違いない!
仮にドメイン差し押さえられてもサーバは残るわけだし別ドメインやIP直でアクセスすればいいし今まで通りってわかってたよハハハハハハ
636 :
デフォルトの名無しさん :2007/01/19(金) 07:57:55
IP直じゃ書き込めないよ
637 :
デフォルトの名無しさん :2007/01/20(土) 22:08:46
>>637 Perlのソースをうpしても、「Perlのソースが読める」と、「●の実装を理解してる」の両方を満たす人しか回答できないよ。
送信してるヘッダを書いた方が判りやすいと思う。
それと、目的が「作る」のではなくて「ログを落とす」なら、壷インストールしてIEを自動操縦する方が簡単と思う。
>>637 ●持ちじゃないからテストできなくてスマンが、163行目はraw=.0じゃなくraw=0.0が正解じゃね?
640 :
637 :2007/01/21(日) 03:44:12
ブラウザの機能の一環として、30分おきに自動で約10板分の subject.txtを自動で読みに行くのは怒られる?
サーバーサイドだったら構わないだろうけど、個々のユーザーに自動取得させるのはどうかと思うよ。 使い道によっては嵐ツールに早代わりするから。 まあやるならしっかりとUAを名乗ることだね。
個人的には瞬間的にストレスかけるのは好きじゃないから、 もし同じような実装するとしたら3分おきに1つの板のsubject.txtを取りに行くようにするかな・・・
JBBS で倉庫行きになったスレって dat 取れないんだっけ?
646 :
644 :2007/01/27(土) 22:19:08
板が移転したときの判定について質問です。 板更新しないとブラウザ上では移転前のURLのsubject.txtを読みに行きます。 ケース1:初めて読む板でIf-SinceModifiedを付けずにリクエストしたとき スレッドが1つもないsubject.txtが存在していてHTTP StatusはOKが返ってきます。 このときはダイアログで板移転をうながせば良いかと思います。 ケース2:2回目以降読む板でIf-SinceModifiedをつけてリクエストしたとき Not Modifiedが返ってきます。 通常、Not Modifiedが返ってきたらローカルのsubject.txtを読んで表示してます。 本当は移転先のsubject.txtを読まなければいけません。 この場合、どうやって移転したと判定すれば良いでしょう? 前回の読み込みから10分以上経っていたらIf-SinceModifiedを付けないとか?
subject.txtは書き込み毎に更新されるので、IMSフラグを 付ける必要はないと思う。それで帯域が節約されるとしたら よっぽどの過疎板ってことだから。
649 :
デフォルトの名無しさん :2007/01/29(月) 18:01:42
>>647 なにか勘違いしてる
手元にあるsubject.txtが空でなければ、If-Modified-SinceつけてNot Modified が返ってきたら
サーバーのsubject.txtが空な訳はないだろ。
あと前にも書いたけど、If-Modified-Sinceじゃなくて If-None-Match 推奨。
650 :
647 :2007/01/29(月) 18:12:28
>>648 うーん確かに。だったら単純に更新連打抑制機能だけつければいいのかな?
他のブラウザはどうなってるんだろう。
>>649 うお。確かに勘違いでした。
今は未だケース1のスレッドが1件も無かったら板移転と判断のロジックが入ってないので、
ローカルに空subject.txtが保存されますね。
それでIf-Since-Modifiedしたら、それは・・・すみません。
If-None-Matchの件も上のレス見て納得しました。
>>650 前にちらっと読んだ kage のソースでは、1秒以内の同じ URL へのリクエストは
シカトするようになってた気がする。
>>652 その「関連キーワード」ってなんじゃろか?
654 :
委員長 ◆/DABoneCRY :2007/02/12(月) 19:45:26
>653 例えばこのスレッドをIEで開いて、最上部を見て下さい。 キーワード【 dat monazilla ブラウザ gzip Encoding ch 取得 】 といった物があります。 それをクリックして貰えれば「ああ、なるほど」と分かって貰えると思いますよ。
むを!上げてもた…… 見逃してやって下さい。
最後のl50、l100・・・、なしとかでキーワードの結果が違うのね どれが一番良いんだろ?
>>654 ああ、なるほど。そのスレに関連するキーワードが自動的に抽出されて最上部に
検索リンクがはられるということか。
>>657 推測だが、指定範囲のなかでキーワードを拾ってるんじゃなかろうか
660 :
デフォルトの名無しさん :2007/03/31(土) 17:05:32
同じhost上のdatファイルを何個か連続して欲しいときって Keep-Aliveのほうが効率いいと思うんだけど GET /tech/dat/1174585528.dat HTTP/1.1 User-Agent: Monazilla/1.00 Host: pc11.2ch.net Accept: */* Accept-Encoding: gzip, deflate Connection: Keep-Alive こんなリクエスト5連ちゃんくらいしてもレスポンスヘッダには 全部 Connection: close が入ってるんだよね。 そもそも HTTP/1.1 でリクエストしてるから "Connection: Keep-Alive" いらないだろ とか思って、なしでも試したけどどっちでも close されちゃう。 オレ的にはこれでも連ちゃんでdat取れるから、べつにいいんだけど 2chとしてはどうなの? あと、もうひとつ質問なんだけど、巡回みたいなことするときに、 「最低でもリクエストの間隔はこのくらいは開けろ」、とか 「連ちゃんでのリクエストは何回までにしろ」とか「この時間帯は避けろ」とか そういうのってないの? 常識の範囲ではわかってるつもりだけど、2ch的にはどうなんでしょ?
そのへんをあやふやにして運営してるのが2chです。 明確にすればそこスレスレで負荷をかけまくれるからね。 問題があればアク禁にされるってのが基本的な姿勢。 運営版でそれとなしに聞いてみればいいよ。 こんなサービスをしたいのですがどうですか〜って感じで。 FOXかひろゆきに気に入られたら鯖も無料で貸してもらえるよ。 あと法人名で問い合わせればjigみたいに個別に対応してもらえるかもしれない。
662 :
デフォルトの名無しさん :2007/03/31(土) 18:14:07
こっちは「keep-aliveでもcloseでもいいよ」って選択肢をサーバーに示している。 サーバーがcloseを望んでるんだから気にしなくていい。 サーバーの仕組み上、Keep Alive のほうが負荷が高くなるケースもあって、 2chでは Keep Alive を無効にしていることが多い。
663 :
660 :2007/03/31(土) 18:51:45
レスさんくす。 そんなもんなんだ。 けど、それってぎゃくに難しいよなぁー・・・
(´-`).。oO(運用情報板を読んでいないんだろうなぁ。。。)
>>660 のをハイパーターミナルで試してみた
プロパティでTCP/IP ポート80 アドレスはnslookupでとってきて。
さらに設定タブ>ASCII設定で
ν行末に改行文字
νローカルエコー
ν受信データに改行文字をつける
ν右端で折り返す
>>660 のリクエストの行末に改行2つ(これがリクエスト・レスポンスのヘッダーとボディの分け目のマーク)つけてテキスト(req.txt)に保存して、
そして、もう一つテキストを作って(cap.txt)、転送>テキストのキャプチャ(cap.txt)
そして、転送>テキストファイルの送信(req.txt)でリクエスト送るとレスポンス返ってきた。
ここまではいいんだが、
でcap.txtをcap.htmlに変えて色々文字コード変えてもボディが文字化けしたままなんだけど、これはハイパーターミナルのエンコードが既にシフトJISだからかなあ?
自己解決しました レスポンス Content-Encoding: gzip でした
最近2chブラウザ(とても使えるレベルじゃないのでみたいなもの)作ってるんですが、 be付きで書き込む場合って●を使って書き込むDOLIB 1.00の仕様と同じなんですか?
>>667 違うよ。全然違うよ。
beはcookieとしてメアドと認証コードを送る。
それぞれDMDMとMDMDというのがキーになっている。
そこ以外は通常時と同じようにPOST。
のはず。
669 :
667 :2007/04/10(火) 12:16:06
やっぱり違いますか。ということは通常書き込むときは、 "Cookie: NAME=" + 名前 + "; MAIL=" + メール + "; " + 返ってきたSet-Cookie:のPONとexpiresとpath=/ + "; hana=mogera" で書き込めてますけど、 "Cookie: NAME=" + 名前 + "; MAIL=" + メール + "; DMDM=" + be登録アドレス + "; MDMD=" + be認証コード + 返ってきたSet-Cookie:のPONとexpiresとpath=/ + "; hana=mogera" で大丈夫ですか? 上記の名前、メールはURLエンコードしてますが、be書き込み時のbe登録アドレスとbe認証コードもURLエンコード必須ですか?
670 :
667 :2007/04/10(火) 15:52:19
URLエンコードなしでBe書き込みできました。どうもです。
マルチですが、情報を。 書き込み不可となっているブラウザがいくつか発生しているそうです。 とりあえず、私が把握した情報だけ。 想像も入っているのですが、鯖側でクッキーの処理が変わったのか 複数行のクッキーだと受け取って貰えないようです。 //この処理だとダメ IdhEdit->Request->CustomHeaders->Clear(); IdhEdit->Request->CustomHeaders->Add("Cookie:NAME="+CmbName->Text); IdhEdit->Request->CustomHeaders->Add("Cookie:MAIL="+CmbMail->Text); IdhEdit->Request->CustomHeaders->Add("Cookie:"+gCookie); //この処理だとOK IdhEdit->Request->CustomHeaders->Clear(); AnsiString CookieCode = "Cookie: NAME=" + CmbName->Text +"; MAIL=" + CmbMail->Text + "; " +gCookie; IdhEdit->Request->CustomHeaders->Add(CookieCode); 実際には鯖側で処理を変えたのか、それとも鯖とIndyの相性(\nと\r\nとか)なのか はたまた、Windowsアップデートがあったそうなので、それが影響しているのか不明ですが とりあえず、A Boneでは、上記の変更で修正出来ましたので、ご連絡しておきます。
672 :
stream ◆PNstream2s :2007/04/11(水) 16:40:28
ちなみに、複数行のCookieは確か間違いなんで今回の件にかかわらず直したほうがいいです
ニコニコが人気らしいが、あんな風にプレイヤーと専ブラが融合した物を 誰か作ってみんかね。 キャプチャデバイスから映像を取り込みつつ、実況板(指定したスレ)から ログを取り込んで重ねて表示とか。
そのアイデアは楽しそうだね。 キャプチャのメーカによってプログラムを変えないと いけないだろうから複数の人に向けては難しいかもね。 ワンセグとかだと割りと簡単に取れたりするのかな?
ビデオデバイスを扱う汎用なインターフェースがあるっぽい?
古いものならVFW、最近のならWDM
テレビを表示してるウィンドウに、半透明化した専ブラのウィンドウを重ねればいいんじゃね? と思ったが、テレビが見難い… 文字だけ表示し、ウィンドウの枠などが透明な専ブラがあればいいのかな
read.cgi再開発スレ Part2
http://qb5.2ch.net/test/read.cgi/operate/1105909861/655- > 655 :動け動けウゴウゴ2ちゃんねる :2007/05/07(月) 17:28:03 ID:KXXfawU50
> スレがdat落ちしてた時read.cgiなら
>>1 は読めるのに
> ●ログインしてない専用ブラウザだとスレタイすら分からないのはひどい
> 専ブラにもpastdat.soを開放するべきだ
>
> 656 :stream ◆PNstream2s :2007/05/07(月) 18:58:19 ID:3mprCz2C0
>
http://qb5.2ch.net/test/read.cgi/operate/1153650861/768-769 > read.htmlが入ってるところなら、datファイルにUserAgentがMonazilla以外でアクセスすれば
> dat落ちしているならリターンコードが203で、内容がそれなりのものが返って来る。
>
> 657 : 株価【1540】 △△ ◆cZfSunOs.U :2007/05/07(月) 19:44:27 ID:T2091+Se0
>
>>655-656 ただ,専ブラが Monazilla 以外の User-Agent をよこしてくるようになると
> 後々面倒なことになるかも知れない(専ブラとそれ以外の判別処理が煩雑になるなど)ので,
> 専ブラの各作者さんで話し合って,pastdat.so / anydat.so 対応であることを示す統一した目印
> (例えば User-Agent を Monazilla/1.00 (SomeBrowser/1.0; pastdat) のようにするとか)
> を決めてもらえるといいような気もします.
> そうしてもらえれば,pastdat.so / anydat.so に対応する処理を入れます.
>
> # 今は,pastdat.so が入ってるのは雪だるまだけ,anydat.so が入っているのは
> # read.html が入っている鯖だけなんですが,これやると anydat.so 全鯖配布になるのかな.
その通り pastdat を追加で良いんでね? Monazillaのヴァージョン番号とかだと、更なる機能追加とかあったときに、 対応・未対応の区別が面倒だし。 BとCの機能は対応してるがAには未対応、みたいな。
681 :
n|a :2007/05/08(火) 22:10:22
>>679 実際にUAの値を使うのはサーバ側なので、
パースの容易さや将来の拡張性等の点でサーバ側に都合の良い仕様を
提案してもらった方がいいのではないでしょうか。
専ブラ側でUAに文字列を追加するのはそれほど問題にならないと思いますし。
682 :
● :2007/05/09(水) 00:11:19
話をぶったぎって悪いが ようやく自作ブラウザでログインして書き込みできるようになったんで記念カキコ
>>679 独自のHTTPヘッダで対応するのは無理?
クッキーなしの状態からクッキーもらってbbs.cgiにポスト するまでの処理がわかりません。誰かおせーて。 あとスレのたてかた。
どこまで調べた・試したかくらいは書こうぜボーヤ
>>685 IE等の普通のWebブラウザと同じだよ。
689 :
○ :2007/05/15(火) 13:52:52
買えよ
690 :
● :2007/05/15(火) 13:53:43
ってログインしとらんかった・・・
●飼うほど使わないしぃ・・・
1だけ読めてもねぇ
>>685 俺はだいたいこんなかんじ。
1. リクエストヘッダーのクッキーに、ローカルに保存しておいたクッキーの値を読み込む。クッキーが無い場合は空。
2. bbs.cgiにポスト
3. レスポンスを読んで、「書きこみました。」の文字があれば終了。
4. レスポンスを読んで、「書きこみ確認」の文字があれば、レスポンスヘッダーのクッキーをローカルに保存する。1へ戻る。(※無限ループにならないように戻るのは1回だけ)
5. レスポンスを読んで、3,4以外だったらエラーなので終了。
スレ立ての場合は、ポストする内容から key=datキー を削って代わりに subject=スレ名 を付け加える。
それと submit=書き込む を submit=新規スレッド作成 に変えるだけで後はレス書きこみと同じ。
>>693 なるほど、参考になりました。ありがとう。
2chブラウザで使う主機能(datの取得とか書き込みとか)をまとめたライブラリを 誰も作らないのはなんでなんだぜ?
調べりゃわかるのに何で作るんだぜ? 調べてもわからなければここで聞けばいいんじゃね?
言語もOSもバラバラだから作ろうにも・・・
699 :
デフォルトの名無しさん :2007/05/17(木) 17:27:08
OSXならThousand2chとか
>>695 じゃあとりあえずCのソケット関数で作ってくれ
#include <sys/socket.h>
か
#include <winsock.h>
で
701 :
デフォルトの名無しさん :2007/05/17(木) 19:27:19
CかC++でHTTPを扱うライブラリで何かお勧めない? OSはWindowsかun*xで
WinHttp
>>695 JavaとC#で使えるライブラリお願いします><
Jakarta HttpClient
そこで誰かがライブラリを修正すればみんなハッピー! あー幻想幻想
俺じゃない誰かがOpenLib2chを作成するんだ!
必要なのはライブラリではなく、 明確な仕様とその変更の通知
まちBBSに対応させたいんですが、 2chと違ってread.cgi経由で読み出すしかないんですかね?
うん まちはread.plだけどね
ありゃread.cgiで組んじゃった でもちゃんと動作してるみたいだし良いか それにしてもまちBBSのread.cgiが吐き出すhtmlって汚いなぁ
714 :
デフォルトの名無しさん :2007/05/22(火) 02:42:45
ギコナビはそれでいった。
へぇ 起動オプションでURL渡すとかそんな使い方あったのか
統一したって話は聞かないから、ブラウザごとにバラバラじゃないかね。
717 :
713 :2007/05/22(火) 20:51:58
情報アリ ツール作ってて、取得したURLから2chブラウザで直接開けると便利だなぁと 思って聞いたんだが開けないの使ってる人はあきらめる!って方向で行くわ だいぶ形になってきて後はデバグだorz
普通に考えて、標準のURL以外の形式に限る理由なんかないだろう。
719 :
デフォルトの名無しさん :2007/05/22(火) 22:00:59
2ch専用のスキームがほしいかな 2ch://pc11.2ch.net/test/read.cgi/tech/1057329161/ これで普通のブラウザと区別できる
2ch.net/test/read.cgi/ の部分はチェックすればいいだけじゃね?
実装しちゃるって奇特な専ブラ作者さんはおられんかの 【要望】 スレッド上に貼られた、MD5、SHA-1等のハッシュ値に該当する画像ファイルが 特定の指定したフォルダにあった場合にサムネイル表示する機能 ぶっちゃけ壊滅しつつある画像うpろだの代替機能を P2Pソフト+専ブラで実現できんものかと
著作権法違反幇助の罪で捕まっちゃわない?
専ブラ自体はローカルのファイル検索して表示するだけだし問題無いと思う。 で、P2Pソフトの方はnyとかだとタイムリーなネタは無理だね
特定のフォルダにある画像ファイルのハッシュをあらかじめキャッシュしておく必要はあるかな。 あと、ハッシュらしき文字列を判定する機能も必要。
画像ファイルの入手も問題だな。
スレ上に張られたハッシュ値をいちいちコポペするのかい
728 :
デフォルトの名無しさん :2007/06/12(火) 14:04:27
エンジン内臓を誰か作ってください。 エンジン内臓を作ってよ ギコナビからIEやjaneから
日本語でおk
臓物を作るのか
内臓はグロイからやだ。
732 :
デフォルトの名無しさん :2007/06/26(火) 18:15:46
live2chみたいな実況中継型のブラウザを作ってみたいんだけど連続してスレをリロードするとき 最低でも何秒以上あけないと荒らしと認定されてアク禁食らうようなことになったりしない?
>>732 個人で管理なので大変なのでしょう…
termkeep.される事を理解できれば その様な状態には為らないと思います。
>>733 > termkeep.される事を理解できれば
なるほど、その間隔は2ちゃんの鯖から制御されるのか
行く先々でこのコテ見かけるわ最近
把握。 ひろゆき( ´Д` )
よくある次スレ検索機能みたいなのってどういう仕組みになってんの?
>>740 基本的には、スレタイの先頭数文字の一致。あとは【】をとばすとか、いろいろ考えられると思う。
結局自分で探すのが一番
自分で探すときの考え方をそのままプログラムに反映させるだけだろ ・・・と口で言うほど簡単ではないけど、基本的にはそうだと思う・・・
ということは高精度なOCRが必要になるってことでしあ
>>740 Janeはコサイン係数で文字列の類似度から次スレを見つけてるみたい。
twintailは文字列を単語毎に分解してるだけだから簡単な実装で大丈夫だと思うよ。
748 :
746 :2007/07/25(水) 15:02:29
あ、ごめん、JavaScript モードにしてるからだったみたい。 CGI モードだと 6 だけだった。
一ヶ月書込みがないな
役割を終えたということで・・・・
2chの仕様変更でもない限り盛り上がらないだろうな ところで2ch以外の掲示板の話題はスレ違い? 俺はまちBBSのスレッド取得について詳しく書いてあるサイトがあれば教えて欲しいんだが。 あぼーんがあるとsubject.txtに書かれているレス数と最終レスの番号がずれるのでどうやって差分取得をすればいいのかわからない。
あぼーんなら差分取得はしない
まちBBSって .cgi ファイルになってて取得できなくない? どうやってあぼーん検出するの?
>>754 >あぼーんがあるとsubject.txtに書かれているレス数と最終レスの番号がずれるので
それってスレを取得する度にsubject.txtも更新する必要があるような・・・
757 :
デフォルトの名無しさん :2007/09/05(水) 23:40:09
誘導されました。 2chブラウザ作っているのですが、qb5.2ch.netに書き込み確認のcookieタグを 取得しようとしても正しく取得できません。 調べるとhttpのヘッダが他のサーバーと違います。 これはどうしてですか? 書き込みをしようとした時にcokkieが書かれたヘッダです。 --------------- news22.2ch.net --------------- HTTP/1.1 200 OK Date: Tue, 04 Sep 2007 14:49:57 GMT Server: Apache/2.0.55 Set-Cookie: PON=***********; expires=Friday, 01-Jan-2010 00:00:00 GMT; path=/ Set-Cookie: HAP=******; expires=Friday, 01-Jan-2010 00:00:00 GMT; path=/ Vary: Accept-Encoding Content-Length: 1911 Connection: close Content-Type: text/html; charset=shift_jis --------------- qb5.2ch.net --------------- HTTP/1.1 200 OK Date: Tue, 04 Sep 2007 14:37:59 GMT Server: Apache/2.0.52 (Unix) PHP/4.3.10 mod_ssl/2.0.52 OpenSSL/0.9.7c-p1 Set-Cookie: PON=***********; expires=Friday, 01-Jan-2010 00:00:00 GMT; path=/ Set-Cookie: HAP=******; expires=Friday, 01-Jan-2010 00:00:00 GMT; path=/ Vary: Accept-Encoding Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=shift_jis
HTTP/1.1を名乗っているのにChunked-Transter-Encodingを理解しない者は 腹を切って死ぬべきだ。詳しくはRFC2616で熟知すべし。
HTTPヘッダが違うのは鯖がそういう環境だからだろう。 ていうかヘッダ見る限りクッキー取得できてるじゃねぇか。
まだじゃね?
>>761 情報サンクス。
dat直読みか、rawmodeを載せてくれるとうれしいなあ。
差分取得が楽になる。
monazilla.org 更新再開されてたんだな。 phpのWarningがでまくってるけど。
他力本願だけどなw
Warning: main(module/asm4cmt/): failed to open stream: No such file or directory in /home/monazill/public_html/index.php on line 116 Warning: main(): Failed opening 'module/asm4cmt/' for inclusion (include_path='.:/usr/local/lib/php') in /home/monazill/public_html/index.php on line 116 Warning: Cannot modify header information - headers already sent by (output started at /home/monazill/public_html/index.php:116) in /home/monazill/public_html/index.php on line 1542 ググッてもmonazilla.orgのキャッシュしか見つからないぜw
BBS_THREAD_TATESUGI=64 おそらく連続してスレ建てするのを規制する行だと思うんだけど 64とされていた場合、次にスレ建てできるようになるまでどのくらいの 時間がかかるんだっけ?
過疎スレで64個って永杉だろorz・・・
過疎はきついなw
772 :
● :2007/09/30(日) 13:04:33
買え
買わされ続けて解約できないと聞いたから嫌
774 :
○ :2007/09/30(日) 16:45:20
解約手続きしたこと無いからわからんが 2chをやり続ける限り●も買い続けるぜ。
775 :
● :2007/09/30(日) 16:45:48
ログインしてなかた
メール送ったら解約できたぜ。 送ったメールに対する返信・確認や連絡は一切なくてうさんくさいこと この上なかったが、引き落としされなくなってた。 二度と買わねぇ
指定した2ちゃんの特定の板にある全てのスレを読み込んで 特定の文字、ID、名前、E-mail欄で検索をかけるちょっとしたツール を自作しよかと思ってるんだけど似たようなツールって既に現存したりする?
転送量・・・一つの板だけならそんなでもないかな。わかんないけど><
個人的にやるなら大丈夫だけど、ツールを配布するなら狐が激怒するから注意。 了承取っとかないとちょっとしたクロールでもバンされるから。
780 :
デフォルトの名無しさん :2007/10/31(水) 11:22:36
そんなのUserAgentを適切に設定すればOK
クロールはip単位でバンしてるから。 ちょっと前まではgooglebotさえバンしてたぐらいだから。 みみずんやら閉鎖したにくちゃんねるやら、2nnとかは ipの範囲を申告して了承を受けて取得してる。
782 :
デフォルトの名無しさん :2007/10/31(水) 11:59:04
あいつら最近そういうの取り締まるのやる気ないから
783 :
777 :2007/10/31(水) 12:17:20
了解ッス。 キワモノの扱いってことはそういうツールは公にはなさそうだね。 というわけで自作する道を選びます(・ω・)ノシ 一つの板にある全てのスレを読み込んでいくわけになるんだけど 何秒以上間を置いてから読み込んだ方がいいとかわかる? そこらへんも実際にやってみないことには何ともいえないのかな?
運営側は何秒までならいいですよ〜なんて絶対に言わない。 言えばそこギリギリで負荷を掛ける奴がいるから。 定期的にクロールすれば負荷のグラフが突出、 するとログを調べられて規制の対象になる。 その辺りの調整はrootがやってるから、該当スレと負荷グラフを見てこっそりやるしかないわ。
786 :
デフォルトの名無しさん :2007/10/31(水) 13:07:05
逆に配布してみんなやるようにすればいい そうすれば自分だけ目を付けられることはなくなる
788 :
デフォルトの名無しさん :2007/10/31(水) 13:28:16
2chは最近はそれほど負荷に悩んでるって訳でもない。 サーバーの能力の伸びは今では利用者数の伸びをはるかに上回っているし。 それにひろゆきの年収を考えてみろ、いざとなればサーバーなんていくらでも増強するだろう。
設備をケチれば狐の会社が儲かる不思議。 rootは知的好奇心から鯖運営を無償でしてる(ことになってる)。 実際ひろゆきは2chのサーバー代は全く払ってない。(BE鯖、ひろゆき直轄を除く) ●のプール金から払ってることにしてるだけ。
たしかそれがひろゆがたとえ逮捕されても死んでも2ちゃんはすぐには無くならない根拠となってるよな
逮捕されたり死んだら、実際にサーバーがあるアメリカの会社のJimが ひろゆきの代わりに管理人になると言われてる。 ちなみに彼はbbspinkの管理人ね。 内紛があって狐とはあまり仲がよくないけど、今でも一応ビジネスパートナー。
>>788 この場合は負荷ではなく転送量の問題の方が大きいと思うが・・・
793 :
デフォルトの名無しさん :2007/11/01(木) 09:29:11
よーしパパ、自作専ブラのgzip転送サポートしないで作っちゃうぞー
今出回ってる奴らはgzipサポートしてんのかね
そういえば鯖によってはgzip圧縮しないと転送してくれないものもあるんだっけ? 主要な2ちゃんブラウザってどれもgzip圧縮でやりとりしてるの?
offlaw.cgi経由はgzipでないと無理じゃなかったっけ
>>795 gzip受けられないと5年前ぐらいの過去ログがとれなくなるから
さすがにしてるんじゃね?
2ちゃんのログをC#を使って取得しているんだけどその際参考にさせてもらってる
サイトが↓
http://dobon.net/vb/dotnet/internet/webrequest.html WebRequestクラスを使ってログを取得しているんだけど上記のページで紹介されてる
サンプルプログラムってgzipデータをやりとりなんてややこしいことやってないよね?
gzip圧縮しなくてもログ取得できてるから気にしてなかったんだが、もしgzip圧縮された
ログを取得して読めるようにするには上記のサンプルプログラムをどう改造したらいいの?
>>799 2.0以降なら
HttpWebRequest.AutomaticDecompression
>>800-801 ありがとう(・ω・)ノシ
でも.NET 2.0以降じゃないと対応してないのか・・・
あいにく1.1(VS2003)で開発しているんだよね(´・ω・`)
>>802 今時1.1はちとアレだ、Express Editionでも落として来い
と言いたいところだが
お題: 完成した専ブラをみんなに使ってもらうには
Microsoftに売り込んでWindowsにバンドルしてもらう
>>804 monazillaに登録されると一気に人が押し寄せてくるよ
いらないレスを削除してスレをまとめる機能を専ブラに付けようと思ってるんだが。 一体どう計算させればできるのだろうか? 独自ファイルを一時的に作り、datに毎行移動フラグを付加してみたら良いのか。 読み込んだdat ↓ 一時保存ファイル(移動フラグ、フォントサイズ変更フラグ、色変更フラグなど付加) ↓ HTML変換
いらないレスは透明あぼん扱いにして飛ばしちゃえば?
>>808 それどうやれば使えるの……ってググってくるよ。
あぼ〜んのやり方知らないとか、やっぱりdatの扱い方を熟知しないと辛いか……
dat->html変換にはかけてるんでしょ。その変換がレス単位なら、 外部条件によって実行するか、<--あぼん-->とだけに するかだけの話じゃないの?
どんなスキルで作ろうとしてるのか不安になるな・・・
工エエェェ(´д`)ェェエエ工工
>>809 こんな感じかな
dat読み込み
↓
本文とか名前欄でいらない物が入ってるかチェックしていらないものはあぼん書き換え
ここでサイズ変更とか色変更もここでやればいいと思う
↓
一時ファイルに書き出し?
↓
html変換
>>811 javaで作る予定。
スキルは……2chの仕様書は何となく理解できたくらい。
>>812 そんな感じ。
そう複雑になるものではないはずなんだけど、もしかしたら無駄な行程を入れてしまっているのかも知れない……
ところで、スレまとめソフトを公開してはいけない規約とかあったか? 参考にしようとしたらどこ探しても見あたらないんだ。 2chまとめブログが最近増えてきてるからどっか大手が作ってるんだろうなと思ってたんだが、ないんだな。
>>816 2ちゃん消滅騒動以来負荷をかけない、転送量を抑えるというのが暗黙の了解と思っている。
取得したdatに関してはどう使おうが問題はないはず
どなたかdatをHTMLに変換する方法を優しく教えてくれませんか。 形式を見てもどうすれば本文を<b></b>で囲ったり名前の前に番号を振ったりできるのか分かりません……
ただの文字列操作だ。 Jane等のオープンソースのコードを読んでみろ。
ありがとうございます。
>>818 おいおい
datを1行読んで<>で分解して本文の前後に"<b>"と"</b>"を結合するだけだろ
>>818 ぶっちゃけお前に2ちゃんブラウザは無理。
見た目より難易度高いよ、作るの。
作って公開して自らスレを立ててもいいのだろうか Duawinなんかは1=開発者のようだが
宣伝しなきゃデバッグしてくれるユーザーは現れないよ。
つか、良いとか悪いって基準はなんなんだよw
逆襲スレ落ちてしまったのか。
逆襲からここにたどり着くのが大変だった
830 :
デフォルトの名無しさん :2008/01/13(日) 02:59:27
age
PSPから書き込み
もう一度
833 :
デフォルトの名無しさん :2008/01/24(木) 15:43:58
しつこく 改行 テスト
834 :
名なし :2008/01/24(木) 16:02:08
あ か さ
たなは
おぉ、乙!
てすと
839 :
デフォルトの名無しさん :2008/02/10(日) 18:02:13
>>840 monazilla.orgを盛り上げて、2chブラウザの世界も盛り上げるためでしょう。
>>839 宣伝で、一言ずつソフトウェア板の2chブラウザのスレに声をかけてみたら?
>>839 ここは技術的話題がメインだから
>>841 が言うようにソフトウェア板の
例えば乱立スレとかに・・・んーそれはそれで問題が起きそうだな・・・
………
今まで動いていた●での過去ログ読み込みができなくなりました・・・ Firefoxでofflaw.cgiへのsid付きURLベタウチ&User-Agent:Monazilla/1.00 kage(1.00)だと きちんと読めました。 これと同じURLで自分のプログラムから送信しても -ERR もうつかえません となります。 User-Agentの指定、セッションのURLエンコード、他に何かミスりそうなことありますかね。
>>844 Firefoxでクッキー削除してみたらどうなるかな
FirefoxアドオンのLive HTTP headersでリクエストとレスポンスを確認してみたら何かわかるかも
何か問題でも?>DATのUTF8化
文字コードの変更だからめちゃくちゃ面倒だろ。 BE板のみがEUCになったときでも対策大変だったのに。
EUCはSjisに変換すれば良いだけだったけど、 UTF8はSjisに含まない文字もあるので大変 内部処理も表示も変えないと
全部UTF-8に変換すればいいじゃない
851 :
デフォルトの名無しさん :2008/04/13(日) 22:58:51
Windows9xのころからあるレガシーな開発環境だと Unicodeまともに対応してないとかありえるけど Windows2000が登場して8年だし、もう仕方ないよな
仕様変更するなら早い方がいい 後になればなるほど対応が大変になる
datサイズがどうなるとか、生きてるdatも変換してしまうのかとか、UTF8とSJISのdatが混在してしまうのかとか 過去ログはどうするのかとか、UTF8はUTF8専用のdatを用意するのかとか、古い専ブラ(開発が停止している専ブラ)を見捨ててしまうのかとか、 いろいろ問題があるようだからすぐにはやらないとは思うけどな
だがいつかはやらなきゃいけないことでもある
なんでやらなきゃいけないの?
遅くなる前にというけど、もう十分手遅れだと思われ・・・ やるとしたら既存のは捨て、新たなシステムで、ということになるだろう。 文字コードよりも、もっと仕様固める方がいいな。 エラーとかわけわかめ。
結局
>>846 のリンク先の話題は、専ブラ的にはまったく関係ない方向性で収束したっぽいね。
ひ(r 「dat を UTF-8 にしたい。read.js が使えるから。AAがまずい?」
stream 「UTF-8 にしてもAAは問題なし」
SunOs 「UTF-8 にしないと read.js が使えないって?IE6 では anydat.so でやってる」
ひ(r 「anydat.so って重くない?」
SunOs 「IE6 は捨てよう、JavaScript 周りが変だし」
stream 「Shift_JIS は腐っていやがる」
SunOS 「早すぎたんだ」
ひ(r 「anydat.so がなければ人大杉が無くなるんじゃ?」
SunOs 「別に anydat.so は重くない。read.js 全面移行できないのは IE6 が腐ってるから」
SunOs 「おいちゃんが『人大杉で read.html に振らないようにして欲しい』と言ってたし」
ひ(r 「ほいだら、人大杉のときは、read.htmlをデフォルトで動くようにしちゃってくださいー。」
#
http://qb5.2ch.net/test/read.cgi/operate/1207973589/93 SunOs 「した」
… と思ったらまだ何かやるつもりか。
stream 「多言語扱えたほうが便利でしょ」
未承諾 「perl 処理方面は軽くなる?」
:
:
ひ(r 「文字コードを変えるとしたら、サーバ移転ごととかそんな感じすかね。」
#
http://qb5.2ch.net/test/read.cgi/operate/1207973589/167 む 「UTF-8 にするなら、専ブラ的にも bbs.cgi 的にも SETTING.TXT でやるのがいいのでは?」
む 「2chの内部処理的な意味で」
む 「PC 方面は UTF-8 にしてもわりかし大丈夫そう。携帯方面はどうだろう?」
strem 「Shift_JIS の板と UTF-8 の板が混在するってこと?」
む 「混在するかどうかはともかく、bbs.cgi 的には両対応にしたい」
:
:
時期を指定して、これより以降に保存されるdatはすべてUTF-8で保存されます と決めちまったらどうだ? これなら各ブラウザも余裕を持って対応改修できるだろ。
まあ、猶予期間は必要だわな
860 :
デフォルトの名無しさん :2008/05/23(金) 06:26:47
あげ
さげ
サーバー型のブラウザを作ろうと思ってます 取得したDATをどの程度使っていいのか判断がつきません DATをDBに格納して使うって著作権に触れないんですかね?
>>862 個人でサーバーにスクリプトを設置する方式だったら問題ないと思うよ。
公開型だったらdat落ちと同時にDBから削除しなければ、怖い人から訴えられるかもね。
ノラp2やorz、讃岐などを参考にね。公式p2やべっかんこは参考にはできない。
864 :
862 :2008/05/28(水) 11:32:27
>>863 公開型を考えています
・常識的な負荷/転送量にする(差分取得・gzip)
・dat落ちは即削除
この辺を守れば問題無いと考えてよさそうですね
ありがとうございました
dat消さなくても問題ないだろ 過去ログ置き場とかいっぱいあるし
867 :
デフォルトの名無しさん :2008/05/28(水) 16:32:30
dat落ちしてないスレッドとdat落ちしたスレッドで扱いが違うなんてことはない。 どっちも著作権的には同じ。
著作権ではなくて●の問題じゃないだろうか dat落ちは運営の資金源にもなるわけで
>>864 人気が出たら常識的な負荷ではなくなるのが難しいところですが。
公式コンテンツになるか許可が下りれば問題はなくなりますがね。
>>867 当面の敵は著作権じゃない。
狐、root、ひろゆきだ。
とりあえず好きなように作ってみて おこられたらまた考えればいいんじゃね?
871 :
デフォルトの名無しさん :2008/05/28(水) 18:36:31
dat 落ちした物を公開するのに金が絡まなければ、とりあえず問題ないんじゃない? むしろ、公開型の問題は「書き込み機能」があるか否かじゃないかな。 いわゆる非公式の公開 p2 は軒並み N.G. 喰らってるべ? 書き込み機能を持たせたいなら、そこはひ(r とかおいちゃんとかに相談じゃないかな?
http://ss.chbox.jp/ とりあえずここ見てる限りバーボンが問題だな。
バーボンの除外は運営と利害が一致しないと回避は無理。
書き込み機能はひろゆきの管轄だな。
そして狐による規制の嫌がらせを受けるw(公式p2の例)
>公開型の問題は「書き込み機能」 これは何故だろう 荒らされやすいとか、それを通り越してアタックされやすいとかそんな理由なのでしょうか
>>874 鯖管がしっかり管理してないと身元を隠して書き込みできるようになるから
>>874 大きく分けて問題点は二つかな。
・せっかく2ch側でプロクシとか荒らし規制とかしているのに、そこから書き込み
できるようでは意味が無い(まぁ、現状でも公式 p2 で似たようなケースはあるけど)
→ 現状、非公式な書き込み機能付き中間鯖は、のきなみ N.G.
・お上が「ログを出しなさい」と言ってきた場合、2ch -> 公開鯖管とお鉢がまわって
くるけど、それへの事前の処理(ちゃんとログの管理をしているか)、対応。
→ まぁ、ログさえちゃんとしていればいいだろうけど(それでも膨大な量になるかと)
特に一番目の問題は、なんとか許可を取り付けても、少なくとも常に2chと同等
レベルの規制機構・処理が必要になるから、できたとしても大変だと思うぞ。
ノラp2は公開プロキシと同じだからね。 書き込み責任者を割り出せなければ管理人の責任になるとの理屈かな。 公式p2はひろゆきの関連企業の業務になったから問題はないんだろう。
なるほど 書き込みは公式に飛ばすのが無難かもね
公式p2はユーザ単位でのピンポイント制御できるからな
てs
881 :
デフォルトの名無しさん :2008/07/18(金) 19:02:20
勉強の為に専ブラ作ってるんですけど、dat⇒htmlって必要ですか? てか表示部分はwebbrowser使うのが基本? richtextじゃダメ…ですよね…
richtextでもかまわないだろ
まて dat->htmlが必要かどうかをこのスレで聞くことにどのくらい意義があるんだ?
出力なんてどうにでもなるだろうjk
好きなようにつくればいいのです。
あ、レスついてた。 datからそのまま表示させるより、 html形式にしてから表示させるほうがいろいろ便利なのかなーと…。 まぁそれくらいもわからないほど知識ないって事です。すんません
しばらく考えてwebbrowserで作ってたけど、レスポップアップで挫折です。 本当にありがとうございました。 誰か障りだけでもヒントください
高度すぎて&デルファイで意味不明だったオワタ。 とりあえず別の勉強します。thx
変更ありがとうございました。
保守ですまん
プログラマー諸氏がんがれ!
イヤなんか今さら開発しても出尽くしてるし・・・みたいな・・・
rep2がもっとクライアントサイドによらんかなってのはある スレ一覧のソートぐらいならJavascriptでできるんじゃないか、とか
さすが kage だ何ともないぜ… Cookies.txt の hana=mogera 系エントリが無限に増えそうで 怖いけど
DATの差分取得を試みているんですが、
If-Modified-Since: リモートDATの最終更新時刻(値は応答ヘッダのLast-Modifiedを調べる)
Range: bytes=ローカルDATのファイルサイズ-
の2つを要求ヘッダに入れることは必須ですか?
それともRangeだけでも差分取得は出来ますか?
膨大な数のdatファイルごとにIf-Modified-Since値を記憶しておくのは管理が面倒です。
ローカルのDATファイルのサイズは簡単に調べられますのでRangeだけで差分取得
ができるのならプログラムはぐっと簡単になります。
http://age.s22.xrea.com/talk2ch/
あぼーんで減ったバイトと新たな書き込みで増えたバイトが たまたま同じだった場合、rangeだけでどうする?
ローカルのdatファイルの最終更新日時を使うのじゃだめなの?
902 :
899 :2008/09/30(火) 01:21:43
>>900 事前にsubject.txtをDLして各スレのレス数を解析しておこうと思っています。
これなら新たな書き込みがされればレス数が増えてるので、たまたまバイト数
が同じだった場合でもあぼーんを検知でき(実際何もDLされてこないわけですから)
ると思います。
>>901 ローカル側のファイル更新時刻をif-Modified-Since型に変換できるなら
それもありのような気がします。
903 :
899 :2008/09/30(火) 01:28:28
ちょこちょこっとプログラムを組んでみたんですが、 if-Modified-Since を指定しないと差分取得は出来ないようですね。 いくら Range でローカル側のファイルサイズを申告しても 1からdatを再取得してしまうようです。 差分取得するならローカル側のファイルの更新時刻をどうにかして 調べて if-Modified-Since に収納してやらないとならないようです(´・ω・`)
Last-Modifiedだけでなく、ETagも見た方がいい
>>424 とか参照
905 :
899 :2008/09/30(火) 02:33:59
>>904 たとえばC#でLast-Modifiedを保存するには
HttpWebRequest.LastModified
でリモートファイルの更新時刻を取得することができ、
またデータのフェチの際は
HttpWebRequest.IfModifiedSince
に更新時刻を出力すればサーバーとやりとりできました。
ETagに関してサーバから取得、出力するにはどうしたらいいでしょうか?
出力に関しては
HttpWebRequest.IfNoneMatch
でETagをサーバーに送信できるようですが、ETagの取得に関しては
どう操作すればいいか分かりません(´・ω・`)
ここで特定のフレームワークのこと聞かれてもな まあ、普通に考えれば任意のヘッダを送受信する手段くらいあるはず 探せ
ETagにしろ更新日時にしろ応答ヘッダで返ってくるんだが
まずHTTPの資料を読むことを薦める
あと、
>>902 の方法だと透明あぼーんしか検知できなくないか?
subject.txtを毎回取得しにいく仕様もどうかと思うぞ
>膨大な数のdatファイルごとにIf-Modified-Since値を記憶しておくのは管理が面倒です。 そもそもこんなことを言ってる時点で(以下略 他の専ブラ参考にすれば? datと同名のidx作って管理するとか、データベース使うとか、datの扱いの基本中の基本でしょ。
たまにだけど、subject.txtのレス数と実際のレス数が違うことがあるから100%信用すると痛い目に遭いそう 秒単位の更新チェックは知らなかった・・・ツール更新しなきゃ
910 :
899 :2008/09/30(火) 15:08:16
ETagはサーバーが返してくる値をローカルに保存しておかないといけないですか? ローカルに保存したdatファイルからETag用の値を計算できればわざわざ ローカルにETag値を保存しておく必要は無くなると思うのですが。
じゃあそうすれば?
ローカルに ETag を算出…?どうやって?まさか「ETag 計算方法」とかでググって 出てくるものを実装して「たまたまそのとき一致したらからおk」とか思ってないよな?
弱いETagならローカルで算出やつでも通用するんじゃない? 強いETagはまず不可能だろうけど
914 :
899 :2008/09/30(火) 21:45:35
話は変わりますが、サーバーにDATを要求し、返ってきたヘッダーに書かれた情報を見ようと GetResponseHeader("Content-Range") という命令を書いてみたのですがなぜか何も取得できませんでした。 GetResponseHeader("Content-Length") GetResponseHeader("Content-Type") はきちんと値が返ってきました。 2chの鯖には変数"Content-Range"を返さないものがあるということでしょうか?
送るヘッダが間違ってるだけだろ
誰か多段ポップアップの方法をVBでお願いします。 あれはスキンとかに対応してjavascriptで実装したほうが簡単なのでしょうか…
917 :
899 :2008/09/30(火) 22:47:34
もう一つヘッダがらみの質問です 2chでは転送量を抑えるためGZipで圧縮をかけたデータのやりとりを推奨 しているようです。そこで以下のように(言語はC#です)GZipフラグをヘッダ に付けてリクエストを出すようにしています。 webRequest.AutomaticDecompression = DecompressionMethods.GZip; ただこの方法だと差分取得で問題が発生してしまいました。 webRequest.AddRange( fileSize ); の fileSize の部分にローカルにDLしたDATファイル(GZip圧縮は解除され 平文のテキストファイルです)のファイルサイズを調べて指定したのですが、 どうやらGZipフラグを付けると AddRange で指定すべきファイルサイズは GZipで圧縮したときの容量ではないといけないようなんです。 ローカルのDATファイルのファイルサイズを指定すると416:RequestedRangeNotSatisfiable が返されてそれ以降DATを取得できなくなってしまいます。 GZipで差分データをやりとりするときは、GZip圧縮をかけた状態で受け取った DATのサイズを計測し、それを累積加算しながら AddRange でリクエストしない とデータは取得できないのでしょうか?DATファイルひとつごとにGZipで受け取った ときのサイズを累積加算してローカル側に記憶しておく必要があるうえに、 万が一その値を失った場合は最初からDATを取得しなければならない等 不便が予想されるわけですがみなさんはどうやって対処されていますか?
今はgzipなんて推奨してません。
というのはウソです。
関連するAPIをぜんぶ実装して モジュールとして公開してくれてるひとっていますか?
922 :
899 :2008/10/01(水) 01:15:16
>>917 に自己補足です。
GZip圧縮を有効にしたとき、鯖によってうまくいったりいかなかったりするようです。
実況鯖はGZip圧縮をONにしてもうまく差分取得できました。
一方でN速+といった通常鯖はGZip圧縮をONにすると
416:RequestedRangeNotSatisfiable
エラーが返されてしまうようです。
2ちゃんはGZip圧縮は非推奨ってことなんでしょうか(´・ω・`)?
>>921 ありがとうございます。
時間ができたときにソースコードを読ませてもらいます。
転送量が問題だったのは過去の事
924 :
899 :2008/10/01(水) 01:25:33
>>923 > 転送量が問題だったのは過去の事
そ、そうなんですか(;´∀`)
それでは多くの2ちゃんブラウザではGZip圧縮をかけずに転送してるんでしょうか?
今はサーバーリソースの方が問題だからそもそもgzipの圧縮をやらない。
926 :
899 :2008/10/01(水) 02:02:23
>>921 >
http://www.geocities.co.jp/SiliconValley/5459/ で紹介されたTwinTailブラウザのソースをざっとですが見てみました。
ソースコードの中に
「datファイルがgzip圧縮されていればtrue、そうでなければfalseを指定する」
と記述されたパートがありました。もしかしたら鯖ごとにdatがGZip圧縮されて
いたりされていなかったりするということでしょうか?
>>922 の例で言えば実況鯖はGZip圧縮がONで、それ以外の一般鯖はGZip圧縮
がOFFだったため、違いが生じたのでしょうか?
だとしたら何らかの方法で鯖ごとにGZip圧縮されてるかされてないかを識別し、
それに従ってdatをフェチする際にGZip圧縮フラグをONにするかOFFにするか
自動選択させればどの鯖にも対応できるようになるかもしれません。
あるいはGZip圧縮は無視して全鯖非圧縮でdatを取得するようにしてしまっても
いいかもしれませんね(´・ω・`)
GZIP要求を出して圧縮されて返ってくれば解凍、datで返ってくればそのまま
どちらの形式で返ってきたかは応答ヘッダを見ればいい
GZIP圧縮すべきかどうかは
>>248-249
HTTPプロトコルを理解するためにRFC2616を読んだり Wiresharkとかで既存ブラウザがどういう通信しているか見ればいいのに
929 :
899 :2008/10/01(水) 13:00:32
>>927 もう一度調べてみたんですが、要求ヘッダに
req.AutomaticDecompression = DecompressionMethods.GZip;
とGZipをリクエストしておけばほとんどの鯖はGZipで圧縮されたデータを
送信してくれるようです。
では問題は何かと言いますと、初回以降の差分要求をするときにヘッダー
に付けて送信する If-Range ヘッダーに記述する容量を、圧縮されたとき
のものにしておく必要があるようなんです。
たとえば生では10バイトのDATをGZip圧縮して送信してもらったとします。
GZip圧縮をかけた結果5バイトに圧縮されたとします。
すると次回以降差分要求をするときに If-Range ヘッダーには10バイトでは
なく5バイトと記述しておかないと正しく差分データが受信できないようなんです。
そうでないと鯖からエラーコード416が返されてしまうようです。
これは結構ゆゆしき問題なんです。
ローカルに保存したDATは当然GZip圧縮を解除した状態なので、GZip圧縮を
かけたときのサイズを If-Range ヘッダーに記述するには、圧縮されたときの
のデータサイズをDATファイルごとにどこかに記憶しておく必要があるんです。
管理が面倒になるうえにこの圧縮されたときのサイズのデータが吹き飛べば
DATは最初から再取得しなければならなくなるんですね。
GZip圧縮は綺麗さっぱり忘れて無圧縮状態でデータを送信するようにした
ほうがいいってことなんでしょうか?
あるんです。
>>929 差分取得の時はAcceptEncodingにgzipを付けずに生で受け取る。
初回のレス1から読むときのみAcceptEncodingにgzipを付ける。
でホントにgzipだったら解凍する。生だったらそのまま。
ま、最初はgzip無視で作っちゃってもいいと思う。
君一人が非圧縮で受信したところでたいした負荷でもないし。
余裕出来たら、レス1から読むときはgzipで読むでいいのでは。
あと、HTTPサーバーの基本知識をもう少し付けるべきだと思うけど、 独自仕様もあるので注意。 板移転はレスポンスにステータスコード301,302といったリダイレクトが返ってくるわけじゃない。 200が返ってきて、中のjavascriptの window.href=移転先URL を見ないと駄目。しかも移転先に、さらに移転先が書いてある場合も。
932 :
899 :2008/10/01(水) 15:31:30
>>930 > 差分取得の時はAcceptEncodingにgzipを付けずに生で受け取る。
> 初回のレス1から読むときのみAcceptEncodingにgzipを付ける。
> でホントにgzipだったら解凍する。生だったらそのまま。
その手がありましたか(`・ω・´)!
言われてみれば圧縮されたgzipファイルを差分取得するっておかしな概念ですよね。
レスが加えられていくごとに圧縮ファイル全体はつど変化していくわけですし
そうなればif-Rangeで範囲指定をしても取得できるデータに誤差が生じるのは
当たり前です。
Janeといった一般的なブラウザも差分取得時は無圧縮で取得してたりするんでしょうか?
ちなみにC# + .NET2.0で開発していますがこれ幸いか落としてきたデータの
gzipを解凍する手順はプログラマーが意識しなくてもいいようです。
勝手に解凍してくれるようで普通にReadToEnd()で読めちゃったりしています。
>>931 了解です。移転の検出は実装したほうがよさそうですね。
何度でも書くけどHTTPの資料読もうな 脊髄反射で質問するのはもう止めような
>>932 他のブラウザがどう動いてるかはパケットキャプチャを使って調べる。
935 :
デフォルトの名無しさん :2008/10/02(木) 06:09:25
>>933 HTTPの資料嫁とか方向違うだろ
どう見ても言語側でHTTPアクセスをサポートするライブラリ使ってるっぽいし
HTTPの資料読んでたら半分は質問減ったと思うが C# + .NET2.0で開発してる人は読まないのか?
937 :
デフォルトの名無しさん :2008/10/02(木) 08:20:43
>>935 HttpWebRequest/Responseは、HTTPの仕様を知ってはいるんだけど、
自分でリクエストを組み立てたりレスポンスヘッダを解析したり
chunk転送をデコードしたり、KeepAliveを管理するのが面倒な人向け。
938 :
デフォルトの名無しさん :2008/10/02(木) 08:41:45
HTTPの仕様は読む必要あるだろう if-modified-sinceやらe-tag、クッキーの仕様とか知らんと話にならん。 俺も浅い知識で組んだせいで後の修正大変だった。 一番大変なのは2ちゃんのどこにも明記されてないような謎仕様と トライアンドエラーで戦わないと行けないことだ。
>>939 そういうのは、monazilla-ML(だっけ?)に入って聞いたほうが早いんじゃない?
あれまだ機能してんのかな・・・
942 :
899 :2008/10/02(木) 20:32:17
>>937 C# with .NET2.0の環境でもヘッダを解析したり構築したりして
送受信されてる奇特な方っていらっしゃるんですか?
HTTPの意味もよく分からず開発を始めて質問しまくる人とか 人の忠告を聞かない人はよく見かけるね
っ 鏡
>>942 プログラムの勉強をしたい人とか、生粋のプログラマとか。
車輪の再発明と言われるけどプログラムやプロトコルを勉強するには
一から作るのが一番良い方法だと思うよ。
作ったうえでライブラリを使うともっと理解が出来る、ただ使うだけなら疑問を持たず
「そうなんだ、こうしないとダメなんだ」で終わらしておく方が良い。
HTTP1.0はシンプルだから、ソケット使って自前で通信したほうが 用途によってはコードも分かりやすいこともある
1.0 限定ならな… 1.1 になるととたんに面倒くさくなる。 クライアント側が GET 〜 HTTP/1.0 しているのに、HTTP/1.1 で返事を返してくる サーバって多いはずだけど、Apache ってどうだっけ?
>>947 HTTP/1.1という返事は、「うちのサーバーは1.1まで対応してますよ」って意味であったはず
よく読むスレを登録しておき、未読スレがないか一度に確認させるプログラムを 作ろうと思っているんですが、各スレを連続で読み込みするのにどのくらいの 時間をおけばいいものなんでしょうか? それともそういうことは気にせず、いくつスレを登録してようと一度に一気に 読み込むプログラムを組んでしまっていいものなんでしょうか? 2ちゃんの方で明確な指針が掲載されていないと言うことは常識の範囲内で、 ということなんでしょうが、どのあたりが常識とか決まっているんでしょうか?
↑あと上記に絡んだ質問です。 過度に連続読み込みしたことで2ちゃん側からシャットアウトされる可能性って ありますか?もしシャットアウトされたとしたらどんな返答が返ってくるんでしょうか? シャットアウトされたことも知らずに続けて連続読み込みのリクエストを出し続ける と後々問題になりそうなので・・・
>>951 「ばーぼん」ですか・・・
ちょっとググッてきます。
>>952 とはいえ、きょうび巡回機能が無い2ちゃんブラウザなんてお話にならないかと・・・
未読チェックだけならsubject.txt取得だけでいいだろ
>>954 チェックしたいスレが複数の板をまたがると
複数の板のsubject.txtを取得すればいいだけの話だあろ
リードのみでも連続アクセスするとばーぼんへ飛ばされるんですね。 ばーぼん回避のためにスレ1つ読むごとに1秒間のウェイトを入れておこうとおもいます(´・ω・`)
バーボン飛ばされたらつなぎなおせばOK
こういうことはあんま言っちゃいけんのかもしれんが プロクシサーバを複数確保して巡回させればボボン回避は 十分可能なんじゃないか?
複数確保が簡単にできる環境は少ないんでは。
「ダメだ!辞めろ」と言うつもりはありませんが、 どれくらい時間をおけば「許される」というものではないと思います。 限界ギリギリを狙おうとするのではなく、可能な限り負荷をかけないよう 配慮する発想の方が健全だと思います。
>>925 折角、GZIPInputStream調べてgzip転送に対応しようと思ったのに必要なかったのか。・゚・(ノД`)・゚・。
>>925 gzip圧縮やってないってどこのサーバ?
>>963 今もAccept-Encodingにgzip設定すれば圧縮して返してくるから
クライアント側は対応しておく方がベターでしょう
>>964 そうなん(・∀・)?実況専用ブラウザにしようと思ってるけど、じゃあそうしよう。
多くの2ちゃんブラウザでは鯖移転を自動的に検出して対応していますが、 これはどういう仕組みで追尾しているんでしょうか? できればこの便利な機能をマイブラウザにも実装したいと思っています。
なぜ
>>967 を無視する。
location.hrefを辿ってくだけだ。
<html>
<head>
<script language="javascript">
window.location.href="
http://qb3.2ch.net/operate/ "</script>
<title>2chbbs..</title>
<meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp">
</head>
<body bgcolor="#FFFFFF">
Change your bookmark ASAP.
<a href="
http://qb3.2ch.net/operate/ ">GO !</a>
</body>
>>971 どうも、やはりすぐに転送されたためにそのページは飛ばされて見えなかったようです。
>>973 Webサーバ(アパッチ?)の設定により、URLを/で止めた場合のアクセスは異なる
/で止めておけばWebサーバ側が設定によりindex.htmlとかindex.cgiとかを返してくれるから/で止めておけばいいと思う
(´-`).。oO(971を読めば判ると思うけれども。。。2ch鯖監視係。もそうしています。@板移転自動追尾)
どうもです。index.htmlは抜きでトライしてみます。
977 :
デフォルトの名無しさん :2008/10/09(木) 23:41:37
いいんだよ
グリーンダヨ
板移転ってDATファイルを読み込んだり板一覧を更新するときに毎回 location.hrefのところを読んで検出してるんですか? それとも毎回検出するのは無駄ですか?
取得できなければ移転してんじゃね? 302ってなんだか良く分からんが。
302 Found おそらく「移転したよ」という意味。
委員長空気・・・
本来404を返す状況で ErrorDocumentが外部URLを指している場合 代わりに302が返る。 まめちしきな。
>>985 > ErrorDocumentが外部URLを指している場合
ここのところよく分からないんだが