These pages are written by only Japanese.

Welcom to My Diary.com
最新の日記タイトル一覧カテゴリ別タイトル一覧トップへ戻る〜

こんばんわ♪ 現在は3月30日(土)0時25分。 日付が変わりました。


hns - 日記自動生成システム - Version 2.19.5 (色々 Fixed)

先月 2002年12月 来月
01 02 03 04 05 06 07
08 09 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2002年12月01日(日)(自宅)

(自宅)

療養中

今日もダメダメ・・・ 昨晩、2時間置きに激痛で目が醒めてたので、 全然寝た気がしない。
症状が良くなってるのか悪くなってるのか 分からなくなってきた。
早くプログラマに復帰したいよ〜

おなか空いた・・・:

外に気軽に買い物に行けないので、食糧事情は非常に悪い、 てか今日は幾ど食べてない・・・
昔食べかけて少し残ってたケロッグでお腹を満たす。 てか、満たせませんけど。シケテルし・・・
昨日、無理して買い物いったおかげで、悪化してる感じなので、 今日のところは我慢しよう。
水曜日になれば生協に頼んだ食糧が届くので、それまで耐えれば・・・

。。。:

寝れない夜が復活・・・
明日の出勤は無理そう。

ルータ交換

確認も込みで 10分ちょっとで終わり
NMZ HOST を設定して、更新&再起動すると設定が消えてしまうのが気になる所。 とりあえず、静的 IP Masq で TCP/UDP/ICMP を Linux マシンに振り向けておいたので、 DMZ HOST は後で考えよう。

DMZ HOST:

