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

プログラマが2chを救う!?2

186 :音楽侍 ◆NtVkSITE :01/08/27 07:35 ID:cn52pBwI
発端の時からここにいて、ずっと匿名でしたけど、もうこんな状態ですし、コテハン出していきます。
>181
お疲れです〜
>182-184
bbs.cgiは出せないと思いますよ。
それに、こっちで勝手に作った方が早いし、その方が結局ひろゆきさんも助かるのだと思います。

187 :音楽侍 ◆NtVkSITE :01/08/27 07:39 ID:cn52pBwI
とにかく、index2.htmのせいで、爆発的にリロード増えているわけですから。
あれやめないと、正確な帯域使用量測れませんよね?

188 :デフォルトの名無しさん :01/08/27 07:50 ID:0cm50H8s
ってか *.htm{,l}が Last-Modified を吐かないのは .html{,l} が
server-parsed になってしまっているためと思われ
  <Files ~ "index.ht(m|ml)$">
  Options -Includes
  </Files>
で吐くようになると思うけど ただhttpd.confでOptionsがAllowOverrideに
なってないとダメか?

189 :デフォルトの名無しさん :01/08/27 07:55 ID:ZIaMkoUw
出来そうな方、いっぱいらっしゃいますね。
深刻な状況なので、一刻も早く「実行」お願いします。

190 :デフォルトの名無しさん :01/08/27 08:02 ID:u5bJd0N.
とりあえず、プログラム技術板の住人がやることは無くなった
って事っすね。

191 :名無し :01/08/27 08:03 ID:qLoKy9Cw
弐ch編者のところでスクリプト配布してますよ。

Mega BBSですけど
http://www.megabbs.com/

192 :デフォルトの名無しさん :01/08/27 08:04 ID:plW.7Hb6
>>191
そこは参考にならないよ。perlだし、内容も、その……だし。

193 :音楽侍 ◆NtVkSITE :01/08/27 08:07 ID:cn52pBwI
別板建ててbbs.cgiの要求仕様だしでもやりますか?
それとも、このあたりでいったん、一件落着しますか?

194 :デフォルトの名無しさん :01/08/27 08:11 ID:0cm50H8s
オレ 数年前に掲示板のCGI自作したことがあって その時当初
投稿者名・日付・本文等を全部JavaScriptの文字列で定義しちゃって
document.write()で書き出す(URLの自動リンクもJavaScriptでやる)
ってな感じで作ったことがあるんだけど......でも 自分のとこの環境だと
ちゃんと動くのに 実際に公開して動かしてみるとちゃんと見られないという人が
出てきてしまって......どうも古いブラウザだとJavaScriptの実装がクソだったり
するみたいで それは結局やめて普通にプログラム側でHTML出力するように
したということがあったけど

まぁ当時に比べれば古いブラウザの利用者はかなり少なくなってるだろうから
今ならその手でそこそこ行けるかも知れないけど でもブラウザの種類/
バージョン/プラットフォーム等によって微妙にJavaScriptの実装が
違ってたりして それをちゃんとfixさせるのも結構大変なんだけどね

もし仮にこれでやればタグなんかはJavaScriptで生成させればいいから
その分テキスト量が減るだろうけど でもJavaScriptを扱えないブラウザの
ユーザには結構つらくなってしまうかも......

195 :デフォルトの名無しさん :01/08/27 08:24 ID:rjIkZc/I
ヘッダとフッタとバナーがハードコーティングってのはかっこわるい
から別ファイルにするってのはどう?

196 :デフォルトの名無しさん :01/08/27 08:33 ID:plW.7Hb6
>>195
かっこわるいけど、負荷を低くするためには仕方ない。

