Misc Change Log

`OpenBSD で scheme のアプリ開発' みたいなことをやってます。

2005-02-28

会話ページの重要性

http://wikimediafoundation.org/...

via: http://joesaisan.tdiary.net/20050222.html#p02

とても興味深い。本文よりツッコミのほうが多い Wiki ページがいかに多いことか。 「会話ページ」があれば、意見の相違によるページの消し合いもある程度まで抑えこめる、 といった効果も見込めるだろう。

早速、 HSPWiki(WiLiKi) にも実装してみた。

wiliki.cgi に以下を追加。

(define (note-link page)
  (let ((key (ref page 'key)))
    (and (ref (wiliki) 'editable?)
         (wiliki:persistent-page? page)
         (if (#/^Note:/ key)
             ""
             `(a (@ (href
                     ,(wiliki:self-url "~a"
                                       (string-append "Note:" key))))
                 "[ノート]")))))

(define (my-page-header page opts)
...
            ((wiliki:edit-link page))
            ((note-link page))
            ((wiliki:history-link page))
...)

国際化無視。本来ならばメッセージカタログもきちんと書いたほうがよい。

Posted at 04:33 | Permalink | Category | Comments
2005-02-27

trivial-configuration-parser

CL のための初期化ファイルパーサ。

http://www.cliki.net/...

via: http://www.iscblog.info/blog/display/60

どことなく perl のような文法。 lisp を知らない人(というか括弧嫌いな人)でもこの形式ならば、 アプリケーションの挙動をカスタマイズできそうな感じである。

asdf

scheme に移植しようかしら。もう誰か書いてるかな?

追記: clisp をしばらく使ってなかったので asdf の使い方を忘れつつある。とりいそぎメモ。

とりあえずパッケージは ~/lib/common-lisp 以下に格納するとして、

~/lib/common-lisp に asdf を展開。 後は ~/.clisprc.lisp に

(load "~/lib/common-lisp/asdf-init")

を書いているか確認。 asdf-init は確か CMUCL に入っているやつのパクり。こんなやつ。

(in-package :openbsd-asdf)
(defvar *asdf-pathname*
  "~/lib/common-lisp/asdf/asdf"
  "Path of the ASDF library")
