index の複数形

index の更新処理をするメソッドの名前で迷っている。 updateIndexes とすべきか、 それとも updateIndices とした方がいいのか?

(index の複数形は indices である)

どうでもいいといえばどうでもいいんだけど、気になったので。
とりあえず検索してみるとこんなのが。

OED gives both indexes and indices as the plural, without comment*.

Mathematical examples I looked at were mostly indices.
Computing examples, mostly indexes.

へぇ。というわけで、indexes も間違いじゃないというか検索のコンテキストなら indexes のが普通っぽい。実際に Web で OED を引いてみると本の索引の場合は indexes、数学の場合は普通(normally) indices だと書いてある。MySQL では "indexes" と呼んでいるといっている人もいるけど、そういえば MySQL でインデックスを表示するのは "SHOW INDEXES" だったりするな。
ちなみに OED ってのは Oxford English Dictionary。検索はこのへんから。

追記

Google の検索結果は "inverted indices" より "inverted indexes" のほうが多いようだ。

OOWeb

OOWebにはめられた。
ことの経緯はこう。簡単な検索サーバが欲しくて、わざわざ Servlet/JSP Container 使うのもあれだし、自分で ServerSocket とか使ってマルチスレッドでサーバ書くのも面倒だっつうことで OOWeb を使って簡単に済ませようと思ったのだ。
で、サンプル見ながら「おぉ、簡単だ」なんて喜んでたのも束の間、レスポンスの MIME Type を変更すると動かない。MIME Type を変更するサンプルは

    public String xmlTest() {
        HTTP.setMimeType("text/xml");
        return "<?xml version=\"1.0\"?>\r\n\r\n<root><word>this</word><word>is</word><word>XML</word></root>";
    }

と超簡単。間違えようもなさげ。で、OOWeb のソースコードを追っかけると、net.sf.HTTPResponse にこんなのが。

    private void sendOk() throws ResponseCommittedException {
        startResponse(HTTPResponse.CODE_200, (mimeType != null ? mimeType : DEFAULT_MIME_TYPE));
        if(sessionCookieRequired)
            responseCookies.add(new Cookie(applicationName, StringUtils.generateUUID()));
        addCookiesToResponse();
        if (mimeType == null || mimeType.equals(DEFAULT_MIME_TYPE))
            addToResponse("");
    }

んん?mimeType が null かデフォルト値と等しいときだけ何かしている。いやな予感がする。ためしに上の xmlTest を telnet を使ってテスト。

% telnet localhost 1234
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
GET /xmlTest HTTP/1.0

HTTP/1.1 200 OK
Content-Type: text/xml
Server: OOWeb
Set-Cookie: MyOOWeb2=uuid:b30b0f01-140b-d617-66cf-7661696f6246; path=/;
<?xml version="1.0"?>

<root><word>this</word><word>is</word><word>XML</word></root>
Connection closed by foreign host.

うわー。HEADER と BODY の間に空行がはいってねー。これかー。そもそもあの if 文いらなくね?
ていうかさ、

            // Does the response from the object contain an HTTP response 
            // code? if not, we'll stick on our default 200 OK
            if(!applicationResponse.toString().startsWith("HTTP")) 
                response.sendOk(applicationResponse.toString());
            else 
                response.sendRaw(applicationResponse.toString());

これってどうよ?あ、applicationResponse ってのは上の xmlTest みたいなメソッドで返したオブジェクトね。
あぁ、しかし、これで、また TODO にバグ報告が追加ですよ。まだ python-cdb のも報告してないのに。早くしよ。

Emacsのインデントスタイル

at-aka さんによりエントリ。個人的には割りと知っていることが多いけど、まとまっているのが良い。Emacs で C のソースを書くときの Tips はいろいろあるので、そのうち後追いエントリを書こう。
で、見てて思ったんだけど、Emacs のデフォルトは GNU style なので本来なら

void foo(int n)
{
  if (n != 0)
    {
      int i;
      for (i = 0; i < n; i++)
        {
          printf("%d\n", i);
        }
    }
}

といったインデントスタイルなんだけども、知ってか知らずか、設定だけそのままで

void foo(int n)
{
  if (n != 0) {
    int i;
    for (i = 0; i < n; i++) {
      printf("%d\n", i);
    }
  }
}

とする人は案外少なくない。
それならインデント幅4くらいのほうが良くないかとか思ったりするんだけどなぁ。まぁ、慣れの問題なのかも知れないが。
でも、それより、インデント幅が 2 でタブ幅 が 8 だからところどころにタブが入ることのほうが問題のような気もするが。その辺もあわせてあとで書こう。