■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50
read.cgi再開発スレ Part2
- 408 :動け動けウゴウゴ2ちゃんねる :2005/11/10(木) 01:50:06 ID:F6KZqSyl0
 -  なるほど 
 
- 409 :動け動けウゴウゴ2ちゃんねる :2005/11/10(木) 20:41:12 ID:alZcmxn20
 -  まあ1000に到達すると発動するんだけどね 
 レスの形式をとってるから紛らわしい 
 リンクも張れるし 
 http://news19.2ch.net/test/read.cgi/newsplus/1131413427/1001 
 
- 410 :動け動けウゴウゴ2ちゃんねる :2005/11/18(金) 00:06:29 ID:vWUva2lG0
 -  鯖移転時の旧スレはリダイレクトされなくていいんだっけ 
 http://that3.2ch.net/test/read.cgi/dataroom/1104683767/ 
 http://that4.2ch.net/test/read.cgi/dataroom/1104683767/ 
 
- 411 :動け動けウゴウゴ2ちゃんねる :2005/11/21(月) 14:09:27 ID:MC3ZP+ou0
 -  ■ime.nu判定 
  
 2chのスレにbbspinkのスレを貼った時、以前はJumpページ 
 (ime.nu経由?)になったと思うんだけど、今は直で飛べるみたい。 
  
 http://qb5.2ch.net/test/read.cgi/saku2ch/1131265364/793 
  
 BBSPINKは21禁の別サイトのはずなので、 
 間にJumpが挟まってた方がいいのでは。 
 
- 412 :動け動けウゴウゴ2ちゃんねる :2005/11/21(月) 15:02:28 ID:s3dzvoUu0
 -  提携掲示板に細かいこと言うでない 
 
- 413 :動け動けウゴウゴ2ちゃんねる :2005/11/23(水) 01:27:43 ID:Iv3Mx+Qt0
 -  それだったらむしろime.st行く前に 
 「ジャンプ先にアダルト広告(画像つき)があります ジャンプしますか?(y/n)」 
 が必要なんでは 
 
- 414 :root▲ ★ :2005/12/03(土) 13:14:52 ID:???0
 -  >>410 
 なおたとおもう。 
 (memoriesに収容したので、read.cgiバイナリをi386→amd64に変更(配布しなおし)) 
 
- 415 :root▲ ★ :2005/12/05(月) 18:53:11 ID:???0 BE:1459744-###
 -  >>287 をやろうと思って、read.cgi のソースを眺め始めたりして。 
  
 今のread.cgiを見てみると、 
  
         if(!lookfor(ch2,r))             return 3001     ; 
  
 ってやって、まずdatがあるかどうか調べて、lookforの中で、 
  
         if(!apr_stat(&CountStat,ch2->zz_fName,APR_FINFO_MIN,r->pool))   /* found */ 
         { 
                 ch2->zz_filesize = CountStat.size       ; 
                 ch2->zz_mtime = CountStat.mtime         ; 
                 ch2->where = W_LIVE                     ; 
                 return 1                                ; 
         } 
  
 ってやって、datのサイズとmtimeを読んで、その次に、 
  
         if(apr_file_open(&in,ch2->zz_fName,APR_READ,APR_OS_DEFAULT,r->pool)) {return 3011;} 
  
         apr_file_read(in, ch2->BigBuffer, &ch2->zz_filesize); 
         apr_file_close(in)                      ; 
  
 とやって、datをバッファに読み込んでいると。 
  
 ここに >>287 相当品を組み込めばよさげなわけですが、さて、どうすればいいのかと。 
  
 たぶん、HEADしてGETするとか、そういう感じなのかしら。 
 
- 416 :動け動けウゴウゴ2ちゃんねる :2005/12/05(月) 20:39:29 ID:vaenr0/k0
 -  >>411 
 てか板トップから表示されてるスレの外部リンクは全部ime.st抜けてるよ 
 
- 417 :▲ ◆cZfSunOs.U  :2005/12/05(月) 21:38:31 ID:qOa8SuPx0
 -  まず,Apache 2.0 → 2.2 移行に関して......おおかたの API は 
 ソースレベルの互換性は維持されているので,mod_cgidso やそれ用の 
 プログラム (read.cgi 等) はソースの手直しは不要だと思います. 
 ただ,バイナリレベルの互換性はないのでリコンパイルは必要です. 
  
 しかし,>>287 のは正攻法ではなくトリッキーな方法を用いているため, 
 2.2 対応には若干の手直しが必要となります(下記のソースでは 
 その点も含め対応し,2.0 / 2.2 両対応となっています). 
 まぁこれは,正攻法でやろうとすると別途フィルタモジュールを 
 作らなければならなくなるので...... 
 
