会話ページの重要性
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))
...)
国際化無視。本来ならばメッセージカタログもきちんと書いたほうがよい。
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。
自動的にコンパイルが始まってインストール完了。
以上。
シェルスクリプトへつっこみ
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`
}
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 で保存。
といっても、カラー原稿を写植に出すことないからなあ。いちおうメモ。
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 なら簡単にできそう。
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 の命運は尽きた、といって間違いないでしょう(これからどれくらいのオーダまで減らすことができるか見物ですね)。
それにセキュリティはいつも安全側へ振っておくほうがよい、
とされています(問題があってからでは遅い)ので、
安全であると主張するには慎重であったほうがいいと思います。
追記:
リサーチノートが公開されたそうです。
ねた元:武田氏のブログ
なつかしいのう
http://d.hatena.ne.jp/yomoyomo/20050217#game
ジッピーレースのことかー(AA略
ファミコン版はスペランカーとおなじく謎の発光ダイオード付き。
SHA-1 Broken
とうとう SHA-1 も終わりか。
SHA-1 Broken
via: http://www.st.ryukoku.ac.jp/...
自家製ソフトは SHA-256 に移行作業中。
そういえば、ハッシュの次の候補はあるのだろうか。
氏の言うように、暗号だけではなく ハッシュに関してもコンペをやらないといけないのかもしれない。
ひさびさにきた爆撃系
暇だったのでログをみていると驚いた。
Wiki のファイル全部もっていかれてた。
いや、それは別に構わないのだけれど、取得方法がえげつない。
robot.txt なんて無視だし、時間を空けて取得なんて上品なことはしない。
たぶん meta も読まないんだろうなあ。試してないけど。
で、リファラUser-Agent が "Website Explorer/0.9.7"。
ぐぐったらさいしょに出るこれのことだろう。
http://www.umechando.com/webex/
なんじゃこりゃ
利便性を説くばかりでサーバ側の拒否方法について何も書かれていない点が素晴らしい。
いいかげんにしろ
さっそく deny 行き。
こういう横着な再帰ダウンロードソフトの類ってもうとっくに滅んだと思ったのにねい(除く msnbot)。
もう一度書いておくけど、ミラーがいけないって訳ではない。
そうじゃなくって、ネットワーククライアントのお約束を守ってソフトを書いて欲しいなあ。という話。
余談:
ちょっとダウンロードして起動してみた。
デフォルトの設定に「CGIファイルのリンク先チェック」っていうのがオンになっているのだけど、
どうやって cgi かそうでないか判定してるのだろう。謎。
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 をつけるとかえって遅くなるようだ。残念である。
firefox の ipv6 DNS クエリをオフに
bookmark のフォルダ全体を`このタブで開く'で開いた時のもっさり感が気になっていたのだが、
原因はどうもこれらしい。
デフォルトで network.dns.disableIPv6=false になってたのでさっそく user.js に、
user_pref("network.dns.disableIPv6", true);
を追加。ページ表示の待ち時間が以前に比べ、体感できるくらい速くなった。
ipv4 しか存在しない環境だと ipv6 の DNS クエリは却って無駄になるんだな。
しかし、なんというか、挫折感ありまくり。
とはいえ、いつか ipv6 ready になったときに無効にできるようにメモ。
*BSD は裏でカメさんが動いているから、
いつでも ipv6 へ移ることは原理的に可能なんだけど、いつになるのやら。
HSP Wiki が DDOS されたよ
複数のマシン経由でやられました。
対策を考えないと。
libarchive を使ってみた。
ここのやつ src/lib/libarchive/。
README から対応アーカイブ形式を引用してみる。
- gzip compression
- bzip2 compression
- compress/LZW compression
- GNU tar format (including GNU long filenames, long link names, and sparse files)
- Solaris 9 extended tar format (including ACLs)
- Old V7 tar archives
- POSIX ustar
- POSIX pax interchange format
- POSIX octet-oriented cpio
- SVR4 ASCII cpio
- Binary cpio (big-endian or little-endian)
先月あたりに pkzip にも対応したので、実用としては十分。
アーカイブ形式をライブラリが自動認識するので展開コードに専念できる。なかなかよい。
Makefile が FreeBSD 専用になっているので、FreeBSD 以外でビルドするには、
$ make distfile
で一旦 configure を作成すべし。
簡単展開ルーチンの例。
これだけで上記アーカイブ形式を展開することができる。
いろいろ使い道がありそう。
追記: 公式ページがあるらしい。http://people.freebsd.org/~kientzle/libarchive/