(defvar *system-registry*
  "~/lib/common-lisp/system-registry"
  "OpenBSDs contribution to the entral registry for ASDF system
definitions.  This will be added to asdf:*central-registry*, you
should modify that in order to add other directories.")
以下略...

インストールは

(asdf:operate 'asdf:load-op packagename)

packagename は今回は 'trivial-configuration-parser で OK。 自動的にコンパイルが始まってインストール完了。

以上。

Posted at 22:06 | Permalink | Category | Comments
2005-02-23

シェルスクリプトへつっこみ

via: http://d.hatena.ne.jp/...

/Program Files みたいな名前除けに "" でくくってやる必要があるかと。 「NetBSD だから無い!」なんてのは無しの方向で。

mdcd()
{
    mkdir -p "$1"
    cd "$1"
}

ndir も /usr/bin だけで済ませちゃう。とか。

ndir()
{
    # $d: 最後のシーケンシャルなファイル名を拾う
    local d=`ls | egrep '^[0-9]+$' | sort -n | tail -1`
    # $w: ファイル名の文字数
    local w=`echo $d | wc -c | rs 0 1`
    if [ "$d" = "" ]; then d=-1; w=1; fi
    printf %0`expr $w - 1`d `expr $d + 1`
}

Posted at 13:20 | Permalink | Category | Comments
2005-02-22

nerdiness

http://www.wxplotter.com/ft_nq.php?

ああ やっぱり おれ は ナード だ った の か。

おわって る。

http://quasiquote.org/images/nerdiness.ps

via: http://www.soraneko.com/...

Posted at 00:00 | Permalink | Category | Comments
2005-02-21

gimp の CMYK プラグイン

http://www.blackfiveservices.co.uk/...

via: http://pc5.2ch.net/...

画像を C,M,Y,K の各レイヤに変換したり tiff で保存したりする gimp プラグイン。 gimp って CMYK サポートしてないから仕事に使えないや、という人向け。

インストールは README にあるけど、 カラープロファイル AdobeICCProfiles.zip をダウンロードして /usr/share/color/icc (これはソース中の platform_unix.h に依存)にコピーしておくこと。 sRGB/sRGB Color Space Profile.icm も同様。 あとはコンパイルして ~/.gimp-x.x/plug-ins へ放り込むだけ (要 lcms。でも gimp-2.x がインストールされているならば普通入っているはず)。

Image->Separate->Separate(normal or Colour) で分割して Image->Separate->Save で保存。

といっても、カラー原稿を写植に出すことないからなあ。いちおうメモ。

Posted at 11:59 | Permalink | Category | Comments

SoftWire

http://softwire.sf.net/

via: http://diary.okotama.org/?date=20050220#p07

OpenBSD でも普通に動くようだ。

ところで、ctime の第一引数は long* ではなく、const time_t* ですぞ。

Assembler.cpp:196
            const int t = time(0);
            fprintf(file, "\n;%s\n", ctime((long*)&t))

ここ。 というか、この間違いどっかでみたと思ったらちょっと前までの Bigloo だった。 今は直ってるみたいだけど。

あ、そうそう。 Makefile.gcc を

CC= libtool --tag=CXX --mode=compile g++
LINK= libtool --tag=CXX --mode=link g++
OBJEXT = .lo
...
$(OUTPUT): $(OBJECTS)
        $(LINK) -o $@ $(OBJECTS) -no-undefined -rpath ${prefix}/lib
...
$(TESTAPP): $(TESTOBJECTS)
        $(LINK) -L$(LIBDIR) -o $@ $(TESTOBJECTS) -lSoftWire
...
%.lo: %.cpp
        $(CC) $(CFLAGS) -c $<
...
clean:
    libtool --mode=clean rm -f $(OUTPUT)
    libtool --mode=clean rm -f $(TESTAPP)
    libtool --mode=clean rm -f *$(OBJEXT)

にすると libtool を使った .so なライブラリができる。 Makefile しかないときはいつでもこの方法が使える。おすすめ。

まあそれは置いといて、なかなかおもしろいっす。 Gauche へポートしてごにょごにょするかね。それこそ Bigloo とか chicken なら簡単にできそう。

Posted at 10:52 | Permalink | Category | Comments
2005-02-20

SHA-1 Broken(その2)

via: http://blogs.yahoo.co.jp/tmata_yaho/91744.html

なるほど、攻撃者がどうしようもなく愚かであったならば、その議論は成り立ちますが、 それには、この攻撃アルゴリズムを使い続けることが前提となります。

いまのところこの論文は公開されていないようですが、公開されてしまえば、 攻撃アルゴリズムを洗練することができるわけです。

実際、 SHA-1 のラウンドが残り 46/80 と言われていた のが 2004 年の 8 月です。 それから残りのラウンドの攻撃には半年しかかからなかったことになります。

セキュリティの攻撃への激しさといえば、極端な例が上のリンクにありますが、 ToyoCrypt は 2002 年に 296 だったのが、 2004 年には 229 のオーダになってしまった、と報告にあります。

これはハッシュではなくストリーム暗号なので簡単に比較することはできませんが、 弱いと判断された暗号やハッシュのアルゴリズムは徹底的に攻撃方法を解析される、 というのがこの業界のようですので、 SHA-1 の命運は尽きた、といって間違いないでしょう(これからどれくらいのオーダまで減らすことができるか見物ですね)。

それにセキュリティはいつも安全側へ振っておくほうがよい、 とされています(問題があってからでは遅い)ので、 安全であると主張するには慎重であったほうがいいと思います。

追記:

リサーチノートが公開されたそうです。

ねた元:武田氏のブログ

Posted at 22:17 | Permalink | Category | Comments
2005-02-17

なつかしいのう

http://d.hatena.ne.jp/yomoyomo/20050217#game

ジッピーレースのことかー(AA略

ファミコン版はスペランカーとおなじく謎の発光ダイオード付き。

Posted at 11:05 | Permalink | Category | Comments
2005-02-16

SHA-1 Broken

とうとう SHA-1 も終わりか。

SHA-1 Broken

via: http://www.st.ryukoku.ac.jp/...

自家製ソフトは SHA-256 に移行作業中。

そういえば、ハッシュの次の候補はあるのだろうか。 氏の言うように、暗号だけではなく ハッシュに関してもコンペをやらないといけないのかもしれない。

Posted at 17:58 | Permalink | Category | Comments

ひさびさにきた爆撃系

暇だったのでログをみていると驚いた。 Wiki のファイル全部もっていかれてた。 いや、それは別に構わないのだけれど、取得方法がえげつない。 robot.txt なんて無視だし、時間を空けて取得なんて上品なことはしない。 たぶん meta も読まないんだろうなあ。試してないけど。

で、リファラUser-Agent が "Website Explorer/0.9.7"。

ぐぐったらさいしょに出るこれのことだろう。

http://www.umechando.com/webex/

なんじゃこりゃ

利便性を説くばかりでサーバ側の拒否方法について何も書かれていない点が素晴らしい。

いいかげんにしろ

さっそく deny 行き。

こういう横着な再帰ダウンロードソフトの類ってもうとっくに滅んだと思ったのにねい(除く msnbot)。

もう一度書いておくけど、ミラーがいけないって訳ではない。 そうじゃなくって、ネットワーククライアントのお約束を守ってソフトを書いて欲しいなあ。という話。

余談:

ちょっとダウンロードして起動してみた。 デフォルトの設定に「CGIファイルのリンク先チェック」っていうのがオンになっているのだけど、 どうやって cgi かそうでないか判定してるのだろう。謎。

Posted at 16:37 | Permalink | Category | Comments
2005-02-07

gcc3 の最適化オプション(その2)

以前のまま放りっぱなしのままでは何なので、落穂拾い。

結局、現在は

COPTS=-O2 -march=pentium4 -mcpu=pentium4 -fstrength-reduce -fprefetch-loop-arrays -pipe

でカーネル、ports を含むユーザランドを再構築して運用している。

-fprefetch-loop-arrays はなかなか面白いオプションだ。man によると、

-fprefetch-loop-arrays
    If supported by the target machine, generate instruc-
    tions to prefetch memory to improve the performance of
    loops that access large arrays.

抄訳

-fprefetch-loop-arrays
    ターゲットマシンがサポートしているのならば、
    巨大な配列へのアクセスするループに対して
    パフォーマンスを向上させるためにメモリをプリフェッチする
    インストラクションを生成します。

vm や物理計算など、 配列をガシガシいじるプログラムに最適らしい。 Pentium なら Pentium III 以降でこのオプションが使えるようになる(デフォルトではおそらくオフ)。 ただし -Os と併用はできない、などの注意点はある。

ベンチマーク。配列計算といえばこれ。姫野ベンチ。 SMALL モード で 3 回連続実行してみた。列は回数、単位は MFLOPS である。

-O3 -DSMALL -O2 -march=pentium4 -fstrength-reduce -fprefetch-loop-arrays
349.854312 375.026538
350.596776 377.537923
349.413404 375.862571

Pentium M 1.3G は Pentium III 600MHz 比で x4.5 くらいか。 Pentium M の底力を見たような気がする。

実用上は違いがこれほど先鋭に出ることはないだろうが、なかなかおいしい。 ちなみに -mfpmath=sse をつけるとかえって遅くなるようだ。残念である。

Posted at 16:53 | Permalink | Category | Comments
2005-02-04

firefox の ipv6 DNS クエリをオフに

bookmark のフォルダ全体を`このタブで開く'で開いた時のもっさり感が気になっていたのだが、 原因はどうもこれらしい。

デフォルトで network.dns.disableIPv6=false になってたのでさっそく user.js に、

user_pref("network.dns.disableIPv6", true);

を追加。ページ表示の待ち時間が以前に比べ、体感できるくらい速くなった。

ipv4 しか存在しない環境だと ipv6 の DNS クエリは却って無駄になるんだな。

しかし、なんというか、挫折感ありまくり。 とはいえ、いつか ipv6 ready になったときに無効にできるようにメモ。

*BSD は裏でカメさんが動いているから、 いつでも ipv6 へ移ることは原理的に可能なんだけど、いつになるのやら。

Posted at 20:11 | Permalink | Category | Comments
2005-02-03

HSP Wiki が DDOS されたよ

複数のマシン経由でやられました。

対策を考えないと。

Posted at 17:50 | Permalink | Category | Comments
2005-02-01

libarchive を使ってみた。

ここのやつ src/lib/libarchive/

README から対応アーカイブ形式を引用してみる。

先月あたりに pkzip にも対応したので、実用としては十分。 アーカイブ形式をライブラリが自動認識するので展開コードに専念できる。なかなかよい。

Makefile が FreeBSD 専用になっているので、FreeBSD 以外でビルドするには、

$ make distfile

で一旦 configure を作成すべし。

簡単展開ルーチンの例。 これだけで上記アーカイブ形式を展開することができる。

いろいろ使い道がありそう。

追記: 公式ページがあるらしい。http://people.freebsd.org/~kientzle/libarchive/

Posted at 17:40 | Permalink | Category | Comments