- 418 :▲ ◆cZfSunOs.U  :2005/12/05(月) 21:39:21 ID:qOa8SuPx0
 -  >>415 乙です. 
  
 >たぶん、HEADしてGETするとか、そういう感じなのかしら。 
  
 そのように2回サブリクエストを実行する形だと非効率になりそうなので, 
 雪だるま版では lookfor() で内容取得まで一緒にやってしまった方が良さそうな気もします. 
 その代わり,dat ファイルを読み込んでる部分をスキップすると. 
  
 ----[この関数を定義しておく]------------------------------------------ 
 #ifdef SNOWMAN 
 static apr_status_t rdat_filter(ap_filter_t *f, apr_bucket_brigade *b) 
 { 
     return ap_save_brigade(f, (apr_bucket_brigade **)&f->ctx, &b, f->r->pool); 
 } 
 #endif 
 ----[lookfor() の中]-------------------------------------------------- 
 #ifdef SNOWMAN 
     int rv; 
 #if defined(AP_SERVER_MINORVERSION_NUMBER) && AP_SERVER_MINORVERSION_NUMBER >= 2 
     ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL, NULL, 0, 0}; 
 #else 
     ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL}; 
 #endif 
     ap_filter_t f = {&frec, NULL, NULL, r, r->connection}; 
     char *uri = apr_pstrcat(r->pool, "/", ch2->zz_bbs, "/dat/", ch2->zz_key, ".dat", NULL); 
     request_rec *rdat = ap_sub_req_lookup_uri(uri, r, &f); 
  
     if (!(rv = rdat->status == HTTP_OK ? ap_run_sub_req(rdat) : rdat->status)) { 
         apr_brigade_pflatten(f.ctx, &ch2->BigBuffer, &ch2->zz_filesize, r->pool); 
         apr_brigade_destroy(f.ctx); 
         ch2->zz_mtime = rdat->mtime ? rdat->mtime 
             : apr_date_parse_http(apr_table_get(rdat->headers_out, "Last-Modified")); 
     } 
     ap_destroy_sub_req(rdat); 
  
     if (!rv) { 
         ch2->where = W_LIVE; 
         return 1; 
     } 
 #else 
     if(!apr_stat(&CountStat,ch2->zz_fName,APR_FINFO_MIN,r->pool)) /* found */ 
     { 
         ch2->zz_filesize = CountStat.size ; 
         ch2->zz_mtime = CountStat.mtime ; 
         ch2->where = W_LIVE ; 
         return 1 ; 
     } 
 #endif 
 ----[BigBuffer アロケート / dat 読み込みの部分はスキップ]------------- 
 #ifndef SNOWMAN 
     ch2->BigBuffer = apr_palloc(r->pool, ch2->zz_filesize); /* ←多分こんな形で BigBuffer 領域を確保してますよね? */ 
     if (apr_file_open(&in,ch2->zz_fName,APR_READ,APR_OS_DEFAULT,r->pool)) {return 3011;} 
     apr_file_read(in, ch2->BigBuffer, &ch2->zz_filesize); 
     apr_file_close(in) ; 
 #endif 
 ---------------------------------------------------------------------- 
 
- 419 :root▲ ★ :2005/12/05(月) 22:39:57 ID:???0
 -  >>416 
 ほんとに? 
  
 >>417 
 了解です。 
  
 あとで、>>418 に挑戦してみるです。 
 
- 420 :root▲ ★ :2005/12/05(月) 22:42:24 ID:???0
 -  >>416 
 ちゃんと動いてるっぽいなぁ。 
  
 http://qb6.2ch.net/operate2/ 
 http://qb6.2ch.net/operate2/html/1133790046.html 
  
 https:// と ftp:// は、もともと ime.st にならない仕様(ime.st側でちゃんと動かないので)。 
 
- 421 :root▲ ★ :2005/12/06(火) 01:51:22 ID:???0 BE:6567089-###
 -  やってみました。 
  
 しかし、 
  
 Request exceeded the limit of 10 subrequest nesting levels 
 due to probable confguration error. Use 'LimitInternalRecursion' 
 to increase the limit if necessary. Use 'LogLevel debug' 
 to get a backtrace. 
  
 ううむ。 
 
- 422 :root▲ ★ :2005/12/06(火) 02:09:04 ID:???0 BE:730324-###
 -  で、>>421 は出なくなって、今は、 
  
  [notice] child pid 67012 exit signal Segmentation fault (11) 
  
 うむむ。 
 
- 423 :▲ ◆cZfSunOs.U  :2005/12/06(火) 02:18:11 ID:iYd2v5pK0
 -  >>421 
 >Request exceeded the limit of 10 subrequest nesting levels 
 >due to probable confguration error. 
  
 う〜む......サブリクエストが無限ループになってるんですかね...... 
 proxy 関連の設定はどうなってますか? 
  
 
- 424 :▲ ◆cZfSunOs.U  :2005/12/06(火) 02:22:45 ID:iYd2v5pK0
 -  あと気になる点は...... 
  
 ・ ch2->zz_filesize の型 (apr_size_t? apr_off_t?) 
 ・ ch2->BigBuffer[ch2->zz_filesize] に '\0' を置く必要あり? 
 
- 425 :root▲ ★ :2005/12/06(火) 02:29:52 ID:???0 BE:2463539-###
 -  >>424 
 >        apr_size_t      zz_filesize     ; 
  
 のようです。 
  
 で、apr_file_close(in) の後は、 
  
         p = ch2->BigBuffer                      ; 
         for(i=0;i<ch2->zz_filesize;i++,p++) 
         { 
                 if(*p == '\0')  *p = '*'        ; 
         } 
         *p = '\0'                               ; 
  
         p = ch2->BigBuffer                      ; 
         ch2->lineNum = 0                        ; 
  
 と、やっている模様。 
 
