[トップ][一覧][最近の更新]

archives/2005/08/26

運用方針

2005/08/26/移行作業その2の変更によって、 Sageなどを使っていると、しょっちゅうページを改変することで、 RSSの本文がdiffだらけになってしまうので、 ネタを書くのは1回きりにしておいて、変更点は[ノート]に追記するようにしよう。

移行作業その3

RSSの<content:encoded>をdiffにするか全文にするのか、 悩んだあげく、選択できるようにした(wiliki-rss.scm.diff)。

ただし、wiliki.scmの<wiliki>のスロットに

   ;; RSS content output is ALL, not diff
   (rss-content-all :accessor rss-content-all-of :init-keyword :rss-content-all
                    :init-value #f)

を追加しなければ動作しない。

こちらのひとり遊びページは:rss-content-all #tで。 HSPWiKiは#fで運用してみることにしよう。

Note:移行作業その2

  • <content:encoded>はこのままdiffで通すか、本文のCDATAにすべきか……
  • <wiliki>に選択できるようにスロットを追加すべきかなあ。

Note:運用方針

  • あ、そうか。『「最近の更新」に登録しない』を使うという手もあるのか。

移行作業その2

とりあえずWiLiKiのRSS出力まわりをイジイジ。 rss.scmの出力は貧弱すぎるので、強化(wiliki-rss.scm.diff)。

変更点は3点。

  1. /rdf:RDF/channel/dc:dateを追加(これは実効性がどの程度あるのか不明)
  2. /rdf:RDF/item/content:encodedを追加(変更点との差分出力。色付き)
  3. /rdf:RDF/item/descriptionを追加(本文をはじめの200文字まで出力)

<content:encoded>は変更点の前後も出力したほうがいいのかなあ。ちょっと面倒そうだ。 とりあえずW3CのRDF Validatorもパスしてるみたいだし、 これ以上深追いはしないでおこう。

次はCSSでも書き直しますかね。

is-strlcpy-useful

結構嫌う人も多いらしいです。なんででしょうね。

ちょっと凝ったことをするときは、OpenBSD-man:snprintfの方がいろいろ楽かもしれません。 といっても、こちらは返り値が0以下を返すこともあるので、 このときの処理を忘れたらいけないのが少しだけ面倒です。

strlcpy,strlcatはANSIでもPOSIXでもありませんが(OpenBSD-man:strlcpyのHISTORY参照)、 *BSDに入っているTodd氏の実装はANSIで書かれたISC BSD Licenseなコードなので、 勝手に組み込まれて困る人は少ないでしょう。 autoconfでチェックして、無いなら自前のコピーをぶち込むのが常套手段です。 OpenBSDの版のコードの最終更新もすでに2年前ですし、 安定しているといっていいと思います(OpenBSD-cvs:src/lib/libc/string/strlcpy.c)。


余談

  • snprintfで思いだしたのですが、 たなかさんが以前紹介されたASFRecorderのコードをちょっとだけ読んだのですが、尋常じゃないコードでした。やばい。 こんなの。
    int main_function(int argc, char **argv)
    {
        ...
        unsigned char Buffer[MAX_CHUNK_SIZE];
        ...
        char *bufptr;
        ...
        bufptr = Buffer;
        bufptr+=sprintf(bufptr,"GET %s HTTP/1.0\r\n", proxy == NULL ? file:full_path);
        ...
        bufptr+=sprintf(bufptr,"Accept: */*\r\n");
        bufptr+=sprintf(...);
        bufptr+=sprintf(...);
        bufptr+=...
        ...
    
    何が起こるのか想像が付かない。やばすぎる。 他にもツッコミどころ満載。 1関数あたりの行数が異様に長いところとか、 ちょっとやそっとでは修正不可能なくらいグチャグチャです。 作者はどうやってC言語を学んだのでしょうか。 とても興味深いですね(棒読み)。
  • 他の例。ときどき見かけるコード。
    strcat(strcat(strcpy(x, y), z), w);
    
    こういうコードなんか見つけるとlispかよ! と、いつも心のなかでツッコミをいれてしまうのですが。