触る度に設定メニューの挙動が変わるのは止めてくれ。(ρ_;
  1. 何しても設定させてくれない
  2. 更新ボタンを押すと、「有効」ボタンが出てくるけど、押しても状態変化しない
  3. 更新ボタンを押すと、「有効」ボタンが出てきて、押すと有効に
  4. 更新ボタンを押すと、もう有効になってて「無効」ボタンが出てくる
IP を設定にして有効の状態にしても、も一度 Web でメニューを 開き直すと、IP が消えてて無効になってるし。訳が分からないっす。

ぶっくま〜く

慎太郎大激怒! 備蓄食糧が北朝鮮に!:

これ の続き
「飢餓の子供を救いたい」とか言ってるけど、 現政権の延命に手を貸すって事は、結果的に 「飢餓の子供を増やす」という事に継ると思うんだけど・・・
しかも、アルファ米なんて保存のきく食糧は、真っ先に軍隊に流されるでしょうし。

「朝まで生テレビ!」データ数値と角度の怪!:

いちおう、メモ・・・

apt-get

apt-get upgrade
で、保留パッケージがあると注意されるのが目に障るので、 install してみるテスト
awm.jp# apt-get install kernel-doc kernel-headers kernel-source
取得パッケージ: 33.5MB のアーカイブを取得します。インストール後は 9327kB が使用
されます。
続行しますか? [Y/n]y
	<略>
kernel-headers              ##################################################
kernel-source               ##################################################
パッケージ Makefile は file index 中にリストされていません
パッケージ Makefile は file index 中にリストされていません
パッケージ Makefile は file index 中にリストされていません
	<略>
なんか。怒られてますが・・・
awm.jp# apt-get upgrade
ファイル依存を処理しています... 完了
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
0 個のアップグレードパッケージ, 0 個の新規パッケージ, 0 個の削除/リプレースパッ
ケージ, 0 個の保留パッケージがあります。

ブッシュ笑いものにしたCM、放送禁止に:

こういうユーモアまで規制されるのって、嫌な傾向ですね・・・

生年月日と任意の日付の入力で年齢や学年を計算できる「年齢早見」v4.00:

自分はこういう計算が苦手なので、助かります。

プロセッサ開発にかかわる人々と、その仕事:

ソフトウェア開発でも似た感じの事が結構ありますね。

2002年12月02日(月)(自宅)

(自宅)

闘病中

朝:

今日も 6:30 。

対策:

腹筋背筋に目一杯力を入れた状態だと、 痛みが軽減される事に気づく。
近くのスーパーに買い物に行ってきたけど、 今までに比べるとダメージは激減。
腹筋に力を入れた状態で呼吸をするのには コツがいるけど、慣れて来たかも。

リハビリ:

今日も 37Kg

Java のお勉強

昨日、リハビリに Java のコードを書いていた時、 以下のコードについて誤解していた事に気づく。
class hoge { ; }
class hogehoge extends hoge { ; }

public class PolymorTest {
    private void println(String s) { System.out.println(s); }
    public static void main(String args[]) {
        new PolymorTest();
    }
    public PolymorTest() {
        foo(new hogehoge());
    }
    void foo(hoge h) { println("foo(hoge)"); baa(h); }
    void foo(hogehoge h) { println("foo(hogehoge)"); baa(h); }
    void baa(hoge h) { println("baa(hoge)"); baz(h); }
    void baz(hoge h) { println("baz(hoge)"); }
    void baz(hogehoge h) { println("baz(hogehoge)"); }
}
今まで baz(hogehoge h) が実行されるものだと思っていたけど、 実際に動かしてみると、
foo(hogehoge)
baa(hoge)
baz(hoge) ☆ これが予想外 ☆
という事で。(ρ_;
型付けでメソッドを選択する場合、 オブジェクトの実体が持つ型まで検査しないで、 あくまで呼び元での型で判断してる訳ね・・・
僕のやりたい事は、
void baz(hoge h) { 
    if (h instanceof hogehoge) {
	baz((hogehoge) h);
	return ;
    }
    println("baz(hoge)");
}
void baz(hogehoge h) { println("baz(hogehoge)"); }
とかで実現できるけど、これじゃ動的束縛のメリットが無いので、
void baa(hoge h) { println("baa(hoge)"); baz(h); }
void baa(hogehoge h) { println("baa(hogehoge)"); baz(h); }
のように baa(hogehoge h) を追加して、型落ちを防ぐか、 そもそも、設計を見直して、 baa を消して、
void foo(hoge h) { println("foo(hoge)"); baz(h); }
void foo(hogehoge h) { println("foo(hogehoge)"); baz(h); }
てな具合で、foo から baz を直接呼ばせるべきな気もするんだけど。
う〜ん。もっと根本的な解決方法があっても良さそうな気が・・・

2002年12月03日(火)(自宅)

(自宅)

療養

朝:

6:30 に目が覚めるので、今日も一日中眠そう…
ぅぅぅ・・・

リハビリ:

今日は 38Kg

体重:

順調に減少中。
って、ここ二週間、食っちゃ寝で、軽くリハビリという生活で 太りそうなものなんだけど。
これは、食糧難の影響か… (泣
明日になれば注文した食糧が届くので…

Java のお勉強

例外発生〜♪:



IrcWriter::send: JOIN #よや:*.jp
ircEventHandle:: A
EventActive

An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : 11 occurred at PC=0xBF008850
Function=[Unknown.]
Library=(N/A)

NOTE: We are unable to locate the function name symbol for the error
      just occurred. Please refer to release documentation for possible
      reason and solutions.


Current Java thread:

Dynamic libraries:
Can not get information for pid = 16391

Local Time = Tue Dec  3 13:52:46 2002
Elapsed Time = 0
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.4.0-b92 mixed mode)
#
# An error report file has been saved as hs_err_pid16391.log.
# Please refer to the file for further information.
#
Windows で JXTA ごっこしてると、たまに見掛けるけど、 UNIX系(今回は NetBSD) では始めてみた。
awm.jp% ls -l *.core
-rw-------    1 yoya     yama     242380800 Dec  3 13:58 java.core
うわーぃ。
でも、再現しない。

今日のドジ:

class Event { ; }
class EventActivate extends Event { ; }
class EventMessagee extends Event { ; }
という継承関係があるとして、
class Proxy implements EventListener {
	...	
	public boolean eventHandle(Event event) {
		if (event instanceof EventActivate) {
			EventListener((EventActivate) event);
			return ;
		}
		throw new UnknownEventException();
	}
	public boolean eventHandle(EventMessage msg) {
		/* メッセージ処理 */
	}
}
とかして、無限ループしてみるテスト。;´Д`)
後、これで無限ループしてる時に、Cntl-C で止めるとかなりの高確率で プロセスが残って、しかもスレッド沢山使ってる上に、Linux Emu なので、 プロセステーブルがあっという間に埋まって、すごいう事になったりして…

apt-get upgrade

awm.jp# apt-get upgrade
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージがアップグレードされます:
  Canna Canna-devel glibc glibc-common glibc-devel glibc-profile libcanna nscd
  vutils
9 個のアップグレードパッケージ, 0 個の新規パッケージ, 0 個の削除/リプレースパッ
ケージ, 0 個の保留パッケージがあります。
取得パッケージ: 42.2MB のアーカイブを取得します。インストール後は 26.2kB が解放
されます。
続行しますか? [Y/n]y
う〜ん。
パッケージ LC_MESSAGES は file index 中にリストされていません
って行が大量に出ていた気がするけど。ま、気のせいって事で…

canna 変換:

あれ、何故か漢字変換が賢くなった気が… そんな馬鹿な…
「しぬ」→「死ぬ」って変換してくれなかったので 「死亡」って変換して「亡」を削ったり、 「てん」→「…」の変換も出来ないので Windows IME で変換したのをカット&ペーストしてた。
あと、例えば、今は「そうぞう」で変換すると、 「想像」「創造」「送像」「莊三」と実際に使いそうな順番で出てくるけど、 以前は、そんな優先付けがないどころか、まず使わないだろうって漢字が 第一候補に来てたし、何度変換しても学習しないので辛かった。
何時の間に直ったんだろう。Vine2.5->2.6 に upgrade した時かしら。

2002年12月04日(水)(自宅)

(自宅)

療養

朝:

6時の目覚め

リハビリ:

今日は 38Kg。 39Kg を主張してみたら、看護婦さんが本気で心配してたので、 38Kg でやめておいた。
やりすぎると逆効果だし。

久々に出社

午前中のリハビリでそれなりに調子がよくなってきたので、 午後、予定通り会社に顔を出す事にする。
一番の目的は師走の事務手続きなんだけど、 遅れてしまった仕事の話もしたいかも。

通勤電車:

つり革で体を上の方に引っ張って、何とか耐えてみる。 さすがにぶら下がるのは恥ずかしいので、 腕の力だけで上体を持ち上げる訳で、きつい。

打ち合せ:

今月一杯は会社を休む事にする。 来年になっても良くならない場合は延長も可能らしい。
とにもかくにも仕事の引継ぎをしないと…

ぶっくま〜く

福岡市も歩きたばこ禁止へ、罰則付き全国2例目:

うちでも適用して欲しいデス。 自宅の駐車場は、掃除をしないとタバコの吸殻で地面が埋まっていきます。
# ちょっとだけオーバーな表現
うちの家族でタバコをすう奴はいないので、 よその人がポイ捨てしたに決まってる訳で。

durep:

du の視覚化らしい。 もはけるらしい。

UCS と Unicode:

ちょっと事情があって調べてた。
を使うと、色んな符号化で保存出来るので、 バイナリイメージを貪って調べ物をする際にお薦め。
Windows XP のUTF8 で日本語として読めないテキストが、 xyzzy の UTF8 選択で開くと読めたりしたのが不思議。
何のテキストかは言 いませんが…

インテルが火星にもインターネットを:

難しいのは、火星・地球間のインターネットを結ぶ上で、
大きな遅延が生ずることだ」とテネンハウスは述べ、
火星から地球へのデータ送信に3分かかると指摘した。
これはデータをキャッシュすることで、
ちょうど電子メール・システムのようにネットワークを機能させられそうだという。 
このキャッシュって、Internet2 のアレかなぁ…

Javaのスレッド:

スレッド = アニメーション
のような雰囲気が…
確かに… 見た目で分かりやすいですし。
でも、僕は、チャットのサーバを作る時にスレッドを避ける事が 出来なくなって使いはじめたので、
スレッド = セッション
マルチスレッド = マルチセッションなサーバ
というイメージを持ってたりして… (少数派かしら

2002年12月05日(木)(自宅)

(自宅)

Amazon で書籍購入

がんこな腰痛・肩こり・関節痛はこれで治る! 中川 卓爾 (著):

腰痛で相談に乗ってもらっている某氏にお薦めの本として紹介されたので即購入。

MSX MAGAZINE 永久保存版 [CD-ROM1枚、特製シール付き]:

わくわく

オープンソースプロジェクトの管理と運営:

最近、分かってない事を実感させられる事が増えて来たので。

100万語収録のスーパー英和・和英辞典「英辞郎」:

そろそろ紙の辞書を引くのがおっくうになってきました。

Adams, Scott, Dilbert Book.:

  • Random Acts of Management: A Dilbert Book
  • When Did Ignorance Become a Point of View?
  • I'm Not Anti-Business, I'm Anti-Idiot: A Dilbert Collection

ぶっくま〜く

北朝鮮・食糧援助問題 綿貫衆院議長が外交協会長辞任:

やはり 黒幕(http://www.watanuki.ne.jp/contents/appendix4.html *1 )は引き際が巧い。
結局、協会も自分の議員の資格も残しましたし、 やはり偉い人は(保身の為の)危機管理能力が違います。
私は今回の北朝鮮への支援の事実についても新聞、
テレビ等の報道により初めて知ったものであります。
個別の案件に一々対処しないってのは分かるけど、 今回の件のように場合によっては国策に絡むようなナーバスな案件が 会長の耳に入らないってのは、 いくらなんでも組織としておかしい。
もし本当だとすれば、会長ってのは椅子に座ってるだけで大金 (しかも出元はほとんど税金)が転がりこんでくる役職で、 合法的な税金泥棒だと自ら吐露したようなものではないかと。
… ここまで書いて怖くなったので、これ以上のコメントは差し控えます
( http://www.spjd.or.jp/WN/kenkai.html ) 見解らしい。
さきの第二次世界大戦で日本が敗戦したとき、
食糧不足に直面している祖国救援のために<略>
「ララ物資」という援助物資を日本に送り届けてくれました。
戦時中も日本国民は食糧難で苦しんでいましたが、 そこに食糧を送るような国やら組織があったかどうかは知りません。
「熊谷遊技業協同組合(在日本朝鮮人総聯合会埼玉県北部支部)」
… これが本当だとすればアレですねぇ…
「敵に塩を送るのは、日本の美習」- 日本外交協会「坂本重太郎」
それは「人は城」として国を豊かにする事が国力に繋がるとして 仁政をしいていた武田信玄が相手だから言える事であって、 前科もち の国にそういう論理が通るとは…
外務省から一切の補助金やそれに類する補助は頂いておりません。
これも嘘っぽい… 外務省の機密費ってこういう所に使われるんですね…
メモ
http://resolve.tripod.co.jp/20000715.htm

都心生活者はなぜコミュニティ志向が高いのか−ネットコミュニティ論考:

より精神的なつながりを求めようという事ですよね。 「遠くの親戚より近くの他人」は 物理的な距離だけでなく精神的な距離についても言えるかもしれません。
あ。もちろん親戚は大事です。(あせあせ…
4.「コミュニティ」は何処へ向かうのか
から後の文章は、まさしくチャットや掲示板の世界…
  • 情報を得るために関係を構築していた「共同体コミュニティ」の必要性が低くなり、従って関係性が疎になりつつある
  • 情報の重要性がコミュニティの関係性の強弱を決める
  • ある程度「閉じた」性質を持つ共同体「的な」コミュニティの存在が必要

P2Pファイル交換によるトラフィック増加問題を解決 Sandvineがポリシー管理ツール発表:

ISP の論理トポロジーに合わせて、P2P ネットワークの接続を制御するような事が かかれているけど、実際のところどういう仕組みなんだろう。
「Sandvine Peer-To-Peer Policy Management」
らしいけど、

眼鏡型ディスプレーでDVDを楽しむ日は近い:

視力が弱くて元々眼鏡をかけている人はどうすればいいんだろう。 コンタクトをしなきゃダメかな。
シアトルでの会議でHMDを装着していた人々とのやり取りについて、
ピーカースキー氏は、
「テレビを観ている人に話しかけるようなものだった。
  相手はフン、フンとしか言わなかった。
  社交能力に影響を与えるのは間違いない」
と語った。
まぁ、聖徳太子でない限りそうなるよね。

拮抗力:

この記事自体は 陳腐なゴミくず同然な文章で見る価値ないけど、 ひとつ気になる文が…
1年に2人のノーベル賞受賞という事実にも見られるように、
21世紀の世界にとって日本人の資質や要素はすてたものではない。
この主張をあちらこちらで聞くけど、 ノーベル賞みたいに権威があるが故に裏付けに手間と時間がかかるであろう賞は、 過去の栄光を讃える意味合いでしか無い訳で、 20世紀の日本は頑張ってたかもという推測は出来るけど、 21世紀にはあまり関係ないと思います。
いや。別に21世紀の日本が暗いなんて事は言わないけど、 ノーベル賞を引合いに出すところがもう馬鹿かとアホかと…

。。。:

そういう凄い事をした研究者が日本にいるって事は言えるので、 全く関係ないとは言えないか。ごめんなさい。

*1: リンクする程、命知らずじゃないです。自分。

病状

7時前に激痛で目が醒めたけど、今日は二度寝が出来た。 寝不足は解消されそうな予感。

リハビリ:

今日は 39kg

お買物:

ちょっと遠目のスーパーまでお買物。 久々に海鮮丼を食べようと。

Java

ant インストール:

awm.jp% wget http://www.apache.org/dist/ant/binaries/jakarta-ant-1.5.1-bin.zip
	<略>
Length: 7,879,297 [application/zip]
	<略>
awm.jp% unzip 
Archive:  jakarta-ant-1.5.1-bin.zip
Archive:  jakarta-ant-1.5.1-bin.zip
   creating: jakarta-ant-1.5.1/
   creating: jakarta-ant-1.5.1/bin/
   creating: jakarta-ant-1.5.1/docs/
	<略>
awm.jp% su
Password: 
# mkdir -p /usr/local/java/jakarta/
# mv jakarta-ant-1.5.1 /usr/local/java/jakarta/ant-1.5.1
# chmod +x /usr/local/java/jakarta/ant-1.5.1/bin/ant
# ln -s /usr/local/java/jakarta/ant-1.5.1 /usr/local/java/jakarta/ant
# exit
awm.jp% cat >> .profile
export ANT_HOME=/usr/local/java/jakarta/ant
export PATH=${PATH}:${ANT_HOME}/bin
^d
参考URL

2002年12月06日(金)(自宅)

(自宅)

腰痛

昨晩:

今まで、夜になると痛みがひどくなったけど、 昨晩はそれほどでもなかったり。 仰向けのまま長時間いるのはちょっとつらいけど。

朝:

今日、初めて腰痛でなく普通に目が醒めた。 でもやっぱり。午前中はつらい。

2002年12月07日(土)(自宅)

(自宅)

身の回りの整理

とかかくと長期入院や死出の旅かと思われそうだけど、そうでなくて、 ここんとこずっと万年床でろくにゴミ捨てや掃除をしてなかったので、 体に鞭うって片付けてみた。

ぶっく〜く

もうだめぽの起源:

wget user-agent

以下はメモです。
wget でアクセスできないサイトがあった。 リンクを辿らなくても閲覧できるページなので、referer は関係だろうという事で、 --user-agent を試してみる。結果、
wget --user-agent ="Mozilla/4.0 (compatible; MSIE 6.0; Win32)" 〜
等として IE や Opera だと詐称すればアクセスできる事が分かったので、 .wgetrc でどうにか出来ないか調べてみた。
header="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)"
こうすると、wget/1.7〜 , Mozilla 〜 のようにデフォルトで付く wget の User-Agent + Mozilla の User-Agent が送られる。 man をよく読むと header=〜 は追加指定って書いてあるので、当然なんだけど。
という訳で、
user-agent = Mozilla/4.0 (compatible; MSIE 6.0; Win32)
これでオッケー

madoka でログの mail 送信

特定のアドレスで受けたメールから URL を抽出して cache する仕組みを作ってあって、 ML のメールを渡してるんだけど、 ついでに、irc に流れる URL のコンテンツも cache しようよ企んでみた。
ログ rc ファイルに設定
[packlog]

logfile=/home/yoya/irc/tech/tech%y%M%D
logfile=/home/yoya/irc/dev/dev%y%M%D
address=<ないしょです>
from=yoya@awm.jp
subject= irc log
実行
bash-2.05$ ./madoka.pl -rc ircnet.rc -modes ircnet.modes
bash-2.05$ [ERROR] Package Mail::Sendmail not installed!
はぅ… Semdmail が必要らしいので、package から入れてみる。
% cd <略>/pkgsrc/mail/p5-Mail-Sendmail
% make
  <略>
Passwprd:
# make install
p5-Mail-Sendmail-0.78 requires installed package p5-MIME-Base64-2.12
p5-Mail-Sendmail-0.78 requires installed package perl-5.6.1nb7
% cd <略>/pkgsrc/lang/perl5
% make
=> Checksum OK for perl-5.6.1.tar.gz.
===> Extracting for perl-5.6.1nb7
% env FORCE_PKG_REGISTER=yes make install
===> Installing for perl-5.6.1nb7
===> Becoming root@alt.awm.jp to install perl-5.6.1nb7.
/usr/bin/su Password:
ついでに ssh, openssh, openssl も最新に…

。。。:

madoka は動いたけど。メールが送られて来ない。 まだ、何か足りないらしい。

NetBSD で Jini

cd <略>/pkgsrc/lang/jini
make
======================================================================

 The file jini-1_2_1_001-src.zip containing the Jini(TM)
 Technology Starter Kit must be fetched into /usr/src/curr/pkgsrc/distfiles from

 http://wwws.sun.com/software/communitysource/jini/download.html

======================================================================
なるほど。 上記 URL ページから手動で取ってきてと…
cp <略>/jini-1_2_1_001-src.zip /usr/src/curr/pkgsrc/distfiles
make install
     <略>
/usr/bin/su Password:
install -d -o root -g wheel -m 555 /usr/pkg/jini
/usr/sbin/chown -hR root:wheel /usr/src/curr/pkgsrc/lang/jini/work/jini1_2_1_001
cd /usr/src/curr/pkgsrc/lang/jini/work/jini1_2_1_001 && /bin/pax -rw . /usr/pkg/jini
===> Registering installation for jini-1.2.1nb1
jini-1.2.1nb1 requires installed package sun-jre13-1.0.2nb1
jini-1.2.1nb1 requires installed package suse_base-7.3nb1
jini-1.2.1nb1 requires installed package suse_compat-7.3
jini-1.2.1nb1 requires installed package suse_x11-7.3nb2

。。。:

かといって、別に JINI で何かやろうという訳じゃないんだけど… (馬鹿…

2002年12月08日(日)(自宅)

(自宅)

Java の罠

Java というか NetBSD-curr + Linux_suse + SUN JDK1.4.0 の複合的な罠だと 思うんだけど、
ちょっとしたコードを書いた時、なぜかプログラムが固まって Cntl-C も Cntl-Z も効かず、 kill -TERM も効かなくて、 kill -KILL でしか消せないのかなぁというようなプログラムが出来ちゃったので、 調べてみた。
println をどんどん挿し挟んで *1 いったところ、 null を指している変数を介してメソッド呼出しをしている部分で 固まっている事が判明。
null ポインタを参照する事自体問題なんだけど、 出来れば Null pointer exception で止まって欲しいデス。
更に、200行 近くあったコードから挙動が変わらない範囲で どんどんコードを削っていって、ココまで小さくなりました。
import java.util.Date;

public class Scheduler {
    public static void main(String args[]) {
        Date date = new Date();
        long time = date.getTime();
        System.out.println("XXX: before");
        long xxx = ((Date)(null)).getTime();
        System.out.println("XXX: after");
    }
}
ちなみに、Linux2.4 + JDK1.4 や NetBSD-curr + Linux_suse + JDK1.3 は、 きちんと Null pointer exception で終了します。 あと、
        long xxx = ((Date)(null)).getTime();
ってのは元々は、
Date lastNotify = null; // クラスの変数
<略>
	
        long xxx = lastNotify.getTime(); //  どこかのメソッドの中
です。
つまり初期化し忘れ。
あ。言い訳すると、作ってる最中でどこまで動くか確かめたかっただけで、 lastNotify には null が入っているのに Null pointer exception にならないので そこまで来てなくて、 こないだみたいに、 その前のどこかで無限ループを作っちゃったのかと思って調べた次第で…
決して、代入を忘れた訳では… (焦…

NetBSD-current 追っかけ日記::

以前、NetBSD-current 追っかけ日記(10/26)で、NetBSD + SUN JDK1.4 は怪しいって書いてあったので、構えていたんだけど…

*1: log4j 使えとかツッコミが来そうだ…

Amazon

3日前に注文 したので、普段なら一冊位届いても良いものだけど届かない。
調べてみた所、一括注文になってた。
洋書や予約のブツもあるので、今月中に届くかも怪しい感じ。
ワンクリックを選択した時、 一括か分割かはヨキに計らってくれるような事が書いてあったので 安心してたんだけど。 とりあえず、分割指定に切替えた。

クリスマスキャンペーン実施中!:

洋書は5000円以上のお買い上げで、500円OFF 
CD・DVD・ビデオはあわせて10000円以上のお買い上げで、500円OFF 
絶対お得なダブル・キャンペーンをお見逃しなく! 
あぅ… 見のがした…

ぶっくま〜く

無線LAN参入第1号のMIS 加入者の伸び悩みでサービスを休止:

同社は無線LANによるネット接続サービスの実証実験を昨年夏から始め、
今年4月から有料に切り替えた。しかし、実験の際には7000人いた会員が、
有料化をきっかけに急減し、現在は1300人と低迷していた。
お金を払う程の価値を感じなかったのか…

Dual な A.P.:

169.254.0.0/16 - IPv4 link local block:

RFC3330 ですか。

2002年12月09日(月)[天気:雪](自宅) BGM:ブルックナー第1番第2楽章

[天気:雪](自宅) BGM:ブルックナー第1番第2楽章

腰痛芳しくなく…

今日になれば出社できる位のつもりでいたんだけど、 さすがに無理だと実感。
上司の言う事を聞いて今月中休みにしておいてよかった…
というか今日は寒過ぎ。おかげで腰痛がぶり返した感じで、 午前中は転げ回ってました。
今日はお風呂に入るかこたつに(腰まで)入るか ストーブの前に座るかで、とにかく温めては柔軟運動を繰り返す事しか出来ない。

病院でリハビリ:

今日は40Kg で牽引。

健康な精神は健康な肉体に宿る:

腰痛が厳しいと頭が働かなくなるなぁと… (色んな事への言い訳

NetBSD kernel build failed...

# cd curr/src/
# ./build -t
  <略>
ln -f /usr/src/curr/src/tools/obj/tools.NetBSD-1.6J-i386/lib/groff/soelim \
   /usr/src/curr/src/tools/obj/tools.NetBSD-1.6J-i386/bin/nbsoelim
ln -f /usr/src/curr/src/tools/obj/tools.NetBSD-1.6J-i386/lib/groff/tbl \
   /usr/src/curr/src/tools/obj/tools.NetBSD-1.6J-i386/bin/nbtbl
# cd ./sys/arch/i386/conf/.
# ../../../../tools/obj/tools.NetBSD-1.6J-i386/bin/nbconfig GENERIC
../../../../arch/i386/conf/files.i386:372: \
	cannot open ../../../../compat/darwin/files.darwin for reading: \
	No such file or directory
さてと… (汗
また今度にするか。(弱…
darwin のエミュなんていらないので files.i386 から消せばいいんだろうけど、 いま、会社の方で時間をとられてて、片手間以上の事は出来ない。

Amazon 配送通知

早速一冊目を配送したというメールが届く。 やはり分割発送に変更しておいてよかった…

ぶっくま〜く

「P2Pファイル交換による違法コンテンツの撲滅は不可能」〜Microsoftの研究者が論文発表:

「オブジェクトがコピーできるような状態に置かれること」
「ユーザーが望み、かつ可能ならばオブジェクトをコピーできること」
「ユーザーがそれぞれ広帯域の通信チャンネルに接続されていること」と
これはファイル共有の基本みたいなものですね…

2002年12月10日(火)(自宅)

(自宅)

腰痛芳しくなく…

朝、寒いせいか駄目すぎ。 土曜日曜はあんなに調子がよかったのに、またひどくなっていってる気が…
医者に相談しにいこう… とにかく MRI を撮ってもらわないと話が始まらない。 こないだみたいに断られたら、病院かえるしかないかも。

診察:

病院に言ってみた。
  • 初診からもうすぐ一ヶ月になる (ちょっと長びきすぎ)
  • また痛みがぶり返しちゃってる (多分、寒くなったからだけど)
  • 座ると痛むところを指で押しても痛みがない
といった所が気になるらしい。
(医) う〜ん。MRI 検査まだしてないね。
(よ) あ。出来れば検査をお願いしたいのですが。
てな訳で MRI 検査決定。来週の水曜日に予約した。 15分前までに予約の紙と保険証を持っていけばいいらしい。
注意点として
  • 30分間仰向けで寝ていられる
  • 金属を体内にインプラントされていない
  • 閉所恐怖症じゃない
を指摘された。

買い物:

病院にホットパックと呼んでる湯たんぽがあって、 これで腰を温めると、とても気持ちが良かったので 近くの雑貨屋で探してみた。すぐ見付かった。 ジェルタイプでアイスノンをおっきくした感じのもので、 「ゆたぽん」という商品名で「株式会社 白元」という会社が出してる。
電子レンジで2分温めて5時間使えるので、実用的っぽい。
これで自宅でも温めて、回復スピード up を計ろう。
参考 URL

Amazon から本が届く

本が同じ時間に分割されて届いた…
というのはオーバーで、英語の本以外とそれ以外で2箱。

がんこな腰痛 肩こり・関節痛はこれで治る!:

When did ignorance become a point of view?:

オープンソースプロジェクトの管理と運営:

コンピュータユーザのためにお著作権&法律ガイド:

p

ぶっくま〜く

「デジタルな著作権」をめぐる攻防(前編):

NetBSD's ftpd(8) 由来の lukemftpd が tnftpd に改名:

ftpd ML 849 より…
Sun Dec  8 13:09:20 UTC 2002    lukem
        * tagged as "tnftpd 2.0 beta2"
        * build & install as "tnftpd" (instead of "ftpd")
        * provide replacement for strsuftollx()
        * update to NetBSD-current 2002-10-08

mkthums.pl の作者にメール

mkthum.pl には大変お世話になっております。
画像の整理には、このツールがないと生活できない程、
自分にとって大切なツールです。
使用している際に2点気になる点がございましたので、
既にご存知の事かもしれませんが、ご報告致します。
どちらもVer.0.7.2の話ですが、
0.6.x でも同様な挙動を示します。

(1) -j オプションを付けない場合、thums 一覧で gif画像が表示されない。

gif のまま thum を作成するルーチンを確認しましたところ、
thums のファイル名に gif の拡張子をつけますが、index から張られる
thums img リンクは jpg の拡張子がつきますので
thums 一覧で画像を表示した時、gif の所の img のリンクが切れます。

-j オプションに対応して、処理を変える部分が数箇所ありますが、
405行目を見ると、
        if(!opt_j){
となっていましたので、
        if(!$opt_j){
に修正する事で、上記の問題を回避しております。

(2) 壊れた gif イメージで size が正常に取得できない時、処理を中断してしまう。

当方の環境では、

identify: Not a GIF image file (./tmp/img20021005053744.gif) [そのようなファイルやディレクトリはありません].
identify: Missing an image file name.
Illegal division by zero at /home/upa/bin/mkthum.pl line 351.

のように表示されます。
この症状につきましては、&get_picture_size($file); で取得した $width, $height の
チェックを行い、!defined や 0以下の条件で、next でループの先頭に
戻るようにして凌いでおります。

以上、2点報告でした。

このような素晴しいツールを公開して下さり感謝いたします。
そしてより多くの人がこのツールで幸福になれたらと思います。

2002年12月11日(水)(自宅)

(自宅)

ぶっくま〜く

Yahoo! BB、150万回線突破:

なりふり構わぬ勧誘活動が効を奏したという事かしら。

USEN、11月末の光ファイバを使ったインターネットサービスの契約数:

うちまで USEN のサービスエリアが来てたら契約したと思いますが、 もう、 B フレ - ニューファミリー - 2セッション接続で幸せになってしまったので… (嬉泣き

「どこでもキーボード」がPDA・携帯にやってくる:

9月の記事に今さら気付いてみる…
この発想はすごい。

最先端研究者が描く、SFチックなワイヤレスの未来:

私たちは、自らネットワークを構築し、自己修復を行い、
消費電力を自己管理できるデバイスの開発に取り組んでいます。
このシステムには、ただ監視するだけでなく、
それ以上の能力を持つアクチェータ(作動装置)を採用しています。
例えば、このアクチュエータはサンプルを取り出すことができます。
また、視覚/聴覚的な情報を取得する小型センサーも備わっています。
そのサイズはチップ上の回路に合わされているので、布地に織り込んだり、
コンクリートに混ぜ込むことができます。 
どこかで聞いたような… u 氏の研究を思い出した… (謎

内蔵メモリーに音楽CD約11枚分*の長時間記録が可能、小型でさらに携帯性が向上した新スタイル"ネットワークウォークマン" 発売:

カッコイイ…

買っとけ! DVD:

収録するディスクは「コレクターズ・エディション」の倍となる4枚組み。
ディスク2枚に渡って収録する本編には、まったく新しいエピソードを6個追加。
さらに、既存のチャプタにも新シーンが追加され、再編集されている。
その結果、本編の収録時間は208分となり、劇場公開と同じ内容の
「コレクターズ・エディション」より30分も長くなっている。
まさにボリューム満点だ。
騙された…
売店のおっちゃんは本編は同じだって言ってた *1 のに…

*1: でも、全く同じかどうかは聞いて無いので、これは確認不足ですね…

無線 LAN

お友達のe 氏と話をした時に出てきた URL を忘れないうちにメモ…

情勢:

M フレッツ:

5GHz帯:

dual:

参考資料:

個人的:

暴走族…

頼むから徐行しないでさっさと通り過ぎて、 でもって往復しないで… クラクションの音も止めて〜(ρ_;
週末だけでも、つらいのに…
スピードを出すんだっがら、気持ちいいってのは分かるけど、 徐行して騒音だけ出すのって、周りに迷惑をかけるのが主な目的になっている訳で、 それで楽しいっていう連中の気持ちは分かりません。
日本がほんとうに法治国家であるなら、あーゆー奴等を厳罰に処すべきだと思うのですが。 (恐いので STRIKE 扱い)

2002年12月12日(木)(自宅)

(自宅)

世界中の人間から役立たずって罵られ続ける夢を見てしまった。 気分最悪…自分自身に反論できないのが更に痛い…

ぶっくま〜く

MSX MAGAZINE FAQ:

クリスマスイブ発売予定のようでです。

メルコ、IEEE 802.11g対応製品を2003年2月出荷開始 〜IEEE 802.11a製品は打ち切りに:

同じく54Mbpsに対応したIEEE 802.11aより、チップ価格が安く、
屋内での通信安定性も優れているという。
e 氏の話だと、11a はそもそも屋外での通信はダメらしい。
法律的には可能になったけど、気象レーダーのマイクロ波中継回線が使っているので、 それに負けるとの事。

2002年12月13日(金)(自宅)

(自宅)

ダメ

もうダメ… 腰痛いし腹痛いし… (ρ_;

ぶっくま〜く

finaldrive:

フラッシュってここまで出来るんだ…

2002年12月14日(土)(自宅) 体重:57Kg

(自宅) 体重:57Kg

順調に痩せ中…

早く完治させて会社に復帰したひ… しくしく…
なにとか歩ける位には回復したけど、 座る事だけ出来ないんだよなぁ…
トイレで便座に座り続けるのはまだ苦行みたいなものだし。

VNC server

いまだにベッドに縛り付けられている状態なんだけど、 サーバで動作する GUI アプリも使いたくなって来たので、 VNC を導入してみた。
Windows 同士を VNC で繋ぐ事があったけど、UNIX と相互接続した事は無かったんで。 とりあえず、インストールメモ。

Linux で VNC server:

rpm package になってるので、お気楽極楽。
yoya@awm.jp% su
Password: 
# rpm -ivh vnc-3.3.5-1.i386.rpm
    <略>
サーバを起動。
yoya@awm.jp% vncserver

You will require a password to access your desktops.

Password:
Verify:

New 'X' desktop is ns.awm.jp:1

Creating default startup script /home/yoya/.vnc/xstartup
Starting applications specified in /home/yoya/.vnc/xstartup
Log file is /home/yoya/.vnc/ns.awm.jp:1.log

NetBSD で VNC server:

yoya@alt% cd <略>/pkgsrc/net/vnc
yoya@alt% make
   <略>
local: vnc-3.3.3r2_unixsrc.tgz remote: vnc-3.3.3r2_unixsrc.tgz
500 'EPSV': command not understood.
227 Entering Passive Mode (129,169,98,106,145,57)
200 PORT command successful.
150 Opening BINARY mode data connection for vnc-3.3.3r2_unixsrc.tgz (2072772 byt
es).
  0% |                                     |     0       0.00 KB/s    --:-- ETA
このまま進まない。ダメっぽい…
仕方がないので、realvnc から取得したソースを手動で make & install
yoya@alt% tar xvfz vnc-3.3.5-unixsrc.tar.gz
 cd vnc-3.3.5-unixsrc
./configure
yoya@alt% make
<略>
/usr/X11R6/lib/libXaw.so: warning: tmpnam() possibly used unsafely,
 use mkstemp() or mkdtemp()
warning が気になるけど…
yoya@alt% cd Xvnc
yoya@alt% make World
<略>
Sat Dec 14 13:39:16 JST 2002

Full build of Release 6.3 of the X Window System complete.

yoya@alt% cd ..
yoya@alt% su ..
Password: 
# ./vncinstall /usr/local/bin
# mkdir -p /usr/local/vnc/classes
# cp classes/* /usr/local/vnc/classes
で、実行。
yoya@alt% vncserver

You will require a password to access your desktops.

Password:
Verify:

New 'X' desktop is alt.awm.jp:1

Creating default startup script /home/yoya/.vnc/xstartup
Starting applications specified in /home/yoya/.vnc/xstartup
Log file is /home/yoya/.vnc/alt.awm.jp:1.log

。。。:

あとは、ノート PC から vncclient で ns.awm.jp:1 や alt.awm.jp:1 に繋げばおっけー。

NetBSD で JXTA

JXTA.org から stable build を取得。 zip で配られているので、まずは zip アーカイブを伸長
yoya@alt% mkdir JXTA_stable_2002_09_24
yoya@alt% cd JXTA_stable_2002_09_24/
yoya@alt% unzip ../JXTA_stable_2002_09_24.zip
	<略>
yoya@alt% mkdir all
yoya@alt% cd all
yoya@alt% unzip ../all.zip
	<略>
yoya@alt% mkdir instantp2p
yoya@alt% cd instantp2p
yoya@alt% unzip ../instantp2p.zip
動作確認
yoya@alt% pwd
<略>/JXTA_stable_2002_09_24/all/instantp2p
yoya@alt% sh ./unix/ip2p.sh
myjxta が起動して外部の RDV と継るのを確認。 そして、インストール (コピーするだけ
yoya@alt% pwd
<略>/JXTA_stable_2002_09_24/all/instantp2p
yoya@alt% cp lib/*.jar ~/lib/java/jxta/.
環境設定 .bashrc (もしくは .profile) に追加
export JAVA_LIB=/home/yoya/lib/java
export JXTA_LIB=$JAVA_LIB/jxta

for f in $(\ls $JXTA_LIB/*.jar)
    do
        CLASSPATH=$CLASSPATH:$f
    done
export CLASSPATH
NetBSD1.6 + Linux_suse + JDK1.4 だと rdv と接続してくれなかった。 なので、JDK1.3 で動かす事にする。
尚、debug レベルは info に設定すると良い感じ。 それ以上細かいデータを流しても読みきれないし。

深夜の道路工事

午前1時に家の前で工事の音が聞こえてきて目が醒めた。
とりあえず無視して寝続けようとしたんだけど、 地響きはひどいし騒音も容赦なくなってきた。
公共事業費から割り当てられた予算を無理矢理消化する"年末調整"って奴ですか…
地震が来た時みたいに家がグラグラ揺れる程、ひどくなってきたので、 たまらなくなって、服を着て見に行った。
ホワイトボードが置いてあったので、読んでみると。
(有) 藤建設
工事予告 期間 平成14年12月12〜22日
         時間 1:00 〜 6:00
路面切削工
あぁ、なるほど、「掘っては埋める」という噂の…
って、朝6時まで工事が続きますか…
しかも、来週もやるのかよ…
工事してる横で暇そうにしてるおっちゃんがいたので、話をしてみた。
(よ) あの。その前の家に住んでるんですけど。
     深夜にこんな大がかりな工事されると眠れないすけど… (泣
おっちゃんの返事。
昼間とかに申請しても、この道路は交通量が多いので、
役所から許可が降りないんですよぉ。

昼間とか迷惑のかからない時間に工事をしたいのは、 やまやまなんですけどねぇ。ほんとに残念です〜。
いやぁ。はっはっはっ…
はっはっはっじゃね〜っ! (心の叫び
インフラ整備が必要なのは分かるけど、 多少のわだちが出来てるとはいえ、 車で運転してる時は気にならない程度だし、 今すぐ工事が必要な道路とは思えない *1 んですけど…
もっと舗装が必要な場所はいくつもあるのに なぜ、家の前を… (号泣
というか、うちから少し離れた駅前側の国道の方がわだちがひどい上に 所々ひび割れしてるんだから、そっち先やれ的。
という事情で、眠れない夜を過ごしてます…
*1: 素人判断するなとか怒られそうだ…
かくして、ストレスは確実に溜っていく…

Makefile 使用時の改行コードの罠

awm.jp(=www.awm.jp) -> alt.awm.jp の方向に同期を採る為に、 Makefile で
all: work <略>
work:
	rsync -ruvz -e ssh --exclude '*~' --exclude '#*#' \
		"yoya@awm.jp:/home/yoya/work/*" work/.
のようにして、make コマンドを打つ事で同期をとっているが、 sync 中に対象ファイルがリスト表示されているのに、 ディレクトリを 覗くと、実際にはコピーされていない。
ちょっとだけ悩んだけど、
bash-2.05$ ^d
.   .^M ..
ぅあ… そっか…
この Makefile、Windows + Cygwin 環境で使っていたのを パクったからWindows の改行コードが付いてるんだ…
	rsync -ruvz -e ssh --exclude '*~' --exclude '#*#' \^M
		"yoya@awm.jp:/home/yoya/work/*" work/.^M
のように理解した訳ね。
まぁ、とにかく直さねば。
まずは、Makefile の改行コードを UNIX のに直して、それから
yoya@alt% mv  .[^.] test
yoya@alt% ls
test
yoya@alt% rm -rf test # (ぉぃ
ふぅ…
make し直そ…

ぶっくま〜く

AVIファイルがあるフォルダへのアクセスを高速化:

5インチベイに搭載可能なUPS!その名も“安心くん”が登場!:

内蔵ってのはいいなぁ…
UPS って置き場所に困るし。

バランスの取れた著作権法が知的所有権の保護につながる:

サイバー法の権威として有名なスタンフォード大学のLawrence Lessig氏が 慶應義塾大学で知的財産権について講演を行ないました。
結論としては、
「適切な政策がインターネットの硬直化を防ぎつつも、
 知的財産権を保護できるということで、
 社会全体の利益最大化を考えたバランスのとれた著作権法が重要である」
とした。

2002年12月15日(日)(自宅)

(自宅)

JXTA Chat

色んな話を聞けたので、メモ

初心者らしい人:

cirne> interesting...I have a java chat system I've developed and
 am considering extending it to P2P with jwta
yoya> Is it published? > chat system
cirne> Yes, it's at www.intercommunicate.com
yoya> thank you.
cirne> sure, thanks
無茶苦茶な英語だけど通じたらしい。やはり会話は気持ち… # 言い訳 読んでみた
yoya> I understood that It's has web chat interface.
cirne> Yes, I started writing the chat in '97...it's currently a java App
 and front end applet
cirne> There's also a chat client App that runs outside the web
yoya> I think very interrest things if your char system is linked by jxta network.
cirne> Yes, I have to learn more about jxta, yoya
要するに、
<かなり後で外の人に対する返事>
cirne> well I'm looking to apply jxta to a chat system I have to
 make it p2p and extend to collaboration
という事をしてる訳で…

研究対象にしてる人:

voyager> i'm currently converting it into a webservice
voyager> so other people can reuse it in their own apps
voyager> http://homer.csm.port.ac.uk/student-projects/undergrad/searled/
ふ〜む なるほどなるほど〜
会話が終わった後。一息ついて試してみた。 Prototype1 をクリックしてと…
Could not connect - peer might not be running
PEER0:Could not run method - not connected to peer
Could not run exit method - not connected to peer 
Could not connect - peer might not be running
Could not run method - not connected to peer Could not run exit method
 - not connected to peer 
しくしく… (ρ_;

JXTA のエライ人:

gonzo> re jxta/chat applications i work on
 http://myjxta2.jxta.org and would love to have some help :)
gonzo> i'm using myjxta2 right now. there's ample features we could add.
myJXTA2 開発者 *1 キタキタキタキタ━━━(゜∀゜≡(゜∀゜≡゜∀゜)≡゜∀゜)━━━━!!
……… (落ち着け自分
切角なので、色々聞いてみた。
original author ではなく、 refactoring してる人らしい。
gonzo> if folks are interested, the "refactor branch" of myjxta2 is
 available via "cvs -d :pserver:{USER}@jxta.org:/cvs co -r refactor myjxta2
refactor ブランチで生活しているとの事。
gonzo> there's a ton'o good stuff to build onto myjxta(2) but
 at this time i'm slashing out bogus code, nuking dialogs (opting for tabbedpanes),
 and removing the redundant listener infrastructure.
まぁ、そこまで宣伝されたら入れない訳にもいかないので、 インストールして起動してみた。
yoya-myjxta2> I see that myjxta2 has customized jxta configuration ui.
 It's cool.
gonzo> functionally they are all pretty close. the issue, i think,
 is more of code stability so that people can run it reliably and
 extend it with cool features. when i started trying to do the later
 i ran into troubles, hence the "refactor" spin.
	<略>
gonzo> it is customized but we need to make it better.
 it looks good from the ui layer but internally it is a bit scattered.
 we can fix that.
なるほど…
yoya-myjxta2> hmm. I can join only one group at once with myjxta2.
gonzo> re groups i suspect myjxta2 has problems based on
 the underlying group management code. i'm working to fix that
gonzo> with the "refactor" branch so that one can join n groups ...
 not just be a member of one.
gonzo> at this time, myjxta2.refactor has a tabbed pane and the tab is
 the name of the group ... but
 we only support NetPeerGroup right now. prototype issue.
複数グループで並列で会話する機能も作っているらしい。 タブ切替え方式で、NetPeerGroup (デフォルトで参加するネットワーク全体を示すグループ) を割り当てる所までは出来ているとの事。
gonzo> get jdk 1.4.1
gonzo> get ant 1.5
gonzo> cvs -d :pserver:{USER}@jxta.org:/cvs co -r refactor myjxta2
gonzo> cd myjxta2/binding/java
gonzo> ant bootstrap
gonzo> ant run
試しにやってみた。
yoya@alt% ant bootstrap
Buildfile: build.xml

bootstrap:
	<略>
BUILD SUCCESSFUL
Total time: 1 minute 43 seconds
yoya@alt% ant run
Buildfile: build.xml

run:

compile:
	<略>
動いた… けど、twm だとレイアウトが崩れて全然使い勝手がよくない感じ。
今度時間を見付けて Windows で動かしてみよう。# 時間なんてどこにある的

*1: 後で myjxta2.jxta.org を見て、 プロジェクトオーナーの James Todd さんだと知る…

Tomcat 導入

インストール:

まず、jakarta-tomcat-4.1.12.tar.gz を上記のサイトから入手して、 好きな場所に展開する。
yoya@alt% mkdir -p ~/src/www ; cd ~/src/www
yoya@alt% wget http://jakarta.apache.org/builds/jakarta-tomcat-4.0/\
release/v4.1.12/bin/jakarta-tomcat-4.1.12.zip
	<略>
yoya@alt% su
Password:
# mkdir -p /usr/local/java/jakarta
# chown yoya /usr/local/java/jakarta
# exit
yoya@alt% cd /usr/local/java/jakarta
yoya@alt% unzip ~/src/www/jakarta-tomcat-4.1.12.zip
	<略>
yoya@alt% mv jakarta-tomcat-4.1.12 tomcat-4.1.12
環境変数の設定
export TOMCAT_HOME=/usr/local/java/jakarta/tomcat-4.1.12
export PATH=${PATH}:${TOMCAT_HOME}/bin

動作確認:

yoya@alt% cd /usr/local/java/jakarta/tomcat-4.1.12
yoya@alt% ./startup.sh
Using CATALINA_BASE:   /usr/local/java/jakarta/tomcat-4.1.12
Using CATALINA_HOME:   /usr/local/java/jakarta/tomcat-4.1.12
Using CATALINA_TMPDIR: /usr/local/java/jakarta/tomcat-4.1.12/temp
Using JAVA_HOME:       /usr/pkg/java/sun-1.3.1
これでサーバが動作したはずなので、lynx で *1 確認。
lynx http://localhost:8080/examples/servlets
   Hello World        [execute.gif] Execute [code.gif] Source
   Request Info       [execute.gif] Execute [code.gif] Source
   Request Headers    [execute.gif] Execute [code.gif] Source
   Request Parameters [execute.gif] Execute [code.gif] Source
   Cookies            [execute.gif] Execute [code.gif] Source
   Naming             [execute.gif] Execute [code.gif] Source
   Sessions           [execute.gif] Execute [code.gif] Source
上記の文字が表示されるので、Execute の実行結果と Source を見比べる。
Request Parameter を見ると、なんとなく流儀が見えてくる。
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class RequestParamExample extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("GET Request. No Form Data Posted");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse res)
    throws IOException, ServletException
    {
        Enumeration e = request.getParameterNames();
        PrintWriter out = res.getWriter ();
        while (e.hasMoreElements()) {
            String name = (String)e.nextElement();
            String value = request.getParameter(name);
            out.println(name + " = " + value);
        }
    }
}
こんな感じで、request を解釈して response に結果を渡せばいいっぽい。

設定:

あらかじめユーザとパスワードを設定しておけば、 Tomcat が GUI で色々な設定が出来る。 このサイトを参考にして、$TOMCAT_HOME/conf/tomcat-users.xml に 自分のアカウントを追加してみる。
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="role1"/>
  <role rolename="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>
あれ… デフォルトの設定が…
危ない危ない… 消さねば…
# admin じゃないから大丈夫かもしれないけど、念のため…
<user username="yoya" password="<内緒>" roles="admin"/>
生のパスワードを書き込むので、他の人に見られないようにしてと…
chmod og-rwx tomcat-users.xml
ふむ。ダメかユーザ名入れても拒否される。 再起動と… # もっと良い方法がありそうだけど
yoya@awm.jp% shutdown.sh  ; startup.sh
Using CATALINA_BASE:   /usr/local/java/jakarta/tomcat-4
Using CATALINA_HOME:   /usr/local/java/jakarta/tomcat-4
Using CATALINA_TMPDIR: /usr/local/java/jakarta/tomcat-4/temp
Using JAVA_HOME:       /usr/java/j2sdk1.4.0
Using CATALINA_BASE:   /usr/local/java/jakarta/tomcat-4
Using CATALINA_HOME:   /usr/local/java/jakarta/tomcat-4
Using CATALINA_TMPDIR: /usr/local/java/jakarta/tomcat-4/temp
Using JAVA_HOME:       /usr/java/j2sdk1.4.0
これでおーけー。

WebDAV テスト:

Windows 2000 + Internet Explorer5.5 なので、 この通りに動かしてみた。
ぉぉぉおお。
書けるよ。読めるよ。消せるよ。

日本語ダメっぽい:

「新規テキストドキュメント.txt」 は書き込めなかった…
一度、US ASCII なファイル名で保存して、 そこから日本語のファイル名に変換するのは出来るんだけど、 一度日本語のファイル名にすると、他のファイル名には、 日本語だろうがアルファベットだろうが、「〜の名前を変更できません」 と叱られるし、消す事さえ出来なくなる。
う〜む。
Windows XP + IE6 では日本語ファイル名でも書き込めたし、変更も出来たけど、 削除するとなぜか、WebDAV サービスそのものがしばらく停止してしまう。
う〜ん。

*1: 本当は w3m を使おうと思ってたけど、pkg の w3m を make したら コンパイルエラーが出て、修正してコンパイルし直すのも面倒なので…
lynx は素直にコンパイル&インストール出来たし。


2002年12月16日(月)(自宅) 体重:57Kg

(自宅) 体重:57Kg

日記を隠すのをやめてみる。

事情が変わって、おおっぴらに日記を書けるようになりましたので、 からリンクを張りました。
また、 diary.awm.jp/htdocs/robots.txt
User-agent: *
Disallow: /~yoya/
のように指定をして検索対象から外して貰っていたのですが、 これを止めて、検索に引っかかるようにしました。
なぜ、今まで検索にかかるのを許可しなかったのかといいますと
当日記を検索するのに使ったと思われるキーワードを Hyper Nikki System のログで確認出来るのですが、 実際の日記が、検索キーワードにふさわしくない内容である事が多かったので、 google 様goo 様 に迷惑をかけてはなるまいと、検索を拒否していました。
しかし…
よくよく考えると、そのキーワードを元にして 日記の方向性を決めていくというのも悪くないと思いまして、 しばらく 検索キーワードに応じて調査を行い、日記の情報を充実させていくという方針を採る事にしました。
今までサボっていた分のツケという意味でも、 今年度一杯はフルマラソンのつもりで情報収集 & 整理して公開をしようと、 そう心に決めた訳です。 # 耳タコとか言われそうな気配
結果的にダメでもこうしたきっかけで挑戦してみるのはいいと思いますので… (弱

axis 導入

yoya@alt% cd ~/src/www
yoya@alt% wget http://xml.apache.org/axis/dist/1_0/xml-axis-10.zip
yoya@alt% su
Password:
# cd /usr/local/java/jakarta
# unzip ~/src/www/xml-axis-10.zip
# cd xml-axis-10
TOMCAT への AXIS のインストール
# cp -r webapps/axis $TOMCAT_HOME/webapps/.
環境設定
export AXIS_HOME=/usr/local/java/xml-axis-10
export AXIS_LIB=$AXIS_HOME/lib

for f in $(\ls $AXIS_LIB/*.jar)
    do
        CLASSPATH=$CLASSPATH:$f
    done
export CLASSPATH
TOMCAT を再起動。
yoya@alt% shutdown.sh ; startup.sh
Using CATALINA_BASE:   /usr/local/java/jakarta/tomcat-4.1.12
Using CATALINA_HOME:   /usr/local/java/jakarta/tomcat-4.1.12
Using CATALINA_TMPDIR: /usr/local/java/jakarta/tomcat-4.1.12/temp
Using JAVA_HOME:       /usr/pkg/java/sun-1.3.1
Using CATALINA_BASE:   /usr/local/java/jakarta/tomcat-4.1.12
Using CATALINA_HOME:   /usr/local/java/jakarta/tomcat-4.1.12
Using CATALINA_TMPDIR: /usr/local/java/jakarta/tomcat-4.1.12/temp
Using JAVA_HOME:       /usr/pkg/java/sun-1.3.1
てな訳で、 をチェックすると。
Optional Components
Found Mail API (javax.mail.internet.MimeMessage) at /usr/local/java/jakarta/tomcat-4.1.12/common/lib/mail.jar

Warning: could not find class org.apache.xml.security.Init from file xmlsec.jar
XML Security is not supported
See http://xml.apache.org/security/
まぁ、Optical なのは後にしよう。
ともかく、axis のサービスは動くはずなので、 axis のサンプルプログラムで繋げてみる事にする。
yoya@alt% cd $AXIS_HOME
yoya@alt% java samples.userguide.example3.Client こんにちは
The AXIS engine could not find a target service to invoke!  targetService is null
サービスを見付ける為のおまじないが必要らしい。
yoya@alt% java org.apache.axis.client.AdminClient \
	       samples/userguide/example3/deploy.wsdd
- Processing file samples/userguide/example3/deploy.wsdd
- <Admin>Done processing</Admin>
うむ…これで…
yoya@alt% java samples.userguide.example3.Client こんにちは
The AXIS engine could not find a target service to invoke!  targetService is null
あぅぅぅ… (泣

ぶっくま〜く

デンマークでP2Pユーザーにダウンロード代請求:

この値段が高いとみるか安いと見るかは人によりけりな感じ。

samba 日本語ファイル名

coding system = euc
を設定しているのにも関わらず文字化けをするので、 困っていたところ、以下のページをたまたま見付けた解決。
samba 2.2.4のman smb.conf(5) 
http://www.samba.gr.jp/project/translation/2.2.4/manpages/smb.conf.5.html 
上記manによると、client code page = 932の時だけcoding systemが有効になるそうです。だから 
 coding system = EUC
 client code page = 932
でいいのではないでしょうか。 

2002年12月17日(火)(自宅)

(自宅)

ログ

Recent Search Engine::

さっそく google に引っかかったみたいで…
google : jxta namazu -> /~yoya/
google : RealVNC インストール -> /~yoya/
namazu に手を出す予定はありません。

病院

体調は非常によかったんだけど、 実際には先週から症状が改善されていないらしい。
努力が足らないか。

axis 続き

Axis のマニュアルを日本語に翻訳されている方がおられたので、 参考にしてみる…
yoya@awm.jp% cd $AXIS_HOME
yoya@awm.jp% cp samples/userguide/example2/Calculator.java \
	     $TOMCAT_HOME/webapps/axis/.
ソースを置いておけば、Axis が勝手にコンパイルしてくれるらしい。
yoya@awm.jp% java samples.userguide.example2.CalcClient -p8080 add 2 5
Got result : 7
ふむ。これは大丈夫。
やっぱり問題は。WSDD か… wsdd ファイルを見ると http:: でなく file:: なクラスファイルを指しているように見える。
example2 の例だと Tomcat 経由で起動した Axis とやりとりを する形になると思うんだけど、この WSDD の場合は、axis エンジンを 起動してるのは Client なのかな。う〜ん。謎だ。

ぶっくま〜く

NTT東日本、P2P技術を活用したインターネットラジオ配信実験開始:

この技術を利用すると、新たな視聴希望ユーザーは、
すでにコンテンツを視聴しているユーザーを経由してラジオを聞くことになる。
なるほど。ユーザにも仕事を肩代りさせると。

ソニーの低ビットレート用新圧縮フォーマット 「ATRAC3plus」をテスト:

こうしたことを総合的に考えれば、
とにかく音質重視ということであれば、
ATRAC3plusを用いるのはお勧めできない。
とはいえMP3程度の音質はキープしているわけで、
通勤途中にポータブル機で聴くというレベルであれば、
ATRAC3plusの48kbpsでも十分だろう。
低ビットレートに強いらしい。

驚異的な記憶力の秘密はBC5世紀のギリシャの放浪詩人にあった=英学者が論文:

連想して記憶するってのは、結構有名な話だけど、このシモニデスさんが起源なのかな。

inn インストール

pkg で make install してみた。
===========================================================================

The following files should be created for inn-2.3.3:

        /etc/rc.d/innd (m=0755)

===========================================================================

===========================================================================
You may wish to customize the following files for inn-2.3.3:

        /var/news/etc/actsync.cfg
        /var/news/etc/actsync.ign
        /var/news/etc/buffindexed.conf
        /var/news/etc/control.ctl
        /var/news/etc/cycbuff.conf
        /var/news/etc/distrib.pats
        /var/news/etc/expire.ctl
        /var/news/etc/incoming.conf
        /var/news/etc/inn.conf
        /var/news/etc/innfeed.conf
        /var/news/etc/innreport.conf
        /var/news/etc/innwatch.ctl
        /var/news/etc/moderators
        /var/news/etc/motd.news
        /var/news/etc/news2mail.cf
        /var/news/etc/newsfeeds
        /var/news/etc/nnrpd.track
        /var/news/etc/nntpsend.ctl
        /var/news/etc/ovdb.conf
        /var/news/etc/overview.fmt
        /var/news/etc/passwd.nntp
        /var/news/etc/radius.conf
        /var/news/etc/readers.conf
        /var/news/etc/sasl.conf
        /var/news/etc/storage.conf
===========================================================================

来年にでも設定しておこう。

深夜工事

毎晩毎晩、深夜に工事をするのはちょっと…

qant 導入

cp qant ~/bin/.
さてと、実行。
bash-2.05$ qant
/home/yoya/bin/qant:23:in `require':
 No such file to load -- optparse (LoadError)
        from /home/yoya/bin/qant:23
はぅ…
cd pkgsrc/devel/ruby-optparse/
make install
     <略>
===> Registering installation for ruby-optparse-0.8.6
ruby-optparse-0.8.6 requires installed package ruby-base-1.6.7nb3
さて…
/home/yoya/bin/qant:24:in `require':
 No such file to load -- nqxml/treeparser (LoadError)
        from /home/yoya/bin/qant:24
一個一個潰して行かないとダメか…

2002年12月18日(水)(自宅)

(自宅)

MRI 検査

行って参ります。

問診:

検査前に、2重3重の確認が必要との事で、色々再確認されました。
ペースメーカーをしているか。 手術で金属を埋め込まれていないか。 刺青をしてないか。暗くて狭い場所でじっとしていられるか等です。
問診の後、検査が始まるまで時間がありましたので、 待合室で先の医師と世間話をしていました。
自分の家の周辺の事をよく知っていて、 昔、主に自分が小学生の頃に、 どのような工事があって、 どのような反対運動があってといった事柄を 懐かしそうに話してくれました。
僕の方は、今ではどこまで道が延びていて、 通りにスーパーや病院等が出来て、 とても便利になったという事を話しました。
かなり年配の方で、自分の出身校の小学校と中学校の両方で 校医をした事があるとの事で、当時の話をしてくれました。
中学校は、恐い子供が沢山いると聞いていたので、 あまり長く学校にいたくなかったそうです。 確かに僕の出身中学にはガラの悪い子供達が沢山いたと記憶しています。悪い事をやっているのを目撃した際に先生に通報しても、逆に通告したのが知られて犯人から因縁を付けられる状態でしたので、そうなるのも当然でしょう。自分も不良にお金をせびられた時に、"偶然隠し持っていた" ナイフで逆に脅して亊無きを得た経験があります。

検査:

検査の部屋は強力な磁場が出来ているので、 時計やテレホンカード、眼鏡等は着替え室に全部置いて行きます。 また、お化粧も濃いのも良くないそうです。 上半身の服はそのままで、ズボンだけ検査着に着替えました。
部屋に入り、比較的軟らかい台の上に横たえ、 狭くて暗い筒の中に入れられて検査を開始しました。
耳もとで不意にブザーを鳴らされる感じでかなり大きな音が聞こえます。 恐らく、高速で何かが回転している音だと思いますが、 ブザーという例えが適切だと思います。
お年寄には少々厳しい検査だと思いますし、 騒音が嫌いな人は耳栓をした方が良いかもしれません。
始め、「チッチッチッ」というカウントダウンの音に続いて、ブザーが鳴ります。 これを何度か繰り返します。 少し経つと慣れてきて、カウントダウンの後またブザーかなと思っていたら、 今度はドリルで穴を開けるような音が鳴りました。これには少し驚きました。 カウントダウンの音がなく、不意に音が鳴る事もある為、油断なりません。
記憶力が弱い為、あまり自信はありませんが、 順番はおよそ以下のような感じです。
カウントダウン有ブザー音
カウントダウン有ドリル音
カウントダウン有ドリル音 2重和音
カウントダウン無ブザー音
カウントダウン無ブザー音 2重和音
カウントダウン無ドリル音
カウントダウン無ドリル音 2重和音
カウントダウン無ブザー音 2重和音 2拍子のリズム (長時間)
カウントダウン無ドリル音 2重和音 3拍子のリズム (長時間)
着替えもふくめて30分丁度でしたので、 検査自体の所要時間は、およそ25分だと推測します。
以上のように書いている事から察しが付くかもしれませんが、 自分としては、楽しい検査でした。
2拍子の時は、太鼓のワクを叩くような音とブザーのような音が 交互に聞こえるのですが、ブザーを裏拍として聞くと、 マッコイ「わっしょい」のように聞こえますし、 3拍子はワルツのようでした。
MRI 装置を作った人の遊び心なのかもしれません。 考え過ぎかもしれませんが…
そういった訳で、思ったより検査が短く感じられました。

検査結果は明後日:

金曜日に病院に電話をして確認をしますが、 担当医が病院にいるのは来週の火曜日ですので、 詳しく結果が分かるのはその時かもしれません。

私信:

いえ。事情を申しますと、
ある日、体育会系の人達が壁や天井を壊してるのを偶然見かけました。
「それはまずくないか?」と注意をしても聞く耳を持ちませんでしたので、 当時担任の教師に 告げ口相談をしました。
次の日から、その人達から狙われるようになりました。(ρ_;
具体的には、登校時に後ろから忍よって来て飛び蹴りをされたり、 大勢で通せんぼしたり。いわゆるいじめに分類される扱いだと思います。
逆怨みされてる事を教師に話したところ、 以下のやりとりがあった事を教えてもらいました。
(教師)「◯◯からお前たちが壁を傷付けているって聞いたけど本当か?」
(奴等)「やってません」
予想通りでした。
自分は当時、まだスポーツマンを辞めて間もなく、 逃げ足運動神経に自信があった為に、たいして気にしていませんでした。 疲れていて相手にしたくない時は、 正面の校門をあきらめて裏門を利用したり、 それさえ出来ない時は柵を飛び越えて入れば済む事でしたから。
ただ、4〜5人に囲まれるとさすがにどうしようも無い訳でして…
そこで、やむなく先の暴挙に出た訳です。
その出来事を後で先の教師に話したところ、 凶器を出した事を怒られただけで終わりました。 当然といえば当然ですが…
あまり気持ちのよくない思い出です。

ぶっくま〜く

Hello World!:

たまたま検索にかかりました。 様々なコンピュータ言語での Hello World 集です。

mod_limitipconn.c - Apache 2.0 port:

This is the distribution page for the Apache module mod_limitipconn.c,
 which allows web server administrators to limit the number of
 simultaneous downloads permitted from a single IP address. 

CCCD FAQ:

世界初の半透明CD、ディーティージャパンが年明けに投入:

用語解説:手を触れるだけでデータをやり取り「人体通信」:

以前、NHK 総合テレビでウェアラブルコンピューティングの特集を放映していた時に、 MIT の人が出てきて、誇らしげに説明していたのを思い出しました。

全文検索復活

namazu_for_hns のセットアップを始めからやり直したところ、 機能が復活しました。 10月位に www.awm.jp から diary.awm.jp に移動していたのですが、 .hnssetup の DEFURL の定義を www.awm.jp から変更していなかった為、 検索結果には、www.awm.jp へのリンクが張られました。
DEFURL を diary.awm.jp に向けて、namazu の index を全消去して、 index を全て作成し直しました。
yoya@awm.jp% cd ~/diary/namazu2
yoya@awm.jp% rm index/*
yoya@awm.jp% cd ../bin
yoya@awm.jp% ./hns-index2
検索エンジンで当日記に辿り着いた場合に、全文検索のページに redirect させる為に ~/public_html/diary/config.ph の設定を変更しました。
# IntelliSearch, redirecting Namazu search
#$IntelliSearch = 0;	# 1 -> on, 0 -> off (default)
$IntelliSearch = 1;	# 1 -> on, 0 -> off (default)

JALOPY Java Source Code Formatter Beautifier Pretty Printer

導入しました。
mkdir jalopy-1.0b10 ; cd jalopy-1.0b10
unzip ../jalopy-1.0b10.zip
cp lib/jalopy-1.0b10.jar ~/lib/java/.

Axis 続き

メールを見直した所、解答そのものが書かれたメールを見付けました。
java samples.userguide.example3.Client -s axis/services/MyService こんにちは
MyService こんにちは
You typed : こんにちは
Axis 1.0 では -s でサービス名を明示的に指定する必要があるそうです。

2002年12月19日(木)(自宅) 体重:56Kg

(自宅) 体重:56Kg

体重減少中

順調にそして確実に減少中です。

ぶっくま〜く

Linux AVI file library:

上記のサイトは UNIX で動画を扱う人にとって要チェックだと人から教わりました。

Windows Media 9日本語版、1月29日リリース:

 HD 品質と5.1chサラウンドに対応した動画のストリーミング配信が可能で、
 PCによるホームシアターを実現できる

Graphical User Interface Timeline:

無線LAN、来年に向けての動向:

IEEE 802.11gはまだ普及しない
<略>
 IEEE 802.11gは未だドラフト仕様のままで、
来年5月にシンガポールで開催予定のIEEE 802臨時会合まで
正式版仕様とはならない(万一、土壇場で揉めるようなことになると、
7月の本会議まで延期される可能性もあるという)。
無線LANチップベンダーはドラフト仕様のままで製品化を進め、
6月までには正式版に対応したファームウェアを配布することで
 IEEE 802.11gに正式対応しようと考えている。
悩ましいところですが。自分は 11g で人柱を実践していこうと心に決めています。
11a にあまり将来性を感じませんので…

実験用 PC

「諸事情により、もう一台サーバ用の PC を購入するかもしれないが、 体を壊していて外出できないので、秋葉原でパーツを買う事が出来ない」 という事を某方面で話した所、以下の PC を紹介して頂きました。 今時、i845GE を選んでおけば安牌ではないかという理由による選択です。 DDR-SDRAM 512MB は \13,480 で購入できますので、 仕事が出来なくてお金が減る一方である自分のふところは痛みますが、 しばらくご飯を減らせば何とか捻出できる範囲です。
注意点として、 i845 は4バンクまでの DDR メモリしか認識できない仕様ですので、 仮に 256M のメモリを指した状態で PC を購入して、 その後、512M メモリを追加した場合、通常 512M は 2 面 *1 ですので、256M + 512M は 3 面で許容範囲内ですが、更に 512M を追加すると、 5 面となって、どれか1つのメモリが認識されなくなります。
始めから 512Mx512M にするか、256M で我慢できなくなった時に、 256M + 256M + 512M 等としようと考えています。 上記のページを読むと、いかに自分がメモリについて無知が思い知らされます、
*1: 1 面の 512M メモリは、あまりに高価で自分には手が出せません。

2002年12月20日(金)(自宅)

(自宅)

biglobe 会員証

スタートアップガイド等は、入会の後すぐに郵送で自宅に届いているのですが、 それと別で送られてくるという会員証がまだ届いていないようでした。
仮パスワードの期限もとうに切れて、サービスの変更も出来ず、 おそらく PPPoE の接続が一度でも切れると、 再接続できない状態だと予想されますので、 そろそろ要求したほうが良いのではと思い、 biglobe の お問い合わせフォームで尋ねてみました。

。。。:

確かに郵送したという返事が来ましたので、再発行の手続きを取りました。 受け取る前のどこかの段階で紛失したのかもしれません。

会社

お買物

書籍:

デジタルカメラ:

中古で購入しましたので、2万前後の値段でした。 知人にこの話をした所、同じ形でスペックが少し上がった Xi という機種があるそうです。

ヘッドフォン:

透明感のある音です。 Porta Pro のゴージャスな音に慣れている人には 少し物足りないかもしれません。

PC 部品:

SCSI ターミネータ:

HD 増設

alt サーバに IDE 120G と、余っていた SCSI 60G 。合計 180G 追加しました。
alt サーバは、箱の中のベイも内部電源も全て使いきりましたので、 これ以上の内蔵デバイスの増設は不可能です。
これ以上増設する場合は、外部 SCSI HDD を利用する事になると思います。

ツッコミ: USB2.0 や IEEE1394 は?:

alt サーバは USB1.x と SCSI は使えるのですが、 上記の 2 規格にば対応していません。
カードを指すよりは、 LHD-H120SU2 を増設した方が楽ですので。

PeerCast

某所にて PeerCast の実験をしている事を知人から聞き、参加しました。 といっても、 単に PeerCast と Winamp 2.81 を導入して、BGM として流しているだけです。
PeerCast は P2P の特性上、port を開けなければなりません。
我が家の Windows は NAT の中に隠れていますので、 静的 NAT の設定が必要だと考え、 以下の設定を /etc/ipnat.conf に追加しました。
rdr pppoe0 0.0.0.0/0 port 7144 -> 192.168.1.7 port 7144
rdr pppoe0 0.0.0.0/0 port 7145 -> 192.168.1.7 port 7145
ipnat にこの設定データを渡してみます。
bash-2.05# ipnat -f /etc/ipnat.conf
4:ioctl(SIOCADNAT): File exists
5:ioctl(SIOCADNAT): File exists
SIOCADNAT は、既に存在する NAT の設定です。

ぶっくま〜く

レコーダの王座が獲れるか? 東芝「RD-XS30」:

PCI-X 2.0とPCI Expressの関係は?:


2002年12月21日(土)(自宅)

(自宅)

腰痛

お風呂でバブの泡を患部にぶつけて特に痛むところを 強制的に温めるようにしていたのですが、 今日になって、泡を当てても痛みを感じませんでした。
回復ぎみ

PeerCast ツッコミが…

PeerCastのポート解放は7144だけで良いそうです。
7144番に Servents/Data の許可を与え、
HTML/Broadcasting の許可は7145番に与えるように設定します。
そしてルータやファイアウォールには、
外部からの接続を7144番に対してだけ許可するよう設定します。
余計な事をしていたようです。 ipnat の設定から 7145 を外した後、 コマンドラインから手動でエントリを消去しました。
# ipnat -r -f -
rdr pppoe0 0.0.0.0/0 port 7145 -> 192.168.1.7 port 7145 tcp
^d

samba 大文字小文字の罠

samba で共有しているディスクを Windows 上でネットワークドライブとして マウントして、ディスクを整理していた時の話です。
ある似た目的で作成したフォルダをマージした所、 Foo と foo の2つのディレクトリが存在していて、 中身を確認したところ同じ内容でしたので、Foo を消去しました。
それから、foo の中身を確認した所、中身が空になっていました。(ρ_;
大事なデータも入っていましたので、頭が真っ白になりましたが、 少し落ち着いて考えたところ、 以下のような操作をしてしまったと理解できました。 前の会社に在籍していた時も同じ失敗をしたはずなのですが、 学習していないようです。自分…

ぶっくま〜く

Webサイト高速化のツボ - 顧客は“8秒”も待てない:

8秒ルールは有名ですし、今さらと言われそうですが、一応、再チェックです。 最近は更に気が短くなって、3秒ルールが出来そうな気配さえ感じます。

2002年12月22日(日)(自宅)

(自宅)

某師がお見舞いで来訪

差入れ、有り難うございます。(私信)
いまだ座り続ける事が出きない為、 途中から寝転がって話を聞いてしまいました。
すみません。

ぶっくま〜く

ピクセラ PIX-MPTV/P2W (TVキャプチャアダプタ ,ハードウェアエンコード,iTVC15 ,PCI):

ビデオ出力機能の追加に伴って、
MPEG-1/2のハードウェアデコード機能も付加されており、
ハードウェアデコードしたMPEG画像をそのままビデオ出力することができる。

DirectX 9.0 End-User Runtime - 日本語:

日本語版のダウンロードの手引きは現在準備中です。
現在のところ英語版のガイドのみご覧いただけます。
ドキュメント無しでソフトウェアをリリースするのは、さすがです。
この時点で導入する人柱指向の方々にとっては、英語で十分とも言えますが…
DirectX 9 のウリは、HW T&L の *1 廃止、Pixel&Vertex ShaderのProgrammable 化という話を聞いたのですが、 正直今、DirectX に手を付ける余裕が今ないので、 この辺の事情はさっぱり分かりません…

CD-Rの「音」を考える:

プレクスターに聞く「音の良いCD-Rドライブの作り方」
電源
PC の内部電源は最悪なので、外付けドライブを使用する
振動
振動でブレると良くないので、おもしを乗せる等して固定する
光学的ノイズ
ドライブは黒い方が音が引き締まる。
ただし、引き締まる分、歪みが目立つ可能性に注意。

*1: Hardware Transform & Lighting

2002年12月23日(月)(自宅)

(自宅)

vip マシン(Win2K pro)不調

半年位前から、 等と調子の良くない vip *2 マシンの Windows 2000 sp3 ですが、本日とうとう起動しなくなりました。
STOP: c000026e Unknown Hard Error
Unknown Hard Error
safe mode や、正常起動時の profile 等を利用しても、症状は変わりません。
あきらめて、OS を一からインストールする事にしました。

バックアップ:

dual でインストールしていた Windows98 で起動し、 まずは、Win2K がインストールされているドライブの Documents and Settings フォルダをバックアップ。

再インストール(?):

CD から起動して、Windows 2000 Setup を実行しましたが。
Setup is loading files (Qlogic QLA1080, 64bi bit PCI LVD SCSI HBA)...
上記の文が表示されたまま、次に進みません。
そこで、Third Party 製のドライブを手動でいれる方を選択肢して、 ドライバを選択しないで、進めたところ、セットアップ画面まで辿り着きました。
インストール
復元
の2択を迫られたので、ダメもとで復元を選び処理を任せたところ、 起動に成功し、logon して普通にツールを動かせるようになりました。
多少気持ち悪いですが、動いているので文句は言わない事にします。 今のうちに新しいマシンを調達せよという天の声かもしれませんが、 貧乏ですので延期です。

*1: これは Win98, WinNT, Win2K 全てで同じように起動できなくなったので、 ハード的な問題と推測してます。
*2: TwoTop の VIP シリーズとして購入していまして、 そのまま、vip というマシン名を付けています。

apt-get update

# apt-get update
取得:1 http://updates.vinelinux.org 2.6/i386/base/pkglist.updates [72.1kB]
	<略>
取得完了: 89.4kB を 3s (24.9kB/秒)
ファイル依存を処理しています... 完了
パッケージリストを読みこんでいます... エラー!
E: このシステムには 2 つ以上のバージョンのパッケージ 'j2sdk' がインストール
されています。この状態のままでは APT は正常に動作することはできません。
以下のどちらかを選択して実行してください。
  1) 古い方のパッケージを削除して、1 つのバージョンだけがインストール
     されている状態にしてください。又は、
  2) このパッケージの複数のバージョンを共存させておきたい場合は、
     このパッケージ名を 'RPM::AllowedDupPkgs' オプションに追加してください。
オプションは '/etc/apt/apt.conf' に書きます。分からない場合は、
1) の選択肢を選ばれることをお勧めします。
事情があり、jdk1.3 と 1.4 をインストールして環境変数で使い分けていました。
//   AllowedDupPkgs {"^kernel$"; "^kernel24$"; "kernel-smp"; "kernel24-smp"; \
 "kernel-enterprise"; "kernel-BOOT"; "kernel24-BOOT"; "^kernel22$"; \
 "^kernel22-smp\"; "^mol-kmods$"; "^mol-kmods22$"; };
// modified by yoya
// 2002/12/23 "^j2sdk"
 AllowedDupPkgs {"^kernel$"; "^kernel24$"; "kernel-smp"; "kernel24-smp";
 "kernel-enterprise"; "kernel-BOOT"; "kernel24-BOOT"; "^kernel22$"; 
 "^kernel22-smp"; "^mol-kmods$"; "^mol-kmods22$"; "^j2sdk"; };
以上のように /etc/apt/apt.conf を書き換えて、 apt-get update & apt-get upgrade を実行しました。
# apt-get upgrade
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージがアップグレードされます:
  w3m
1 個のアップグレードパッケージ, 0 個の新規パッケージ, 0 個の削除/リプレース
パッケージ, 0 個の保留パッケージがあります。
取得パッケージ: 481kB のアーカイブを取得します。インストール後は 457B が
使用されます。
続行しますか? [Y/n]Y
取得:1 http://www.t.ring.gr.jp 2.6/i386/updates w3m 0.3.2.2-0vl0.26 [481kB]
取得完了: 481kB を 0s (703kB/秒)
RPM コマンドを実行しています (-U)...
w3m                         ##################################################

hdparm

確認してみました。
# /sbin/hdparm -i /dev/hda

/dev/hda:

 Model=FUJITSU MPG3409AT E, FwRev=82B9, SerialNo=VH06T150CKP4
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=80063424
 IORDY=yes, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes: pio0 pio1 pio2 pio3 pio4
 DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=yes: disabled (255) WriteCache=enabled
 Drive Supports : ATA/ATAPI-5 T13 1321D revision 1 : ATA-1 ATA-2 ATA-3 ATA-4 ATA-5
ATA(100)で動いてるようです。

ぶっくま〜く

。。。:

RADEONのセットアップ:

各種DVD-Rメディアの記録品位:

動画ファイルコンバート:


2002年12月24日(火)(自宅)

(自宅)

病院

MRI の結果、ヘルニアと断定されました。
MRI の写真を見させて頂いたのですが、 椎間板第4-5間の場所にヘルニアが出来ていて 神経を3分の1から半分程度、押し潰していました。 非常に分かりやすい程に症状が進んでいるようです。
来年に復活できるのか微妙な状況になってきましたので、 会社にどう伝えればよいのか悩むところです。
出来れば予定通り来年の頭から出社したいのですが、 今月頭にも復活できるという予想も外れましたし…。
とにかく早く報告しないと…

ぶっくま〜く

Webサービス関係リンク集:

図面の公開、市民の利益と逆転判決:

太田裁判長は、一昨年12月に同研究所の社員が
近くのJR高槻駅で放射性同位元素の液体をまいた事件や、
昨年6月に同研究所の排水から発がん性の疑いのある物質
(1、2―ジクロロエタン)が下水道法の排水基準の
2倍以上検出されたことを指摘。
「研究所の事業は人の生命や身体、健康を害する現実的な可能性がある」
と判断した。
さすが JT 様です。

米国を脅かすもうひとつの恐怖〜魔手伸ばすエコテロリズム:

b-geeks.com 2002 (電網公式):

WinMX 自身には興味ありませんが、P2P アプリケーションは、 セキュリティー的にシビアなんだと改めて思いました。

2002年12月25日(水)(自宅)

(自宅)

BIGLOBE カスタマーサポートから葉書

「初期設定でお困りではないですか?」と記してあるはがきが届きました。
※このハガキは、ご入会いただいてから BIGLOBE サービスのご利用
実績のないお客様へ送付されていただいております。
既にご利用されている場合には、本書の到着についてご容赦下さい。 
なるほど。(^^;
すばらしい気の配りようです。

ぶっくま〜く

役所の無線LAN筒抜け 気象庁や都庁、相次ぎ利用停止:

経済産業省では、情報システム厚生課の無線LANの電波が、
外部から受信できる状況だった。パソコンに、
「ハリー・ポッター」などの映画やドラマ、アイドルのビデオなど
多くの不正コピーソフトが蓄積されていた。 
やはり、セキュリティーが甘いとこういう部分もチェックされるのですね。 他山の石とする事にします。
あ。念の為にいいますと、 悪い事は洩らさないようにという意味でなく、 ライセンス管理はしっかりしようという意味です。
例えば、我が家の Windows PC には1つひとつに、 AntiVirus ソフトが入っていますが、 Norton x2 + Trend x 1 + McFree 1 のライセンスを購入してますので、 これらのライセンスが重複してないか神経を使わされます。

経産省、「迷惑メール」撲滅に向けて特定商取引法改正へ:

「末承諾メール米」のような人や法律を馬鹿にしたメールを受け取った場合は、 どこに送れば良いのかという話をした時に見付けた URL です。
meiwaku@nissankyo.jpに送れば良さそうですね。

Alertbox 2002 年 ウェブ・デザインの間違いトップ 10(2002年12月23日):

ジャスラックとは:


2002年12月26日(木)(自宅)

(自宅)

Java 調査

Thread 関連:

それらしい、URL を並べてみます。 「コンカレント・プログラミングでよく発生する問題を回避する方法」 myjxta2 で利用しています。
Semaphore Mutex, CondVar 等、普通のマルチスレッドライブラリであれば 実装しているはずのクラスを補完してくれる便利なパッケージです。 98 年ごろから存在していたらしいのですが、 同期メソッドと同期ブロックでこと足りるような簡単なコードしか 書いて来ませんでしたので、チェックしていませんでした。 生成消滅の頻度が高いスレッドは、プールしておいて、 使いまわす方が良いという話です。

JXTA 関連:

その他:

wav ファイルを鳴らすサンプルプログラム 猿でも理解できそうな程、平易に説明されています。 ちょっとした変数を保存する場合、 Properties で load & store するより、Preference の方が楽ですね。 ただ、Windows を利用する場合にレジストリに格納されるのが 嫌な感じがします。 JDK1.5 で C++ のテンプレートを連想させるような機能が追加されるそうです。
JDK1.4 以前 # Cast だらけで汚れたコード
Vector stringVector = new Vector();
stringVector.add("hoge");
stringVector.add(new Integer(1));
String s = (String) stringVector.get(0);
String s1 = (String) stringVector.get(0); // runtime error!!
JDK1.5 以降 # 型に対して安全なスマートなコード
Vector<String> stringVector = new Vector<String>();
stringVector.add("hoge");
stringVector.add(new Integer(1)); // compile error!!
String s = stringVector.get(0);
今までわざわざ型毎に StringVector 等のクラスを自作していましたが、 これで楽が出来るかもしれません。 なるほど。これですか…

2万円以下のIEEE802.11b無線LANアクセスポイント9機種を比較する

無線 LAN の A.P. を購入するように家族から命令を受けていまして、 悩んでいたのですが、たまたま IRC で無線 A.P. 比較のページを 紹介されていましたので、参考にしてみました。
比較結果 を読みますと、
37m 付近でも変わらず 4Mbps オーバーを記録するのは,
アイ・オー・データ機器,アクトンテクノロジィ,アドテック,
プラネックスコミュニケーションズの4製品で,
これらは無線LANカードによる差もあまり生じていない。
と説明されていましたので、この中で、 「WAN 側 100MBps 対応 & 長距離通信」という条件に合う アドテック ADLINK340AP を最有力候補にしました。
この記事の best choice とされている製品でもありますので、 なんとなく記事に踊らされているような気もしますが… (^^;

ぶっくま〜く

マスコミの威力:

「藤島助役は、「公務で忙しい」(市秘書課)として取材に応じなかった」
というのは、現実に15年度予算の審議をしている真っ最中に予約もなく
取材申し入れをして直ちにコメントをよこせという方がおかしいのではないのか?
その日も午前中であれば時間はあったのに、
取材をしたいという話は全く聞いていなかった。
「取材に応じない」って文章を読むと、ついやましい事があるのではと 勘ぐってしまいますが、こういう事情もあるのですね。 (非常識で横暴な無礼極まりない)取材に最優先で対応してくれなかったりして機嫌を損ねると、こういう仕打ち待っているという事で 記事は気をつけて読まないといけないものだと考えさせられます。

「聖母はレイプ被害者」説の英番組に世界中から抗議:

当時、ヨセフ(←養父)の子と呼ばれず、 ガリラヤ(←地名)のイエスと呼ばれてたように、 イエスが周りから私生児として差別されていたのは事実らしいので、 否定は出来ないと思いますが、 せっかく、 千年以上に渡って築き上げて来た純潔の象徴としてのマリアのイメージを 今さらわざわざ崩そうとするのは、非常に勿体ない事だと感じます。
人が苦労して作ったものを壊す事に快感を感じるのは分かりますが、 それは背徳というものです。
僕はイエスには神の子であって欲しいと思います。 信仰心があるという訳ではなく、 そうでないと夢がありませんし、 神様は一人でも多い方が安心できるという、 むしろキリスト教と逆の方向でそう考えます。
中世ヨーロッパの頃のように教会が権力に取り入って他宗教を弾圧したり民衆を家畜のように支配するようになれば、自分もこうしたネガティブキャンペーンに乗せられるかもしれません…

長引くIT不況「撤退」後絶たず シリコンバレー 寂しい聖夜:


2002年12月27日(金)(自宅)

(自宅)

ぶっくま〜く

ご当地の踏み絵:

語尾は「じゃん」より、「べや」とか「だべ」を使うほうが多い。
これは、関西出身者に指摘されて始めて気付きました。

Windows 98-Me リソース不足の対策:

今だに、Windows98 を捨てられない自分としては、リソースはいまだ鬼門です。

知られざる世襲公務員たち −特定郵便局の研究−:

自民党の票田という事以外、情報がないのでどこまで本当か分かりませんが…

2002年12月28日(土)(自宅)

(自宅)

購入リスト

家の人が購入したものですが、家族で共有して使っています *1 ので、一応メモとして残します。

液晶テレビ FlexScan L465-BK:

無線 A.P. ADLINK 2422:

以前購入した Melco の A.P. と段違いといって良い程に快適です。 一階と二階で離れて使っていても、ssh で問題無く作業が出来ます。
また、A.P. に付属している 22M の無線カードを VAIO SRX7 に差して巨大なファイルを転送してみたところ、 A.P. の周辺では、4,5M Bps 程の速度が出ました。
尚、この実験のあと、VAIO SRX7 の内蔵無線 LAN 機能が 全く使えなくなりました。ADTEC のカードを外してもダメです。 同様の事をお試しになる方は重々お気をつけ下さい。(ρ_;
続く

*1: 恐らく、自分が一番使用頻度が高いと思いますし。

ぶっくま〜く

飼い主の死後、残されたペット達は…:

自分の死後残されるペットの行く末を心配する飼い主が増えている。
高齢化でペットとだけ暮らすお年寄りも多く、猫を終身で預かる施設も登場した。
これのハードディスク版を作るのはどうでしょう。
PC の箱等に連絡先を記した紙を張っておいて、 持ち主が死亡した時に(秘密の遺書に従って)確実に処理してくれるような…

icom AP-5000:

この会社の作るアンテナと増幅回路の性能が良いらしいと聞きましたので、 一応チェックです。
ADTEC のを購入する前に知っていれば… (泣

RBB TODAY (ブロードバンド情報サイト)-2002-12-27 [年末企画]無料サービスと立ち上がったばかりの有料サービスのせめぎ合い−公衆無線LANの「この1年」:

監視カメラ

このところ家の前にポイ捨てされるタバコの吸殻の数が半端でなくなった事と 年末になると人の家に火を放って暖まる方々が増える事もあり、 家が火事になる前に今すぐ動かせと家の人から命令を受けましたので、 かなり 今さら ですが、 監視カメラの画像を保存する仕組みを作ってみました。
# 所用時間 8 時間のでっちあげ作業

システム構成:

今となっては貧弱なシステムです。 MMX でさえありません。
  • NetBSD1.6 (GENERIC kernel)
  • PentiumPro 200MHz (512M cache)
  • メモリ 64M + ハードディスク 7G Bytes強
  • Intel Smart Video III/VideoLogic Captivator PCI (ビデオ入力2系統)
  • SECOM の監視カメラ 2台

NetBSD 1.6 インストール:

NetBSD 1.6 iso イメージから吸い出した boot1.fs が壊れていたようで、 ftp サイトから boot1.fs ファイルを単体で持ってきてブートフロッピーを作成しました。 *1 パーテーションは、 / (4G) + swap (128M) + /var (3G) としてます。
/home -> /var/home のシンボリックリンクを張って home を var に含む事で、 頻繁に書き換えるパーテーションを /var に閉じ込める事にしました。

NetBSD 環境構築:

cvs で取得した pkgsrc を利用したかったのですが、
cvs -d :pserver:anoncvs@sup.jp.netbsd.org:/cvs/cvsroot login
<パスワード>
cvs -d :pserver:anoncvs@sup.jp.netbsd.org:/cvs/cvsroot co -r netbsd-1-6 pkgsrc
以上のコマンドで反応なしでした。 まだ、ネットワークの設定に問題があるのかもしれません。
仕方なく、pkg_add で必要なパッケージを一つ毎に加えていく事にします。
pkg_add ftp://ftp.jp.netbsd.org/pub/NetBSD/packages/1.6/i386/All/〜
作業用
bash-2.05nb1.tgz, emacs-21.2.tgz, wget-1.7.tgz
日本語処理
nkf-1.7.tgz, ja-less-358.tgz, Canna-dict-3.5.2nb2.tgz, Canna-server-3.5.2nb2.tgz
キャプチャ用
SDL-1.2.3nb2.tgz, jpeg-6b.tgz, fxtv-1.03nb1.tgz
システム構築用
apache-2.0.43.tgz, perl-5.6.1nb7.tgz, ImageMagick-5.3.9nb1.tgz (mkthum.pl 用)

FreeBSD BT848 / BT878 Driver:

このサイトの Sample applications から bktr2jpeg.c を拝借しました。 bktr2jpeg.c の先頭に #if 0 〜 #endif で括られたシェルスクリプトが含まれていまして、
sh bktr2jpeg.c
のように実行すればコンパイルが始まります。
ただ、これは、FreeBSD の環境しか考えていないようですので、 自分の環境に合わせて変更しないといけません。
#if 0
	set -x
	cc -Wall -O2 -I/usr/local/include -L/usr/local/lib -o bktr2jpeg \
		bktr2jpeg.c -ljpeg
        exit
#endif
キャプチャマシンは、NetBSD 環境ですので、
#if 0
	set -x
        gcc bktrd.c server.c \
                -I/usr/pkg/include/ -L/usr/pkg/lib -R/usr/pkg/lib -ljpeg
        exit
#endif
このように変更しました。
ただ、これだけ変更しても、 以下の2箇所でヘッダが見付からなくてエラーになります。
#include <machine/ioctl_meteor.h>
#include <machine/ioctl_bt848.h>
そこで、NetBSD のヘッダーファイルを検索したところ、 このヘッダと同じような定義を持つ <dev/ic/bt8xx.h> を見付けました。
#include <dev/ic/bt8xx.h>
上記のヘッダに変更したところ。無事にコンパイルが通りました。

bktr2jpeg の使い方:

使いかたは bktr2jpeg の Usage を読めば分かります。
Usage: bktr2jpeg [-f filename] [-s input] [-d device_number] [-w width]
 [-h height] [-q quality] [-v]
自分が使っているキャプチャカードは、ビデオ入力が 2 つあって、 監視カメラ2台を各々に繋げて、両方の画像を参照しようとしてますので、
bktr2jpeg -f cap0.jpg -s 0 
bktr2jpeg -f cap1.jpg -s 1 
のようにコマンドを実行して、0 入力と 1 入力 を取り込む事にします。

capture loop:

大雑把にいうと以下のようなスクリプトを作成しました。 (実際のコードはエラー処理が沢山はいってて、読みにくいです…)
my $base_dir = "〜/htdocs";
while(1) {
	my ($dir_time, $file_time) = make_dir_time(time());
	foreach my $input (0 .. 1)  {
		 my $dir = $base_dir . $input .'/' .$dir_time;
		`mkdir -p $dir`;
 		`bktr2jpeg -f $dir/$file_time -s $input`;
	}
}
make_dir_time は、
sub make_dir_time($) {
    my $time = shift;
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
	localtime($time);
    $year += 1900;  $mon += 1;
    my $dir = sprintf "%04d/%02d/%02d/%02d/%02d",
	$year, $mon, $mday, $hour, $min;
    my $file = sprintf "%02d.jpg", $sec;
    return ($dir, $file);
}
これで、時系列でディレクトリに分別されて保存されます。

Web 経由でキャプチャした画像を閲覧:

CGI で(これまた大雑把ですが)以下のようなコードを作成しました。
my $time = time();
my $before;
for($before=0; $before<20; $before++) {
	my $base_dir = '/home/yoya/public_html/cap' . $input;
	if (-f join('/', make_dir_time($time - $before))) {
		last ;
	}
}
my ($dir_time, $file_time) = make_dir_time(time() - $before);
<$dir_time と $file_time を元に、img src のリンク先を決定>
要するに、現在の時間から 20 秒まで遡って最新の画像を調べる処理です。 あとは対応する画像を img src で張りつけて、ヘッダの所に
<META HTTP-Equiv=refresh CONTENT=1; URL=".">
の一行を挿入して、それらしいページが完成しました。

ToDO:

この作業にあまり時間をかけたくなかったので、 でっちあげで単純に画像を保存するだけの仕組みを作りましたが、 本来なら以下の仕組みを作る必要がありますし、 そっちの方が重要だとさえ思います。
何か問題があった時に、画像からそれを検索出来るようにする。
画像の差分を毎回とって、差分が激しい画像 のみピックアップ。 更に、グラフにして どの時間帯の画像に多くの変化があるのか 一見して分かるようにする。
JPG 画像は全てネットワーク経由で別のサーバに転送する。
CPU が貧弱なので、キャプチャ以外の処理をさせると、画像の取りこぼしや画質の劣化 が生じる。
プロセスの起動回数を減らす。
bktr2jpeg をそのまま使うので、filename や input 元を指定し直して何度もコマンドとして起動してる分、負荷が高い。 bktr2jpeg.c を改造して、bktr2jpeg コマンドの内部でループさせる方が良い。
他にやるべき事が山程ありますので、これらは手つかずになりそうです…
現状では、何かあった時に目的の画像を探す為に、 mkthum.pl を動かして、サムネイル表示をしていますが、 それでもまだ大変な手間がかかります。
どなたか 2つの jpg ファイル画像の差分を評価するツールを御存じだったりしませんか? (^^;
# 他力本願

役に立ちそうページ:

以下は audio device や X windows system が必須でしたので、 (時間も無い事ですし)使うのをあきらめましたが、 有用そうですので、ブックマークとして残しておきます。 このパッケージに含まれる、udpsend, udprecv はそのまま流用できそうです。
./configure
	    --libdir=/usr/pkg/lib --includedir=/usr/pkg/include \

	    --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib \
    	     --with-sdl-prefix=/usr/pkg

 make CC="gcc -I/usr/pkg/include"
としましたが、oss が入ってない為に一部コンパイルが通りませんでした。 NetBSD pkg にも入っていたました。 そのうち、X Window の設定をする暇があれば試そうと思います。
# 現在の仕事のスタックを見る限り、永久にその機会は訪れないと思いますが…

*1: boot2.fs のフロッピーを入れた時点で I/O error が出ましたので、 (てっきり、boot2.fs が悪いと思い込み) boot1.fs のフロッピーに問題があると気付くのに時間がかかりました。

2002年12月29日(日)(自宅)

(自宅)

監視カメラ

朝起きて、昨日作成したツールで画像カメラの映像を確認しようとした所、 画像が何も送られてこない状態でした。 コードを見直したところ、fork した子プロセスの後始末を忘れている箇所がありました。
$SIG{'CHLD'} = sub { wait; }; # no more zombie
魔法の呪文を一行追加。:)
続く

。。。:

今回のシステムでは、子プロセスが同時に死ぬ確率はほとんど無いので (おそらく)問題にはならないのですが、念の為、
$SIG{'CHLD'} = sub { while(wait3() > 0) { } };
にするべきですね…
続く

ぶっくま〜く

ジャンクプレステ復活作戦2:

名古屋はええよ!やっとかめ ちまき亭:


2002年12月30日(月)(自宅)

(自宅)

監視システム

朝起きて確認をしたところ、ディスクが溢れていました。
あわててデータをファイルサーバに退避しました…
ただ…
bash-2.05$ uptime
 6:55AM  up 1 day, 11:21, 1 user, load averages: 6.42, 6.18, 6.02
という状況では、バックアップ作業さえキャプチャーに悪影響を及ぼします。
バックアップ中に家の前でいたずらされると、その瞬間を見逃す可能性が増えますので、気軽にバックアップも出来ません。
続く

ゾンビ・プロセスについて

昨日の問題をきっかけに、いままで曖昧なままにしていた SIGCHLD とゾンビ・プロセスについて整理してみました。
恐らくツッコミどころ満載な説明だと思いますが、 間違いをそのまま覚えているのはつらいですので、 あえて無知を晒け出そうと思います。
尚、ゾンビは BSD よりの表現らしく、SYSV では defunct と呼ぶようです。 自分はとりあえずゾンビで呼び方を統一しますので、 その辺りは適当に読み替えて下さい。

仕組み:

一般に UNIX では、親が子プロセス(の終了)と同期を取る為に、
  • exit や C-c interrupt で終了した時等 *1 に、親プロセスに送られる SIGCHLD
  • 子プロセスの処理終了まで待つ wait システムコール
といった仕組みが用意されているのですが、
  • プロセスが死ぬと親プロセスに CHLD シグナルを送って自分はゾンビになる。 (処理系に応じてゾンビを作らない設定をする事で避ける事も可能)
  • ゾンビの子がいる時に親プロセスが wait を発行すると子プロセスは成仏する。
  • 親プロセスが死んだ場合は、init が代わりに処理をしてくれる。 (実は、自分はここの理解が曖昧です… daemon ライブラリを使っているせいでしょうか…)
という挙動をします。つまり、
親に先立ち子プロセスが死んだ場合は、子プロセスは水子(ゾンビ)として
自縛霊のようにプロセステーブルを占有して、親に (wait という)
お経を唱えてもらうまで成仏できません。	
お経 (wait) を忘れて、短命な子プロセスを生成し続ける無責任な親がいると、 プロセステーブルがゾンビで溢れて新たなプロセスが生成できなくなり、 (一般ユーザでは)ログインさえ出来なくなります。
一つのプロセスがシステム全体に悪影響を及ぼしますので、 fork を利用する際には、子プロセスを作り過ぎないというだけでなく、 ゾンビの処理にも気をつけなければなりません。

対策:

自分は、親子で同期を取る必要のない 放任主義的なプログラムを作成する時には、 CHLD シグナルの割り込みハンドラで wait を実行するルーチンを 設定しています。
先の例では、
$SIG{'CHLD'} = sub { wait(); };
といったコードを追加していますが、 それだけでは問題が生じる事があります。なぜなら、
  • 複数の子プロセスが同時に終了すると、 一つの SIGCHLD しか伝えられない。
つまり、一つの SIGCHLD の割り込みハンドラで一度 wait を実行したとしても、 取りこぼしが生じて、ゾンビが生じる可能性が残るからです。
この辺を care しないデーモンは DoS で簡単にサービス不能になります… の「シグナルの取りこぼしとwaitpid()システムコール」に実例が載っていますので 参考になると思います。
これは解決しないといけない問題ですが、 wait(2) は、単純に子プロセスが死ぬまで待ちますので、 死んだ子プロセスがいる時に呼ばないとブロックします。 *2 無条件で呼ぶとブロックする可能性があります。
その為、非同期( ブロックしない)指定が可能な wait である waitpid(2)wait3(2) 、 wait4(2) 等を使うのが定石のようです。
$SIG{'CHLD'} = sub { while(wait3() > 0) { } };
use POSIX ":sys_wait_h";
$SIG{'CHLD'} = sub { shift; while(waitpid(-1,&WNOHANG)> 0) { } };
このようにすれば、 wait3 *3 waitpid は、
  • ゾンビの子プロセスが残っている間は 処理したプロセスの pid を返す
  • ゾンビを処理しきった後はブロックせずに -1 を返すので while を抜ける
という挙動をしますので、残っているゾンビプロセスを一掃できます。

まとめ:

そういう訳で、自分は fork をして、 かつ 親子で同期を取る必要のないプログラムを書く時には、 呪文のように、先の wait3waitpid のコードを SIGCHLD ハンドラに設定する事にしています。
尚、 にあるように、SIG_IGN を設定すると、 システムが良きに計らってくれる処理系もありますし、 もしかしたら、それが主流派かもしれません。
ですが、(いささか古い FAQ ではありますが) を読むと、
POSIX では SIG_IGN に SIGCLD をセットした時の振舞いは規定されていないので、
POSIX 系をサポー トするようなプログラムには使うことができません。
とありますので、今のところ、SIGCHLD でSIG_IGN を利用せず、 自前でハンドラを用意する事にしています。

備考:

以上の話はゾンビ対策に限った場合の話でして、 BSD のマニュアルにある通り SIGCHLD はプロセスのステータス変化を親に通知するシグナルですので、suspend した時にも SIGCHLD が発生するようです。
# まだ確かめていません。
また、プロセスが生きていたとしても、上記のような状態変化がある場合は、 wait でブロックしないそうです。
とはいえ…
自分としては子プロセスに resume させたりといったプログラムと しばらく縁がなさそう …でもなかったりします… (汗……ですので、子プロセスの終了に限定した話をするのも意味があると思います。

追記 (2009/4/22):

google 経由で来られる方が多いので、少しまとめました。

*1: signal(7) のマニュアルを読むと、 Linux2.4 は「Child stopped or terminated」、 NetBSD1.6 ではより抽象的に「child status has changed」と記載されていて、 処理系によって説明が異なるようですので、 「〜等」と表現しました…
*2: ブロックしない条件が曖昧ですので、断言は避けます。
*3: Solaris2.x や Linux2.x、FreeBSD4.x で wait3 を使って来たのですが、 今回、NetBSD1.6 では wait3 が使えなかったので、より一般的な waitpid に 変更しました…

本当は怖い家庭の医学 - テレビ朝日

食事中、たまたま家の人がテレビをつけまして、久々に鑑賞しました。
テレビ朝日で「本当は怖い家庭の医学」という番組が放映されていまして、 メディカル・ホラーという題で、 虫歯や肥満等が悪化して死亡したり足を切るような例が次々と紹介されました。
それを見た自分は、 人は恐怖でしか動けない事を理解しました…
ですが…

その30分後には黒糖3度塗りのふがしを食べている自分がここにいます…
甘いものを食べ過ぎて無性に牛乳が飲みたくなるほどに…
# 喉元過ぎればなんとやら…

無線LAN カード

これ の続き
ADTEC のユーティリティー&ドライバーセットを uninstall したところ、 VAIO の内蔵無線 LAN の機能が復活しました。
ほっとしてます。

2002年12月31日(火)(自宅)

(自宅)

年越し

年越し蕎麦も作って食べてみたのですが、 全く実感が湧きません。
色んなモノに追いたてられていて、心に余裕がないからでしょうか…

監視カメラ

この件はもう終わりのつもりでしたが、 また、 この為、緊急の対応を迫られました。

キャプチャと CGI の処理を分ける:

キャプチャマシンは単にキャプチャするだけで、 データはすぐ別の体力のあるマシンに流し、 データの分別や CGI のアクセスはそちらで処理をする。
といった方針でシステムを組む事にします。

キャプチャマシン:

bktr2jpeg.c を改造して bktrd.c を作成しました。
何をするものかといいますと、 8480 + video 入力番号の tcp port を listen していて、 アクセスされると問答無用で、対応するビデオ入力からキャプチャした 画像の jpeg データを確立されたコネクションに流し込むプログラムです。
簡易サーバといったところですので、
実装イメージを以下に示します。(例によって例外処理を省いて書いてます…)

SIGPIPE:

コネクションが切れたソケットを通じてデータを出力すると、SIGPIPE が発生して、 これを care しないと、 プロセス自体が落ちます。 面倒ですので今回は無視する事にします。
  signal(SIGPIPE, SIG_IGN);
デバッグをしていて気付いたのですが、 gdb でプロセスを動かすと、ハンドラに飛ばずにプロセスがいきなり 終了してしまいます。これは gdb の仕様なのでしょうか…
今さらながら、gdb の仕組みを知らずにプログラミングをしている つもりでいる自分に愕然としてしまいます。

port listen:

キャプチャカードが対応している入力ビデオ番号毎に、 tcp ポートを開きます。
extern int server_open(int port);

#define BASE_PORT 8480

int max_sockfd = -1;
for (i=0; i<n_input; i++ ) {
    sockfds[i] = server_open(BASE_PORT + inputs[i]);
    if (max_sockfd < sockfds[i])
        max_sockfd = sockfds[i];
}

select:

複数の tcp port を開いて監視しますので、 select で待ち構えて、 read enable だと判断できる socket に対して accept する事にします。
extern int server_accept(int sockfd);
extern int server_file2net(int sockfd, char *filename);

while(keep_running) {
	fd_set readfds;
	int n;
	# read enable 監視対象の fd を決める
	FD_ZERO(&readfds);
	for(i=0; i<n_input; i++) {
		 FD_SET(sockfds[i], &readfds);
	}
	# 上記で設定した fd のいずれかが read enable になるまで待つ
	n = select(max_sockfd + 1, &readfds, NULL, NULL, &timeout);
	if  (n < 0) {
		perror("seleect failed");
		return EXIT_FAILURE;
	}
	if (n == 0) {
		printf("may be timeout\n");
	}
	# 実際に read enable の fd を調べる
	for(i=0; i<n_input; i++) {
		if (FD_ISSET(sockfds[i], &readfds)) {
			int cfd;
			# accept して接続を確立する
			cfd = server_accept(sockfds[i]);
			<キャプチャ処理& jpeg 圧縮>
			# jpeg データをクライアントに送信
			server_file2net(cfd, jpeg_filename);
			close(cfd);
		}
	}
}
このようなコードを追加しました。
尚、このコードには、 クライアントが connect した後 read を拒否すると、その間サーバの動作が止まる問題があります。
これへの対処には、accept で受け取った socket を write_fds に設定して、 select で待てば良いのですが、少し面倒なのと、 今回、クライアントは自分が作ったものしか繋げない キャプチャマシンはプライベートネットワークの中に置く。という前提の元、この対処はあとまわしにしました。
少し言い訳をします。select に追加する改造自体は楽なのですが、 jpg ファイルを読み込んでネットワークに write する際、 ブロック単位で転送しますので、次のブロックでまたselect で待つ事になります。 この場合、一つの関数で一気に転送できない事になりますので、 どのブロックまで転送したかを大元で管理しないといけなくなります。
すみません、 このような処理を簡単に追加できない自らの非力を暴露しているようなものですね… (鬱
あと、複数のクライアントが繋ぎに来た時に、 並列に処理できない問題が残っているのは故意でして、 キャプチャデバイスは一度に一つのプロセスしか開けないので、 どのみち待ち合わせ処理が必要になります。 そこで、いっその事 backlog を多めに指定して TCP スタックに任せて 楽をしようという訳です。
と… ここまで書いて気付いたのですが、 非同期の writeを使って期待通りの量を転送できない時は、そのクライアントは見捨てて さっさと close する方針が取れる事に気付きました。
ネットワークの輻輳等で一時的に転送できない場合を考慮しろと指摘されそうですが、 そのようなネットワーク上で一秒置きに キャプチャデータを転送する訳にはいきませんし、 むしろ、失敗したらその回のデータをあきらめる方が、 ネットワークにも PC にも優しいといえます。
# なにより作るのが楽ですので。f(^^;

gethostbyname:

server_open は、とある本を参考にして作成した、 socket, bind, listen を行うサブルーチンで、 昔から使い続けていたのですが、
この中の gethostbyname をコールすると、 なぜか jpeg ライブラリの中で、
failure while saving jpeg
rename: No such file or directory
のエラーが発生する現象に見舞われました。
解析する時間は今ありませんので、 gethostbyname を使わないようにして問題を避けています。
こういう臭いモノには蓋をする姿勢を取っていると、後で痛い目にあうかもしれません。

画像収集:

別の PC から、先の bktrd のデーモンに繋いで、jpeg データを拾い、 時間に対応した名前を持つフォルダを作成して分別します。

bktrclient:

まずは、bktrd サーバに繋いで jpeg データを取得するツールです。 使いかたは以下のように3つの引数で起動します。
bktrclient <サーバ名> <ビデオ入力番号> <出力ファイル名>
コードのイメージを以下に示します。
# しつこいようですが、例外処理を省略して書いてます。実際には 全ての関数について戻り値を調べて、|状態に応じた処理を行っています。
int input, port;
int sockfd;
char *server_name;

server_name = argv[1];
input = atoi(argv[2]);
filename = argv[3];
sockfd = client_open(server_name, port);
client_net2file(sockfd, filename);
close(sockfd);

caploop - bktrclient 対応版:

先の caploop.pl とほぼ同じですが、少しだけ処理が増えていますので、 再度、コードを示します。
my $base_dir = "〜/htdocs";

my %old_dir;

while(1) {
	my ($dir_time, $file_time) = make_dir_time(time());
	foreach my $input (0 .. 1)  {
		 my $dir = $base_dir . $input .'/' .$dir_time;
		`mkdir -p $dir`;
 		`bktrclient -f $dir/$file_time -s $input`;
		# 次のディレクトリに処理が移った時、
		# 前のディレクトリで mkthum の処理を行う。
		if (exists($old_dir{$input})) {
		    if ($old_dir{$input} ne $dir) {
			my $pid = fork(); ## be careful !!
			if ($pid == 0) {
			    `cd $old_dir{$input} ; mkthum.pl -l 6 -r 10`;
			     exit 0;
			}
			$old_dir{$input} = $dir;
		    }
		} else {
		    $old_dir{$input} = $dir;
		}
	}
	sleep(1);
}

「一秒置き」をもう少し正確に…:

一秒より細かい時間情報を取得する gettimeofday 相当の機能が必要でしたので、 を導入しました。
use Time::HiRes;

my $start_time = Time::HiRes::time;
my $time_index = 0;

while(1) {
	<処理>
	$time_index++;
	my $diff_time = Time::HiRes::time - $start_time;
	my $wait_time = $time_index - $diff_time;
	if ($wait_time > 0) {
		select(undef, undef, undef, $wait_time);
	}
}
これで、一秒置きに処理してくれる…はずでしたが、 一秒+αの間隔で処理しています。
今後の課題にします…

完成:

それっぽく動いていますが、 これでも画質が悪いのは避けられません。
普段は、それなりの画質で写っているのですが、

まれにスキャンのタイミングがずれて、 奇数偶数で上下にずれたり、
ビデオ入力0 と1 が混ざった画像が取得できたりします。
また、動く物体はまず奇麗に撮れません。
ドライバ開発者のサンプルプログラムでデータを拾っても同様ですので、 おそらく、ドライバ自体に問題があるのではと思いますが、 残念ながら追う時間が自分には残されていません。 (ρ_;
cvs で kernel source が取得出来ていれば、修正は無理だとしても 原因だけでも推測して、今後のプログラマ生活の糧にしようと思うのですけど…

これで、31 日分だよ〜。

タイトル一覧
カテゴリ分類
Database
JXTA
Java
XML
awm
bookmark
keyword
memo
news
research
Powered by hns-2.19.5, HyperNikkiSystem Project