- 426 :root▲ ★ :2005/12/06(火) 02:31:04 ID:???0 BE:2189164-###
 -  >>423 
 >  proxy 関連の設定はどうなってますか? 
  
     # livejupiter 
     ProxyPass /livejupiter/SETTING.TXT ! 
     ProxyPass /livejupiter/ http://live22x.2ch.net/livejupiter/ 
     ProxyPassReverse /livejupiter/ http://live22x.2ch.net/livejupiter/ 
  
 です。 
 
- 427 :▲ ◆cZfSunOs.U  :2005/12/06(火) 02:44:03 ID:iYd2v5pK0
 -  >>425 了解です.zz_filesize の型は良かったのですが, 
  
 >*p = '\0' ; 
  
 があるので apr_brigade_pflatten() のところはこうした方がよさそうです. 
  
 -        apr_brigade_pflatten(f.ctx, &ch2->BigBuffer, &ch2->zz_filesize, r->pool); 
 +        apr_off_t blen; 
 +        apr_brigade_length(f.ctx, 1, &blen); 
 +        ch2->zz_filesize = blen; 
 +        ch2->BigBuffer = apr_palloc(r->pool, ch2->zz_filesize + 1); 
 +        apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize); 
  
  
 >>426 了解です.特に問題はなさそうですね.何が起こってるのかトレースできればいいんですが...... 
 
- 428 :root▲ ★ :2005/12/06(火) 02:57:19 ID:???0 BE:729942-###
 -  ううむ、>>422 のようです。>>427 
  
 で、ch2->BigBuffer は、dso_main で最初に、 
  
         CH2READ ch2                             ; 
  
 と言っていて、CH2READ は、構造体になっているです。 
 で、その中でこんなかんじでとっているです。 
 つまり、apr_pallocで取っているわけではないみたい。 
  
         char    BigBuffer[SZ_BIGBUF]    ; 
 
- 429 :root▲ ★ :2005/12/06(火) 03:05:30 ID:???0 BE:4925096-###
 -  で、入れてみましたが、 
  
 ・バーチャルホスト毎の access.log error.log は出ない 
 ・一番親のログは >>422 
  
 のようです。 
 
- 430 :▲ ◆cZfSunOs.U  :2005/12/06(火) 03:07:50 ID:iYd2v5pK0
 -  >>428 なるほど.とするとこんな感じですか...... 
  
         apr_off_t blen; 
         apr_brigade_length(f.ctx, 1, &blen); 
         if ((ch2->zz_filesize = blen) >= SZ_BIGBUF) 
             return 何かのエラー番号; 
         apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize); 
  
 # デカい構造体をスタックに確保するってのはちょっと不安があるわけですが, 
 # 今までそれで動いてたのなら今回の問題とは無関係だろうということで...... 
  
 で......死んだ時の core のバックトレースを取るとか,truss でトレースするとか 
 できますでしょうか......? 
 
- 431 :root▲ ★ :2005/12/06(火) 03:08:15 ID:???0 BE:4925096-###
 -  現在のもの: 
  
 +#ifdef SNOWMAN 
 +static apr_status_t rdat_filter(ap_filter_t *f, apr_bucket_brigade *b) 
 +{ 
 +       return ap_save_brigade(f, (apr_bucket_brigade **)&f->ctx, &b, f->r->pool); 
 +} 
 +#endif 
  
 +#ifdef SNOWMAN 
 +       int rv; 
 +#if defined(AP_SERVER_MINORVERSION_NUMBER) && AP_SERVER_MINORVERSION_NUMBER >= 2 
 +       ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL, NULL, 0, 0}; 
 +#else 
 +       ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL}; 
 +#endif 
 +       ap_filter_t f = {&frec, NULL, NULL, r, r->connection}; 
 +       char *uri = apr_pstrcat(r->pool, "/", ch2->zz_ita, "/dat/", ch2->zz_key, ".dat", NULL); 
 +       request_rec *rdat = ap_sub_req_lookup_uri(uri, r, &f); 
 + 
 +       if (!(rv = rdat->status == HTTP_OK ? ap_run_sub_req(rdat) : rdat->status)) { 
 +               apr_off_t blen; 
 +               apr_brigade_length(f.ctx, 1, &blen); 
 +               ch2->zz_filesize = blen; 
 +               apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize); 
 +               apr_brigade_destroy(f.ctx); 
 +               ch2->zz_mtime = rdat->mtime ? rdat->mtime 
 +                       : apr_date_parse_http(apr_table_get(rdat->headers_out, "Last-Modified")); 
 +       } 
 +       ap_destroy_sub_req(rdat); 
 + 
 +       if (!rv) { 
 +               ch2->where = W_LIVE; 
 +               return 1; 
 +       } 
 +#else 
 (続く) 
 
- 432 :root▲ ★ :2005/12/06(火) 03:11:20 ID:???0 BE:1094562-###
 -  >>430 
 何かのエラー番号: datが大き杉 
 ってことですかね。 
  
 で、Apacheのcoreをとるには、、、。 
 
- 433 :root▲ ★ :2005/12/06(火) 03:12:33 ID:???0 BE:4378368-###
 -          if(ch2->zz_filesize > SZ_BIGMAX)        return 3002     ; 
  
 だから、3002でいいのかな。 
 
