*Article*
★
perl
% perl -e '$_={"a"=>"b", "c"=>"d"};
print shift keys(%{$_}), "\n";'
Type of arg 1 to shift must be array (not keys) at -e line 2, near "),"
Execution of -e aborted due to compilation errors.
scalar の逆の関数って無いのだろうか。
*
shift
って考えたら、shift って、単に ARRAY から要素を取り出すだけではなく、
配列を短くするんだった。ということで、keys の返り値をそのまま shift
できるわけがない。
% perl -e '$_={"a"=>"b", "c"=>"d"};
print scalar((keys(%{$_}))[0]), "\n";'
a
って感じでやればいけた。
★
サーバ移転
一部うまくいってないため、日記が表示できない状態です(;_;)
しかも、ちょうど provider 側がトラブっているようで、現在メールが読めないとか…。
★
xyzzy
ふと xyzzy を試してみる。
Meadow 代わりにはならないが、notepad 代わりにはいいかな?
★
...
直してくれないので、自力でなんとかする。
★
antenna
こっそりアンテナを動かしてみる。
★
メールアドレス
某氏に強制貸与してみる。
x-face-e21.el と使うと x-face が表示されない問題を修正。
★
namazu_for_hns
気が付くと nijino.com の namazu_for_hns で「さくら」を検索すると 3つしか
ヒットしないというあやしい状態になっていた。
NMZ.w を見てみるとどうも分かちがされていないような感じ。
*
kakasi-2.3.3 & namazu-2.0.5
とりあえず、サーバに入れてある kakasi と namazu が古いのは確かなので upgrade。
% ./configure --prefix=$HOME/local
% make
% make install
% cd File-MMagic
% perl Makefile.pl PREFIX=$HOME/perl
% make
% make install
% cd ..
% ./configure --prefix=$HOME/local --with-pmdir=$HOME/perl/lib/site-perl/5.005
% make
% make install
*
分かち
試しに、mknmz を --debug を付けて手で動かしてみて、
分かちが行われていないことを確認。
% $HOME/local/bin/mknmz --debug --include=$HOME/diary/namazu2/etc/mknmzrc \
--media-type=text/hnf --template-dir=$HOME/diary/namazu2/template \
$HOME/diary/2001
*
LANG
mknmz を眺めてみたところ、LANG が ja の場合のみ分かちが行われていることに
気付く。mknmz を手で動かした時に分かちが行われなかったのはそのためか。
しかし、namazu_for_hns では、index 生成スクリプト内で LANG を設定している
から問題無いはずだが。
*
解決?
せっかくだからと namazu_for_hns も upgrade したところ、無事分かちが
行われるようになった。
結局、原因は謎。
★
今日の Emacs
nnshimbun-har.el を元に fml な ML archive 全般に対応させてみたり。
*
bbdb & x-face & MUA
*
x-face-e21.el
遊んでみる暇は無く、また明日。
★
お買物
前に JUDY AND MARY のアルバム買ったのが随分前だから、何か買い逃したかと
思ってたんだけど、2年以上前の POP LIFE が前作なのか。
★
x-face-e21.el
ちょっとだけ x-face-e21.el で遊んでみる。
む、name の前に x-face を置かれると bbdb-emacs で name に付けてる underline が
x-face にかぶって表示されちゃうよ。
とりあえず (set-face-underline 'bbdb-name nil) で回避(^^;
face フィールドのアイコン表示はいい感じ。
*
before-string & face
before-string が設定されている文字列に overlay で face を設定すると、
before-string の face も同じになるのを回避できないものだろうか?
(let (start end)
(if (get-buffer "*test*") (kill-buffer "*test*"))
(pop-to-buffer (get-buffer-create "*test*"))
(setq start (point-marker))
(insert "hoge")
(setq end (point-marker))
(overlay-put (make-overlay start (1+ start)) 'before-string "fugo")
(overlay-put (make-overlay start end) 'face 'highlight))
★
Gnus Summary & x-face
Gnus の Summary で bbdb の x-face を
表示させてみた。
(defvar gnus-bbdb-x-face-scale-factor 0.4)
(defun gnus-bbdb/summary-author-face-in-bbdb (header)
"Given a Gnus message header, returns a mark if the poster is in the BBDB, \" \" otherwise. The mark itself is the value of the field indicated by `bbdb-message-marker-field' (`mark-char' by default) if the indicated field is in the poster's record, and `gnus-bbdb/summary-known-poster-mark' otherwise."
(let* ((from (mail-header-from header))
(data (condition-case ()
(gnus-bbdb/extract-address-components from)
(error nil)))
(name (car data))
(net (cadr data))
record x-face)
(if (and data
(prog1
(setq record
(bbdb-search-simple
name (if (and net bbdb-canonicalize-net-hook)
(bbdb-canonicalize-address net)
net)))
(if (and record
(setq x-face
(car (split-string
(bbdb-record-getprop record 'face)))))
(with-temp-buffer
(insert "From: X\nX-Face: " x-face "\n")
(let ((x-face-use-overlay nil)
(x-face-scale-factor gnus-bbdb-x-face-scale-factor))
(x-face-decode-message-header))
(setq x-face (buffer-substring 6 7))))))
(or (bbdb-record-getprop record bbdb-message-marker-field)
x-face
gnus-bbdb/summary-known-poster-mark))
" ")))
(fset 'gnus-user-format-function-f 'gnus-bbdb/summary-author-face-in-bbdb)
(setq gnus-summary-line-format
"%U%R%z%I%(%[%6,6~(cut 2)o:%uf %-20,20n%]%) %s\n")
gnus-bbdb/author-in-bbdb から x-face-e21 を呼ぶようにしただけの関数を
user-format-function に設定しただけ(^^;
*
extra-header
ふと、extra-header に x-face を設定すれば、メールの x-face を表示できるのではと
思い付く。
(setq nnmail-extra-headers '(X-Face))
(defvar gnus-summary-x-face-scale-factor 0.4)
(defun gnus-summary-author-face (header)
"Given a Gnus message header, returns a face."
(let ((x-face (cdr (assq 'X-Face (mail-header-extra header)))))
(if x-face
(with-temp-buffer
(insert "From: X\nX-Face: " x-face "\n")
(let ((x-face-use-overlay nil)
(x-face-scale-factor gnus-summary-x-face-scale-factor))
(x-face-decode-message-header))
(setq x-face (buffer-substring 6 7)))
" ")))
(fset 'gnus-user-format-function-F 'gnus-summary-author-face)
(setq gnus-summary-line-format
"%U%R%z%I%(%[%6,6~(cut 2)o:%uF %-20,20n%]%) %s\n")
でいけた!
てきとーに統合してみたり。
★
今日のアキハバラ
LD-S9(展示品)が 108k で売っていて悩んだり。
*
電車内読書
行きは人形式モナリザ
[ISBN4-06-182092-3:
bk/
旭/
JB/
紀/
AM/
富/
本]を再読。
帰りは疑惑の月蝕
[ISBN4-15-030657-5:
bk/
旭/
JB/
紀/
AM/
富/
本]を途中まで。
★
マウス
Logitec の光学式のにしようかと思ってたけどバルクで見当たらず。
まともに買うと 5k くらいするし、てきとーな光学式のにしてしまう(^^;
USB は既にうまっているし PS/2 でも接続できるけど、
せっかくだから USB ハブも購入。
*
取り付け
うーむ、さすがに PS/2 にもマウスが繋がった状態では使えないか。
ということで、久々に電源切って PS/2 のマウスを外す。
無事使えるようになったが、サイドボタンを有効にするにはドライバを
入れなきゃならないようだ。
*
ドライバ
うぐっ、フロッピが読めない(;_;)
試しに Linux BOX の方に入れてみたら問題無く読めたのでドライブが腐ったか?
とりあえず Linux の方でホームディレクトリにコピーして、どうにかインストール完了。
*
サイドボタン
左のボタンはまだいいが、右のボタンは押しにくいな。
とりあえず コピー & ペーストに割当ててみたけど単に C-c/C-v を発効するだけなのね。
あ、某ソフトでホイールが効かなくなってしまった。
ドライバを切るとちゃんと動くし、サイドボタンは諦めるか?
む、IE はドライバを切ってもサイドボタンで 進む/戻る になるようだし切ってしまおう。
★
TV 故障?
DVD を再生していると、TV が突然切れてしまった。
スタンバイ/オフタイマのランプが点灯しているし何だろうと取説を眺めてみると
自己診断表示 - 画面が消え、スタンバイ/オフタイマーランプが点滅したら
本機には自己診断表示機能がついています。これは本機に異常が起きたときに、
スタンバイ/オフタイマーランプの点滅およびその回数でテレビの状態をお知らせし、
(以下略)
…。
4回点滅は何が起きているんだろう?
とりあえず、
WEB から問合せしてみる。
★
utf7.el
utf7.el が Gnus と Wanderlust の両方に入っていることに気がつく。
Gnus の方が使われると、Wanderlust の方で問題になりそうな気がするな。
endo くんのとこから。これは良いかも。
とりあえず、変数 SSTP を喋る
sstp.cgiをでっちあげてみる。
でもって、$HNS::Style::Templates{Table}->{head_recent_style} に cgi の呼出しを
書いて、あとは、$HNS::Hnf::UserVar::Templates{'SSTP'} = ""; としておき、
hnf には以下のように書いてっと。
SSTP Haruna("てすとにょ。"), Wait(400), Unyuu("てすとにゅ。")
成功なり:-)
むぐっ、確かに無限 loop に陥いっちゃいますね。
ということで、
修正しました。
★
こんな夢を見た
私が使っている目覚し時計は、止めても数分後にまた鳴り出すものなのだが、
次に鳴り出す時間を cron で設定しなきゃならない。
★
今日のお買物
いつもの本屋では売り切れていたものだから、某謎な本屋にて一冊だけあったのを
げっと。
★
CSS で <dl compact>
<dl compact> は HTML 4.0 では非推奨だそうだが、CSS では
どうやって実現するのだろうか?
ということで、適当にうろついていたら、
いままでの HTML との対照を見付ける。
ってことで、
<style type="text/css"><!--
dl.note { display: compact; }
--></style>
[...]
<dl class="note">
って感じにしてみるも、IE5.5 / Netscape6.01 / Opera 5.01 でうまくいかず。
うぐぅ、ほとんどのブラウザで display は対応されてない
雰囲気(;_;)
*
URL メモ
HNS から re.cgi に投げた LIRS がエラーとなってしまう。
調べてみたところ、LIRS の判定がかなり厳しく行われるようになったためみたい。
む、lag が負数だと受け取って貰えなそうな予感。
★
今日のダイジェスト
- 電気屋に TV の不調を連絡
- 歯医者予約
- ダメなポスターの一時撤去
- 歯医者
- 蛍光灯とウォッシャ液の購入
- MAZE / 恩田陸 [ISBN4-575-23407-9: bk/旭/JB/紀/AM/富/本] 購入
- 切れていた蛍光灯の交換
- 部屋の掃除
準備完了か?
★
自分の過去の日記へのリンク
nsmmのリンク補完が便利そうなので HNS の theme で実現してみた。
package HNS::Hnf::Command::ConvUrl;
use strict qw(vars subs);
use HNS::Template;
use vars qw ($Template);
#$Template = "?%year%month%abc#%year%month%day%new%sub";
$Template = "%year%month.shtml#%year%month%day%new%sub";
sub AsHTML($$$) {
my ($self, $start, $params) = @_;
my $class = ref $self;
my $cmd_name = $self->{name};
my $template = sprintf("%s::%sTemplate",
$class,
($start)?'':'End');
my $comment = ($start) ? "<!-- $cmd_name -->": "";
my $templ = new HNS::Template;
$params->{content} = $self->{arg_content};
for (1..3){
$params->{$_} = $self->{attr}->[$_];
}
if ($params->{1} =~ /^#(\d{4})(\d{2})(\d{2})((\d+)(S(\d+))?)?$/ ||
$params->{1} =~ /^#\{(\d{4}),(\d+),(\d+)(,(\d+)(,(\d+))?)?\}$/) {
$params->{1} = HNS::Template->new->Expand($Template,
{'year' => $1,
'month' => sprintf("%02d", $2),
'day' => sprintf("%02d", $3),
'abc' => $3 < 11 ? 'a' : $3 < 21 ? 'b' : 'c',
'new' => $5 || "0",
'sub' => $7 && "S$7"});
}
return $templ->Expand($$template, $params);
}
unshift(@HNS::Hnf::Command::LNEW::ISA, qw(HNS::Hnf::Command::ConvUrl));
unshift(@HNS::Hnf::Command::LSUB::ISA, qw(HNS::Hnf::Command::ConvUrl));
unshift(@HNS::Hnf::Command::URL::ISA, qw(HNS::Hnf::Command::ConvUrl));
unshift(@HNS::Hnf::Command::LINK::ISA, qw(HNS::Hnf::Command::ConvUrl));
unshift(@HNS::Hnf::Command::LSTRIKE::ISA, qw(HNS::Hnf::Command::ConvUrl));
初めて perl で多重継承を使ったけど、うっかり unshift ではなく push を
使ったものだから、既に継承されている AsHTML が使われてしまったり。
*
hnf-mode.el
(setq hnf-new-link-name-format "#%Y%m%d%N"
hnf-sub-link-name-format "#%Y%m%d%NS%S")
としておこう。
★
TV
初期不良ということで交換してもらうことになった。
★
test -a
[ EXP1 -a EXP2 ] は、EXP1 が false でも EXP2 が評価されるのか。
% [ "a" = "b" -a `touch hoge` ]
% ls hoge
hoge
[ EXP1 ] && [ EXP2 ] とすれば良いだけの話しだけど。
% [ "a" = "b" ] && [ `touch hoge` ]
% ls hoge
ls: hoge: そのようなファイルやディレクトリはありません
fukui 君はこんなことをしてるのか。
順序が逆転しちゃった気もするけど、nsmm を入れてみた。
うーむ、"LSUB #200102172S1 テスト" が
<a name="200102172S%O" href="200102b.html#200102172S%O">
になってしまう。
勘で読んでみたけど、timefmt で _d["O"] が破壊されているみたい。
--- nsmm.awk.orig Thu Nov 23 23:38:46 2000
+++ nsmm.awk Sun Feb 18 16:22:37 2001
@@ -315,7 +315,7 @@
var["version"] = "0.6.2(2000/11/23)";
# timefmt() 初期化
- _timefmt = "%A!%B!%C!%D!!!%G!%H!%I!!!!%M!!%O!!!%R!%S!%T!%U!%V!%W!%X!%Y!%Z!!!!!!!%a!%b!%c!%d!%e!!%g!%h!!%j!%k!%l!%m!%n!!%p!!%r!%s!%t!%u!%v!%w!%x!%y!%z";
+ _timefmt = "%A!%B!%C!%D!!!%G!%H!%I!!!!%M!!!!!%R!%S!%T!%U!%V!%W!%X!%Y!%Z!!!!!!!%a!%b!%c!%d!%e!!%g!%h!!%j!%k!%l!%m!%n!!%p!!%r!%s!%t!%u!%v!%w!%x!%y!%z";
_d["%"] = "%";
# days_from_epoch() など初期化
split("31 28 31 30 31 30 31 31 30 31 30 31", _nmonth, " "); # 毎月の日数
でいいのかな?
それにしても、eval が自前の関数とは思いもしなかった(^^;
★
今日の検索くん
なるほど。
元は、.xinitrc で dtlogin から Gnome を選択されたかどうかのチェックをするのに
if [ "$SESSIONTYPE" = "altDt" -a "`/bin/ps -o args -p $PPID | sed -e 1d`" = "/bin/ksh /etc/dt/config/Xsession.gnome2" ]; then
なんてムリヤリなことをやっているのですが、コンソールから OpenWindows を
起動した時は ksh ではなく sh なので、$PPID が設定されてなくて ps でエラーに
なってしまったのでした。
`false` は、昨日サーバに置いたあとに気付いて、すぐ変更したのですが、
置き直すの忘れてました(^^;
★
IntelleSearch
ふと、検索エンジンから日記に辿り着いたときに、Namazu のフォームに
検索語が入るようにしてみた。
しかし、静的生成の方は従来からの logging.pl とあわせて 2 つの SSI を
埋めんでしまったため、動的生成の日記の処理時間とほとんど変わらなく
なってしまった…。
★
logging.pl
なんで logging.pl は 3 秒もかかるのかと思ったら、"use HNS;" が
処理時間のほとんどみたい…。
% time perl -e 'use lib qw(lib); use HNS;'
perl -e 'use lib qw(lib); use HNS;' 2.89s user 0.09s system 100% cpu 2.961 total
かといって、HNS.pm を使わないように書き直す気にはなれんしなあ。
ふと、TDS を入れてみたが、1.5 倍以上速いのか。
% time perl -e 'use lib qw(lib); use TDS;'
perl -e 'use lib qw(lib); use TDS;' 1.75s user 0.09s system 100% cpu 1.822 total
★
gnus-fetch-old-headers
T-gnus-6_15-08-quimby あたりから、(setq gnus-fetch-old-headers nil) と
なっているのに古いヘッダをフェッチするようになってしまった。
調べてみると、
2001-02-13 21:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
* gnus-sum.el (gnus-summary-read-group-1): Remove
gnus-summary-set-local-parameters.
(gnus-summary-setup-buffer): Put it here.
の影響で、昔 Group Parameter で設定してうまくいかなかった
(gnus-fetch-old-headers 'some) という残骸が有効になったためみたい。
★
昨日のこと
某店にむかつきながら20時頃にふて寝。
…、目覚めたら 9:45AM だった(^^;
★
flim-rfc2231
ふと flim-rfc2231 を試そうかと思ったけど、ベースとなっている FLIM が
古いため MEIMI で使えず。
ということで、cvs update -jflim-1_13 -jflim-1_13-rfc2231 してみた。
しかし、日本語ファイル名を添付してみるも rfc2311 で encode はされず。
マージでへまったのか、元々 decode しか対応されていないのか。
日本語ファイル名で添付したり、rfc2231 で encode されたメールが届いたりも
今のとこないし、とりあえず放置。
せっかくだから、subscribe してみました:-)
*
A研関東甲信越支部 ML
A研関東甲信越支部 ML を eGroups で稼働させてみてはどうだろうか?
★
今日の Emacs-21
`display-time-use-mail-icon' の存在を知る。
あとは load average か。
★
今日の Emacs-21
etc/NEW を眺めていたら、`indicate-empty-lines' なるものを発見。
(setq default-indicate-empty-lines t) としてみますかね。
★
eGroups
Wanderlust では、
(add-hook 'mime-display-text/plain-hook 'mew-message-cut-bannar)
(setq mew-banner-replace-string "\n[[[banner]]]\n")
で良いかな?
config.ph の $CookieFlag が "OFF" だと logging.pl は Cookie を
送らないはずです。
★
今日のアキハバラ
寒いにょ。
今年に入ってから
Zaurus・
TV・DVDときて、とどめに LD と買いが過ぎる気が(^^;
*
電車内読書
アフタヌーンを読んだり、D-邪王星団3
[ISBN4-257-76927-0:
bk/
旭/
JB/
紀/
AM/
富/
本]を読んだり。
★
タッチタイピング
意識したことが無かったんだけど、私は左手の小指は Shift 専用になっている模様。
薬指で `a' や `z' は勿論、CTRL も押しているみたい。
SKK 症候群かな(^^;
*
右手小指
全く使ってないかも。
★
TV & LD
TV の交換 & LD プレイヤが届く(^^)
ということで、一日はにゃんとしていたり。
お、そんな方法で確認するとは思い浮かびませんでした。
ちなみに、手元にあった zsh のソースを眺めたところ、
EXP2 を評価しないみたいでした。まあ、zsh で shell script を書くことは
無いんですが。
★
Solaris8
職場に行ったら Solaris 8 がインストールされていた:-)
*
/etc
/etc のファイルをごりごりと変更。
*
Emacs-21
Emacs-21 を使うと起動時に
(create-fontset-from-fontset-spec "-*-*-medium-r-*-*-16-*-*-*-*-*-fontset-16")
にてエラーが発生。
XGetFontProperty(XLoadQueryFont(dpy, "-*-*-medium-r-*-*-16-*-*-*-*-*-iso8859-1"),
XA_FONT, value);
(char *)XGetAtomName(dpy, (Atom)value);
で得られるフォント名が、
Solaris 7 では"-b&h-lucida sans-medium-r-normal-sans-17-170-72-72-p-97-iso8859-1"
だったのに対し、Solaris 8 では
"-b&h-lucida sans-medium-r-normal-sans-16-161-72-72-p-0-iso8859-1"
となり、average_width が 0 なためみたい。
どうせ fontset-16 は使ってないのでコメントアウトしてしまう(^^;
*
MTA
ari@fqdn に送ると3台のマシンを周り続けてまう。
sendmail.cf はサッパリなので postfix にしてしまう(^^;
Linux で strace して確認してみた。
- /bin/sh (実体は bash)
- 評価する。
- /bin/ash
- 評価する。
- /bin/ksh
- 評価しない。
- /bin/zsh
- 評価しない。
この違いで困ることは思い付かないけど。
早速入れてみたので実験。
Content-Type: text/plain; charset=ISO-2022-JP;
name*=iso-2022-jp'ja'%1B$BF%7CK%5C8l%1B%28B
って感じのパートを含むメールを自分宛てに出してみると、
RFC2231 の decode されたものがボタンに表示された。
が、coding-system の decode がされない…。
ということで、ML に報告しようかと思ったところに、寺西さんから
私が出そうとしなものとほとんど同じ内容のメールが:-)
以上、23 日分です。