197 :俺が書いたんですが(藁 :01/08/27 08:34 ID:DS3JKGwc
136 名前:  :01/08/27 08:24 ID:DS3JKGwc
閲覧用ブラウザつくって、<2ch>ってタグが反映されるようにして、
転送量を減らすって無理かな。サーバーにはdatみたいなものだけを保
存するってことで。

198 :デフォルトの名無しさん :01/08/27 08:44 ID:xxtDczmQ
>197 専用ブラウザ化ですね、すでにかちゅ〜しゃ等がそんな感じで

Javaアプレットを埋め込んで完全専用ブラウザからのアクセスのみ
にするってことはどうなんでしょうか?アプレット動かせないような
環境の人が切り捨てられちゃうでしょうが・・・

199 :デフォルトの名無しさん :01/08/27 09:05 ID:hMp2zhnk
フレームだけ事前にダウンロードして専用ブラウザに組み込み、スレタイトル
リストだけ拾うようにしたら、転送量減らないですかねー。素人なんで
詳しいことはわからないですが。

200 :デフォルトの名無しさん :01/08/27 09:13 ID:rjIkZc/I
>>196
CPUとかI/Oの負荷は問題になってないんだろ?

201 :音楽侍 ◆NtVkSITE :01/08/27 09:18 ID:cn52pBwI
>>200
それは誰も問題にしていないでしょう?
きっと、数byteでも、数百万アクセス積もれば大きな節約になるって発想だと思いますけど?

202 :デフォルトの名無しさん :01/08/27 09:28 ID:rjIkZc/I
>>201
いやだから俺が言いたかったのは、CPUやIOが問題にならないんなら、
ヘッダやフッタは別ファイルにした方がスマートだし、その部分だけ
書き換えたときも再コンパイル不要じゃんって話

203 :デフォルトの名無しさん :01/08/27 09:29 ID:P7yLS.2Q
>>192
2chもbbs.cgiはPerlではないの?
昨日(だったかな?)に頂いた流出もののやつはPerlでした。

ソースをさっくり見ましたが、キャップとかの情報がそのまま
羅列されてるので公開しづらいんぢゃないかなぁ。
そこ削れば公開しても問題なさそうなものですけどね。
(色々隠し機能があるとかなのかなぁ)

204 :デフォルトの名無しさん :01/08/27 09:41 ID:rjIkZc/I
>>203
なんと、キャップはハードコーディングだったのか
これで新規に書き換えるbbs.cgiにはそれが必要だな。
あとはトリップも必要か。

IDはどうなってるんだ?IPアドレスをハッシュか?

205 :デフォルトの名無しさん :01/08/27 09:43 ID:Xn1S81fE
>>160
AgentのAccect-Encodingによる送出ファイル振り分けなら
わざわざCGIでやらなくてもmod_negotiationで簡単に出来ますよね。
Baseモジュールですし。

206 :192=196 :01/08/27 09:45 ID:plW.7Hb6
>200
別に今回の問題に限って言っているわけでは無いのだよ。
今回の問題に限って言うなら、ファイルを分割して、もし転送量が減るなら、
それもいいかもしれないけどね。

>ヘッダやフッタは別ファイルにした方がスマートだし、その部分だけ
>書き換えたときも再コンパイル不要じゃんって話
それは、「どっちをとるか」の話。もちろん、>別ファイルにした方がスマート云々
ってのには同意するけど、手間をとるか、負荷をとるか、は運営側の判断。で手間を
取ったのでしょう。

>203
>2chもbbs.cgiはPerlではないの?
そうなの?知らなかった。read.cgiがcだから、てっきりbbs.cgiもcだと思っていた。

207 :デフォルトの名無しさん :01/08/27 09:49 ID:rjIkZc/I
>>205
問題は夜勤にはモジュールを組み込む権限がないってこと
mod_gzipだってまだ組み込まれてないし。。。

そんな夜勤がbig-server側の窓口ってのもちょっとね

208 :デフォルトの名無しさん :01/08/27 09:49 ID:pleuTSSw
webPG板からです、あの皆さん各地で立ってる避難所で使われてる
スクリプトをご存知ないですか?(17BBSって言ってますが)
本人さんが宣伝を非常に嫌がってる様子なんですが
事態が事態なんで無責任に書きます
I/Fは勿論、トリップ、ID他殆ど今の2chと同じです、機能はほぼ実装済み
TOP20をいつもウロウロしてるスレなんで、見に来ればすぐにわかります

209 :デフォルトの名無しさん :01/08/27 09:50 ID:P7yLS.2Q
>>204
トリップは不明。
IDについては、

$ cat crypt.pl
my ($ip, $day) = @ARGV;
$ip = substr($ip, 8);
my $pass = crypt($ip * $ip, sprintf('%02d', $day));
print substr($pass, -8), "\n";

$ perl crypt.pl xxxxxxxx0.116 27
P7yLS.2Q

という感じ。
(どっかの板でアルゴリズム公開されてました。場所覚えてないですが)

210 :206 :01/08/27 09:51 ID:plW.7Hb6
>手間をとるか、負荷をとるか、は運営側の判断。で手間を
>取ったのでしょう。
ん?負荷を取ったのか?
「手間をかけても負荷を軽減する方を取ったのでしょう。」に訂正。

211 :デフォルトの名無しさん :01/08/27 09:51 ID:pleuTSSw
Cで焼き直すなら 叩き台にはなると思います
所謂流失版を改良したものです

212 :デフォルトの名無しさん :01/08/27 09:53 ID:Xn1S81fE
>>207
だから、mod_negotiationはBaseモジュールだよ、標準。
AllowOverrideされてれば.htaccessでいじれるし。
問題はAllowOverrideされてるか・・・

213 :デフォルトの名無しさん :01/08/27 09:53 ID:P7yLS.2Q
bbs.cgi はPerlの方が良いのではないかなぁ。
Cだとセキュリティホールになりやすいし。
(実際あった or まだあるみたいですし。
 どっかの板のAD200XのスレでIMGタグを書き込んだりされてました。)

214 :デフォルトの名無しさん :01/08/27 09:54 ID:2NFCZnYc
流出版ってキャップのパスもハードコーディングみたいだね。
さすがに試してみたら駄目みたいだったけど。

215 :デフォルトの名無しさん :01/08/27 09:57 ID:95LP96f6
>>188
> ってか *.htm{,l}が Last-Modified を吐かないのは .html{,l} が
> server-parsed になってしまっているためと思われ

なるほど。
では、ここをなんとかするだけで相当のトラフィックが節減できると思いますが、
いかがでしょうか?

とりあえず、http://xx.2ch.net/xx/index2.cgi てな形で設置してみて、
bbs.cgiとread.cgiを変更してhttp://xx.2ch.net/xx/index2.htmへのリンクを
index2.cgiに変更して、効果を測定してみる事を提案します。

切れるならserver-parsedを切るだけでかなり効果がありそうな気がするけど。

とりあえず、現在の懸念事項は流量軽減なんで、その他の開発
に関してはスレッドを分けませんか?

優先事項(回線負荷軽減)と、後回しで構わない事項
(ハード側負荷軽減、スクリプトの細かいバグ取り)
を明確にしないと、最優先事項が見えにくくなって重要な開発が後手に回る
可能性があると思うのですが。

216 :デフォルトの名無しさん :01/08/27 09:58 ID:cn52pBwI
流出版ってどっかにアップできませんか?
もちろん、そのキャップのパスとかは伏せてでいいんですけど。
要求仕様が作りやすくなるので。

217 :ぐ。 :01/08/27 09:58 ID:L6pat38o
なんか話がごちゃ混ぜになっているようだが

ファイル分割して転送というのは
「connectionが増えるのは論外」でガイシュツ。
但しレイアウト変更をもって総合的に転送料を押さえる方法も
議論されてるのでテスト次第でトレードオフという所か。

ソース管理としてファイル分割なら
read.cgiはロードモジュールなので
運用時の負荷とは無関係。

こんなかんじか?

218 :デフォルトの名無しさん :01/08/27 09:59 ID:rjIkZc/I
>>213
Cだとセキュリティホールになりやすいってのは根拠レス。
# まあ、Perlは書いた人にしかわけのわからんコードになりやすいから、
# 解析する気が起きないってのはあるかもな

とりあえず流出版を見せてくれい。あるいは>>208の17BBSとやらへの
リンクをきぼんぬ

219 :デフォルトの名無しさん :01/08/27 10:02 ID:rjIkZc/I
いっそApacheのモジュールとして実装しちゃおうか(藁)

220 :デフォルトの名無しさん :01/08/27 10:03 ID:cn52pBwI
あと、話が混乱するので、誰かbbs.cgi検討スレ建ててください。

221 :デフォルトの名無しさん :01/08/27 10:04 ID:19Gxyyi6
>>193
打ち切りじゃ何も解決しないよ。
前向きな前者希望。

222 :デフォルトの名無しさん :01/08/27 10:04 ID:pleuTSSw
もう書いちゃえ
http://corn.2ch.net/test/read.cgi?bbs=php&key=998794497

トリップとID生成ルーチンは2日前の時点では追従していた(同じだった)
と思います。
後、人の事は言えませんがこっちも 穴埋めのダメ出しはなるべくperl見れる人
でやった方が良いと思います

223 :デフォルトの名無しさん :01/08/27 10:06 ID:pleuTSSw
17さん見てないかなあぁ、、他力本願
僕も時間は有るのでバク取りには、協力させてもらいます

224 :デフォルトの名無しさん :01/08/27 10:08 ID:19Gxyyi6
>>203
配付された人には動いてほしいっす。

225 :17 :01/08/27 10:09 ID:sC1iFaC6
はいよ


http://mankomankomanko.virtualave.net/bbs.txt
http://mankomankomanko.virtualave.net/config.txt
http://mankomankomanko.virtualave.net/make.txt
http://mankomankomanko.virtualave.net/pageview.txt
http://mankomankomanko.virtualave.net/pass.txt
http://mankomankomanko.virtualave.net/read.txt
http://mankomankomanko.virtualave.net/remake.txt
http://mankomankomanko.virtualave.net/setting.txt


17スクリプト
http://www.apc.7777.net/file/bbs2ch/16a.zip

226 :デフォルトの名無しさん :01/08/27 10:10 ID:pleuTSSw
わぁ。。。17さん有難う御座います
勝手に紹介しちゃってすみません (_ _)

227 :デフォルトの名無しさん :01/08/27 10:18 ID:59Wm4exU
そういや、chunkedエンコーディングって手つかずか?
あれも微妙に転送料増やすはず。
Content-Length吐かせる必要があると思うが。

228 :369 ◆3XTuRnAc :01/08/27 10:33 ID:xXHglqmc
仮眠から帰ってきました。

もし作業場所が必要でしたら、例によってftp用意してますので
ご自由にお使いください。

ftp://210.170.170.131/incoming/

229 :♯6411 :01/08/27 10:51 ID:gosrhFCs
書き直しをたくらんでる方々にアドバイスしとくけど、
zlib使うんだったら、エンコーディングは
gzip使うよりもdeflate使った方が、
すこしだけ転送サイズが縮みます。
寝込みは忘れたけどIEは理解できるはず。

230 :デフォルトの名無しさん :01/08/27 10:55 ID:rjIkZc/I
2chのApacheにはmod_perlが入ってないみたいなんだけど。
使うことのないsslやらphpは入ってるけど。
サーバの構成かえちゃいけないんだっけ?
mod_sslとPHPを外してmod_gzipとmod_perlをいれたい・・・

231 :Perler ◆GSi39OA6 :01/08/27 10:58 ID:95LP96f6
>>215も私です。おっちょこちょいですみません。

Content-Length吐かせる必要があるなら、メモリにgzipの結果を溜め込むか/tmp/
あたりに一旦ファイルをスプールさせる必要がありそうですね。。。
負荷が全く問題にならないのであれば、gzipを、1回目はサイズのカウント専用に起動
して、Content-Lengthヘッダ出してから、もう一回gzipを起動するというアクロバットも考えられますが。

232 :VC++まだ箱のなか厨房(w :01/08/27 11:01 ID:xxtDczmQ
>229 調べてみました

IE5.5: HTTP_ACCEPT_ENCODING = gzip, deflate
NN3.3: なし
NN4.73: HTTP_ACCEPT_ENCODING = gzip
NN6.1: HTTP_ACCEPT_ENCODING = gzip,deflate,compress,identity

しらべたとこhttp://piza2.2ch.net/test/check.cgi

233 :デフォルトの名無しさん :01/08/27 11:06 ID:pckFEAaY
zlibのコメント見るとmethodは現在Z_DEFLATEDしかないと書いてあるけど
これってgzip不可でdeflateのみ可ってこと?

234 :デフォルトの名無しさん :01/08/27 11:09 ID:pckFEAaY
deflateがあればzlib
deflateがなくてgzipがあればgzip起動
その他はそのまま

ってことですか

235 :デフォルトの名無しさん :01/08/27 11:11 ID:rH3n9S2o
>>232
Opera 4.01 : HTTP_ACCEPT_ENCODING = deflate, gzip, x-gzip, identity, *;q=0

236 :デフォルトの名無しさん :01/08/27 11:14 ID:rjIkZc/I
>>231
現状の標準出力に垂れ流すんでなくて、
内部でgzipを実行して、Lengthと圧縮結果を吐くように改造するとか。

237 :デフォルトの名無しさん :01/08/27 11:18 ID:59Wm4exU
>>233
gzio.cみれば分かると思うけど、。
zlibに特殊な初期化を施して、gzipのヘッダをつければいい。

238 :デフォルトの名無しさん :01/08/27 11:24 ID:kQSWx7uc
IEはヘッダにはAccept-Encoding: gzip, deflateと含めているにも
関わらず、実際にdeflateでエンコードしたデータを喰わせても
解釈できないです。

239 :Perler ◆GSi39OA6 :01/08/27 11:24 ID:95LP96f6
index2ををアップしました。

ftp://210.170.170.131/incoming/perler/index2.c.1

index2.c.1は何度か上書きしてるので、ダウンロードした人も
ファイルサイズ比較して確認してください。

私の環境では動いていますが検証をお願いします。

240 :デフォルトの名無しさん :01/08/27 11:26 ID:59Wm4exU
あれ?それって、mod_negotiation(標準モジュール)つかえば、
負荷も少なくていいね、って話になってなかった?

241 :デフォルトの名無しさん :01/08/27 11:28 ID:yk7J4mpk
不具合報告ココでいいよね?(汗)
>208 名前:名無しさんの声 投稿日:01/08/27 11:11 ID:yk7J4mpk
>なんか掲示板おかしくない?
>11〜3時まで読み込めませんってのが今出てきた
>!=と==を間違えてないでしょうか?(苦笑)
>板はココ
http://ton.2ch.net/test/read.cgi?bbs=sec&key=998320408

242 :デフォルトの名無しさん :01/08/27 11:30 ID:ESi5jL8g
サーバー側負荷軽減はこっちでもやってるみたいです。
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?mycmd=read&mypage=TopPage

現状では回線負荷軽減の方が優先かもしれないですが…。

243 :デフォルトの名無しさん :01/08/27 11:31 ID:95LP96f6
>>240
AllowOverrideされてるかどうか確かじゃない。
それと、index2.cはIf-Modified-Sinceに対応してる。
というか、そっちの方が肝心。

244 :デフォルトの名無しさん :01/08/27 11:32 ID:kQSWx7uc
>>241
がいしゅつです。read.cgiが入れ替われば直ります。
ついでに不具合報告は板違い。

245 :デフォルトの名無しさん :01/08/27 11:34 ID:pckFEAaY
feof()でエラーチェックは無しですか >index.c.1

246 :Perler ◆GSi39OA6 :01/08/27 11:35 ID:95LP96f6
>>242
サーバー側負荷は余裕があるそうですし、gzip対応しても負荷はほとんど変わらなかった
みたいですからね。。。
サーバー負荷は負荷軽くしても、2chの危機にはあまり貢献出来ないのかもしれない。

247 :デフォルトの名無しさん :01/08/27 11:44 ID:Xn1S81fE
>>243
> AllowOverrideされてるかどうか確かじゃない。
それは確かにそうだけど、

> それと、index2.cはIf-Modified-Sinceに対応してる。
> というか、そっちの方が肝心。
もしindex2.html の Server-parsedを切れるならLast-Modified 吐きますよね。
これは 2ch側で設定したんじゃないかな?
デフォルトで .htm[l] 全てをパースさせて.htaccessでoverrideさせない
サーバなんて考えにくいです。

248 :デフォルトの名無しさん :01/08/27 11:45 ID:GRBfg3.A
本格的な転送量縮小をするにはbbs.cgiを改造しないと・・・

249 :デフォルトの名無しさん :01/08/27 11:54 ID:79V5c8UI
bbs.cgiはセキュリティ上の問題から、多分公開されないと思います

250 :Perler ◆GSi39OA6 :01/08/27 11:56 ID:95LP96f6
>>247
その通りなんですが、後々「Overrideできませんでした。。。」となってから
慌てて実装するよりは、今のうちから保険かけといた方が良くないでしょうか?

read.cへのIf-Modified-Sinceの実装も、mod_gzipで代用できるじゃん、
とか言われながら作った経緯があるんで。。。

251 :247 :01/08/27 12:03 ID:Xn1S81fE
>>250
そりゃそうです。
作っておくことに異存はないです。
いや、243を見てOverrideできてもLast-Modifiedの問題は
解決しないと言ってるように見えたんで。
誤解かもしれないけど一応っていう感じでした。

では、飯食ってこよ。

252 :デフォルトの名無しさん :01/08/27 12:03 ID:2NFCZnYc
>>249
>>178
管理側の見解
>>225
流出スクリプト・17さんによる改造(書き直し)

253 :♯6411 :01/08/27 12:19 ID:Gdy5fRSM
>>238 そうダったのか、なんてこったい、ファック!

254 :Perler ◆GSi39OA6 :01/08/27 12:21 ID:95LP96f6
>>251
了解です。
動作検証してみた人はまだいませんか?
>>250
read.cへのContent-Encoding: gzipの実装だな。書き間違いです。

255 :♯6411 :01/08/27 12:26 ID:Gdy5fRSM
>>240 そだね〜
後学のために解説しておくと、
mod_negotiation有効になってるのであれば、
GET /index.html
Accept-Encoding: gzip
のリクエストに対し、
index.html.gzがあったら、
Content-Type: text/html
Content-Encoding: gzip
で200を返してくれる、のだ。

もちろん、GET / に対して、index.html.gz が
返るようになる。(もちろん設定変更してたら
この限りではないので、突っ込み煽り大歓迎)

つまり、さしあたっては、./index2.html.gz を配置して
様子を見て貰いたいんだが…
ln -s index2.htm index2.html.gz してもらえると。
(本来は逆だ…)

256 :デフォルトの名無しさん :01/08/27 12:37 ID:kQSWx7uc
>>255
一時期はindex.html.gzだったけどダメだったよ
index.htmlがあるとindex.html.*は見に行かない仕様みたい>mod_negotiation

257 :仕様無しさん ◆NwLv.g/w :01/08/27 12:43 ID:ilyBDhYw
read14.2からHTML部分をヘッダに追い出したものを作って
 ftp://210.170.170.131/incoming/2ch-read-current/read14.2.1.c
 ftp://210.170.170.131/incoming/2ch-read-current/r2chhtml.h
置いときました。

258 :デフォルトの名無しさん :01/08/27 12:45 ID:Xn1S81fE
>>256
当然、そう設定しなきゃ見に行きませんよ。
.htaccessなり、httpd.confなりで

259 :デフォルトの名無しさん :01/08/27 12:53 ID:kQSWx7uc
>>258
デフォルトでそうなってるはずだけど
汎用サーバなんでしょ?

260 :♯6411 :01/08/27 12:54 ID:Gdy5fRSM
>>258 あーそうだった。
漏れも設定ちょっといじった記憶があった。
フォローさんくすー。

261 :デフォルトの名無しさん :01/08/27 12:57 ID:kQSWx7uc
それから「たとえ設定してあっても」index.htmlがあると
index.html.*は見に行かない。見に行くのはindex.html
がない場合のみ。

262 :  :01/08/27 13:20 ID:xheJAhZs
ガイシュツだったらすまんが、クッキーの処理を
CGIの方でやればJAVAScriptの分だけ削れると思うがどうだろ?

263 :デフォルトの名無しさん :01/08/27 13:24 ID:kQSWx7uc
せっかくindex2でCGIを通すんだからそれもいいかもね。
MacでCookieが保存されない不具合も解消できるだろうし。

264 :  :01/08/27 13:32 ID:xheJAhZs
コレもガイシュツかな?
mail欄をやめて上げ下げ専用のチェックにすれば
mail欄分、削れるのでは?

どーせメール欄とかメールリンクなんて役にたってないんだしさ。
<a href="mailto:sage "></a>この部分が減るだけでもそこそこ効果あるかと。

さげなら名前を斜体にするとか。

265 :元Winプログラマ :01/08/27 13:41 ID:mLq02ntM
メール欄わりと使われてますよ
ねたバレをメール欄に書いておいて知りたい人だけ読むようにするとか

266 :Sherry ◆RKMbxbuc :01/08/27 13:53 ID:P7yLS.2Q
新しいリンク方法を提案します.
これなら,かなりリンクの消費バイト数を減らせると思うのですが,いかがでしょ?

基本的に,数字は62進数になおします.
これで,3843 記事目までは2桁で表記できます.

スレ全体の指定は
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501
http://piza2.2ch.net/read.cgi/tech/998845501/

のように,PATH_INFO を使用するようにします.
こうすると,BASE指定などしなくても,記事番号だけでリンクが張れます.
記事番号の指定は以下のような感じで・・・

記事番号を指定する場合
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&st=4&to=4&nofirst=true
http://piza2.2ch.net/read.cgi/tech/998845501/4
記事番号だけを書く.
リンクは,a href=4 で張れる.

記事番号を範囲で指定する場合
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&st=4&to=6&nofirst=true
http://piza2.2ch.net/read.cgi/tech/998845501/4.6
開始と終了を . で区切る.

最新n記事は,
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&ls=50
http://piza2.2ch.net/read.cgi/tech/998845501/-o
-50 のように指定.

index2.htmlなどから,一定範囲を表示し,nofirst=false にあたる場合は,
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&to=100
http://piza2.2ch.net/read.cgi/tech/998845501/,1c

http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&st=101&to=200
http://piza2.2ch.net/read.cgi/tech/998845501/1d,3e

このように , で区切る.
0 の場合は省略可能.

267 :Sherry ◆RKMbxbuc :01/08/27 13:53 ID:P7yLS.2Q
bbs.cgi対応も必要ですが,以前の方式と新しい方式両方をサポートするようにしていて,
旧形式でリクエストが来たら新方式にLocationで飛ばすようにすれば,
read.cgi側だけで強引に対応できると思います.

a href=read.cgi?bbs=tech&key=998845501&st=4&to=4&nofirst=true
から
a href=4
なので,そのくらいしても削減したほうがよいのではないかと.

268 :デフォルトの名無しさん :01/08/27 13:53 ID:IDmmApXc
無限ちゃんねるへようこそ
http://pesuo.hypermart.net/kkk/index2.html

269 :Sherry ◆RKMbxbuc :01/08/27 13:54 ID:P7yLS.2Q
最後に,10進数<->62進数変換のソース.


#include <stdio.h>
#include <stdlib.h>

#define CHARLIST "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
#define CHARLEN 62

int from62table[128] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0,
0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0, 0, 0, 0, 0,
0, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0
};

270 :Sherry ◆RKMbxbuc :01/08/27 13:54 ID:P7yLS.2Q
char *to62(int num)
{
char *dst;
char *p;
char tmp;
int len;
int i;

dst = malloc(6 + 1); /* 62^6 = 0xD398ED040 */
if(!dst) {
exit(1);
}

p = dst;
while(num)
{
*p++ = CHARLIST[num % CHARLEN];
num /= CHARLEN;
}

len = strlen(dst);
for(i = 0; i < len/2; i++)
{
tmp = dst[i];
dst[i] = dst[len - i - 1];
dst[len - i - 1] = tmp;
}

return dst;
}

int from62(char *numstr) {
int num = 0;

while(*numstr)
{
num *= CHARLEN;
num += from62table[*numstr & 0x7f];
numstr++;
}

return num;
}

int main(int argc, char *argv[])
{

if(argc != 2) {
fprintf(stderr, "usgae: %s 123\n\n", argv[0]);
exit(0);
}

printf("%s\n", to62(atoi(argv[1])));
printf("%d\n", from62(to62(atoi(argv[1]))));
exit(0);
}

271 :デフォルトの名無しさん :01/08/27 14:00 ID:kQSWx7uc
>>267
LocationよりBASE hrefで新方式のパスを指定してそのまま出力したほうが
よくありませんか? リダイレクトするとリクエストの回数が2倍になるので。
しかしよく思いつくなあ。

272 :Perler ◆GSi39OA6 :01/08/27 14:01 ID:95LP96f6
>>266
PATH_INFOはいい案ですね。
62進法は、ドットとアンダースコア辺りを足して、64進数の方が6ビットずつ取り出す
だけなんで、計算が簡単な気がする。

273 :Sherry ◆RKMbxbuc :01/08/27 14:02 ID:P7yLS.2Q
>>271
確かにそうですね.(^^;
そちらの方向の方が良さそうです.

274 :デフォルトの名無しさん :01/08/27 14:03 ID:yw5i/z86
■掲示板に戻る■ がindex2.htmlなんだけど、gzip受け付ける奴には
index2.htmを渡したほうがいいじゃない。
圧縮されてるのは、htmの方だよね。

275 :デフォルトの名無しさん :01/08/27 14:20 ID:pckFEAaY
>>272
dotは範囲指定と被るから別の記号で

276 :デフォルトの名無しさん :01/08/27 14:34 ID:kQSWx7uc
62進数は手動指定がほとんど不可能になるんでちょっとやりすぎな
気がします。
冗長性が少なくなる分圧縮が効きにくくなるので圧縮を掛ければ
ほとんど変わらないのでは。
あと、「.」と「-」の意味を入れ替えることを提案します。
>>4-6のリンクは「4-6」であるほうが直感的に分かりやすいでしょう。

277 :デフォルトの名無しさん :01/08/27 14:37 ID:iuwjXswY
範囲指定はハイフンを使った方がわかりやすくていいですね。
そうなると最新記事の記号を変えなくちゃいけませんが、 "+" でどうでしょう?

278 :デフォルトの名無しさん :01/08/27 14:42 ID:CbLq.TAQ
+だとエンコーディングでスペースになっちまわねえかい?

279 :デフォルトの名無しさん :01/08/27 14:45 ID:kQSWx7uc
URIのパス部に利用可能な文字をフルに活用して、
・数字の場合は10進数として解釈
・それ以外は「_!~*'();:@&=+$」と英字を利用した64進数として解釈
とか…。
欠点は同じ内容を表すURIがやたらに増加することですが。
>>278
デコードするのはHTTPDではなくてCGIですからデコードしなければいいと思われ

280 :デフォルトの名無しさん :01/08/27 14:46 ID:pckFEAaY
1-10       1から10まで表示
3,5,7      3,5,7番を表示
1-5,50,100-110  1から5までと50と100から110まで表示
$10       最後の10レス表示
1-5,10,$20    1から5までと10と最後の20レス表示

こんなんでどう?

281 :Sherry ◆RKMbxbuc :01/08/27 14:47 ID:P7yLS.2Q
>>276
とりあえずこのスレで62進変換だけやると,
108166 8月 27 14:34 tech.html
107234 8月 27 13:43 tech2.html
28523 8月 27 14:34 tech.html.gz
28468 8月 27 13:43 tech2.html.gz
こんな感じ.
tech2の方が62進です.

たしかに,大きな変化は無いかもしれませんね.

とりあえず,keyの方は62進なり64進なり
しちゃって良いと思います.こちらはコピペで使うと思うので(^^;

282 :デフォルトの名無しさん :01/08/27 14:54 ID:kQSWx7uc
現在の「>>番号」によるリンクをdatに埋め込む方式だと、
index2からの場合とread.cgiからの場合で異なる相対パスを
参照しなくてはなりませんが、それの対策はどうなっている
のでしょうか? bbs.cgiにdat埋め込みをやめてもらう?

283 :Sherry ◆RKMbxbuc :01/08/27 15:00 ID:P7yLS.2Q
>>282
datへのリンク埋め込みをやめてもらうのが
よいのでは...
リンクはツールがはればよいことですし,
dat直読みの転送量も減らせますしね.

read.cgi側では,リンクが張ってあっても張ってなくても,
>>xxx を見てリンクを張り直すようにすれば
良いのではないでしょうか.

284 :369 ◆3XTuRnAc :01/08/27 15:01 ID:xXHglqmc
すみません、ここ2日+半日の作業の反動で、めちゃめちゃ具合悪いです。
さっきまで寝込んでて、まだ具合が回復しないんで、さらに寝込みモードに入ります。
サーバーは立ち上げっぱなしにしておくので、どうぞお使いください。

285 :デフォルトの名無しさん :01/08/27 15:12 ID:kQSWx7uc
拡張子が.cgiじゃなくなると、ロボットのクロールの対象に
なって、ロボットからのアクセス量が半端じゃなく増加する
可能性もありますが…。

272KB
新着レスの表示

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

0ch BBS 2004-10-30