- 434 :root▲ ★ :2005/12/06(火) 03:14:30 ID:???0 BE:730324-###
 -  ということで、今こうです。 
 結果は同じか。 
  
 で、core dumpとってみるです。 
  
 +#ifdef SNOWMAN 
 +       int rv; 
 +#if defined(AP_SERVER_MINORVERSION_NUMBER) && AP_SERVER_MINORVERSION_NUMBER >= 2 
 +       ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL, NULL, 0, 0}; 
 +#else 
 +       ap_filter_rec_t frec = {"READDAT", {rdat_filter}, NULL, AP_FTYPE_RESOURCE, NULL}; 
 +#endif 
 +       ap_filter_t f = {&frec, NULL, NULL, r, r->connection}; 
 +       char *uri = apr_pstrcat(r->pool, "/", ch2->zz_ita, "/dat/", ch2->zz_key, ".dat", NULL); 
 +       request_rec *rdat = ap_sub_req_lookup_uri(uri, r, &f); 
 + 
 +       if (!(rv = rdat->status == HTTP_OK ? ap_run_sub_req(rdat) : rdat->status)) { 
 +               apr_off_t blen; 
 +               apr_brigade_length(f.ctx, 1, &blen); 
 +               if ((ch2->zz_filesize = blen) >= SZ_BIGBUF) 
 +                       return 3002; 
 +               apr_brigade_flatten(f.ctx, ch2->BigBuffer, &ch2->zz_filesize); 
 +               apr_brigade_destroy(f.ctx); 
 +                       ch2->zz_mtime = rdat->mtime ? rdat->mtime 
 +                       : apr_date_parse_http(apr_table_get(rdat->headers_out, "Last-Modified")); 
 +       } 
 +       ap_destroy_sub_req(rdat); 
 + 
 +       if (!rv) { 
 +               ch2->where = W_LIVE; 
 +               return 1; 
 +       } 
 +#else 
 
- 435 :▲ ◆cZfSunOs.U  :2005/12/06(火) 03:16:17 ID:iYd2v5pK0
 -  >>432 
 CoreDumpDirectory /tmp 
 とかで(httpd プロセスが書き込み可能なディレクトリを指定). 
  
 >>433 というか,lookfor() はエラー時 0 を返すので,とりあえずその部分では 
  
 -            return 何かのエラー番号; 
 +            return 0; 
  
 にしないとしょうがないですか...... 
 
- 436 :root▲ ★ :2005/12/06(火) 03:18:33 ID:???0 BE:547632-###
 -  >>435 
 設定してみた。 
  
 で、 
         if(!lookfor(ch2,r))             return 3001     ; 
  
 なので、return 0ですか。 
 
- 437 :root▲ ★ :2005/12/06(火) 03:26:08 ID:???0 BE:2189546-###
 -  ううむ、core dumpしないみたいです。 
 [Mon Dec 05 10:25:09 2005] [notice] child pid 74701 exit signal Segmentation fault (11) 
  
 # XXX 
 CoreDumpDirectory /tmp 
  
 を、httpd.conf に書いたのですが。 
 
- 438 :▲ ◆cZfSunOs.U  :2005/12/06(火) 03:35:45 ID:iYd2v5pK0
 -  う〜む,なぜだろう......となると...... 
 http://www.freebsd.org/cgi/man.cgi?query=truss 
 は使えるんでしょうか......? 
 
- 439 :root▲ ★ :2005/12/06(火) 03:42:26 ID:???0 BE:1368353-###
 -  truss はできますが、Solarisほど強力じゃないのか。 
  
 http://httpd.apache.org/dev/debugging.html 
  
 これですか。 
 
- 440 :▲ ◆cZfSunOs.U  :2005/12/06(火) 03:47:48 ID:iYd2v5pK0
 -  そうか.....httpd が最初に root で立ち上がってると OS のデフォルトでは 
 core 吐かないようになってるのかな......とすると,とりあえず直接 User 
 ディレクティブで指定してるユーザで立ち上げてみるとか...... 
 
- 441 :root▲ ★ :2005/12/06(火) 03:57:33 ID:???0 BE:821333-###
 -  302 みたいです。<= rdat->status 
 
- 442 :root▲ ★ :2005/12/06(火) 03:58:42 ID:???0 BE:821333-###
 -  すんません。かんちがいだった。>>441 
 
- 443 :root▲ ★ :2005/12/06(火) 03:59:21 ID:???0 BE:3283294-###
 -  200 だなぁ。ちゃんと。 
 
- 444 :root▲ ★ :2005/12/06(火) 04:04:30 ID:???0 BE:2554447-###
 -  core dumpしてるの、ここじゃないですね。 
 もっとあとみたい。 
 
- 445 :root▲ ★ :2005/12/06(火) 04:09:12 ID:???0 BE:2919348-###
 -  ap_rprintf(r, "%s\n", ch2->BigBuffer); 
  
 ってやっても、なんかちゃんと出ないみたい。 
 
- 446 :▲ ◆cZfSunOs.U  :2005/12/06(火) 04:20:04 ID:iYd2v5pK0
 -  >>441-445 乙です.こちらのローカル環境ではOkなんですが,う〜む...... 
 
