(written in euc-jp-unix) -*-text-*- $Id: TODO,v 1.17 2001/09/04 08:21:35 2ch Exp $ ・思いついたことを掻く。 ・荒らし厳禁(w ・フォーマットは任意。 - * - dat形式はtime_tなので、内部で処理するときはtime_t(もしくはlong)に変換 して持ち回ってもいいんじゃないかな? もちろん2038年問題は忘れてる。そも そも2chが9月を超えて持つのか? (6411) imode対応は、漏れ的に放置気味になってるんで、どなたか落ち穂拾いお願い するです。 (6411) 板ダイジェストには、板毎ヘッドラインの差込が必要だな…どこかに差込テキ ストの仕様、落ちてないかしら。意図的にbbs.cgi(と思われるもの)の参照を 避けてるから… (6411) ↑いろんな設定ファイル・差込ファイルのありかがわかった。でも、やるだけ 無駄になる可能性があるから、マターリ逝くよ… (6411) もうみんな知ってるとは思うけど、 M-x c-set-style linux のスタイルが、現行のソースにいちばん合ってると おもう。ちなみに漏れのデフォルトは gnu (鬱 (6411) ↑実は自分がそのスタイルだったり... linuxがスタイル一覧にないときは (c-set-style "k&r") (setq c-basic-offset 8) してもよし。 (| --)) - * - 【USE_INDEX メモ】 まだあぼーんに対応していない。 排他制御が実戦でマトモに動くかどうかは検証していない。 まだ、十分な行インデクスを生成していない。生成させることは難しくない。 (6411) 【mmap(2)教室】 本格的にmmap(2) basedなコード書くのが初めてな漏れ。気づいたことを書くっ す。っていうかこれまで標準Cライブラリしか使ってなかったからのー。 (6411) * MAP_PRIVATEのときは、lengthで確保した領域は全部使用可能。た ぶん、元々のファイル長を超えた部分は0のはず。 * MAP_SHAREDのとき、length 0のファイルに対しては、mmap()が成功 する。ただし、オフセット0 のアクセスすらsegmentation faultを 起こす。 ↑読み込み用にmapしてるんなら、ファイルサイズ分を超えての アクセスは常にまずいんでないかな? length=0なら当然先頭バイトは 長さ1ないとありえない場所だし。 ↑なるほど、「アクセスできないアドレスを返す」ってのはそれは それで直交性がある、と解釈するのね。ちなみに長さ1のファイル に対しては、1ページ分読み書きできるようだ。もちろん1を超えた 領域への書き込みは捨てられるけど。(6411) ↑それはつまり、ページ単位で割り当てている点自体が実装上の 都合であって、そのサイズを格納できる最小のページ数を割り当て ているんでしょう。ページサイズよりも細かい単位では、たまたま page faultを発生させられないというだけで。 * MAP_SHAREDのとき、lengthを大きすぎる値を指定しても、ページ (x86では4096バイト)きっかりマッピングされ、それを超えたアク セスはsegmentation faultを受ける。 * もちろんmunmap(2)しなくても、close(2)しなくてもプロセス終了 時までにメモリに書いた内容はファイルに反映される。 * munmap(2)しないでclose(2)した場合でも、マップ領域は有効のよ うだ。内部的実装では、mmap(2)のときに参照が増えてる? FreeBSDのman参照した限りでは、「close(2)してもunmapされない」 と明記してあった。 * MAP_PRIVATEは、即座にcommitされるわけではないらしい。ページ に書き込みしない限り、共有イメージが見えてしまうので、走査し てる間に誰かがファイルをいじってしまったら、ちょっと鬱だ氏の う - * - 【部分取得とLast-Modifiedについて】 現在、Last-Modified(以降L-M)は、.datから取得しているが、chunk取得して いる現状にそぐわないと考える。ただ、現状では、ファイルをナメてから L-Mを求めるのは難しそうなので…どうしよう。 (6411) - * - 【板ダイジェストとLast-Modifiedについて】 現在の実装では、/board/subject.txt のmtimeを返しているが、subject.txt はsage進行の時は更新されないと思われるので、上位n個スレでsage進行が行 われているとき、正しいものが取れなくなる可能性はある。 | 新スクリプト(要するに今使っているbbs.cgi)では、 | sageレスも必ずレス数にカウントされるので、 | 並べ替えは起きないものの、subject.txtの更新は行われていると思われま | す。 ↑というタレコミがあった。 本来ありぬべき動作は、最新10スレのmtimeのうち、最新のものを返す べきである。 (6411) - * - 【カーネル資源・プロセス資源の後始末に関して】 ちょっと行儀悪いんだけど、グローバルヒープはいちいちfree()すると、効率 悪いと思う。対話型でも常駐サービスでもないCGIは、資源の開放はみーんな カーネルに任せてしまってもいいんではないか? と漏れ的には思う。ちなみに プロセス終了時、malloc()した空間をfree()してるわけではない。brkした部 分を関知せず、プロセスごと捨ててるハズ。 殊にmunmap(2)は、PTE(MMUのページテーブル)の解放を伴うため、TLB(MMUのペー ジキャッシュ)がフラッシュされる。プロセス実行中にこれを行うのは、SMPシ ステムの場合は決して軽い処理ではない。Linux-2.2だと、SMP周りは貧弱と認 識してる。なので、mmap(2)した領域は放ったらかしにしてるのだ。 XXX 詳しくは知らないんだけど、close(2)した後は、munmap()も一緒に行われ るんではないかな? だとしたら、read openしたfdは放置しといた方が結果的 にベターかもしれぬ。どなたか突っ込み求む。 ↑ウソ。少なくともFreeBSDでは、close(2)してもmunmap(2)されない。(6411) 気持ち悪いとは思うんだが、速やかに処理を終えるべきCGIと割り切って、な るべく積極的に後始末をサボりたいんだが、どうだろう? って話題はちょっと 前にprog板にスレ立ってたような気もしたーり。 (6411) - * - /* * どーでもいーんですが、Cソース中、 * read2ch.hだけEUCですな(藁 * ソースのdiff取るときにちょっと悲しいことが起きてしまう。 * どうしよ。個人的には全部EUCにできるなら * したいところではある。(6411) */ 連絡先 6411 mailto:webmaster@psychedance.com