Wanderlust -- Yet Another Message Interaface on Emacsen --をインストールする。 で、その前に、APEL-9.13のインストールをやる。
diff -uwr flim-1.12.5.orig/FLIM-CFG flim-1.12.5/FLIM-CFG
--- flim-1.12.5.orig/FLIM-CFG Wed Jan 27 23:12:40 1999
+++ flim-1.12.5/FLIM-CFG Sat May 1 16:17:02 1999
@@ -7,7 +7,7 @@
(defvar default-load-path load-path)
(add-to-list 'load-path
- (expand-file-name "../../site-lisp/apel" data-directory))
+ (expand-file-name "../site-lisp/apel" data-directory))
(if (boundp 'LISPDIR)
(progn
これをやんないと、こんな感じ
Loading /home/george/flim-1.12.5/FLIM-CFG... Please install latest APEL 7.3 or later. XEmacs exiting. *** Error code 255 Stop.で、APELがインストールされていないとゆーメッセージを拝むこととなる。
diff -u -r1.1 SEMI-CFG
--- SEMI-CFG 1999/05/02 02:12:49 1.1
+++ SEMI-CFG 1999/05/02 02:12:57
@@ -7,7 +7,7 @@
(defvar default-load-path load-path)
(add-to-list 'load-path
- (expand-file-name "../../site-lisp/apel" data-directory))
+ (expand-file-name "../site-lisp/apel" data-directory))
(add-to-list 'load-path
(expand-file-name "." data-directory))
変更理由はFLIMの時と同じ。
さて、ここまでインストールしてきたが、Wanderlustは
george@magi ~/wl-0.10.0 $make xemacs -batch -q -no-site-file -l WL-ELS -f compile-wl-package NONE Loading ./wl.el... Use tm. ELISPDIR is /usr/local/lib/xemacs/site-lisp
などと、「tmを使うぜ」と悲しいことを言ってくれる。
Use tm.と判定している瞬間のload-pathはこんな感じ。
("." "./elmo" "/usr/local/lib/xemacs-20.4/lisp"
"/usr/local/lib/xemacs-20.4/site-lisp"
"/usr/local/lib/xemacs/site-lisp" "/usr/local/share/emacs/site-lisp"
"/usr/local/lib/xemacs-20.4/lisp/apel/"
"/usr/local/lib/xemacs-20.4/lisp/auctex/"
"/usr/local/lib/xemacs-20.4/lisp/bytecomp/"
"/usr/local/lib/xemacs-20.4/lisp/calendar/"
"/usr/local/lib/xemacs-20.4/lisp/cc-mode/"
(中略)
"/usr/local/lib/xemacs-20.4/lisp/vc/"
"/usr/local/lib/xemacs-20.4/lisp/viper/"
"/usr/local/lib/xemacs-20.4/lisp/vm/"
"/usr/local/lib/xemacs-20.4/lisp/w3/"
"/usr/local/lib/xemacs-20.4/lisp/x11/")
/usr/local/lib/xemacs-20.4/site-lisp/以下に新しくインストールした apel とか flim とか semi とかを全然見てないぢゃん。 そんなわけで、~/.emacs (ウチの場合は、~/.xemacs/init.elなんだけど) を編集して、標準的なパスの前にsite-lisp以下をぶち込むことにした………けどダメだった。
最終手段として、Wanderlustのコンパイル時に使用されるWL_ELSにload-pathの設定をブチ込んだ(ぉぃ)ところ、うまくいった。
diff -u -r1.1 WL-ELS --- WL-ELS 1999/05/02 03:02:48 1.1 +++ WL-ELS 1999/05/02 03:03:04 @@ -4,6 +4,16 @@ ;;; Original by OKUNISHI Fujikazu <fuji0924@mbox.kyoto-inet.or.jp> ;;; Modified by Yuuichi Teranishi <teranisi@gohome.org> + +; +; 無理にapel置き場をload-pathに追加する +; +(push (expand-file-name "/usr/local/lib/xemacs-20.4/site-lisp/semi") load-path) +(push (expand-file-name "/usr/local/lib/xemacs-20.4/site-lisp/flim") load-path) +(push (expand-file-name "/usr/local/lib/xemacs-20.4/site-lisp/apel") load-path) +(push (expand-file-name "/usr/local/lib/xemacs-20.4/site-lisp/emu") load-path) + + ;;; Code (defun config-wl-package () (load "./wl.el")
ここまでくると、かなり変態の域に到達してるよーな………。
それはともかく、Wanderlust実行時に、apel, flim, semi, emu のパスを知らしめ、さらに load-path の先頭に置いて優先的に認識させるため、以下の行を ~/.emacsなどに追加する。
; ; 無理にapel置き場をload-pathに追加する ; (push (expand-file-name "/usr/local/lib/xemacs-20.4/site-lisp/semi") load-path) (push (expand-file-name "/usr/local/lib/xemacs-20.4/site-lisp/flim") load-path) (push (expand-file-name "/usr/local/lib/xemacs-20.4/site-lisp/apel") load-path) (push (expand-file-name "/usr/local/lib/xemacs-20.4/site-lisp/emu") load-path)
以上の設定で、SEMIを使ったWanderlustが起動するはず。 (一応、Wanderlustが起動する所までは確認した。) それにしても、こんなコトして良いのだろーか? APEL, FLIM, SEMI, Wanderlust, ~/.emacs と、すべてにわたって何かしら変更しているあたりが終わっているよーな気がする………。
背の低い下駄 (MSIのMS-6905)があるんすね。
メモメモ。
ASUSの背の低い下駄、出て欲しいっす。
とゆーのも、ASUS P2Bシリーズのマザーについているリテンションパーツは、Pentium II, Cereron両方対応というユニバーサルリテンションパーツを銘打っていたりします。
で、このユニバーサルリテンションパーツの構造が結構キてたりするので、他のメーカーの下駄はおそらく固定できないんぢゃないかなーと。
実際、ASUSの背の高い下駄は特殊な突起が出ていて、ASUSマザーのユニバーサルリテンションパーツに特別対応してたりするんです。
要するに、下駄はマザーボードとメーカーを揃えるべし、ってコトですね。
オレ的究極ハウツー構造を作成するため、XML Parser for JAVAをゲット。 ちまちまと修行しよう。
なんとびっくり。
freebsd-users-jp [41189] にて、fbsdrootkit.tar.gz なるあやしいアイテムがあることを知った。
早速ゲットしてみて、内容をチェック(ぉぃ)。
わはははは。
全部ソース付きで、とってもナイスな内容じゃねーか。
このfbsdrootkitは、基本的には、root権限を奪ったあとにインストールするトロイの木馬系のソフトってところ。
これを食らったら、dailyなんかでチェックされている重要バイナリ更新リスト出力なんかもあやしくなりそうな気配だから、HDDをフォーマットして再インストールするのが正義かな。
「root exploit」で検索した所、THE LEGACY -- Hacking Archive IIを発見。
今となっては古いけど………ってな所かな?
これだけ揃っていると壮観。
ずいぶんと熱心に準備しているやね〜。
ここに載っているのは、やる側としては基本中の基本ツールなんだろうな。
ちっとはまじめに情報収集しないといかんらしい。
特定のMLへのリンクを張るへぼいEmacs Lispを書いてみた。
;
; FreeBSD-users-jp ML へのリンクを挿入するためのコード
;
(defvar mailing-list-name "freebsd-users-jp")
(defvar mailing-list-number 1)
(defun html-nikki-insert-mailing-list-link-interactive (prompt-ml-name default-ml-name prompt-ml-number default-ml-number)
(list (read-string prompt-ml-name default-ml-name)
(string-to-int(read-string prompt-ml-number (format "%d" default-ml-number)))))
(defun html-nikki-insert-mailing-list-link (ml-name ml-num)
"insert hyper link to freebsd-users-jp mailing list web site."
(interactive
(html-nikki-insert-mailing-list-link-interactive
"Mailing list name : " mailing-list-name
"Mailing list number : " mailing-list-number))
(setq mailing-list-name ml-name)
(setq mailing-list-number ml-num)
(insert
(format "<a href=\"http://home.jp.freebsd.org/cgi-bin/showmail/%s/%d\"> %s [%d] </a>"
mailing-list-name
mailing-list-number
mailing-list-name
mailing-list-number)))
とりあえず動作している模様。
FreeBSD-begginers-jp [5061] にて、サブシェル内部で ( echo $$ )としても、親のシェルのプロセス番号が表示されるとゆー話題があった。
サブシェルには環境変数が引き継がれ、$$は環境変数扱いなので、サブシェル内部でも$$は親のシェルと同じ値になるとゆーのが真相らしい。
実は、オレもtmpfile=`(echo $$)`みたいにして、一時的に使用するファイル名を作ろうなどと思ったことがある。
mktemp(1) (たぶん、OpenBSD 2.1以降とFreeBSDにしか無いコマンド)の方が便利なんだけど、ある程度どこでも動いて、安易に使える代用品として使えないかなー………などと思っていたところ。
で、同じスレッドに ( echo 'echo $$' | sh ) なんてゆー豪快な回答例がったので、早速採用(ぉぃ)。
後日談:( echo 'echo $$' | sh )を使ってテンポラリファイルを作ると、PIDが一回りしたときに同じテンポラリファイル名になってしまう危険があります。
上の技はまじめな用途には使用せずに、mktempを使うか、mktemp相当品を自作しましょう。
ずっと前に購入していた本棚をやっとインストール。
床に積読になっていた本を本棚に格納したら、なぜか本棚がいっぱいになった。
ひょっとして、これから買う本はまた床の上?
SEPP Celeronの全高 58mm MS-6905 の全高 67mm との実測ありがとうございます。
MS-6905でも、本物のCeleronよりは全高があるんですね。
本物のPentium IIよりは背が低ければ問題はないのかな?
(とゆーか、AEGISのNLXケースに入れば問題無いという話も………。)
ASUSの下駄S370の全高は………、すでに人手に渡ってしまって測定不能だったりします。
気が向いたら全高測定おねがいします〜>該当する人〜。
Dualon化によるご利益の話ですが、私の場合も単なる興味本位です。
そんなわけで、今の所xfs.xttがやたらに重い(計算をさぼる新機能を使っていない)ので、P明朝と明朝を別のxfs.xttプロセスに処理させて、Dualonに食べさせたら体感速度があがるのかどうか見てみたいとゆーだけだったりします。
FreeBSD-beginners-jp [9110] から始まるスレッドで、Ctrlキーの押し方に関する議論があったりして。 大まかに分類すると
になるみたい。
ちなみに私は1番目の方法がほとんどで、たまに2番目の方法を使うというパターン。
freebsd-hackers-MLでは、ELFフォーマットのバイナリファイル内部にアイコンデータを埋め込んじゃおうという人が出てきていた。
(Subjectは「Adding desktop support」。)
なんだかWindowsみたい〜。
Walnut Creek CD-ROMからFreeBSD Toolkit 2.2.X/3.Xが出たらしい。
早い話が全部入りらしい。
FreeBSDコレクター(笑)としてはゲットしておきたいアイテムだが、さて、とうしたものか………。
とゆーのも、結局SubscribeしているはずのFreeBSD 3.1Rはまだウチには届いてないという郵便事情の悪さが問題だったり。
(FreeBSD 2.2.7R, 2.2.8R, 3.1Rのうち、まともに届いたのは2.2.8Rのみ。1勝2敗の借金生活なのよん。)
ウチは陸の孤島なんだろうか。
mktempはTurboLinux 3.0JとRedHat Linux 5.2にもあるとのこと。
とすると、堂々とmktemp使っても良さそうですね。
mktempが無さそうなのは、SunOS4.1.xとか、超古いOSだけかな?
メモメモ。
Wanderlust-0.10.0に対するパッチ。 wl-summary.el内部のwl-summary-overview-create-summary-line関数に以下のパッチをあてる。
*** wl-summary.el 1999/05/06 14:29:09 1.1 --- wl-summary.el 1999/05/06 14:30:23 *************** *** 98,103 **** --- 98,105 ---- (defvar wl-ps-preprint-hook nil) (defvar wl-ps-print-hook nil) + (defvar wl-summary-subject-no-omit-same-subject-in-thread nil) + (mapcar (function make-variable-buffer-local) (list 'wl-summary-buffer-msgdb *************** *** 3597,3602 **** --- 3599,3605 ---- (concat "+" children-num ": " from) (concat " " from)) (if (or no-parent + wl-summary-subject-no-omit-same-subject-in-thread (null parent-subject) (not (wl-summary-subject-equal subject parent-subject)))
使用方法は、~/.wlに
; ; 独自拡張 : スレッド内部で親とおなじsubjectでも、メールタイトルを省略しない ; (setq wl-summary-subject-no-omit-same-subject-in-thread t)
を追加すると、このパッチの効力が発揮される。
このパッチを使用前の表示
2014 05/02(日)21:28 [ Kenji Rikitake <k ] [FreeBSD-tech-jp 2156] SCSI device 2015 05/02(日)21:30 ┣[ itojun@iijlab.net ] 2016 05/02(日)22:05 ┃┣[ Kenji Rikitake <k ] 2022 05/03(月)00:24 ┃┃┗[ K.[NAO-NAO].Kawai ] 2026 05/03(月)09:50 ┃┃ ┗[ Kenji Rikitake <k ] 2017 05/02(日)22:09 ┃┣[ yamagata@nwgpc.ke ] 2018 05/02(日)22:09 ┃┗[ Hiroyuki HANAI <p ] 2019 05/02(日)22:28 ┗[ Inagaki Kentaro ( ]
このパッチを使用後の表示
2014 u05/02(日)21:28 [ Kenji Rikitake <k ] [FreeBSD-tech-jp 2156] SCSI device 2015 u05/02(日)21:30 ┣[ itojun@iijlab.net ] [FreeBSD-tech-jp 2157] Re: SCSI d 2016 u05/02(日)22:05 ┃┣[ Kenji Rikitake <k ] [FreeBSD-tech-jp 2158] Re: SCSI 2022 u05/03(月)00:24 ┃┃┗[ K.[NAO-NAO].Kawai ] [FreeBSD-tech-jp 2165] Re: SC 2026 u05/03(月)09:50 ┃┃ ┗[ Kenji Rikitake <k ] [FreeBSD-tech-jp 2168] Re: 2017 u05/02(日)22:09 ┃┣[ yamagata@nwgpc.ke ] [FreeBSD-tech-jp 2159] Re: SCSI 2018 u05/02(日)22:09 ┃┗[ Hiroyuki HANAI <p ] [FreeBSD-tech-jp 2160] Re: SCSI 2019 u05/02(日)22:28 ┗[ Inagaki Kentaro ( ] [FreeBSD-tech-jp 2161] Re: SCSI d
と、表示をうるさくするだけのパッチだったりして。
Walnut Creek CDROM から、クレジットカードの有効期限変更を入力してみた。 そしたら、「あなたの住所は、No such address って言われて品物が戻ってきたから、現在は配送を停止している。正しい住所を教えてくれ。」と返事がきた。 はうー。 住所の記述はあっているんだよぉ。 でも、途中で変なルーティングしている所があるんだよう(多分)。 さて、どうしたものか。
( echo 'echo $$ | sh' ) を使ってテンポラリファイル名を作っちゃう 話ですが、PIDが一回りすることはない環境でしか使わないので、個人的には大丈夫っす。
(うちの環境だと、夜だけパソコンの電源を入れて、朝になるとshutdownしちゃうから、PIDが一回りすることが無いのです。)
ただ、これを使ってまじめなシェルスクリプトを作る人(いないとは思うけど………)は真似しちゃだめよんってことっすね。
そんなわけで、mktempを使わずにテンポラリファイル名を得る方法が書いてあるサンプルを探すため、bash-2.03のソースアーカイブを展開。 bash-2.03/examples/scripts.noah/mktmp.bash をチェックすると………。
# mktmp.bash
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-02-03
# Last modified: 1993-02-03
# Public domain
# Conversion to bash v2 syntax done by Chet Ramey
# Commentary:
# Code:
#:docstring mktmp:
# Usage: mktmp [template] {createp}
#
# Generate a unique filename from TEMPLATE by appending a random number to
# the end.
#
# If optional 2nd arg CREATEP is non-null, file will be created atomically
# before returning. This is to avoid the race condition that in between
# the time that the temporary name is returned and the caller uses it,
# someone else creates the file.
#:end docstring:
###;;;autoload
function mktmp ()
{
local template="$1"
local tmpfile="${template}${RANDOM}"
local createp="$2"
local noclobber_status
case "$-" in
*C*) noclobber_status=set;;
esac
if [ "${createp:+set}" = "set" ]; then
# Version which creates file atomically through noclobber test.
set -o noclobber
(> "${tmpfile}") 2> /dev/null
while [ $? -ne 0 ] ; do
# Detect whether file really exists or creation lost because of
# some other permissions problem. If the latter, we don't want
# to loop forever.
if [ ! -e "${tmpfile}" ]; then
# Trying to create file again creates stderr message.
echo -n "mktmp: " 1>&2
> "${tmpfile}"
return 1
fi
tmpfile="${template}${RANDOM}"
(> "${tmpfile}") 2> /dev/null
done
test "${noclobber_status}" != "set" && set +o noclobber
else
# Doesn't create file, so it introduces race condition for caller.
while [ -e "${tmpfile}" ]; do
tmpfile="${template}${RANDOM}"
done
fi
echo "${tmpfile}"
}
provide mktmp
# mktmp.bash ends here
な、なんと、bashには乱数を発生させるシェル変数 $RANDOM があった。
でもって、乱数を含んだファイル名を作成して、そのファイル名が実在するかチェックして………ってなことをやっているみたい。
とすると、
とかすれば何とかなるかな? (ぉぃぉぃ)
とゆー邪悪な制限があるけど。
ZDNNによれば、企業部門の最も醜いWebサイト賞をもらったサイトはQuaker Oatsだそうだ。 なんでも、1992年の暗黒時代(ってゆーか、黎明期とゆーか……)まんまのデザインだからだそうで。 オレページも、もうちょい派手にしてみっかな?
松森さんとこからたどって World Wide アブノーマル・チェックをやってみた。 総合アブノーマル度 178.45 ぎりぎりノーマルとのこと。
DTI松戸2だが、ここの所てれほタイムに全然つながらない(BUSYの音はしないんだけど、回線接続後に相手側モデムからのキャリア音が送られてこない)状態になっていたりする。
こりゃダメだわ。
DTI無敵伝説もここで終焉を向かえたにゃ。
案外、V.90モデムを買えという神の声だったりするのかも〜。
JDK 1.1 for FreeBSDページから、jdk.1.1.7_AOUT.V99-4-16.tar.gz をゲット。
早速インストールしたところ、なんだかHotJava Browser 3.0の動作がやたらに速くなったように感じるには気のせいかな?
こちらには、時間をファイル名に混ぜてしまえば……という提案がありました。
pid+現在時刻というファイル名なら、衝突する危険はあんまし無さそうですね。
でもって、fork - exit を繰り返すだけのプログラムだと、pidはどれくらい変動するのかなーなんて思って試してみました。
while true ; do ( echo a > /dev/null ) ; done
これだと、K6-200マシンでは毎秒 135個くらいしかpidが増えないっすね。
つづいて、fork-wait-exitする変なプログラム。
/* forkman.c -- fork bench mark */
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
int i;
int pid;
int status;
for ( i = 0 ; i < 32767 ; i++ ) {
pid = fork();
if ( pid == 0 ) {
exit(0);
} else if ( pid == -1 ) {
putchar('.');
i--;
} else {
wait4(-1, &status, 0, 0);
}
}
return 0;
}
こちらもK6-200で実行。
50秒くらいで32767回fork-wait-exitできるみたいです。
とりあえず、ここ数年くらいはpid+時間をテンポラリファイル名に使えるかな?
tailといえば、ファイルのおしりを表示するだけのプログラムだと思っていた。
ところがどっこい、-f ファイル名 というオプションをつけると、ファイルを監視して、追加書き込みされた場合には追加分を表示してくれる機能があることを知った。
でもって、FreeBSDのtailの場合は -F ファイル名 とすると、truncateされた場合(ファイルの長さが一度減る)でも追加部分を表示してくれたり、mvとかrotateされた場合(FreeBSDのsyslogは、適当なところでログファイルをmvして別ファイルにする)は、i-node番号をチェックしてくれて、ちゃんとファイルの先頭から追加された部分を表示してくれるらしい。
なんとびっくり。
ちなみに、gnu textutils-1.22.tar.gz に含まれている tail の -f の場合、truncate された場合はちゃんと追加分を表示してくれるが、mvされた場合の追加分の表示はしてくれないらしい。
shoさんとこから ASUS P2B-N with Rage Pro AGP ACPI BIOS ver.1009A - bx2n109a.zipなどが置いてあるftpサイトのディレクトリ
なんか、メモリが急に安くなっているらしい。 とりあえず、128M DIMMをゲットして、ちんまいマシンの方を256Mにしよーっと。 でっかいマシンの方は、マザーとCPUを変えないとイマイチ。
ああ〜。
某MLでチョンボしちゃったよん。
結局、Walnut Creek CDROMから ja-mule-*.tgzのパッケージが消えたのって、2.2.8Rだけだったんだな〜。
そんなわけで、Walnut Creek の FreeBSD subscription は続行決定。
問題は郵便事情の悪さだにゃ。
先日のforkman.cを
FreeBSD 3.1R on Celeron-400MHz で実行してみたら、15秒くらいで 32,768回 fork できたみたい。
1秒でpid1周とゆー速度になるのも、そう遠くない未来にやってくるぞ………。
一部の超爆速マシンでは、既に達成できちゃう値なのかも。
vforkとかを使うともっと速いのかな。
Linuxでやったらもっと速そうだよな。
うーん。
今日知った衝撃の事実。 rshされる側のマシン(FreeBSD 2.2.7R) gabi-n の~/.rhosts の内容が以下の通りだとする。
unknown george hoehoe george gabi-n george
でもって、rshされる側のマシン gabi-n の /etc/hostsの内容が以下の通りだとする。 また、ローカルマシン群の中ではDNSは立ち上げていないものとする。
10.0.0.1 hoehoe 10.0.0.3 gabi-n
ここで、マシンhoehoeからマシンgabi-nに対して rsh gabi-n echo hello を実行すると、タイムアウトするまで固まる。
おもむろにダイアルアップPPP接続をしつつ、tcpdumpをかけてから rsh gabi-n echo hello を実行すると、マシンgabi-nからunknownマシンのIPアドレスをプロバイダに聞きにいっていた。
おー。
こりゃ確かにPPP接続してないと、しばらく固まるわな。
なるほど納得。
おそらく、/usr/libexec/rshdあたりが ~/.rhosts をチェックする際に、上から順番にIPアドレスを実際に引いているんだろう。
そんなわけで、~/.rhostsに書くマシン名は、IPアドレスが検索できるものに限定しましょーというお話でした。