- 447 :root▲ ★ :2005/12/06(火) 04:22:22 ID:???0 BE:3192375-###
 -  -funsigned-char しているせいかなぁ、、、。 
 
- 448 :root▲ ★ :2005/12/06(火) 04:24:03 ID:???0 BE:1916137-###
 -  strlen(ch2->BigBuffer) が、3らしい。ううむ。 
 
- 449 :▲ ◆cZfSunOs.U  :2005/12/06(火) 04:33:03 ID:iYd2v5pK0
 -  う〜む......原因もつかめないとすると......サブリクエスト方式をやめて 
 ソケットで localhost に取りに行く方式にした方がいいんですかねぇ. 
 read.cgi 1呼び出しごとに2プロセス消費することになっちゃいますが...... 
 
- 450 :root▲ ★ :2005/12/06(火) 04:38:46 ID:???0 BE:1642436-###
 -  >>449 
 ちと、キャッシュ関連やめてみるです。 
 
- 451 :root▲ ★ :2005/12/06(火) 04:40:34 ID:???0 BE:1824645-###
 -  同じだった。 
  
 BigBufferの最初の4バイトが、どのdatを読んでも 1f 8b 8 0 になるです。 
  
 >>449 
 それも、なんかしゃくですね。ううむ。 
 
- 452 :root▲ ★ :2005/12/06(火) 04:44:36 ID:???0 BE:1094562-###
 -  バッファを大域変数でとってみたけど、同じだった。 
  
 apr_brigade_flatten のところが、ちゃんと動いていない?? 
 
- 453 :▲ ◆cZfSunOs.U  :2005/12/06(火) 04:47:52 ID:iYd2v5pK0
 -  ch2->zz_filesize はどうですか......? 
 
- 454 :root▲ ★ :2005/12/06(火) 04:51:19 ID:???0 BE:1368735-###
 -  http://live22x1.2ch.net/test/read.cgi/livejupiter/9240000003/ 
 を読んで、 
  
 ap_rprintf(r, "%d\n", ch2->zz_filesize); 
  
 ってやったら、832 って出たです。 
 実際には、1428バイトあるですね。 
 
- 455 :動け動けウゴウゴ2ちゃんねる :2005/12/06(火) 04:54:01 ID:JNumL22n0
 -  1f 8b 8 0はgzipか 
 
- 456 :root▲ ★ :2005/12/06(火) 04:54:33 ID:???0 BE:2553874-###
 -  >>455 
 おーーー。 
 
- 457 :root▲ ★ :2005/12/06(火) 04:55:49 ID:???0 BE:2463539-###
 -  ってことは、、、。 
 ここは1Gbps内部接続だし、圧縮はなくてもいいような気もするです。 
 
- 458 :root▲ ★ :2005/12/06(火) 04:57:06 ID:???0 BE:1824645-###
 -  どうすんのがいいのかな。 
  
 live22のhttpdでgzipしないようにする? のも、いまいちだなぁ。 
 サブリクエスト(って言うんでしたっけ)の時に、no gzip にできないのかしら。 
 
- 459 :root▲ ★ :2005/12/06(火) 05:03:52 ID:???0 BE:5746379-###
 -  ううむ、 
 こりゃ、live22側のhttpdをごにょごにょするほうがよさげですね。 
  
 SetEnvIfか何か使うか。 
 
- 460 :root▲ ★ :2005/12/06(火) 05:06:08 ID:???0 BE:3830876-###
 -  live22のhttpdでmod_defleteをはずしてみたら、できたー。 
  
 http://live22x1.2ch.net/test/read.cgi/livejupiter/1133132580/ 
 
- 461 :root▲ ★ :2005/12/06(火) 05:06:46 ID:???0 BE:1368735-###
 -  ってことは、 
  
 ・フロントエンドからのリクエストだったら、gzipかからないようにする 
  
 で、いけるのか。 
  
 やろう、やろう。 
 
- 462 :root▲ ★ :2005/12/06(火) 05:10:41 ID:???0 BE:6567089-###
 -  うーむ、、、。諸事情によりmod_rpaf使っているからなぁ。 
 REMOTE_ADDRではできないのか。 
  
 どうすべ。 
 
- 463 :root▲ ★ :2005/12/06(火) 05:11:22 ID:???0 BE:3283294-###
 -  とりあえず、後で考えることにして、 
 mod_deflateはずしておこう。 @ live22 
  
 で、read.cgiを入れてみるか。 
 
- 464 :動け動けウゴウゴ2ちゃんねる :2005/12/06(火) 05:19:07 ID:boYqBZIZ0
 -  355 ▲ ◆cZfSunOs.U sage 2005/12/06(火) 05:04:33  
 なぜか read.cgi スレで「連続投稿ですか?10回」とか出てしまうんで一時避難でこちらへ......  
  
 >>455-458 むむ......ってことは......  
  
 apr_table_set(r->subprocess_env, "no-gzip", "");  
  
 を ap_run_sub_req() の前に実行かな......  
  
  
 356 ▲ ◆cZfSunOs.U sage 2005/12/06(火) 05:13:01  
 apr_table_unset(r->headers_in, "Accept-Encoding");  
  
 も入れた方がいいかな......  
  
 # 相変わらずあっちに書けないんでどなたか転載して頂けると助かります......  
  
  
 357 ▲ ◆cZfSunOs.U sage 2005/12/06(火) 05:14:25  
 間違えた...... r じゃなくて rdat じゃないとダメです.  
  
 apr_table_set(rdat->subprocess_env, "no-gzip", "");  
 apr_table_unset(rdat->headers_in, "Accept-Encoding");  
 
