以前妻からまわってきた「天窓のある家」(ISBN4-408-53445-5)を読み始める。
過去の 3月1日より。
他のプロジェクトでも使用していて「WiKicker でも使いたいのだけれど、これ以上依存するモジュールを増やすのものぁ」というものの一つであった Log::Log4perl をやはり採用する事に。
Perl 5.005_03 でもギリギリOKのようである。
Debugログおよび、アクセスログ等もすべてこの上にのせていくつもり。
WiKicker / DiKicker の Log::Log4perl 対応作業。
ということで、warn -> Apache のエラーログに流れている警告メッセージも、Log::Log4perl の方に流して、好きに消せるようにしておくことにする。
SpeedyCGI 下で動かす事を想定して初期化は、init_once で行うようにする。 可能な限り早く初期化すべきなので、設定ファイル名/設定文字列はプロパティファイルに記述しておくのではなく、CGI プログラムで最初に生成する Controller オブジェクトの初期化パラメータで指定するように。
$SIG{__WARN__}を設定して、warn のメッセージを Log::Log4perl に送る。 最初はほぼ FAQ の例のまま、以下のように記述。
use Log::Log4perl qw(:easy); BEGIN { $::SIG{__WARN__} = sub { local $Log::Log4perl::caller_depth = $Log::Log4perl::caller_depth + 1; WARN(@_); }; }
しかし期待していた通りに動かず悩む。原因は前述する init_once との絡み。 use Log::Log4perl qw(:easy) した時点でデフォルトの初期化が行われてしまうため、初期化済みになってしまって init_once での設定処理がスキップされていたのが問題。
use Log::Log4perl; BEGIN { $::SIG{__WARN__} = sub { local $Log::Log4perl::caller_depth = $Log::Log4perl::caller_depth + 1; if (Log::Log4perl->initialized) { Log::Log4perl->get_logger->warn(@_); } }; }
と修正。 get_logger も暗黙的に初期化を行うので、init_once する前に warn されるとやはりデフォルトの初期化がおこってしまう。 それではまずいので initialized が真(=初期化済み)の時のみロギングするようにする。 ただしこれだと init_once する前の warn メッセージが失なわれる(STDERR あたりに print するようにすればいいかもしれない)。
CGI::Carp も $SIG{__WARN__} を上書きするので同時に使えない。 以前に use していたのが残っていてはまる。
NaneyOrgWiki、nDiki でロギングしはじめたところ、CGI プログラムの処理はきちんと成功しているもののその後(?) speedy_backend が core dump してしまう事があるようだ。 最初は $::SIG{__WARN__} の設定あたりに問題があるのかと思ったが、Log::Log4perl::Appender::Synchronized を使わないようにしたところ core を吐かなくなった。
IPC::Shareable、IPC::Semaphoreなんて使っているしやっぱりこれが怪しい。 とりあえず外しておくことにする。
しかし何らかの方法でシンクロしておかないとログファイルが壊れるはずだから、本当はどうにかしなければならないな。 もっと簡単に flock とかで排他制御する Appender とか無いのかな。 自分で書くしかない?
Naney's Diaryの方、NaneyOrgWiki からエクスポートしたページをインクルードしたり、AutomaticLink をしたりなどいろいろ動的処理をつけ加えてあるのでハイパー日記システムのキャッシュ機能をオフにしてあった。
しかし最近日に日にレスポンスが悪くなっている感じ。 最新日記の公開はこのnDikiに移行したのにともない、Naney's Diary の方は過去ログ表示専用になるためキャッシュ有効に戻しておくことにした。
これでレスポンスがよくなるかな?
CLIE PEG-NZ90で遊ぼうかと思いたつ。 一応 WorkPad 30J、Visor Prismと Palm 経験はあるのだがここしばらく触っていなかったので勘がなかなか戻らない。 CLIE はいろいろゴテゴテしているし。
筐体としてもPEG-NZ90はデカすぎ。キーボードいらないし。液晶を表にして畳むとアプリケーションボタンが押せないし。
ま、なにはともあれ HotSync の準備。J-Pilot をインストール。 で、PEG-NZ90 をUSB接続。
認識せず。
あら。Linux kernel で usbserial を有効にしていなかった。visor モジュールと一緒に有効にして kernel 作り直し。messages 出力を見る限り認識したようだ。
uhci.c: 1820: host controller halted. very bad usb.c: USB disconnect on device 00:1d.1-1 address 2 visor.c: Bytes In = 0 Bytes Out = 0 Unable to handle kernel NULL pointer dereference at virtual address 00000998 printing eip: f89032ba *pde = 00000000 Oops: 0002 CPU: 0 EIP: 0010:[<f89032ba>] Tainted: P EFLAGS: 00010246 eax: 00000000 ebx: f68abc00 ecx: 00000000 edx: 00000000 esi: f68abc1c edi: 00000000 ebp: f68abc00 esp: f795ff20 ds: 0018 es: 0018 ss: 0018 Process khubd (pid: 1596, stackpage=f795f000) Stack: f68abc1c 00000000 00000064 f89045c0 00000000 f89045a0 f04fcac0 f88e631f f7439600 f68abc00 f7439604 00000002 00000000 f7439600 00000100 0000000a f79d9200 00000000 f88e922f f79d930c 00000001 00000010 f04fca40 f88e8c7d Call Trace: [<f89045c0>] [<f89045a0>] [<f88e631f>] [<f88e922f>] [<f88e8c7d>] [<f88e94bc>] [<f88e9555>] [<c010579e>] [<f88e9520>] Code: 89 90 98 09 00 00 8d 4e 58 ff 43 74 0f 8e 63 05 00 00 0f b6
どうもUSBドライバまわりでこけている感じ。 明日以降再調査。
上司に「々」の入力方法を問われる。 いつも「益々」とか打って一文字消し、その度に「どう読むんだろう?」と思うもののしばらくすると記憶の彼方に追いやられていたな。
「々」は,漢字ではありません.漢字ではありませんから,それ自体に読み(音や訓)はありません.これは,同じ漢字を繰り返すときに使う「符号」です.ことばの通(半可通)は,「同の字点(どうのじてん)」,また,形を分解して見立てた「ノマ点」などと言っています.-- 広辞苑質問箱より。
「畳字」というのはたまに目にしたことがあるが、これはこれら符号のカテゴリ名らしい。 広辞苑だと「踊り字」という項目に説明があるとのこと。
手元のskk辞書(Debian GNU/Linux sid で普通に入るやつ)だと「Dou」、「Noma」、「Onaji」等で変換できるのか。
最近またPalm OS搭載PDAが気になりだしたんだけれど、今、国内だとやっぱりCLIEになっちゃうのかなぁ。 昼休みと帰りにちょっと触ってみた。
値段の割にはプラスチッきー。 ちょっと大きいし、予算オーバーなのであまりチェックせず。
カメラ付きでちょっと遊べそうだが、ちょっと遊んだだけで終わりそう(撮るなら別途 DiMAGE X使うだろうし)。 4つのアプリケーションボタンは非常に押しづらい。かなり減点。
廉価版だがアルミボディでなかなかいい質感。 4つのアプリケーションボタンは小さいけれど、PEG-TJ37よりは圧倒的に押しやすい。 自分のスタイルでは機能的にもこれで十分かな。
PEG-TJ37のアプリケーションボタンが押しやすかったら、そちらとどちらがいいか迷ったところ。
どこの展示機も付属の「伸縮スタイラス」は外されてしまっていて使い勝手が確認できなかった。 あれってどれぐらいの使いにくさなのだろう。
新しく書くドキュメントを Subversion 管理してみる。 今後のドキュメントで共有(かつブランチする)マクロファイル等を分けて管理できるようにレイアウトを検討。
自分の home の下 var/repos/doc を作成する。サーバ上で以下を実行。
cd ~/var mkdir repos mkdir repos/doc chgrp doc repos/doc chmod g+ws repos/doc svnadmin create repos/doc
project-1 の report ドキュメント手始めに管理する。 今後他と共有する予定の texmf ディレクトリも別途用意。
クライアント上で以下を実行。
mkdir /tmp/layout cd /tmp/layout mkdir project-1 mkdir project-1/trunk mkdir project-1/trunk/report <-- report のファイルを置く mkdir project-1/branches mkdir project-1/tags mkdir texmf mkdir texmf/trunk mkdir texmf/branches mkdir texmf/tags mkdir texmf/trunk/texmf mkdir texmf/trunk/texmf/my-company <- 社内共有マクロファイル置き場 svn import . svn+ssh://server/home/naney/var/repos/doc \ --message 'Initial repository layout.' cd rm -rf /tmp/layout
report 作業ディレクトリの下に texmf/trunk/texmf を texmf として checkout するように、svn:externals を設定する。
mkdir /tmp/work cd /tmp/work svn checkout svn+ssh://server/home/naney/var/repos/doc/project-1/trunk cd trunk svn propset svn:externals 'texmf svn+ssh://server/home/naney/var/repos/doc/texmf/trunk/texmf' report svn commit cd report svn update
これで、report の下に自動的に texmf が来るようになる。 他のドキュメントプロジェクトでも同様に svn:externals を指定すれば texmf が使えるようになる。 texmf のブランチや、ある時点のスナップショットを使いたい場合は svn:externals を変更すれば良い(はず)。
Subversion の公式サイト経由で rpm が入手可能。subversion が apr, apr-util, neon に依存しているので、これらを先にインストール。
rpm -ivh apr-0.9.5-0.2.i386.rpm rpm -ivh apr-util-0.9.5-0.1.i386.rpm rpm -ivh neon-0.24.4-1.i386.rpm rpm -ivh subversion-1.0.0-1.rh80.i386.rpm
[ RPM ]
昨日、CLIEとHotSyncできなかったので、もともとUSBまわりが不安定だったし kernel を 2.4.25 に上げておくことにする。
do_symlinks = Yes postinst_hook = /sbin/update-grub postrm_hook = /sbin/update-grub do_bootloader = no
shfs も一緒に入れておく。今回は pcmcia-cs を使わずに kernel のものを入れておく事にする。
$su #(apt-get build-dep kernel-source-2.4.25) #apt-get install kernel-source-2.4.25 #apt-get install shfs-source shfs-utils #exit $mkdir -p /usr/local/src/linux $cd /usr/local/src/linux $tar jxvf /usr/src/kernel-source-2.4.25.tar.bz2 $tar jxvf /usr/src/shfs.tar.bz2 $cd kernel-source-2.4.25 $make menuconfig $ make-kpkg clean $MODULE_LOC=/usr/local/src/linux/modules \ fakeroot make-kpkg --revision=sebastian.1.0 \ kernel_image modules_image $cd .. $su #dpkg -i kernel-image-2.4.25_sebastian.1.0_i386.deb #dpkg -i shfs-module-2.4.25_0.32-2+sebastian.1.0_i386.deb
reboot
最新のにしておく。
mkdir -p /usr/local/src/sf cd /usr/local/src/sf cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/madwifi co madwifi cd madwifi make su make install modprobe -a ath_pci lsmod dmsg
本当は cvs checkout はリブート前、ネットワークが使えている間にしておく必要があった。 前の madwifi ソースを make install して一旦接続できるようにしてから、cvs の最新のを取り直してあらためて make install
会社帰りに、川崎の西武跡に3月3日オープンしたヨドバシカメラマルチメディア川崎ルフロンに寄ってみる。 さすがに広いな。 例によってフィルムカメラ関連はかなり縮小されているが。 引伸機も3台しか展示していなかった。
デジカメの方であるが、新機種発売が近いためかIXY DIGITALシリーズはすっかり引き上げられていた。
自宅からだと新宿へ行くより近いので、これから川崎に行く機会が増えるかも。
結局CLIE買ってしまった。昨日有楽町のビックカメラで在庫無しのPEG-TH55も在庫があったようだ。
King Instant Photo Album スペアシート(チェキ用)を店頭で見たのは、アルバム自体を買った時以来初めて。 アルバムを買って「さあスペアシートを買い足そう」と思ったらどこにも置いてなくて、はや3年以上の月日が流れていたのだが、果たして今日はあった。 やはりオープンということで、いろいろ商品を揃えたんだろうなという印象。
PDLを使う開発中のプログラムを「速いマシンで使いたい」という要望から、オフィスにある Red Hat Linux 8.0 BOX へ昨日インストール作業を行った。
あいかわらず rpm を探してきてインストールするのが面倒。GDを使うのに freetype の開発パッケージを入れようとしたら、CD-ROM に入っている rpm セットだと freetype とその devel のバージョンが違っていてはいらないし。
結局がしがし /usr/local にインストール。 Perl 5.8.2 自体もそのプログラム専用に別途インストールしてCPANモジュールでがしがし依存するものをインストール。
でようやく環境が整って開発中のプログラムをビルドしたら単体テストでこける。 今日数値をチェックしたら、PDL の eigens 関数が今までと転置した固有ベクトル行列を返すようになっていた。 コレ、以前、列ベクトルだと思ったら行ベクトルだったってやつ。それがまた逆になったらしい。
PDLのドキュメントを見ると確かに、2.4.1 でバグフィックスとして列ベクトルに修正されたらしい。 しかし古いPDLもサポートせねばならない。ということでPDLのバージョンを見て 2.4.0 以下のみ xchg かけるように修正して、問題収束。
やはり久しぶりに Palm デバイスをおもちゃに欲しくて買ってしまった。 この値段ならおもちゃとしてもギリギリ買えるかとうところ。
これは昨年10月に発売されたモデル。 この2月に出た新機種(PEG-TH55、PEG-TJ37)が世の中話題の中心なのだろうが、私にとっては何分久しぶりの Palm デバイス(3年弱ぶりぐらい)。 感じたことや、Linux関連等を書いておこう。
「もう Graffiti なんて忘れちゃったなぁ」と思ったがさすがにアルファベットとかは体が覚えていた。他の評判通り Graffiti 2 の方が入力しずらい感じ。2ストローク文字が増えすぎ。
ほとんど使ってないのでまだ不明。 そこそこ認識してくれてはいるようだ。
PEG-NZ90はCD-ROMから入れる必要があったけど、こちらは最初から入っている。 ちょっとした時には役に立つかな。
今までのデバイスにこういうのインストールしておかなかったが、あると便利。 TODOは DateBk5 の方で管理するから、TODOボタンに割り当ててみておくか。
慣れるのか? 他のLanuncherに変えるかも。
一応 Windows BOX に入れてみたが PEG-NZ90みたいに何個もアプリケーションが入っているわけではなかった。
pilot-link で問題なく接続できた(visor カーネルモジュール)。 J-Pilot も問題無し。
かなり「ほっ」とした瞬間。Linux から接続できるのとできないのとではかなり使い勝手が違ってくるので。
しかし、そうすると一昨日からうまくいっていない PEG-NZ90との通信は、Linux 側の問題ではなく PEG-NZ90 特有ということか。ちなみに PEG-NZ90 の方は、今日会社で Windows XP と HotSync できたので個体が故障しているわけではないことを確認。
メモリースティックを差し Data Import を起動して「接続」を押すと、USBケーブルでつないだ Linux 側で USB マスストレージクラスデバイスとして /dev/sdX1 でマウント可能。 これは非常に良い。
[ 製品レポート ]
(地方ではよくあるらしいのだが)妻の故郷では男女決まった歳になると大規模な同窓会が開催される。 でそれが明日ということで、今日帰省していった。
日曜日までシングルライフである。 乱れそう。
おっ、若松に入荷しているようだ(サイトから注文可)。 この間IBM部品センターから買ってしまったので、自分はもういいのだが。 12,800円。
過去の3月6日より。
ThinkPad X31を購入してから隠居中であったDynaBook SS 3440に、Windows を再セットアップして里子に出すことにした(実家の妹がPCが無いのにソフトを買ったというので)。
買ってすぐフォーマットしDebian GNU/Linuxをインストールしたのでどんなソフトウェアが初期セットアップされているのかも全く知らないのだが、とにかくリカバリCD-ROMで復旧。 Debian でインストールされた mbr は上書きされなかったようで、起動時に
MBR
と出るが Windows 98 SE だし特に問題なし。
2000年2月15日発表モデルだが、モバイルPentium III 500MHz + 172MBメモリ、バッテリも AC アダプタも去年交換済みなので、汚れと塗装のハゲが気にならなければそこそこ遊べるでしょう。 って3ヶ月前までは私のメインPCとして、バリバリ開発に使ってたんだし。
PEG-TJ25のスケジュール(DateBk5)と、ThinkPad X31上のスケジュール(mew + MHC)の同期を mhc2palm と palm2mhc で行う実験。 もっとも後者の方(MHC)はここ最近使っていないのだが、これを機にスケジュール管理を見直そうかと。
で、mhc2palm と palm2mhc を試してみる。特に問題なく一発成功。 ただ mhc2palm -a と、palm2mhc -u をしあっていると重複エントリが増えてしまうようだ。
近所の大手系ミニラボが閉店していた。 タバコを吸いながら作業するオペレータのいる店なので使う事は無いのだが何となく淋しい。
帰宅途中、親子連れの中のチビが空を見上げて興奮してた。 空には綺麗な月が浮いていた。
小さい頃、いつまでもついてくるのが不思議に感じたこともあったなぁ。
先日参加申込をしたOB会であるが、出席者が少ないため中止に。 とても残念。
ということでぽっかり開いたスケジュールを狙って代替OFF会開催!
前回(2月6日)にもらった薬が切れるので出勤前に、いつもの診療所へ。今日は院長。
ということで
を処方してもらう。
24人のビリー・ミリガンのハードカバー上下2巻が待合室にあった。 ここで読み切れる強者はいるのだろうか?
CLIEPEG-TJ25とThinkPad X31 (Debian GNU/Linux, kernel 2.4.25)の間で、赤外線通信による HotSync の設定を行う。 前回 Linux kernel をビルドした時に、IrDA 関連は有効にしてある。 今回はSIRを使用。
CLIE のData Import を使って、CLIE上のメモリースティックをPC側でマウントするのは赤外線経由でできるのかな?
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。
※内容は個人的見解であり所属組織とは関係ありません。