一昨日の日記を補完。
昨日から延々とサーバ構築。 SCSI HDD の騒音に耐えかねて再インストール決行。 旧おうちサーバで使っていた 20GB IDE HDD を入れて IDE 10GB + 20GB 体制にする。 データの転送に時間をとられた *1ため、ほぼ二日間の間メールの読み書きができなかった。
へロインの語源ですが、 Pocket Oxford Dictionary をみると
[German: related to HERO, from the effect on the user's self-esteem]
とあります。薬として製薬会社が作った名前みたいです。 Encyclopdia Britannicaあたりも参照。
細川さんは AirStation も 買ったらしい。無線 LAN 関係だけでいくつ揃えているのか :-)。試した結果を詳しく Web に掲載されているのでとても参考になります。
ビデオテープの整理。山梨と八王子で二重に録画していた分などを整理する。 S-VHS デッキを買う前に録画した VHS 時代のテープの大部分も整理。これらのテープは 消去して、 VHS は家族に譲渡。 S-VHS なテープは再使用へ。
これで部屋の床に置いてある荷物がなくなるはず。引っ越しから二ヶ月もかかって 荷物整理が終了か。
国民年金関係の手続きをしに市役所へ。
ムラウチに行って買い物:
毎月予約購入していたのも今月で終わり。ちょっと寂しい。
校正を出して今回はおしまい。あとは某イベントの結果のチェックがある。
SCSI の信頼性ですが、以下の点で IDE をかなり見直したところです。
係うらないの結果は新聞部。志保タイプなのか?
自分の思いをストレートに表現できるので恋愛成就率は高い。
全く違うよん。というか高くなって欲しい :-)
係といえば、小学校の時はよく役員とか委員長になってましたね。 室蘭の知利別小学校は児童にいろいろやらせてくれるので非常にやりがいが ありました。小 6 の途中で八王子に転校してからは、教職員組合の申し合わせ *1とかで放課後に残って作業することが禁止されていたのでやる気が失せたのです。
fj.comp.lang.c で話題になっている comb sort について某所で聞かれたので まとめてみる。出典は日経バイト 1991 年 11 月号。
comb sort は bubble sort の改良である。 bubble sort は単純だがかなり遅いという 欠点がある。遅い理由は
亀の移動を早くするために、 1 以上離れた要素を比較するようにしたのが comb sort である。説明するよりコード *1をみたほうが早いだろう。
void combsort (int *data, int size) { int hold; int gap = size; int done = 0; while ((gap > 1) || !done) { gap = (gap * 10) / 13; if (gap == 0) gap = 1; done = 1; for (i = 0; i < size - gap; ++i) { if (data[i] > data[i + gap]) { hold = data[i]; data[i] = data[i + gap]; data[i + gap] = hold; done = 0; } } } }
ソートの様子は間隔があいた櫛 (comb) ですいていくのに似ている。
という感じである。 1.3 というのは数多くのデータを sort して実験的に得た数値とのこと。
comb sort の改良版である。 comb sort では比較する要素の間隔を 1 / 1.3 して いくが、間隔は整数値なので次のいずれかの数列になる。
このうち c では間隔が 1 になる前にすべての亀が移動するが、 a, b では約 8% の亀が残存してしまう。このため、間隔が 9, 10 の場合には強制的に 11 にする ことによって速度向上を図ったのが comb sort 11 である。
void combsort11 (int *data, int size) { int hold; int gap = size; int done = 0; while ((gap > 1) || !done) { gap = (gap * 10) / 13; if (gap == 0) gap = 1; if (gap == 9 || gap == 10) gap = 11; done = 1; for (i = 0; i < size - gap; ++i) { if (data[i] > data[i + gap]) { hold = data[i]; data[i] = data[i + gap]; data[i + gap] = hold; done = 0; } } } }
この comb sort 11 は、
という特徴を持つ。
私は 9 年前に日経バイトの記事を読んで衝撃をうけたのですが、その後はほとんど 話題にならなかったですね。今回 fj.comp.lang.c で話題になっているのを見て 懐かしくなってまとめて *2みました。
昨日 例に出したサーバは www.jp.FreeBSD.orgのほか、 FreeBSD の最新版のソースを提供する CVSupのサーバ、メールの配送まで担当しています。 CVSup のような HDD へのアクセスが 激しい用途にも使えています。
信頼性についてですが、秋葉原で出回っている大容量 SCSI のほとんどが 10,000 回転の ものです。きちんと冷却して使える環境ならいいですが、でなければ高熱で マシン全体の信頼性を下げる結果になりかねません。寿命が短い IDE の話は よく聞きますが、高熱で自滅した HDD も何度か経験しました。
なお CPU の負荷は SCSI より若干高い気もしますが、 CPU を高性能にして解決した ほうが割安でしょう。
FreeBSD-SA-00:19.semconfigについて、記述の一部が 間違っているらしい。もうちょっと注意して出して欲しいなぁ。
gorry さんとこから ここへ。そして 日本医大の公式アナウンスへ。この手の chain mail は非常に迷惑だよなぁ。当事者は善意で回しているだけに 悲惨。特に医療関係ってネット上の常識がない人が多いから。
迷惑を受けるのはメールを普段からよく受け取る人と (病院側の) 当事者に限られて しまうので、迷惑さに気づかない人が多いのだろうな。
久しぶりに車を洗車してワックスがけ。ワックスかけたのはたぶん去年の秋以来。 非常に汚れていてとても疲れた。
天気予報では週末は天気が悪いと言っていたような記憶があるんだけど、 今日は晴天でかなり暑くなった。夜になっても部屋の温度がなかなか下がらない。 扇風機を出した。
一昨日のコードを一部訂正。あー、恥ずかしい。
今日届いた OB 会報を見て、いつのまにか こんなのが出来てたのでびっくり。時代が変わったんだな。
Windows の再インストール。 Windows98 Second Edition Upgrade をインストール するには、 Windows98 がインストール済みでないとダメらしい。まっさらからの インストールだと二度手間なので面倒。
昨日書き忘れたこと。おうち LAN につながっている父の PC では Microsoft の Outlook を使っている。 Microsoft のメールソフトは怖いので、念のために Norton Antivirus を買ってきてチェック...。
25 個も感染しているファイルがあるよ (@_@;;。 Microsoft Word に感染するタイプで 全部同一種類のウィルス。うーむ。
幸い、うちにある他の PC は問題なし。
昨日に引き続き環境構築。 Adaptec EZ-SCSI のインストールに必要な ID 番号が 記された紙をなくして非常にあせったが、バックアップしてあった Windows の registry にそれらしき番号が記録されていたので助かった。
ところが、 EZ-SCSI を入れたあたりから Windows が挙動不審状態に。 やりきれないなぁ。
Windows マシンである eddieに OpenBSD 2.7 を、 asukaに NetBSD 20000527 snapshot をインストール。これで NetBSD i386 を常用できる マシンができた。 OpenBSD も必要に応じてテストできるようになる。
夕方、犬の散歩のついでに近所の本屋で買い物:
後者は Raise the Titanic! で有名なダークピット・シリーズのサイドストーリー 的なお話。
の最後のやつが仕上がってきた。早速読んでチェック。
夕方の犬の散歩で郵便局へ。 Wnn6 の追加ライセンスが期間限定で 1,575 円 / ライセンス (通常は 4,000 円) となっているので申し込む。ちょうど追加しようと 思っていたところなので良かった :-)。
某 DVD シリーズの第 1 期と第 2 期の全巻購入特典を申し込む。 600 円の定額小為替 x 2。
某 ML に welcome 宴会のアナウンスを流す。会場が狭いのがネック。
NetBSD i386 の snapshot は既に ELF 化されているので、 1.4.X の aout バイナリを 動かす場合は aout 互換環境を作成する必要がある。
普通はあまり必要がないかもしれないけど、私の場合は CVSupの NetBSD i386 aout 用の native なバイナリ *1を使いたかったので必要だった。
cd /usr/src/basesrc ln -s ../cryptosrc-intl/crypto-intl . ln -s ../gnusrc/gnu . ln -s ../sharesrc/share . ln -s ../syssrc/sys . cd usr.sbin ln -s ../../syssrc/usr.sbin/* .
NetBSD の crypto-intl には現在 RSA 関係のファイルが含まれていない。 利用する場合は OpenSSL のソースを別途入手する必要がある。現在の crypto-intl の OpenSSL は openssl-0.9.4 がベースになっているのでこれを使う。最新の 0.9.5a ではダメなので要注意。
PATENTEDOPENSSLSRC= /usr/src/openssl-0.9.4を指定しておく。
この処理は面倒なので、 make する時に NO_RSA, NO_IDEA とか指定すればいいように cryptosrc-intl のソースに変更を加えておくといいような気がする。 誰に言えばいいんだろう?--- cryptosrc-intl/crypto-intl/Makefile.openssl.orig Fri Apr 7 21:03:36 2000 +++ cryptosrc-intl/crypto-intl/Makefile.openssl Wed May 31 19:41:52 2000 @@ -10,6 +10,8 @@ .if !PATENTEDOPENSSLSRC CPPFLAGS+= -DNO_IDEA -DNO_RC5 -DNO_RSA +.else +CPPFLAGS+= -DNO_IDEA .endif .endif --- cryptosrc-intl/crypto-intl/lib/libcrypto/Makefile.orig Fri Nov 26 09:51:45 1999 +++ cryptosrc-intl/crypto-intl/lib/libcrypto/Makefile Wed May 31 19:44:08 2000 @@ -57,7 +57,7 @@ .if PATENTEDOPENSSLSRC .include "psrcs.inc" -INCS+= rsa.h rc5.h idea.h +INCS+= rsa.h rc5.h INCS+= rsaref.h .PATH: ${OPENSSLSRC}/rsaref @@ -78,7 +78,6 @@ .if exists(${PATENTEDOPENSSLSRC}/crypto) (cd ${.CURDIR}; find ${PATENTEDOPENSSLSRC}/crypto/rsa \ ${PATENTEDOPENSSLSRC}/crypto/rc5 \ - ${PATENTEDOPENSSLSRC}/crypto/idea \ -name Makefile.ssl | \ perl ../../dist/openssl/extsrcs.pl \ -D '$${PATENTEDOPENSSLSRC}' 2> psrcs.inc ) --- cryptosrc-intl/crypto-intl/lib/libcrypto/psrcs.inc.orig Fri Jul 23 10:33:00 1999 +++ cryptosrc-intl/crypto-intl/lib/libcrypto/psrcs.inc Wed May 31 19:42:36 2000 @@ -1,3 +1,2 @@ .include "rsa.inc" .include "rc5.inc" -.include "idea.inc"
/usr/src/basesrc にて make build する。いま実行中 :-)
こんな symlinkしないで basesrc, cryptosrc, gnusrc, sharesrc, syssrc の下を同じにしちゃえば *2いい気もするが、そうすると各ファイルが CVS リポジトリのどこに対応するか わからなくなってしまうので、あえてこうしている。
/usr/src/syssrc/arch/i386/conf にて、 GENERIC を書き換えて config file を書く。 FreeBSD の場合と違ってきちんと把握してないのでちょっと時間がかかる :-)。 soft update を有効にする場合、
cd /usr/src/syssrc ln -s ../gnusrc/gnu .
を行う。