- 465 :root▲ ★ :2005/12/06(火) 05:23:29 ID:???0 BE:2189838-###
 -  >>464 
 これの 357 のやつで、live22の設定をgzipありにしても動いたー。 
  
 すばらしいです。これでread.cgiもフロントにできる。 
 
- 466 :root▲ ★ :2005/12/06(火) 05:26:52 ID:???0 BE:5107878-###
 -  まだ #ifdef しているけど、フロント動作版 read.cgi を live22x[123] に入れた。 
 これで、大会前の準備はほぼすべて整いました。 
  
 深夜までつきあっていただいた SunOS さん、 
 それから神様 >>455 さん、ありがとう、ありがとう。 
 
- 467 :動け動けウゴウゴ2ちゃんねる :2005/12/06(火) 06:13:15 ID:JNumL22n0
 -  rdat(rnew)のヘッダいじるとrにも反映される予感。 
 2.0と2.2でちょっと違うけど、 
 rnew->headers_in = r->headers_in; 
 こんな風になってる。 
 envはコピーのようだけど。 
 rnew->subprocess_env  = apr_table_copy(rnew->pool, r->subprocess_env); 
 
- 468 :▲ ◆cZfSunOs.U  :2005/12/06(火) 08:22:29 ID:tmMnLjck0
 -  >>467 おぉ......となると,こうすべきですね. 
  
 # "no-gzip" は多分なしで平気ですね. 
  
 rdat->headers_in = apr_table_copy(rdat->pool, rdat->headers_in); 
 apr_table_unset(rdat->headers_in, "Accept-Encoding"); 
 
- 469 :root▲ ★ :2005/12/06(火) 11:23:53 ID:???0
 -  >>468 
 組み込みます。 
  
 で、昨日の会話でわかったのは、 
 Apache 2.2系と2.0系のread.cgiでは、バイナリレベルでの互換性がなくなるってことすね。 
 いずれ2.2化する時には、注意しないと。 
 
- 470 :root▲ ★ :2005/12/06(火) 11:29:13 ID:???0
 -  live22x[123] に、read.cgi の広告を配布するようにした。 
 
- 471 :▲ ◆cZfSunOs.U  :2005/12/06(火) 22:37:17 ID:iYd2v5pK0
 -  緊急の問題ではないですが,ここ(スタックにデカい配列・構造体を確保)が 
 やはりちょっと気がかりではあります. 
  
 >>428 
 >CH2READ ch2 ; 
 >char BigBuffer[SZ_BIGBUF] ; 
  
 現状では一応問題なしのようですが,もし今後マルチスレッド MPM を使用するとなると...... 
 メイン以外のスレッドに割り当てられるデフォルトのスタックサイズはメインのより小さいです. 
 ulimit での指定もメイン以外のスレッドには効きません.FreeBSD での具体的数値は 
 わかりませんが,Solaris では 1MB(32-bit) / 2MB(64-bit) がデフォルトです. 
 そして,dat の最大サイズが 512kB となると...... 
  
 もちろん global / static 変数はマルチスレッドではマズいんで,apr_palloc() で 
 ヒープ領域に確保するようにした方がよさそうです.Apache 2.2 では ThreadStackSize で 
 スタックサイズを指定可能なんで,それで乗り切るって手もなくはないですが...... 
 
- 472 :root▲ ★ :2005/12/07(水) 00:13:51 ID:???0
 -  >>471 
 気になりますか。 
  
 ぼちぼち、apr_palloc にしてみますか。 
 ちなみにそれで確保したやつって、なんか解放とかしなくていいのかしら。 
 
- 473 :▲ ◆cZfSunOs.U  :2005/12/07(水) 00:25:35 ID:jJ+aJrde0
 -  >>472 malloc() だと明示的な解放が必要ですが,apr_palloc() ではプールの寿命が尽きた時点で自動解放されます. 
 例えばリクエストプール (r->pool) で確保すれば,リクエスト処理が完了した時点で自動解放されます. 
 
- 474 :root▲ ★ :2005/12/07(水) 00:34:42 ID:???0 BE:1368353-###
 -  >>473 
 了解です。安心していいってことですね。 
 
- 475 :root▲ ★ :2005/12/07(水) 12:27:01 ID:???0 BE:3192757-###
 -  【きりたんぽ】雪だるま作戦に思いを馳せながら雑談するスレッド Part28 
 http://aa5.2ch.net/test/read.cgi/nanmin/1133468879/739-740 
  
 739 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/12/07(水) 12:05:52 ?### 
 過去ログにいったやつが、うまく出ないみたい。< フロント版read.cgi  
  
 だめな例: 基本的にdat落ちしたやつ全部  
 http://live22x.2ch.net/test/read.cgi/dancesite/1115133136/  
  
 あとで、みてみるということで。  
  
 740 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/12/07(水) 12:24:56 ?### 
 >>739  
 なおした。  
 read.cgi ver 05.0.2.1 2005/12/07  
  
 ライブなdatじゃない場合は、通常と同じ方法でディスクを参照。  
 
- 476 :▲ ◆cZfSunOs.U  :2005/12/07(水) 13:01:22 ID:CyXQfn3E0
 -  >>475 乙です. 
 ---------------------------------------------------------------------- 
 以前 worker MPM を試してみたら SIGBUS になってしまったことがありましたが, 
 http://aa5.2ch.net/test/read.cgi/nanmin/1118138260/278-279n 
 これは >>471 の要因でスタック領域からはみ出てしまってたのかも知れませんね. 
 
- 477 :root▲ ★ :2005/12/07(水) 14:59:46 ID:???0
 -  >>476 
 なるほど、ありえますね。 
  
 # worker MPMはSpeedyCGIがそのままでは動かないかもという話も。 
 
- 478 :▲ ◆cZfSunOs.U  :2005/12/07(水) 15:48:25 ID:CyXQfn3E0
 -  >>477 そのあたりはこういうことで. 
 # これを受けての worker MPM 挑戦だったわけで...... 
  
 http://aa5.2ch.net/test/read.cgi/nanmin/1118138260/147 
 >そういえば...... 今 SpeedyCGI は speedy プロセス呼び出しの形で使ってますか? 
 >mod_speedycgi だとマルチスレッド非対応ですが,speedy プロセス呼び出しなら無関係なんで 
 >マルチスレッド化も可能ではあるんですが...... 
 
- 479 :root▲ ★ :2005/12/07(水) 17:05:52 ID:???0 BE:2189546-###
 -  >>478 
 そっか、そうでしたね。 
 ってことは、再チャレンジすることもありうるのか。 
 
- 480 :root▲ ★ :2005/12/07(水) 17:06:28 ID:???0 BE:4104959-###
 -  でも、再チャレンジする場合、read.cgi で使用している外部関数が、 
 全部MT-safeじゃないと、いまいちなわけか。 
 
- 481 :▲ ◆cZfSunOs.U  :2005/12/07(水) 21:48:37 ID:jJ+aJrde0
 -  >>480 APR 関数は基本的に,内部では Unsafe な関数の使用を避け (MT-)Safe になるよう 
 配慮されているため,APR 関数を使っているのならおおかた大丈夫かと思います. 
 ただ,呼び出す関数が (MT-)Safe であっても,処理の流れなどに起因して 
 マルチスレッド環境で問題が起こることもあり得るので(今回出てきた 
 スタック上の巨大変数もしかり),その点が要注意ではありますが. 
 
- 482 :▲ ◆cZfSunOs.U  :2005/12/10(土) 02:12:29 ID:1jtGNzJ50
 -  #include <pthread.h> 
 #include <stdio.h> 
 int main() 
 { 
     size_t size; 
     pthread_attr_t attr; 
     pthread_attr_init(&attr); 
     pthread_attr_getstacksize(&attr, &size); 
     printf("%lu\n", (unsigned long)size); 
     return 0; 
 } 
 ---------------------------------------------------------------------- 
 ってのを tiger (FreeBSD 5.3R) 上でやってみたら,libpthread / libthr ともに 
 65536 (64kB) だそうです.そりゃはみ出しますね...... 
 
- 483 :root▲ ★ :2005/12/10(土) 03:04:48 ID:???0 BE:2462393-###
 -  >>482 
 なるほど、なるほど。 
 
- 484 :root▲ ★ :2005/12/10(土) 18:48:40 ID:???0
 -          /* datを読むバッファ領域を、apr_pallocで動的に確保する */ 
         ch2->BigBuffer = apr_palloc(r->pool, SZ_BIGBUF); 
  
 にしたバージョンを、live22x2で試しました。 
 問題なさげ。 
  
 dso.2ch.netでも問題なければ、これで。 
 
- 485 :root▲ ★ :2005/12/10(土) 18:57:27 ID:???0
 -  >>484 
 read.cgi ver 05.0.2.2 2005/12/10 
 
- 486 :root▲ ★ :2005/12/10(土) 19:20:11 ID:???0
 -  ということで配布して20分ほど経ちましたが、 
 read.cgi が多い news19 / life7 / hobby あたりでも、問題なさげすね。 
 
- 487 :動け動けウゴウゴ2ちゃんねる :2005/12/13(火) 23:39:10 ID:FqXxoMfA0
 -  ■定期>>373 
 http://qb5.2ch.net/test/read.cgi/operate/1134279544/ 
 
- 488 :動け動けウゴウゴ2ちゃんねる :2005/12/14(水) 16:49:28 ID:ph7PVQZB0
 -  read.cの 
 #defineLINK_URL_MAXLEN256 
 これ。なんか大きすぎない? 
 普通200以上超えるURLは無いと思うんだが。 
 
- 489 :動け動けウゴウゴ2ちゃんねる :2005/12/14(水) 16:53:26 ID:ph7PVQZB0
 -  ミスorz 
 #define LINK_URL_MAXLEN 256 
 タブは無視されるのを忘れてたよママン  
 
- 490 :root▲ ★ :2005/12/14(水) 19:12:23 ID:???0
 -  >>488 
 ヒント: %エンコーディング 
 
- 491 :root▲ ★ :2005/12/14(水) 19:14:38 ID:???0
 -  で、今のソースもちと見てみましたが、 
 もっと大きな値になっているようです。 
 
- 492 :489 :2005/12/15(木) 16:51:58 ID:7K9YjLFu0
 -  >>490そうだな・・・CGIがあったよな・・・ぬるぽ 
 >>491手元にあるソースは狐の人が書き換える以前のものだからね・・・bbs.cgiスレも見たけどソースは非公開っぽいし。 
 公開すればもっと質の高い物になると思うよひろゆきタン 
 
- 493 :動け動けウゴウゴ2ちゃんねる :2005/12/15(木) 21:53:19 ID:j3gv2dLj0
 -  >>488 
 まれにAAでも使う 
 それより15個規制はテンプレ作るとき結構きついので可能な範囲で緩和して欲しい 
 
- 494 :動け動けウゴウゴ2ちゃんねる :2005/12/17(土) 09:55:14 ID:1ubCo5sc0
 -  >>493誤爆? 
 
- 495 :動け動けウゴウゴ2ちゃんねる :2005/12/17(土) 10:57:14 ID:pYb4F0nD0
 -  こんな 
 http://aa5.2ch.net/test/read.cgi/aasaloon/1131190000/ 
 
- 496 :動け動けウゴウゴ2ちゃんねる :2005/12/26(月) 01:22:01 ID:8tK54p4F0
 -  ■>>410みたいに鯖移転前のスレは鯖移転だってことがわかるように書いたほうがいいんじゃないの 
 移転先で生きてるわけだし 
  
 これだと普通の過去スレと見分けがつかない 
 
- 497 :動け動けウゴウゴ2ちゃんねる :2006/01/13(金) 21:06:08 ID:kVBuC36P0
 -  ■>>2-のようにアンカーにハイフンがつきそのあとに数字がないと 
 アンカーそのものが無効になる不具合 
 
- 498 :動け動けウゴウゴ2ちゃんねる :2006/01/13(金) 23:47:35 ID:kVBuC36P0
 -  >>2-20でもダメか 
 
- 499 :root▲ ★ :2006/01/14(土) 01:11:19 ID:???0
 -  何と2ちゃんねるのbbs.cgiで公式にサポートされているのは、 
 つまり、書き込み時に dat 内にリンクとして埋め込まれるのは、 
  
 >>mmm 
  
 と、 
  
 >>mmm-nnn 
  
 の2パターンだけなのです。 
  
 bbs.cgi は、わざわざそのように書かれています。 
 つまり右側に数字がないのは、アンカーではないことになります。 
  
 昨年 bbs.cgi をきっちり読むまで、 
 実は私もこのことは知りませんでした。はい。 
 
- 500 :動け動けウゴウゴ2ちゃんねる :2006/01/14(土) 21:01:58 ID:CQZR/2It0
 -  read.cgi っていつまで test フォルダに入ってるの? 
 
- 501 :root▲ ★ :2006/01/14(土) 22:06:47 ID:???0 BE:3284249- 
 -  >>500 
 たぶん、ずーーーっと。 
  
 あらゆるプログラムがtestだと思い込んでいるです。 
 datのフォーマット同様、もう変えるのは(りゃ。 
 
- 502 :動け動けウゴウゴ2ちゃんねる :2006/01/14(土) 23:44:26 ID:BiVc6yby0
 -  >>489 
 前は>>2-は>>2のアンカーとして機能してなかったっけ(ハイフンが黒になる) 
 
- 503 :動け動けウゴウゴ2ちゃんねる :2006/01/15(日) 00:00:01 ID:EB9SH0eJ0
 -  >>501 
 今日も実験、明日も、そしてあさっても(りゃ。むぎゅ。 
  
 一応書くと、アンカーは bbs.cgi だから。。 
 
- 504 :root▲ ★ :2006/01/15(日) 02:29:16 ID:???0 BE:1095326- 
 -  >>502 
 んーむ。 
  
 いずれにせよこれは、bbs.cgi の問題ですね(>>503 のとおり)。 
 そっちにリンク入れておくです。 
 
- 505 :動け動けウゴウゴ2ちゃんねる :2006/01/15(日) 12:30:16 ID:H9CLpF890
 -  >>501 
 逆に言えば、新スキームを導入することができたら 
 配置を変えられるって考えていいかな? 
  
 板名.2ch.net/read.cgi/スレ/ とか 
 
- 506 :名無しさんの助言 ◆JogenOuJ66  :2006/01/15(日) 15:36:04 ID:g76KPmMt0
 -  >逆に言えば、新スキームを導入することができたら 
  
 めんどくさがって実行しない、に一票。 
 
- 507 :505 :2006/01/15(日) 15:49:55 ID:H9CLpF890
 -  >>506 
 現に困ってる人は(あまり)いないし、うrlがカコワルイ程度だからねー 
  
 個人的には、板移転時のキレイさを鑑みて、板毎virtual host化 
 してほしいな〜と。DNS更新もメンドくさくなくなったようですし 
 そこんところどうなんでしょう? 
 
284KB
新着レスの表示
スレッドリストへ戻る 全部 前100 次100 最新50
0ch BBS 2004-10-30