トップ 最新 追記

誰も褒めてくれないから自画自賛する日記

nu-chon.org  「ぬ」あんてな  「ぬ」wiki  RSS
2000|01|02|03|04|05|06|07|08|09|10|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|06|07|
2012|01|03|05|06|08|09|
2013|01|08|09|
2014|01|03|05|08|12|
2015|01|04|09|10|
2016|01|
Sapporo RubyKaigi 02
Sapporo RubyKaigi 03
RubyKaigi
Sapporo RubyKaigi 2012
RubyKaigi 2013
2001年
4月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

2001-04-01 [長年日記]

散髪

今日こそしよう。

* 13:30

した。


2001-04-02 [長年日記]

初出社(?)

スーツを着ただけという話も。

気をひきしめていこう。GRP kaz

[用語] 今日の用語

* DOM

Document Object Model. XMLとコンピュータ上の情報表現の橋渡しをする。

* xargs

標準入力からコマンドラインを作成し、それを実行する。

* CMP,BMP

CMP(Cibtauber Managed Persistency):コンテナ自信が永続性を管理する。

BMP(Bean Managed Persistency):Bean自身が永続性を管理する。GRP kaz

今日のTodo,Result

* 今日のTodo

楽しきかなJavaプログラム(JP17)
J2EEの世界(JP17)
XMLがわかる。

* 今日のResult

基礎からのJSPの実践講義(JP17)のソースのアルゴリズムを読んだ。
DBでSELECT,INSERTするためには、DBのLogin,open,closeのメソッドだけをもつクラスをextendsしたクラスをつくって行なっていた。
はたして、この実装はいいのかどうか。きっといいのだろうけど。

白髪

最近、あきらかに白髪が増えている。

顔が童顔なので、貫禄つけるにはちょうどいいかなと思ったり思わなかったり。

(父は30代ですでにほとんど白髪で、いつも50歳くらいに間違えられていた。

ちいさいころから白髪が多かったらしく、よく後ろの席の子に抜かれたらしい。)

[Java] MediaTrackerクラス

MediaTracker クラスは、いくつかのメディアオブジェクトの状態を監視するユーティリティクラスです。
メディアオブジェクトには、イメージとオーディオクリップが含まれます。
ただし、現在のところイメージだけがサポートされています。
メディアトラッカーを使用するには、監視するイメージごとに MediaTracker のインスタンスを生成してから addImage を呼び出します。
また、それぞれのイメージには、固有の識別子を割り当てることができます。
これらの識別子は、イメージを取り出す優先順位を制御します。
また、個別に待機できるイメージのサブセットを識別するためにも使用されます。
低位の ID 番号を持つイメージは、高位の ID 番号を持つイメージより優先的にロードされます。

コンストラクタ

public MediaTracker(Component comp)
    指定されたコンポーネントのイメージを監視するメディアトラッカーを作成します。
    
    パラメータ:
    comp - イメージが最終的に描画されるコンポーネント

2001-04-03 [長年日記]

摂生

しましょう。

[Java] 参照

にやられた。

これだけのために、1時間棒にふった。


2001-04-04 [長年日記]

[大学] 荷物

とりにいった。(昨日の夜)

[Java] java.sql.ResultSetMetaData

public interface ResultSetMetaData
ResultSet オブジェクトの列のタイプとプロパティに関する情報を取得するのに使用できるオブジェクトです。

* D2Array

Java Worldより。

いまいるところは

かなり暑い(謎

年金手帳

準備。


2001-04-05 [長年日記]

GRP kazデレゲーション

受信したメッセージの処理を他のオブジェクトに転送するメカニズム。

なんだか

セツナイ。GRP kaz

icps

共有メモリ(-m)、セマフォの情報を入手(-s)

* セマフォ

並行して動作しているプロセス間で同期を取ったり割り込み処理の制御を行う機構。また、そのためにプロセス間で交換される信号。もともとは「手旗信号」の意味。特に、複数のプロセスでメモリ領域やディスク上のファイルを共有している場合に、同時にアクセスして内容の破壊や不整合が起きるのを防ぐために使われる。

Solaris

さわってみた。

さわってみたってだけかも。

うぐぅ

* うげげ

Solaris8って64MBメモリつんでないと、インストールもさせてくれんのか。

ドケチ。

* 今日はヤメ

ぬぁにー。swapに480MBだとー。

くっそー。覚えていやがれ!


2001-04-06 [長年日記]

[Solaris] GNUのパッケージ

GNUのautomake,autoconf,libtoolとかインストールわかりやすいなぁ。

これも、autotoolsのおかげさま?

でもこれらのパッケージをインストールするまえに、make maintainer-cleanとかしたらその後どうなるでしょう。

[Ruby] RDをつかってみる

作業内容を記録するドキュメントにRDをつかうことにした。

これは楽だ。

というか、なんで今まで使わなかったんだろう。

[Solaris] 今日も

負ける。

負けっぱなし。

最後にはプッツンしたな。

今後の課題

年上の方々の前でも、臆しないで「しゃべること」。

飲んだらしゃべれるんだけどね。


2001-04-07 [長年日記]

[本] 書籍購入

XML WORLD 保存版第1弾(IDGジャパン)

2001-04-08 [長年日記]

[本] Ruby256魔道

読了。


2001-04-09 [長年日記]

きょうも

朝マック

世の中

わからないことだらけ。

[Linux] 最近

DHCPでアドレスがいきなりとれなくなるときがあるのですが。

どうしたものか。GRP kaz

VeriSign

デジタル認証サービス

[Solaris] 今日は

また負けかと思いきや、救われる。

* W3M

に潰されかけた。

だが、ここでもかろうじて助かる。

scpでの注意

送信先のsshdのコンパイル時のオプションによってPATHなどが異なるので

$HOME/.ssh/environmentなどに記述する必要がある。

"man sshd"参照


2001-04-10 [長年日記]

[Linux] gnumeric

久しぶり起動可能になった。

つかわないけど、うれしい。

gnome-print(READMEより)

At current stage GnomeFont glyph mapping covers latin, greek and
cyrillic character, in case type1 font has these defined. More
support will be added in future when GnomeFont will be ported to
FreeType2 library.
Font-specific glyphs are supported, using unicode private
area 0xe000-0xf800
Font information is currently read from xml fontmap files,
describing pfb and afm file locations. Fonts are referenced
internally by GnomeFont objects. Each print context decides
itself, transparently from user, how to guarantee font presence
in final rendering destination, i.e. nonstandard fonts are
embedded in PostScript streams.

[Java] IDL

Java IDL は、JavaTM プラットフォーム上で CORBA (Common Object Request Broker Architecture) 標準規格に準拠した
相互運用性および接続性を提供します。
Java IDL を使用すると、Web 対応の分散型 Java アプリケーションから、
Object Management Group による業界標準の OMG IDL (Object Management Group Interface Definition Language) や 
IIOP (Internet Inter-ORB Protocol) 経由で、リモートネットワークサービスのオペレーションを透過的に呼び出すことができます。
実行コンポーネントには、規格に完全に準拠した、分散コンピューティング用の Java ORB が含まれています。
Java IDL を使用するには、IDL インタフェースの定義を Java スタブおよびスケルトンファイルに変換する、
無料配布ツールの idltojava コンパイラが必要です。
Java Developer Connection (JDC) から idltojava コンパイラをダウンロードできます。
JDC の登録をまだ行なっていない場合は、コンパイラを入手するために JDC に登録するよう求められますが、
メンバーになるのは無料です。
ダウンロードページの指示に従って idltojava コンパイラをダウンロードしてください。

* うげっ

こっちがJDK1.3のもの(上のは1.2)

注: このリリースの JavaTM 2 Platform, Standard Edition には、RMI-IIOP が組み込まれています。
RMI-IIOP は、Java RMI (Remote Method Invocation) および Java IDL を統合する技術です。 
ほとんどの場合、RMI-IIOP は Java IDL の代わりに使用できます。 
RMI-IIOP では、CORBA に準拠したインタフェースを、Java IDL 
で使用されていた OMG 固有の IDL (インタフェース定義言語) ではなく、 Java で直接記述します。
詳細については、「RMI-IIOP ドキュメント」を参照してください。 
また、Java IDL では、新しいバージョンの IDL-to-Java コンパイラ が使用されていることに注意してください。
このコンパイラでは、RMI-IIOP に必要な CORBA の新しい標準機能がサポートされています。
このコンパイラは、このリリースの Java SDK から提供され、インストーラによって SDK の .bin ディレクトリに格納されます。
相互運用性を高めるため、OMG IDL コードのモジュール名にインタフェース名を
使用しないことについて説明した注を参照してください。
Java IDL は、Java プラットフォームに CORBA (Common Object Request Broker Architecture) 機能を追加することにより、
標準規格に準拠した相互運用性および接続機能を提供します。
Java IDL を使用すると、Web 対応の分散型 Java アプリケーションから、
Object Management Group による業界標準の OMG IDL (Object Management Group Interface Definition Language) や 
IIOP (Internet Inter-ORB Protocol) 経由で、リモートネットワークサービスのオペレーションを透過的に呼び出すことができます。
ランタイムコンポーネントには、IIOP 通信を使った分散コンピューティングに完全準拠した Java ORB が含まれています。

[Java] IIOP

以前は、分散プログラミングソリューションを作成する場合、Java 言語プログラマは、RMI または CORBA (JavaIDL) から選択しなければなりませんでした。
RMI では、Java プログラミング言語だけで分散プログラムを作成するための使いやすい技術が提供されます。 
JavaIDL では、RMI よりも複雑ですが、Java プログラミング言語で作成されたアプリケーションと、
ほかの CORBA 互換の言語で作成されたクライアントおよびサーバ間で通信を行う機能が提供されます。
RMI-IIOP では、RMI および JavaIDL の利点が同時に実現されています。
つまり、プログラミングが簡単で、ほかの言語で作成されたソフトウェアと CORBA に準拠した対話を行うことができます。 
RMI のプログラマは、いくつかの制約に従うことによって、CORBA の IIOP 通信プロトコルを使用して
あらゆる種類のクライアントと通信できます。
通信できるクライアントには、Java プログラミング言語だけで作成されているクライアント、
およびほかの CORBA 準拠の言語で作成されたコンポーネントで構成されるクライアントが含まれます。

[Translation] GTKtalog

3か月放置しておいたら大変なことになっていた。

というわけで、早急に対応。

ja.poを送った。

sshについて

バージョン1のクライアントでバージョン2のサーバに接続したとき、 バージョン識別子の交換後、
サーバは、バージョン1のサーバを起動し、 交信の続きを行わせる。
このとき、起動されるバージョン1のサーバは、 バージョン識別子の交換をもう一度行ってはならない。 
これを飛ばすためのオプションが、 ssh-1.2.26 にはあり、 このオプションをつけて起動される。

GRP kaz

ssh and ssl

openssh-2.5.2p2のコンパイル(http://www.openssh.orgからダウンロード)

$ ./configure --sysconfdir=/etc/ssh --with-tcp-wrappers -with-default-path=/bin:/usr/bin:/usr/local/bin

これでOpenSSLが必要なことが判明openssh-0.9.6のコンパイル(http://www.openssl.orgからダウンロード)

$ ./config
$ make
$ make test
# make install

再度OpenSSHのconfigureをして、

$ make
# make install

最後に、

# cd /etc/ssh
# cp ../ssh-1.2.2/ssh_host_key* .
# kill -HUP 69(sshのID)
(これではダメみたいなので)
# /usr/local/bin/sshd

GRP kaz

あやしい(/var/log/message on nk98)

Imorioka@noodleってなんだ?

Mar 30 22:26:41 nk98 named[21320]: starting.  named 8.2.2-P5 1999年11月25日 (木)
 01:42:01 JST ^Imorioka@noodle:/usr/src/BIND-8.2.2-P5/src/bin/named
Mar 30 22:26:41 nk98 named[21320]: hint zone "" (IN) loaded (serial 0)
Mar 30 22:26:41 nk98 named[21320]: master zone "nutyon.com" (IN) loaded (serial 
2000022301)
Mar 30 22:26:41 nk98 named[21320]: master zone "0.0.127.in-addr.arpa" (IN) loade
d (serial 2000022302)
Mar 30 22:26:41 nk98 named[21320]: /var/named/db.0.168.192:12: Priority error ne
ar (nk98.nutyon.com.)
Mar 30 22:26:41 nk98 named[21320]: listening on [127.0.0.1].53 (lo)
Mar 30 22:26:41 nk98 named[21320]: listening on [192.168.0.3].53 (eth0)
Mar 30 22:26:41 nk98 named[21320]: listening on [192.168.0.10].53 (eth0:0)
Mar 30 22:26:41 nk98 named[21320]: listening on [192.168.0.11].53 (eth0:1)
Mar 30 22:26:41 nk98 named[21320]: listening on [192.168.0.12].53 (eth0:2)
Mar 30 22:26:41 nk98 named[21320]: listening on [203.216.30.110].53 (ppp0)
Mar 30 22:26:41 nk98 named[21320]: Forwarding source address is [0.0.0.0].2369
Mar 30 22:26:42 nk98 named[21321]: Ready to answer queries.

GRP kaz

bindのコンパイル(on nk98)

$ cd /home/kaz/src

つぎは/var/obj/bindでコンパイルするばあい、

$ make stdlinks 

あとは

$ make clean
$ make depend
$ make all
# make install

ログは

nk98:/home/kaz/bind-8.2.3# make install
Using .systype
Using .settings
/home/kaz/bind-8.2.3/include
make[1]: Entering directory `/home/kaz/bind-8.2.3/include'
/home/kaz/bind-8.2.3/include/arpa
make[2]: Entering directory `/home/kaz/bind-8.2.3/include/arpa'
mkdir -p /usr/local/bind/include/arpa
set -x; for x in inet.h nameser.h nameser_compat.h; do \
        install -c  -m 444 $x /usr/local/bind/include/arpa/$x; \
done
+ install -c -m 444 inet.h /usr/local/bind/include/arpa/inet.h
+ install -c -m 444 nameser.h /usr/local/bind/include/arpa/nameser.h
+ install -c -m 444 nameser_compat.h /usr/local/bind/include/arpa/nameser_compat.h
make[2]: Leaving directory `/home/kaz/bind-8.2.3/include/arpa'
/home/kaz/bind-8.2.3/include/isc
make[2]: Entering directory `/home/kaz/bind-8.2.3/include/isc'
mkdir -p /usr/local/bind/include/isc
set -x; for x in eventlib.h misc.h tree.h logging.h heap.h memcluster.h assertions.h list.h dst.h irpmarshall.h; do \
        install -c  -m 444 $x /usr/local/bind/include/isc/$x; \
done
+ install -c -m 444 eventlib.h /usr/local/bind/include/isc/eventlib.h
+ install -c -m 444 misc.h /usr/local/bind/include/isc/misc.h
+ install -c -m 444 tree.h /usr/local/bind/include/isc/tree.h
+ install -c -m 444 logging.h /usr/local/bind/include/isc/logging.h
+ install -c -m 444 heap.h /usr/local/bind/include/isc/heap.h
+ install -c -m 444 memcluster.h /usr/local/bind/include/isc/memcluster.h
+ install -c -m 444 assertions.h /usr/local/bind/include/isc/assertions.h
+ install -c -m 444 list.h /usr/local/bind/include/isc/list.h
+ install -c -m 444 dst.h /usr/local/bind/include/isc/dst.h
+ install -c -m 444 irpmarshall.h /usr/local/bind/include/isc/irpmarshall.h
make[2]: Leaving directory `/home/kaz/bind-8.2.3/include/isc'
+ install -c -m 444 netdb.h /usr/local/bind/include/netdb.h
+ install -c -m 444 resolv.h /usr/local/bind/include/resolv.h
+ install -c -m 444 res_update.h /usr/local/bind/include/res_update.h
+ install -c -m 444 irs.h /usr/local/bind/include/irs.h
+ install -c -m 444 irp.h /usr/local/bind/include/irp.h
+ install -c -m 444 hesiod.h /usr/local/bind/include/hesiod.h
make[1]: Leaving directory `/home/kaz/bind-8.2.3/include'
/home/kaz/bind-8.2.3/port
make[1]: Entering directory `/home/kaz/bind-8.2.3/port'
/home/kaz/bind-8.2.3/port/linux
make[2]: Entering directory `/home/kaz/bind-8.2.3/port/linux'
/home/kaz/bind-8.2.3/port/linux/include
make[3]: Entering directory `/home/kaz/bind-8.2.3/port/linux/include'
/home/kaz/bind-8.2.3/port/linux/include/sys
make[4]: Entering directory `/home/kaz/bind-8.2.3/port/linux/include/sys'
mkdir -p /usr/local/bind/include/sys
for x in bitypes.h cdefs.h; do \
        if [ -f $x ]; then \
                install -c -m 444 $x /usr/local/bind/include/sys/$x;\
        fi; \
done
make[4]: Leaving directory `/home/kaz/bind-8.2.3/port/linux/include/sys'
/home/kaz/bind-8.2.3/port/linux/include/net
make[4]: Entering directory `/home/kaz/bind-8.2.3/port/linux/include/net'
mkdir -p /usr/local/bind/include/net
for x in junk; do \
        if [ -f $x ]; then \
                install -c -m 444 $x /usr/local/bind/include/net/$x;\
        fi; \
done
make[4]: Leaving directory `/home/kaz/bind-8.2.3/port/linux/include/net'
for x in junk; do \
    if [ -f "$x" ]; then \
        install -c -m 444 $x /usr/local/bind/include/$x; \
    fi; \
done
make[3]: Leaving directory `/home/kaz/bind-8.2.3/port/linux/include'
make[2]: Leaving directory `/home/kaz/bind-8.2.3/port/linux'
make[1]: Leaving directory `/home/kaz/bind-8.2.3/port'
/home/kaz/bind-8.2.3/lib
make[1]: Entering directory `/home/kaz/bind-8.2.3/lib'
/home/kaz/bind-8.2.3/lib/resolv
make[2]: Entering directory `/home/kaz/bind-8.2.3/lib/resolv'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/kaz/bind-8.2.3/lib/resolv'
/home/kaz/bind-8.2.3/lib/irs
make[2]: Entering directory `/home/kaz/bind-8.2.3/lib/irs'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/kaz/bind-8.2.3/lib/irs'
/home/kaz/bind-8.2.3/lib/isc
make[2]: Entering directory `/home/kaz/bind-8.2.3/lib/isc'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/kaz/bind-8.2.3/lib/isc'
/home/kaz/bind-8.2.3/lib/bsd
make[2]: Entering directory `/home/kaz/bind-8.2.3/lib/bsd'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/kaz/bind-8.2.3/lib/bsd'
/home/kaz/bind-8.2.3/lib/inet
make[2]: Entering directory `/home/kaz/bind-8.2.3/lib/inet'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/kaz/bind-8.2.3/lib/inet'
/home/kaz/bind-8.2.3/lib/nameser
make[2]: Entering directory `/home/kaz/bind-8.2.3/lib/nameser'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/kaz/bind-8.2.3/lib/nameser'
/home/kaz/bind-8.2.3/lib/dst
make[2]: Entering directory `/home/kaz/bind-8.2.3/lib/dst'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/kaz/bind-8.2.3/lib/dst'
/home/kaz/bind-8.2.3/lib/cylink
make[2]: Entering directory `/home/kaz/bind-8.2.3/lib/cylink'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/kaz/bind-8.2.3/lib/cylink'
/home/kaz/bind-8.2.3/lib/dnssafe
make[2]: Entering directory `/home/kaz/bind-8.2.3/lib/dnssafe'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/kaz/bind-8.2.3/lib/dnssafe'
mkdir -p /usr/local/bind/lib
install -c -o bin -g bin -m 644 ../lib/libbind.a \
        /usr/local/bind/lib/libbind.a
( cd /usr/local/bind/lib ; : libbind.a )
install -c -o bin -g bin -m 644 ../lib/libbind_r.a \
        /usr/local/bind/lib/libbind_r.a
( cd /usr/local/bind/lib ; : libbind_r.a )
make[1]: Leaving directory `/home/kaz/bind-8.2.3/lib'
/home/kaz/bind-8.2.3/bin
make[1]: Entering directory `/home/kaz/bind-8.2.3/bin'
/home/kaz/bind-8.2.3/bin/addr
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/addr'
install  -c  -m 755 addr /usr/bin/addr
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/addr'
/home/kaz/bind-8.2.3/bin/nslookup
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/nslookup'
install  -c  -m 755 nslookup /usr/bin/nslookup
install -c -o bin -g bin -m 444 nslookup.help /usr/lib/
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/nslookup'
/home/kaz/bind-8.2.3/bin/dig
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/dig'
install  -c  -m 755 dig /usr/bin/dig
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/dig'
/home/kaz/bind-8.2.3/bin/dnsquery
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/dnsquery'
install  -c  -m 755 dnsquery /usr/bin/dnsquery
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/dnsquery'
/home/kaz/bind-8.2.3/bin/host
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/host'
install  -c  -m 755 host /usr/bin/host
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/host'
/home/kaz/bind-8.2.3/bin/named
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/named'
install  -c  -m 755 named /usr/sbin/named
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/named'
/home/kaz/bind-8.2.3/bin/named-xfer
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/named-xfer'
install  -c  -m 755 named-xfer /usr/sbin/named-xfer
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/named-xfer'
/home/kaz/bind-8.2.3/bin/ndc
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/ndc'
install    -c -m 755 ndc /usr/sbin/ndc
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/ndc'
/home/kaz/bind-8.2.3/bin/nsupdate
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/nsupdate'
install  -c  -m 755 nsupdate /usr/bin/nsupdate
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/nsupdate'
/home/kaz/bind-8.2.3/bin/mkservdb
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/mkservdb'
install  -c  -m 755 mkservdb /usr/bin/mkservdb
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/mkservdb'
/home/kaz/bind-8.2.3/bin/irpd
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/irpd'
install  -c -m 755 irpd /usr/sbin/irpd
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/irpd'
/home/kaz/bind-8.2.3/bin/dnskeygen
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/dnskeygen'
install  -c  -m 755 dnskeygen /usr/sbin/dnskeygen
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/dnskeygen'
/home/kaz/bind-8.2.3/bin/named-bootconf
make[2]: Entering directory `/home/kaz/bind-8.2.3/bin/named-bootconf'
install -c -m 755 named-bootconf /usr/sbin/named-bootconf
make[2]: Leaving directory `/home/kaz/bind-8.2.3/bin/named-bootconf'
make[1]: Leaving directory `/home/kaz/bind-8.2.3/bin'

GRP kaz

apache-1.3.19のコンパイル

$ ./configure --enable-module=so --enable-shared=max --enable-module=most 

参考

  APACI also supports a variant of the --enable-shared option:
    $ ./configure --prefix=/path/to/apache \
                  --enable-shared=max
    $ make
    $ make install
  This enables shared object building for the maximum of modules, i.e. all
  enabled modules (--enable-module or the default set) except for mod_so
  itself (the bootstrapping module for DSO support). So, to build a
  full-powered Apache with maximum flexibility by building and installing most
  of the modules, you can use:
    $ ./configure --prefix=/path/to/apache \
                  --enable-module=most \
                  --enable-shared=max
    $ make
    $ make install
  This first enables most of the modules (all modules except some problematic
  ones like mod_auth_db which needs third party libraries not available on
  every platform or mod_log_agent and mod_log_referer which are deprecated)
  and then enables DSO support for all of them. This way you get all these
  modules installed and you then can decide under runtime (via the
  `LoadModule') directives which ones are actually used. Especially a very
  useful for vendor package maintainers to provide a flexible Apache package.

のこり

$ make 
# make install

2001-04-11 [長年日記]

GRP kazwhois

whois estcosmo.co.jp

とかして、詳細情報をGET!!

セキュリティの日

今日の未明、ふと思いついて、セキュリティの日となった。

家のサーバ(Plamo2.1 on PC-9821)がセキュリティホールだらけだったので、

wu-ftpdの削除。
apache-1.3.19にUpgrade。
BIND8(最新版)にUpgrade。
ssl,sshのUpgrade。
ついでに、DSA鍵のペアを作成。

だけはやっておいた。

すべてパッケージを使わずに、ソースからコンパイルを行った。

本にたよらず、パッケージ附属のドキュメントだけで頑張ってみた。

今晩はその続きをしよう。

[ZSH] emacs-modeのキーバインド

man zshzleより

keybind -e emacs

(でいいのか?)

* これで

すこしニュータイプに近づいたか?(いや、そんなわけない)

* Prompt

man zshmisc参照

GRP kaz

sshのセキュリティ

セキュリティメモより抜粋

暗号化された ssh トラフィックを sniff できると、 password authentication の際のパスワード長 (!) 
とかパスワードに使っているであろう文字 (!) がわかってしまうという話。 
結果として、brute-force attack が劇的にやりやすくなってしまう。 
デモツール SSOHW が添付されている。
OpenSSH 2.5.0 以上、PuTTY 0.52 などでは fix されている。 
ssh 1.2.x 用の patch が添付されている。 
FreeBSD 4.3-RELEASE は結局 OpenSSH 2.3.0 なのかなー。
2001.03.29 追記: [RHSA-2001:033-04] Updated openssh packages available ですって。 
OpenSSH 最新は 2.5.2 (portable は 2.5.2p2) になってますね。 
TTSSH もこれの fix の 1.5.4 が出てる。 
VineLinux 2.1.5 には OpenSSH 2.5.x が最初から入ってる。 

ここも

Passive Analysis of SSH (Secure Shell) Traffic
 ----------------------------------------------
This advisory demonstrates several weaknesses in implementations of
SSH (Secure Shell) protocols.  When exploited, they let the attacker
obtain sensitive information by passively monitoring encrypted SSH
sessions.  The information can later be used to speed up brute-force
attacks on passwords, including the initial login password and other
passwords appearing in interactive SSH sessions, such as those used
with su(1) and Cisco IOS "enable" passwords.
All attacks described in this advisory require the ability to monitor
(sniff) network traffic between one or more SSH servers and clients.
Fix information, patches to reduce the impact of traffic analysis, and
a tool to demonstrate the attacks are provided.
 Impact
 ------
Version 1 of the SSH protocol, unless its implementation takes special
precautions to avoid this, exposes the exact lengths of login
passwords used with password authentication.  The SSH-2 protocol
doesn't reveal as much information, but a range of possible password
lengths can still be determined.
Additional weaknesses make it possible to detect when a password is
entered during an interactive SSH session, and to discover even more
information about such passwords, including their exact lengths (with
both protocol versions) and timing information.  The latter exposes
the likelihood of possible characters in each position of a password.
All this information may be entered into a brute-force password
cracker for a significant speedup due to reduced keyspace and other
optimizations, including attacking user passwords in the order of
increasing estimated complexity.
Additionally, our SSH traffic analysis tool is able to detect the use
of RSA or DSA authentication, and in the case of RSA and SSH 1.2.x
derived SSH server implementations, the number of authorized_keys
file options.  The latter is possible due to debugging packets sent
by those implementations.  If a SSH session with RSA authentication
but no authorized_keys options is seen, an attacker may infer that
the client machine has the private key sufficient to obtain full
shell access to the server.  If the session is automated, the private
key has to be stored unencrypted.
Finally, it is possible to determine the lengths of shell commands,
and in some cases, the commands themselves (from a small list of
common ones) in an interactive session (which isn't a security issue
under most circumstances).
It should be noted that, despite their simplicity, traffic analysis
attacks such as those presented in this advisory haven't been well
researched.  We expect that similar attacks are possible against most
other "secure" (encrypted) remote login protocols.  We also expect
additional traffic analysis attacks on SSH to be discovered.  In
particular, there may be recognizable patterns in X11 connections
forwarded over SSH, but these are out of the scope of this advisory.
 Password authentication vulnerability
 -------------------------------------
When encapsulating plaintext data in a SSH protocol packet, the data
is padded to the next 8-byte boundary (or whatever the cipher's block
size is, with SSH-2), encrypted, and sent along with the plaintext
length field.  SSH-1 sends this field in the clear.
As a result, an attacker passively monitoring a SSH session is able
to detect the amount of plaintext sent in each packet -- exact for
SSH-1, or a range of possible lengths for SSH-2.
Since the login password is sent in one SSH-1 protocol packet without
any special precautions, an attacker can determine the exact password
length.
With SSH-2, other information (including the username) is transmitted
in the same packet and the plaintext length is encrypted, so only a
range of possible password lengths can be determined.
Fortunately, due to the use of C strings in most SSH-1 server
implementations, it is usually possible for a SSH client to add
sufficient NUL padding for just the passwords without a change to the
protocol.  We recommend that future SSH-1 server implementations allow
for this padding, even in cases where the underlying OS interfaces do
not necessarily imply this.
An alternative workaround, proposed by Simon Tatham, is to send a
sequence of SSH-1 messages containing strings of increasing length.
Exactly one of these messages is SSH_MSG_PASSWORD and contains the
password string.  All the rest are SSH_MSG_IGNORE.  It is important
that the number of messages sent remains constant and is sufficient
to cover the longest password we expect to see.  To safely transmit
passwords of up to 32 characters, 1088 bytes of SSH-1 messages are
needed, which may still fit within one TCP segment.  This approach has
the advantage that no assumption about SSH-1 server implementations is
made (other than that they implement the protocol correctly; some
implementations are known to have problems handling SSH_MSG_IGNORE).
The SSH-2 protocol allows for a solution (independently proposed by
several SSH-2 implementation authors) with less overhead, and without
reliance on artifacts of protocol implementation.  A pair of SSH-2
messages, SSH_MSG_USERAUTH_REQUEST and SSH_MSG_IGNORE, may be
constructed such that their combined length remains constant.  The
messages can then be sent to the transport layer at once.
 Interactive session weaknesses
 ------------------------------
With interactive shell sessions, input characters are normally echoed
by the remote end, which usually results in an echo packet from the
server for each input character.  However, if an application turns
input echoing off, such as for entering a password, the packets start
to go in one direction only -- to the server.  Our simple traffic
analysis tool is able to detect this easily and reliably.
Once an attacker knows that the victim is entering a password, all
they need to do is count the packets that didn't generate a reply
packet from the server.  In the case of SSH-1, the sum of plaintext
sizes gives the exact password length, save any backspace characters.
With SSH-2, the attacker has to assume that each packet contains only
one password character, which is typically the case.
The delays between packets give the attacker additional information
on the likelihood of possible characters in each position of the
password.  For example, if the delay before a character is larger than
most other delays, it is likely that the character requires more than
one keystroke to type.
When typing commands in a command-line shell over SSH, each character
generates a tiny echo packet from the server.  However, once the
entire command is entered, a larger packet -- containing the shell
prompt and possibly the command's output -- is sent by the server.
By counting the tiny packets (or the plaintext lengths in packets
sent to the server, in the case of SSH-1), the attacker can infer
the length of each shell command.  To make detection more reliable
with SSH-1, it is usually possible to detect backspaces by assuming
that they produce a 3-character response (^H, space, ^H).
Once again, the delays may be used -- this time for inferring the
actual shell commands typed, from a small list of common ones.
The partial solution we propose is to modify SSH servers such that
they simulate echo packets when terminal echo is disabled by an
application.  The SSH_MSG_IGNORE message type may be used to ensure
the client doesn't actually process the contents of these fake packets.
Thus, no change to the protocol is required.
It is important to note that this partial solution may only defeat
the most generic way to infer that a password is entered.  In many
cases it is possible to do the same by other means, including
monitoring other related network traffic and events local to a SSH
server system.
Solving traffic analysis vulnerabilities not related to password
information would increase the protocol overhead significantly, and
thus doesn't seem practical for many current uses of SSH.
 Compression
 -----------
The use of compression makes many of the traffic analysis attacks
described above significantly less reliable.  This is because the
same amount of plaintext no longer results in the same amount of data
being transmitted.  The packet sizes are somewhat "randomized".
However, it is likely that compression also enables yet another class
of traffic analysis attacks, as the changes to packet size due to
compression aren't actually random -- they depend on the plaintext
packet contents.
We're already aware of one practical attack that is possible due to
compression.  With SSH-2, the SSH_MSG_USERAUTH_REQUEST message is
transmitted after compression is negotiated.  If enabled, the size of
the resulting TCP segment will depend on the entropy of the plaintext
password.  If a SSH_MSG_IGNORE message is used to pad the password as
we have proposed, compression may defeat some of the benefit this
could have provided.  This instance of the problem may be solved by
transmitting the SSH_MSG_USERAUTH_REQUEST and SSH_MSG_IGNORE messages
uncompressed.  However, this is non-trivial to implement if a generic
compression library is used.
 Related work
 ------------
Several of the attacks outlined in this advisory were also
independently discovered by the authors of the following paper (still
work-in-progress), which describes some of them in greater detail:
	Dawn Xiaodong Song, David Wagner, Xuqing Tian:
	``Timing Analysis of Keystrokes and Timing Attacks on SSH.''
In particular, they reveal that inter-keystroke timings leak about 1
bit of information per character pair, and describe an attacking
system, Herbivore, which tries to learn users' passwords by
monitoring SSH sessions.  Herbivore is demonstrated to reduce the
search space for uniformly randomly chosen passwords of 8 characters
by a factor of 50.
Although the paper is not yet publicly available, vendors working to
fix these problems may contact David Wagner <daw at cs.berkeley.edu>
or Dawn Xiaodong Song <dawnsong at cs.berkeley.edu> to obtain a copy.
 Fixes
 -----
Several SSH implementations have been changed to include fixes which
reduce the impact of some of the traffic analysis attacks described
in this advisory.  It is important to understand that these fixes are
by no means a complete solution to traffic analysis -- only simple
remediation for the most pressing vulnerabilities described above.
OpenSSH:
Fixes have been initially applied to OpenSSH starting with version
2.5.0.  OpenSSH 2.5.2 contains the more complete versions of the
fixes and solves certain interoperability issues associated with the
earlier versions.
PuTTY:
PuTTY 0.52 will include defenses against inferring length or entropy
of initial login passwords, for both SSH-1 and SSH-2.
SSH 1.2.x:
SSH 1.2.x users can use this unofficial patch (the patch is against
version 1.2.27, but applies to 1.2.31 as well).  Please note that a
SSH server with this patch applied will not interoperate with client
versions 1.2.18 through 1.2.22 (inclusive).

[Linux Debian] sshの再コンパイル

opensslが0.9.6a-1になって、opensshの方と互換がなくなってしまったので、

opensshをこのopensslをつかって再コンパイルした。

(リモートの作業ができないと現在、致命的なので)

パッケージはこれじゃ。

まぁ、今晩のapt-get upgradeでちゃんと新しいパッケージでてるでしょうから、

これをつかうまでもないのですが。

SSHの暗号

OpenSSH<2.5.2のAESまわりにバグ持ち、かつ、OpenSSH-2.5.2pl2ではCiphersの順番が、

               ``aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,
                 aes192-cbc,aes256-cbc,rijndael128-cbc,rijndael192-cbc,
                 rijndael256-cbc,rijndael-cbc@lysator.liu.se''

となっているので、クライアントがOpenSSH-2.5.2pl2で、サーバが古いバージョンをつかっている場合、プロトコル2で認証しようとすると、bad packet lengthといったエラーがでると教えていただいた。

サーバ側のアップグレードができない場合は、

ssh -2 -c 3des|blowfish hostname

としてCipherを指定すればいいらしい。'-c'のあとは","で区切ったリストにしても良いそうだ。GRP kaz

modutilsのアップグレード(nk98)

ftp.kernel.orgから、modutils-2.4.5.tar.bz2をダウンロード

$ ./configure
$ make
$ make install

GRP kaz

ld.so

ld.soはlibc4,5を利用したプログラムのコンパイルでしかつかわないので、やめる。

modutilsのアップグレード

家のサーバのmodutilsのアップグレードをした。


2001-04-12 [長年日記]

GRP kaz[zsh] プロンプト

結論からいうと .zshrc あたりに
setopt prompt_subst
       PROMPT='%{^[[$[32+$RANDOM % 5]m%}%U%B$HOST'"{`whoami`}%b%%%{^[[m%}%u "
       RPROMPT='%{^[[33m%}[%~]%{^[[m%}'
      
と入れる。ちなみに ^[ という部分は、 ^ と [ ではなく、ESCコードで、 Emacsの場合は 
C-q ESC で、vi の場合は C-v ESC とタイプして入力する。 以下説明。
まずプロンプトにエスケープシーケンスを通すオプションを立てておく。
これは .zshrc あたりに入れておくとよろし。
setopt prompt_subst そしてプロンプトにエスケープシーケンスを含める。色を出すエスケープ シーケンスは、
"ESC [ 色番号 m " で、番号と色の対応は標準状態の ktermなら、
30 31 32 33 34 35 36 37
黒 赤 緑 黄 青 紫 水 白
となっていて、個人的に赤は暗くて見づらいので使いたくなく、白を出し てもしょうがないので、
32〜36番の色が出て欲しい。ので乱数として0〜4 を出すようにしてそれに32を足す。てことで色を乱数で決める部分が、 PROMPTの
^[[$[32+$RANDOM % 5]m
      
のところ。zshでは $[ … ] で括った部分は数式として計算してくれる。 
すげー。さらにプロンプト文字列中のエスケープシーケンスを括るための 記法
%{ … }
で括れば無事プロンプトの色が変わる。 PROMPTの後半で ^[[m でデフォルトの色に戻しておちまい。
もひとつ、RPROMPTで右側につけるプロンプトを設定。これも色をつけ ておけば目立ち度抜群。

* $RANDOM

echo $RANDOM

するだけで、乱数を生成してくれる。

[ZSH] うむ

かなりいいかも。

* autocd

set -o AUTO_CD

ですか。

* M-q

これは使える。

TP-X21

いいにゃ。物欲の嵐だ。GRP kaz

AES(Advanced Encryption Standard)暗号

今のOpenSSHのCiphersリストの先頭に記述されているもの。

* rijndealについて

より、興味のある部分を抜粋

...
Rijndael is a block cipher, designed by  Joan Daemen and  Vincent Rijmen  as a candidate algorithm for the AES .
The cipher has a variable block length and key length. 
We currently specified how to use keys with a length of 128, 192, or 256 bits toencrypt blocks with al 
length of 128, 192 or 256 bits (all nine combinations of key length and block length are possible). 
Both block length and key length can be extended very easily to multiples of 32 bits.
...

GRP kaz

nsswitch.confについて

nsswitch.confについて

ネットワークの情報(ホスト、パスワードなど)と、その情報源(NIS,DNS,db,fileなど)を対応させる。

compatとは?

/etc/passwd,shadow,groupの+/-構文との互換性を持たせる。
man nsswitch.conf参照

ハードリンク

ハードリンクってなに?

シンボリックリンクと使い分けるのが,ここで紹介する「ハードリンク」である。
前者は,エイリアス(ショートカット)として作成されるのに対し,
ハードリンクはファイルの実体そのものとして認識される。
このため,相互ファイルの違いはない。
・シンボリックリンクの作成方法
# ln -s aaa bbb
・ハードリンクの作成方法
# ln aaa bbb
 一般的には,ディレクトリのリンクや異なるファイルシステム間では作成できないことから,
ハードリンクが利用されることは少ない。
 しかし例として,日にちごとにディレクトリを分けて,更新の無い同じファイルも管理したい場合などには,
ディスク容量を軽減することを目的としてハードリンクを作成することもある。

* atコマンド

コマンド実行の時限設定をしたい
コマンドを「定期的に」実行するためには,cronを利用するのが便利だ。
しかし,いちどだけ特定のコマンドを実行したいのに,いちいちcronで設定するのは手間だろう。
このような場合には,「at」コマンドでコマンド実行の予約をしておけばよい。
指定の方法にはいろいろな操作があり,主なものは次の通りだ。
$ at -l
※ 現在,atコマンドによって待ち行列になっているジョブを一覧表示する。
$ at 17:00 fri /bin/hogehoge
※ 金曜日の17時に,「/bin/hogehoge」を実行する。
$ at -r xxxx
※ 「-l」オプションで確認されたジョブ番号を指定すると,スケジュールから削除することができる。
$ at -m 17:00 mon /bin/hogehoge
※ 金曜日の17時に,「/bin/hogehoge」を実行し,さらに結果をメール通知する(実行したアカウント宛に)。
また,ダイレクトに設定内容を入力するだけでなく,次のように対話形式で設定することも可能だ。
次の例では,結果がメールに通知される。
$ at hogehoge
> grep -c "*: (login)" /var/log/messages >> ~$home/login.log
> ^d ←「Ctrl」+「^」を入力

* stickyビット

スティッキービットって何?
/tmp/ディレクトリは,一般的に「スティッキービット」フラグが立てられて(設定されて)いる。
このスティッキービットとは,ハードディスク上のスワップ領域(Linux Swapパーティションとして
Linuxのインストール時に設定したはずだ)に固着(stick)させるという意味も持つ。
しかし,一般的には全ユーザに書き込みを許可しながらも所有者以外には削除できない,という特徴のほうが重要だろう。
この設定状況を見るには,「ls -al」と入力すればよい。パーミッション情報の最後に,「t」が
表示されるものがスティッキービット設定である。
# ls -la /
〜略〜
drwxrwxrwt  9 root  root   4096 Mar 14 13:54 tmp
〜略〜
スティッキービットを設定するには,次のどちらかのように指定をする。
パーミッション設定の頭に「1」,または「+t」を付加すればよい。
# chmod o+t filename
# chmod 1510 filename
全ユーザーのファイル書き込みが必要なメールスプールディレクトリ(/var/spool/mail)などにも,このスティッキービットを設定することが多い。

* ldd

特定コマンドのライブラリ依存を確認したい
ライブラリとは,複数のコマンドで共通して利用される共通モジュールのことだ。
幾つものRPMパッケージや,tarボールからのインストール,そして削除などを行っていると,ライブラリの依存性が崩れてしまうことがある。
このような場合には,該当するコマンドを「ldd」コマンドで調査すればよい。
# ldd /bin/bash
    libtermcap.so.2 => /lib/libtermcap.so.2 (0x4001b000)
    libc.so.6 => /lib/libc.so.6 (0x4001f000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
この例では,bashコマンド(シェル)のライブラリ依存を調べた結果だ。
3つのライブラリに依存して動作していることが分かる。
また,ライブラリにはデータベースが用意されており,コマンドはこのデータベースから自動判別をして読み込みを行う。
現在のデータベース状況を確認するには,次のように指定すればよい。
# ldconfig -p
417 libs found in cache `/etc/ld.so.cache' (version 1.7.0)
   libzvt.so.2 (libc6) => /usr/lib/libzvt.so.2
   libzvt.so (libc6) => /usr/lib/libzvt.so
   libz.so.1 (ELF) => /usr/i486-linux-libc5/lib/libz.so.1
   libz.so.1 (libc6) => /usr/lib/libz.so.1
   libz.so (libc6) => /usr/lib/libz.so
   libxmms.so.1 (libc6) => /usr/lib/libxmms.so.1
   libxml.so.1 (libc6) => /usr/lib/libxml.so.1
   〜以下,略〜
このデータベースは,tarボールなどでライブラリをインストールした際には更新されないこともある。
手動で更新するには,次のように指定すればよい。この指定によって,「/usr/xxxxxx/lib/」ディレクトリ下のライブラリがデータベースに追加される。
# ldconfig -n /usr/xxxxxx/lib/

* reniceコマンド

実行中のコマンドの処理優先度を上げる
 まず最初に実行中のコマンドのプロセス番号を調べよう。ここでは,比較的多大なCPUパワーを消費するSETI@homeを例に挙げている。
# ps ax
 PID TTY  STAT TIME  COMMAND
 1  ?   S   0:05  init [5]
〜中略〜
 532 ?   RN  117:45 ./setiathome -nice 19
〜以下略〜
 プロセス番号が「532」だと分かったら,reniceコマンドでプライオリティを指定すればよい。
ここでは例として,最初に優先度を最も高くして,その後に最低に下げてみた。この例では数パーセントなものの,コントロールできることが分かるだろう。
■処理優先度を最高にする
# renice -20 532
532: old priority 19, new priority -20
 PID USER  PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM  TIME COMMAND
 532 root  20 19 14972 14M 580  R N 0 99.9 23.1 118:07 setiathome
■処理優先度を最低にする
# renice 20 532
532: old priority -20, new priority 20
 PID USER  PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM  TIME COMMAND
 532 root  20 19 14972 14M 580  R N 0 92.7 23.1 122:53 setiathome

* 最近更新されたファイル

24時間以内に参照されたファイルを検索したい
findコマンドを応用すれば,24時間以内にアクセスされたファイルだけを探し出すことができる。
次のように「-atime」パラメータに続き数字を指定すればよい。
ここでは,例として「1」(1日)であるが,「2」以降であれば48時間以内という指定も可能だ。

* arpコマンド

LAN内に接続されている機器のMacアドレスを知りたい
LAN(ローカルネットワーク)内に接続されている機器の,
IPアドレスやMacアドレス(ハードウェアアドレス)の関係を知るには,arpコマンドに「-a」オプションを付ければよい。
しかし,通常では広域な機器まで認識されていないことが多いため,
いちどブロードキャストIP宛(xxx.xxx.xxx.255)にping実行をすれば,
稼動中の機器を参照することが可能だ。
※pingを実行する前の状態
$ arp -a
Interface: 172.16.142.xxx on Interface 0x2
 Internet Address Physical Address   Type
 172.16.142.xx   00-00-0c-xx-xx-xx dynamic
 172.16.142.xx   00-50-da-xx-xx-xx dynamic
$ ping 172.16.xxx.255 ←ブロードキャスト宛にpingを実行する
※ブロードキャスト宛にpingした後には次のようになる
$ arp -a
Interface: 172.16.xxx.xxx on Interface 0x2
 Internet Address  Physical Address Type
 172.16.xxx.1     00-00-0c-xx-xx-xx dynamic
 172.16.xxx.36    00-50-da-xx-xx-xx dynamic
 172.16.xxx.78    00-b0-d0-xx-xx-xx dynamic
 172.16.xxx.79    00-90-cc-xx-xx-xx dynamic
 172.16.xxx.91    08-00-37-xx-xx-xx dynamic
 172.16.xxx.92    08-00-37-xx-xx-xx dynamic
 172.16.xxx.93    08-00-37-xx-xx-xx dynamic
 172.16.xxx.94    08-00-37-xx-xx-xx dynamic
〜以下略〜

印鑑

実印 認印 訂正印


2001-04-13 [長年日記]

[Postgres] Postgresのユーザ名

ユーザ名の最初に数字がつくとダメっぽい。(パスワードはOK)

久しぶりPerl

ひさしぶりPerlスクリプトを書いたのだが、かなり忘れている。


2001-04-14 [長年日記]

[Ruby 本] RubyによるCGIプログラミング

この本、あまりに間違い多すぎませんか?

内容はかなり初心者向けで、別の本でRubyの勉強をちょっとだけやったことある人なら簡単に読めるんですが、簡単に間違いがわかります。

第1刷なので、多少なら許容できますが、あまりにケアレスミス(スクリプト例とその説明の中の変数名が違うとか、出力結果が別のスクリプトのものだったり)が多すぎて、めちゃくちゃ。(間違いを含むページのほうが、含まないページより多いのでは?と思うくらい)

はっきり言って読む気無くした。

そんなのなら買うなって言われるかもしれないけど、けっして安いものじゃないし、これじゃあまりに悲しすぎでは?

しかも、いま、著者のページ見ることできないのですが。(巻末の著者紹介に書いてあったページ)

[zsh] ヒストリの保存

HISTFILE=${HOME}/.zhistory
SAVEHIST=100

2001-04-15 [長年日記]

久しぶり

CD-Rメディア購入。

[GTKtalog] メッセージカタログ

GTKtalogをCVSからCheckoutしたところ、先日upstreamにおくったja.poが

はげしく文字化けしていることが判明した。

僕が保存していたものは大丈夫なので、向こうで処理したときに何かへんなことしたのかにゃ?

それとも送信中になんかあったかにゃ。

というわけで、事情を説明しよう。

* というわけで

事情を説明したメールと修正したja.poを送った。

[Ruby] eRubyのインストール

家のサーバにeRubyをインストール

# tar xvzf eruby-0.1.3.tar.gz
# cd eruby-0.1.3
# /usr/local/bin/ruby Makefile.RB --default-charset=EUC-JP --enable-shared
# make
# make install

* むっ。

ダメだ。ノートPCでは問題無いスクリプトがこっちでは動かねー。

どうやら、Ruby-1.6.2のcgi.rbにはバグがあるらしい。

これが原因かはわからないけど、とりあえず1.6.3にバージョンアップじゃ。

$ tar xvzf ruby-1.6.3.tar.gz
$ cd ruby-1.6.3
$ ./configure --with-default-kcode=euc
$ make

* ぐへー

悲劇だ。

gcc -g -O2 -I. -I. -I/usr/local/include -c array.c
gcc: Internal compiler error: program cc1 got fatal signal 11

だって。最悪じゃん。

再起動するの悲しいにゃ。

* 復活

なぜか、復活。

ruby-1.6.3のインストール

$ tar xvzf ruby-1.6.3.tar.gz
$ cd ruby-1.6.3
$ ./configure --with-default-kcode=euc
$ make
$ make test
# make install

* mod_rubyのインストール

これもインストール

$ tar zxvf mod_ruby-0.8.0.tar.gz
$ cd mod_ruby-0.8.0/
$ ruby Makefile.RB --enable-eruby
$ make
# make install

httpd.confに

LoadModule ruby_module /usr/lib/apache/1.3/mod_ruby.so
...
AddType application/x-httpd-eruby .rhtml

を追加。

* Apacheの挙動

ノート(Debian)と家のサーバ(Plamo)のapacheの挙動がかなり違う。

(設定違うんだから当然だけど)

本当は同じことしたいので、やっぱり、設定についてじっくり考えよう。


2001-04-16 [長年日記]

[Java] Forte for JAVA

つかってみた。

やっぱり重いにゃ。

でも、わかりやすいかもしれない。

もうちょっと頑張ってつかってみよう。

* なんか遅いぞ

と思って、freeを実行してみると、うげげ、Swapが満杯じゃー。

大丈夫かい。おえ。

* JSP on Forte

ForteについているFastJavacコンパイラをつかうと、日本語がだめっぽい。

設定のJavaソースのところでコンパイラを外部コンパイラにするとうまくいった。

* ふむふむ

直感的でいいにゃ。

keymap

キーマップがいつからかわからないけど、もどっていたので、ここから以前僕が自分で変更したものを入手した。

ついでに、/etc/init.d/keymap.shも変更しておいた。

[Java] JSP、Beansのプロパティ

<jsp:setProperty name="firstBeans" property="year" param="year_inputted">

とvalueを使わずにparamを使用すれば、わざわざrequest.getParameter("year_inputted")とかして、nullかどうかの判別をしたりしなくても、Stringから数値への変換など、自動で行ってくれる。

入力パラメータがリクエスト中になかったばあいには何も行われない。

タイプの変換ルーチンは「コア・サーブレット&JSP(P283)参照」


2001-04-17 [長年日記]

[Java] Forte for JavaのUpgrade

やってみたら、fastjavacでもJSPで日本語表示できるようになった。

* Forte for Java Community Edition

のtomcatでサーブレットを動かそうとしたが、だめ。

~/forte4j_user/tomcat/内はForte起動時に自動更新されちゃうみたい。

* Forte for Java附属の Web User Agent

うむぅ。いまいち。

凝ったつくりのページになると表示できないみたい。

まぁいいけど。

[Debian] apt pin機能について

/etc/apt/apt.conf.d/99target というファイル
        APT::Default-Release "testing";

とか書いておくと常用woody、ちょこっとsidもできるのか。

man apt-getより

       --default-release
              This  option controls the default input to the pol-
              icy engine, it creates a default  pin  at  priority
              990 using the specified release string. The prefer-
              ences file may further override  this  setting.  In
              short,  this  option  lets  you have simple control
              over which distribution packages will be  retrieved
              from. Some common examples might me -t '2.1*' or -t
              unstable.  Configuration Item: APT::Default-Release

[Java] JSP memo

* jsp:useBean

めもめも

複数ページからの共有化が可能ならば、すでにあるJavaBeansオブジェクトを
重複して作る必要はない。そこでjsp:useBeanアクションは、同じidと同じscopeを持つ
既存のオブジェクトがない場合に限って、新たなオブジェクトのインスタンスを作る。

* 多態性の利用

<jsp:useBean id="hogehoge" class="Hoge" type="Foo" />

は次と等価。

Foo hogehoge = new Hoge();

うげ

こんなところ に自分のページつくってあるの忘れてた。

資源は有効活用しよう。

[DoLUC] うげ

やっぱり、そう思いますか(わら。自分も常時接続+固定IPアドレスほしいにゃぁ。

むぅ

ためしてみるかな。

[Debian] kernel-2.4 on potato

ふむぅ。

ここも

そうか、もうおいらはkernel-2.0.xには戻れなかったのか。

まぁ、いいけど。

[hns] namazu.cgi

ローカルで管理している日記でnamazuを使えるようにした。

これでやっと自分用のメモメモリファレンスができた。

これで日記とちょこっとメモがやっと統合できる。GRP kaz

[hns] なまず for hnsについて

展開したディレクトリ内でsetup-u.shを実行するだけなのだが、

コピー元の情報がかなりいい加減に記述されているので、3箇所ほど修正が必要。

namazu2.cgiではなく、/usr/lib/cgi-bin/namazu.cgiがあるので、これを

~/public_html/diary/にコピーする。(これもスクリプト内に記述されている。)

また、~/diary/bin/hns-index2のなかでmknmzとgcnmzが呼ばれているのだが、

これもPATHがまちがっているので修正必要。

mknmz="/usr/bin/mknmz"
gcnmz="/usr/bin/gcnmz"

こうすればよい。

hns-2.0?-pl4だとGRP機能がダメになった。

そこでhns-2.10-pl0にしたところ直った。

namazuのインデックスをつくるには、定期的に~/diary/bin/hns-index2を実行する。GRP kaz

[Java] Cookieについて

注意

クッキーの最大サイズは4KBで、1サイトあたり最大20個までなので、ディスクが満杯になったり、
サービス拒否(DoS, denial of service)攻撃の素材にはならない。
クライアント側で何かを解釈させたり、実行させたりしないので、ウイルスを感染させたりすることはない。

プライバシーの点で重大な脅威になる。

個人情報(クレジットカード番号など)をクッキーファイルにすると、第3者に同じコンピュータを使用され、
クッキーファイルを盗まれたり、他のサイトにクッキを見られたりする場合がある。

コア・サーブレット&JSP(P169)を参照。

* Cookieのつかいかた

送る。

Cookie cookie = new Cookie("name", "value");
response.addCookie(cookie);
cookie = new Cookie("name1","value1");
cookie.setMaxAge(3600); //クッキーの寿命を3600秒にする)
response.addCookie(cookie);

読みこむ。

Cookie[] cookies = request.getCookies();
Cookie cookie;
for(int i=0; i<cookies.lenght; i++) {
  cookie = cookies[i];
  out.println(cookie.getName() + ", " + cookie.getValue() + "\n");
}

* 一つの提案

セッション管理では長期間のユーザの情報の保持は難しい。

そこで、ユーザを特定できるID番号だけCookieでユーザに保持させ、

個人情報はサーバ側のDBに保存する。

クッキーの有効期限を大きくして、ふたたび、ユーザがそのサイトにアクセスしたときには、以前アクセスしたときの情報を表示することも可能である。

たとえば、コンピュータ販売のページでユーザがアクセスしたときに、

ユーザが持っている機種名、オプション、以前の修理の概略などを表示することにより、ユーザは入力する手間を省くことができ、また同時に、ユーザに確認をうながすこともできる。

ID番号だけだと、適当にクッキーファイルを生成して、他人の情報を見ることもできてしまうので、IDを2種類用意することにより、その両方のIDが同じユーザのものであるときに限って、アクセス可能とすることもできる。


2001-04-18 [長年日記]

GRP kazgzipの展開時のチェック

man gzipより

       gunzip  は gzip, zip, compress, compress -H, pack で作られ
       たファイルを正しく伸長できる。入力形式の検知は自動的に行わ
       れ る。はじめの 2 つの形式を使った場合、 gunzip は 
32 ビットの CRC をチェック
       する。 pack に対して、gunzip は伸長した
       長さをチェックする。標準的な compress 形式は、整合性チェッ
       クをするようには設計されていない。しかし、 gunzip は壊れた
       .Z ファイルを検知することができる場合もある。.Z ファイルを
       伸長しているときにエラーが出たときには、単に標準の  uncom-
       press がエラーを出さないという理由で .Z ファイルが正しいと
       考えてはならない。一般的にいうと、標準的な uncompress は入
       力をチェックせず、脳天気にゴミを出力してしまうことがある。
       SCO の compress -H 形式 (lzh 圧縮法) は CRC を含んでいない
       が、いくつかの整合性チェックができる。

GRP kaz

[Java] 例外のチェック

ErrorクラスとRuntimeExceptionクラスはコンパイル時にはチェックされない。

投げる例外が「チェックされる例外」のときは、プログラマは次のどちらかを

必ず行わなければならない。

(1)catch節でその例外をキャッチする
(2)メソッドのthrows節でその例外を投げることを宣言する。

(Java言語プログラミングレッスン(下) P92)

* スタックトレース

printStackTraceをつかうと、コールスタックが表示され、どのメソッドの中から例外が投げられたかはっきりする。

....
try {
    ....
} catch( ???Exception e ) {
    e.printStackTrace();
}

(Java言語プログラミングレッスン(下) P97)GRP kaz

[Java] サーブレットでのセッション管理

HttpServletRequest#getSession(true)

により、ユーザが参加しているセッションを返す。

ここで、trueをつけたときは、「セッションがないときは新たに作る」という意味。

ユーザのセッションであるかどうか判別するには、URLまたはクッキーを使用する。

* 値の取り出し

session.getAttribute(String)
(servlet2.1では session.getValue(string))

これらはObjectクラスのオブジェクトを返すので、キャストする必要あり。

属性値がない場合はnullをかえすので、返し値のnullチェックをすべき。

(core servlet and jsp P189)

* データの記録

session.setAttribute(String, Object)
(servlet2.1では、session.putValue(String, Object)

* 属性名の取得

String[] session.getAttributeNames()

厳密にはStringの配列ではなく、StringオブジェクトのEnumerationである。

* Enumerationについて

APIリファレンスより

public interface Enumeration
Enumeration インタフェースを実装するオブジェクトは、一連の要素を 1 回に 1 つずつ生成します。
nextElement メソッドを連続して呼び出すことによって、連続するそれらの要素が返されます。
たとえば、ベクタ v のすべての要素を出力するには、次のようにします。
for (Enumeration e = v.elements() ; e.hasMoreElements() ;) {
         System.out.println(e.nextElement());
}
 
メソッドは、ベクタの要素、ハッシュテーブルのキー、およびハッシュテーブルの値を列挙するためのものです。
さらに、列挙は、入力ストリームを SequenceInputStream に指定するためにも使用されます。
注: このインタフェースの機能は、Iterator インタフェースにもあります。
Iterator インタフェースの方には、任意指定の削除のオペレーションが追加されており、メソッドの名前も短くなっています。
新しく実装する場合は、Enumeration ではなく Iterator を使うようにしてください。

* セッションを終わらせる方法

アイドル時間がsetMaXInactiveInterval()で指定した時間(getMaxInactiveInterval()で取得可)を越えると自動的に無効になる。

タイムアウト前に終了させるには、invalidate()メソッドをコールする。

ここでいう、時間はクライアントに送られるクッキーの有効期限とは無関係である。

(core servlet & jsp P193)

* クライアントに送るURL

とにかく、

HttpServletResponse#encodeURL()

を使用する。

ただし、Locationリスポンスヘッダに置く場合は、セッション情報をつける必要性を判断するルールがすこし違うので、

HttpServletResponse#encodeRedirectURL()

を使用する。GRP kaz

[Java] Servletの置き場所とURL

サーブレットを~/tomcat/WEB-INF/classes/hogehoge/hugahuga.classとしたとき、URLはhttp://..../kazcat/hogehoge.hugahugaとなる。

* Date()コンストラクタ

Date
public Date(long date)
    Date オブジェクトを割り当て、初期化します。これによって、このオブジェクトは、
「エポック」(すなわち、1970 年 1 月 1 日 00:00:00 GMT) である標準時からの指定されたミリ秒数を表します。
   
    パラメータ:
        date - 1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数

メール

昨日はいつもにくらべて、はるかにたくさんのメールがきた。

そのうちの一通は妹からのものだった。

宿題をおいらに解かせようとするメールだった。

「大学生なんだから自分でやりなさい」とか言ってみようと思ったが、

気がつくと、答えを書いたメールを送信していた。

うぐぅ。妹にまで利用されはじめた。GRP kaz

[Java] response.setContentType("text/html")

HTTPのリスポンスの形は、

ステータス行
ヘッダ
空行
コンテンツ本体

となってなければならない。

ヘッダの各項目はどんな順序でもよく、サーブレットはヘッダをバッファリングして一気に送るので、コード上ではステータスがヘッダのあとになってもよい。

servlet2.2ではPrintWriterの出力をバッファリングすることも可能だが、バッファサイズは決まってなく、HttpServerResponse#getBufferSize()でサイズを知り、setBufferSize()でサイズを指定する。

HTTPのリスポンスヘッダは通常、HttpServletResponse.setHeader()で行うが、コンテンツタイプだけはsetContentType()で行う。GRP kaz

[Java] サーブレットのライフサイクル

  - init() --- service() --- doGet() ---.   - destroy() -
            |             |           | |  
            |             |- doPost()-| |   destroy()は長時間アイドル状態
            |             |           | |   サーバの停止時に呼びだされる
            |             `- doXxx() -' |
            |                           |
            `---------------------------'
  2回目以降は
  init()は実行しない。

通常service()は複数スレッドから呼び出され、それから次の処理を振りわける。

(Core Servlet and JSP P35)

* シングルスレッド

サーブレットオブジェクトのインスタンス変数は、各スレッドに対してグローバルであり、doGet(),doPost()メソッドの中で

共有データにアクセスする場合、必ず同期しなければならない。(リクエスト固有の情報など)

そこで、SingleThreadModelインターフェースをimplemnetsする。

pulic class YourServlet extends HttpServlet
           implements SingleThreadModel{
    ....
}

(Core Servlet and JSP P38)

* init(ServletConfig config)で読みこむ初期パラメタ

config.getInitParameter("hogehoge")で読みこむことができる。

初期パラメタはtomcatの場合、web.xmlで指定できる。

(Core Servlet and JSP P40)

* getLastModified()メソッド

を使用することによって、IF-Modified-Sinceヘッダのあるリクエストを送ったときに、getLastModified()の返り値の方が若い場合、出力し、それ以外のときは、304(Not Modified)を返えすことができる。

* サーブレットのデバッグ

コアサーブレット&JSP P48


2001-04-19 [長年日記]

pumpでトラブル

syslogより。

Apr 19 09:11:14 localhost pumpd[304]: SO_BINDTODEVICE eth0 (4) failed: Invalid argument
Apr 19 09:11:43 localhost pumpd[304]: failed to renew lease for device eth0

だって。GRP kaz

[Java] フォームデータ(URLにつけられたデータ)の扱い。

すべてHttpServletRequestのインスタンスメソッド

String getParameter(String param)
  引数はCase Sensitive。GET, POSTのどちらに対してもまったく同じ。
  パラメータがあるが、値がないときは空文字列、どちらも無い場合はnullをかえす。
String[] getParameterValues(String param)
  複数の値がありうるパラメータに使用する。
  パラメタが存在しない場合はnull、一つの場合は成分が一つの配列を返す。
Enumeration getParameterNames()
  パラメタのリストを返えす。順序は不定であることに注意。

GRP kaz

cronからのメール

cron(8)ヨリ

       cron then wakes up  every  minute,  examining  all  stored
       crontabs, checking each command to see if it should be run
       in the current minute.  When executing commands, any  out-
       put  is mailed to the owner of the crontab (or to the user
       named in the MAILTO environment variable in  the  crontab,
       if  such  exists).   The  children  copies of cron running
       these processes has its name coerced to uppercase, as will
       be seen in the syslog and ps output.

GRP kaz

[ptex-bin] インストールした。

ptex-binのreadme.Debianより

ptex-bin for Debian
-------------------
o Most of documentation are placed in /usr/share/texmf/doc/ptex/.
o Whenever you re-install tetex-bin package, you have to add entries for
  ptex-bin to /etc/texmf/texmf.cnf by hand.
  Try the following:
    % su
    # ptexconfig addpath
    
 -- Masayuki Hatta <mhatta@debian.org>, Tue,  3 Apr 2001 22:25:18 +0900

とのことだ。気を付けよう。

[JDE] 使いかた

/usr/share/doc/jde/html/より

  C-c C-v C-n (jde-browse-jdk-doc)
    jde-jdk-doc-urlで指定したドキュメントを表示する。
  C-c C-v C-y (jde-show-class-source)
    カーソル位置のクラスのソースを表示
    (jde-db-source-directoriesを指定すること)
  jde-javadoc-make
    jde-global-classpath(-classpath), jde-db-source-directories(-sourcepath)
    として、javadocの生成をする。
  jde-javadoc-gen-packages
    package, class, sourcefileを指定する。
  C-c C-v C-w
    jde-help-docsetの指定(/home/kaz/public_html/manual/j2sdk-.../ja/api/)すると
    カーソル位置のクラス名のマニュアルを表示してくれる。
  jde-build-use-makeをonにすると、makeを使ってBuildする。
    例
      JDK = d:/jdk1.2/lib/classes.zip 
      JMATH = d:/jmath/src 
      CLASSPATH = $(JMATH);$(JDK) 
      COMPILER = javac 
      VM = java 
      COPTIONS = -g -deprecation 
      ROPTIONS = 
  
      CLASSES = Test.class \ 
      JMathError.class \ 
      JMathException.class \ 
      LinearSystem.class 
	  
      .SUFFIXES: .java .class 
  
      all : $(CLASSES) 
  
      # Rebuild (if necessary) and run the JMath test suite.
  
      run: $(CLASSES) 
      	$(VM) -classpath "$(CLASSPATH)" jmath.Test
  
  
      # Remove all class files from the project directory. 
      clean: 
  	rm *.class 
  
      # Implicit rule for making Java class files from Java
  
      # source files. 
      .java.class: 
      	$(COMPILER) $(COPTIONS) -classpath "$(CLASSPATH)" $? 
  C-c C-v j
    コメントを挿入する。
  C-c C-v C-z
    指定したクラス名をpackage名も補完してimportする。
  C-c C-v .
    String s;
    s.get   まで入力して、そのあとに、C-c C-v .を入力すると、
     |
    s.getClass(
    に補完してくれる。
  JDE->Wizers内
    ここで、メソッドのオーバーライドなどの雛型をつくることができる。

GRP kaz

[Java] abbreviation

Java Keyword Completion

The JDE defines a set of abbreviations for Java keywords. 
When you type one of these abbreviations followed by a space in a Java source buffer, 
the JDE optionally expands the abbreviation into the keyword. 
For example, when the abbreviation mode is enabled, you need only type fa followed by a space to enter the Java keyword false. 
To enable or disable abbreviation mode, select JDE->Project->Options->General and toggle the boolean variable jde-enable-abbrev-mode.
 To change, remove, or add an abbreviation, edit the variable jde-mode-abbreviations in the project customization buffer.
Note
The JDE's Java keyword expansion facility is based on the Emacs abbrev-mode facility. For more information, see the Emacs user manual.

晩飯

みよしの餃子のジャンボ定食

餃子18コ、大盛リ白米、ミソシルGRP kaz

Emacsのキーバインド

  (global-set-key [f9] 'jde-gen-to-string-method)

2001-04-20 [長年日記]

GRP kaz[Java] JDEの使い方

  jde-key-binding
    キーと関数を結びつけることができる。

[Translation] GTKtalog

むぅ。

前に送ったja.poがまた、CVSのなかでこわれているぞ。

どうしてだろ。GRP kaz

[Java] XML(xerces)

JavaPressの記事(5月号p166)で練習。(~/tomcat/jw/xmljava/内にあります)

こちらより

* Interface Document

 public interface Document
 extends Node
 The Document interface represents the entire HTML or XML document. 
 Conceptually, it is the root of the document tree, and provides the primary access to the document's data.
 Since elements, text nodes, comments, processing instructions, etc. cannot exist outside the context of a Document,
 the Document interface also contains the factory methods needed to create these objects. 
 The Node objects created have a ownerDocument attribute which associates them with the Document 
 within whose context they were created.
メソッド
 public NodeList getElementsByTagName(java.lang.String tagname)
    Returns a NodeList of all the Elements with a given tag name in the order in which they are encountered in a preorder traversal of the Document tree.
    Parameters:
    tagnameThe - name of the tag to match on. The special value "*" matches all tags.Returns:
    A new NodeList object containing all the matched Elements.
 public Element createElement(java.lang.String tagName)
                      throws DOMException
    Creates an element of the type specified. 
    Note that the instance returned implements the Element interface, 
    so attributes can be specified directly on the returned object.
    In addition, if there are known attributes with default values, Attr nodes representing them 
    are automatically created and attached to the element.
    To create an element with a qualified name and namespace URI, use the createElementNS method.
 public Text createTextNode(java.lang.String data)
    Creates a Text node given the specified string.
    Parameters:
    dataThe - data for the node.Returns:
    The new Text object.

* Class DOMParser

コンストラクタによりパーサを提供する。

使いかた
  DOMParser xml = new DOMParser();
  xml.parse(file);   // file(URLなどのsystemID)をパースする。
  Document xmldoc = xml.getDocument(); // Documentオブジェクトを返す。

* Interface NodeList

 Nodeオブジェクトの順番を保持したコレクションリスト
 nodeList.getLength() //ノード数を返す
 nodeList.item(i) //i番目のノードを返す。
 public Node getFirstChild()
    The first child of this node. If there is no such node, this returns null.

* Interface Node

 The Node interface is the primary datatype for the entire Document Object Model.
 It represents a single node in the document tree. 
 While all objects implementing the Node interface expose methods for dealing with children, 
 not all objects implementing the Node interface may have children. 
 For example, Text nodes may not have children, and adding children to such nodes results in a DOMException being raised.
 メソッド
   public java.lang.String getNodeValue()
                              throws DOMException
       The value of this node, depending on its type; see the table above. 
       When it is defined to be null, setting it has no effect.
    Node appendChild(Node newChild)
        Adds the node newChild to the end of the list of children of this node.
    public java.lang.String getNodeName() 
        ノード名を返す。
    public java.lang.String getNodeValue()
                              throws DOMException
        The value of this node, depending on its type; see the table above. 
        When it is defined to be null, setting it has no effect.
    public short getNodeType()
        A code representing the type of the underlying object, 下記.
        static short ATTRIBUTE_NODE
          The node is an Attr. 
        static short CDATA_SECTION_NODE
          The node is a CDATASection. 
        static short COMMENT_NODE
          The node is a Comment. 
        static short DOCUMENT_FRAGMENT_NODE
          The node is a DocumentFragment. 
        static short DOCUMENT_NODE
          The node is a Document. 
        static short DOCUMENT_TYPE_NODE
          The node is a DocumentType. 
        static short ELEMENT_NODE
          The node is an Element. 
        static short ENTITY_NODE
          The node is an Entity. 
        static short ENTITY_REFERENCE_NODE
          The node is an EntityReference. 
        static short NOTATION_NODE
          The node is a Notation. 
        static short PROCESSING_INSTRUCTION_NODE
          The node is a ProcessingInstruction. 
        static short TEXT_NODE
          The node is a Text node.

* Interface Element

  public interface Element
  extends Node
  The Element interface represents an element in an HTML or XML document. 
  Elements may have attributes associated with them; 
  since the Element interface inherits from Node, the generic Node interface attribute attributes 
  may be used to retrieve the set of all attributes for an element. 
  There are methods on the Element interface to retrieve either an Attr object by name or an attribute value by name. 
  In XML, where an attribute value may contain entity references, an Attr object should be retrieved 
  to examine the possibly fairly complex sub-tree representing the attribute value. 
  On the other hand, in HTML, where all attributes have simple string values, methods to directly access 
  an attribute value can safely be used as a convenience.
  In DOM Level 2, the method normalize is inherited from the Node interface where it was moved.

[Java] DOMのお勉強

ふむむ。(としか言えんわ)

カウンタ

ぶっこわれた。

ころす。


2001-04-22 [長年日記]

引越し

の手伝い。


2001-04-23 [長年日記]

住民票

持ってきなさい>自分

[Java] Forte for Java (CE)

自分のノートパソコンではキツイスギ。

すぐにスワップ領域が満杯に。

[Java] Servletでの特殊文字(<,>,&,")の変換

  String ServletUtilities.filter(String str);

GRP kaz

[Debian] kbdパッケージ

以前もそうだったが、upgrade時にメモリを確保できない。

そこで、コンソール上で

  dpkg -i /var/cache/apt/archives/kbd*.deb

すると問題無くインストールできる。GRP kaz

HTTP1.1のリクエストヘッダ(HOST)

プロキシなどを経由する前のURLで指定されているホストとポートを教える。

(リクエストの転送先や、複数のホスト名のあるマシンの存在などにより到達時点のURLからはサーバがこの情報を判別できない場合があるためHTTP1.1では必須である。GRP kaz

[Java] String.indexOf()

public int indexOf(String str)

    この文字列内で、指定された部分文字列が最初に出現する位置のインデックスを返します。返される整数は、
    this.startsWith(str, k)
 
    上の式が true となるような最小の k です。
    パラメータ:
    str - 任意の文字列戻り値:
    文字列引数がこのオブジェクト内の部分文字列である場合は、該当する最初の部分文字列の
    最初の文字のインデックス。部分文字列がない場合は -1例外:
    NullPointerException - str が null の場合

* 圧縮したページの送信

    public PrintWriter(OutputStream out,
                   boolean autoFlush)
    既存の OutputStream から新しい PrintWriter を作成します。
    この簡易コンストラクタでは、必要な中間の OutputStreamWriter を作成します。これにより、
    デフォルトの文字エンコーディングを使って文字をバイトに変換します。
    パラメータ:
    out - 出力ストリームautoFlush - boolean 値。
    値が true の場合、println() メソッドでは出力バッファをフラッシュする

* ストリームの圧縮

    public GZIPOutputStream(OutputStream out)
                 throws IOException
    デフォルトのバッファサイズで新しい出力ストリームを作成します。
    パラメータ:
    out - 出力ストリーム例外:
    IOException - 入出力エラーが発生した場合

2001-04-24 [長年日記]

[本] 書籍購入

 SD 5月号

[XML] さっそく

SD5月号のXMLのプログラミングで遊んでみる。

うげげ。コンパイル通りませんよ。

というわけで、/usr/include/libxml/内のHTMLparser.h, parser.h, tree.hをのぞいてみると、

うげげ、htmlNodePtr(xmlNodePtr)という構造体にはrootとか、childsとかいうメンバは無いですよー。

というわけで、むぅーと言いながら、変更するとうまく動いてくれた。

(SD5月号はlibxml1をつかっていて、libxml1とlibxml2では完全な互換にはなってないのか?)

libxml/tree.hをみるとこういうことらしい。

/*
 * A node in an XML tree.
 */
typedef struct _xmlNode xmlNode;
typedef xmlNode *xmlNodePtr;
struct _xmlNode {
#ifndef XML_WITHOUT_CORBA
    void           *_private;   /* for Corba, must be first ! */
#endif
    xmlElementType   type;      /* type number, must be second ! */
    const xmlChar   *name;      /* the name of the node, or the entity */
    struct _xmlNode *children;  /* parent->childs link */
    struct _xmlNode *last;      /* last child link */
    struct _xmlNode *parent;    /* child->parent link */
    struct _xmlNode *next;      /* next sibling link  */
    struct _xmlNode *prev;      /* previous sibling link  */
    struct _xmlDoc  *doc;       /* the containing document */
    xmlNs           *ns;        /* pointer to the associated namespace */
#ifndef XML_USE_BUFFER_CONTENT    
    xmlChar         *content;   /* the content */
#else
    xmlBufferPtr     content;   /* the content in a buffer */
#endif
    /* End of common part */
    struct _xmlAttr *properties;/* properties list */
    xmlNs           *nsDef;     /* namespace definitions on this node */
};

とか、

xmlNodePtr      xmlDocGetRootElement    (xmlDocPtr doc);

ということらしい。(そりゃ、childsよりは、childrenのほうがいいよな とか思ったり。)

それよりも、しばらくC言語触れてないと、細かいところを忘れている。精進せよ。

* 結局

できたコードはこれ。

#include<stdio.h>
#include<string.h>
#include<libxml/HTMLparser.h>
int main(int argc, char **argv) {
  htmlDocPtr htdoc;
  htmlNodePtr httree;
  char *ptr;
  if((htdoc = htmlParseFile(argv[1], NULL)) == NULL) {
    fprintf(stderr, "Document not found or illegal\n");
    exit(-1);
  }
  httree = xmlDocGetRootElement(htdoc); 
  if(strcmp(httree->name, "html") == 0 ) {
    httree = httree->children;
  }
  if(strcmp(httree->name, "head") == 0) {
    httree = httree->next;
  }
  if(strcmp(httree->name, "body") == 0) {
    httree = httree->children;
  }
  while(httree != (htmlNodePtr)NULL) {
    ptr = xmlNodeGetContent(httree);
    printf("[%s]: %s\n", httree->name, ptr);
    httree = httree->next;
  }
  xmlFreeDoc(htdoc);
}

libxmlではstrcmpつかわないでもできるはずとか、これじゃ、正式なHTMLを解析できないとかいうツッコミは不要(ネストの解釈もできないし)。あくまでもサンプルなので、ごかんべんを。というか、ねむい。(AM 3:00)

* ドキュメント

みたら、結構ちゃんとしたドキュメントになってるみたいなので、こっちみたほうが早いですな。

changelogみてみたけど、膨大な量で私には不可能。GRP kaz

[Java] ファイルのインクルード

 <%@ include file="Relative URL" %>

は、サーブレット翻訳時(初回アクセス時)に挿入される。

 <jsp:include page="Relative URL" flush="True" />

は、リクエスト時に挿入される。

(よって、スクリプト要素を書くことはできない)GRP kaz

[misc] lynx -dump

htmlを標準出力に出力する。

マヨネーズキッチン

こちら

ぜったいイヤ。GRP kaz

[Java] すべてのプロパティを入力パラメータに結びつける

 <jsp:setProperty name="hogehoge" property="*" />

とすることによって、すべてのプロパティを同じ名前の入力パラメータに一挙に結びつけることができる。

(コアサーブレット and JSP P284)GRP kaz

[Java] taglibについて

web.xmlをWEB-INF/に置かなければ機能しなかった。

また、tldはjspの置き場所とおなじところに置くとうまくいった。

簡単な例は~/tomcat/tabtest/内にある。


2001-04-25 [長年日記]

[Java] Jbuilder4 Foundation

つかってみる。

jdk1.3も入っちゃうのね。

ということで、<jbuilder4>/bin/jdk.configを

javapath /usr/local/jdk1.3.0_02/bin/java
addpath /usr/local/jdk1.3.0_02/lib/tools.jar

としておくと日本語の表示も可能になった。

フォントがないだけなので、フォントプロパティを設定するだけかもしれないけど。

* ついでに、

「ツール」のJDKの設定で、JDKのパスもSUNのものにしておく。

うむむ

高速ネットワークでストレス発散。(謎

bind9

にしてみる。うむ。全く問題無いみたい。

          - Forwarding of dynamic update requests; this is enabled 
            by the "allow-update-forwarding" option

2001-04-26 [長年日記]

GRP kazBINDのゾーンの動的更新

ns_update()ルーチンをつかって更新コマンドを作成し、該当するドメイン名を含むゾーンの権威をもつサーバに送る。

(nsupdateというコマンドでも可能)


2001-04-27 [長年日記]

GRP kaz[用語] VLAN

読み方:「バーチャルラン(仮想LAN)」企業内ネットワークにおいて、物理的な接続形態とは独立に、端末の仮想的なグループを設定すること。

LANスイッチとよばれる機器の機能を利用して、端末の持つMACアドレスやIPアドレス、利用するプロトコルなどに応じてグループ化する。

端末を物理的な位置を気にすることなくネットワーク構成を変更することができ、また、端末を移動しても設定を変更する必要がないというメリットがある。

* メリット

VLANを構成すると、同じVLANグループに属する機器同士は相互通信可能ですが、グループ間の通信は不可能になります。

つまりブロードキャストパケットもVLANグループ内で社団されるため、帯域を有効に利用することができます。

LANスイッチで任意のポートを複数グループ間で共有するオーバーレイ機能を使うことで、ルータ無しでもVLANグループを越えたサーバやプリンタの共有が可能です。

* 種類

ポートベースVLAN

ポートベースVLANとは、スイッチのポート単位でVLANグループを形成する方式です。
設定も用意なことから最も普及しています。
ポートベースVLANにはさらに、業界標準のIEEE802.1Q規格に準拠したスイッチと、独自方式スイッチの2種類があります。

IEEE802.1Q

各VLANグループに固有の識別番号(VLAN ID)を設定し、さらにパケットに、そのパケットが属するVLAN IDをタグ・ヘッダという形で付与します。
うめ込まれているタグ・ヘッダ内のVLAN IDを参照することで、複数のスイッチを経由したVLANグループの構成を実現します。

こちらを参照

[日記] C++

については今のところやる予定がたちませぬ。

というわけで、ツンドク本。GRP kaz

[用語] RAS

 Remote Access Serviceの略
 MS-LAN ManagerやWindows NT環境でサポートされているリモートアクセス機能。

電話回線やクロスケーブルによって直結されたシリアルポート、X.25、ISDNなどがサポートされている。


2001-04-28 [長年日記]

昨日の夜

友人と2人で呑みにススキノへ。

ぐへぇ。飲みすぎた。

一人8000円なり。

ちとビックリ。

今日から

9連休にするということが昨日突然決定した。

うっしっし。

[本] 書籍購入

UNIX MAGAZINE 5月号。


2001-04-29 [長年日記]

GRP kazIPv6の長所

 32bit -> 128bit(最初の64bitはプレフィクス)
 セキュリティ機能の強化
 移動体通信
 マルチキャスト

* プレフィクス

001 => 集約可能なグローバルアドレス
1111 1110 10 => リンクローカルなユニキャストアドレス
1111 1110 11 => サイトローカルなユニキャストアドアレス
1111 1111 => マルチキャストアドレス(ただしルータを越えられない)

* ローカルループバック

 ::1 => 127.0.0.1と同じ

* リンクローカルアドレス

最初の64bitが fe80:: ではじまるアドレス。

単一リンクレイヤ(データリンクレベル or レイヤ2におけるセグメント)でのアドレス。

下位64bitはインターフェースID(IEEE802ファミリの場合にはEUI-64アドレスが使用される。)

* マルチキャスト

 ff02::1 => リンクローカルに接続されたホスト
 ff02::2 => リンクローカルに接続されたノード(ホストとルータ)
 ff02::3 => リンクローカルに接続されたルータ

* ping6のつかいかた

 ping6 -n -I eth0 ff02::1

IPv6に

トライしてみる。

が、しかし、よくわかってない。GRP kaz

ルーティングについて

TCP/IPネットワーク管理第2版P36あたりより

* コアゲートウェイ

インターネット創世記に、ARPANETがバックボーン(コア)となって経路情報を一括処理していた。
コアに接続されたゲートウェイのなかでも、中央で管理するものをコアゲートウェイと呼ぶ。
インターネットに接続されたすべてのネットワークに関する経路情報は階層構造の中心に位置するコアゲートウェイを通過する仕組みになっていた。
コアゲートウェイは経路情報を処理してから、GGP(Gateway to Gateway Protocol)をつかって、相互に情報を交換した。
処理済みの経路情報は元のゲートウェイに返され、そこから外部のゲートウェイへ配信された。

* 自律システム(autonomous systems)

コアの外側にあった独立したネットワークのグループ。
経路情報を入手し、それを独立したほかのネットワークシステムへ渡す内部機構を独自に備えたネットワークとゲートウェイの集まり。
他のネットワークシステムに渡された経路情報を宛先情報(reachability information)という。
これにより、その自律システム経由で宛先のネットワークがわかる。宛先情報を自律システム同士で交換し、それをコアに渡すときに使用されるプロトコルをEGP(Exterior Gateway Protocol)という。

* BGP(Border Gateway Protocol)について

ルーティングドメイン(自律システムを対等に結び付けるという考え方)が相互に経路情報を交換するときに使用するプロトコル。
それぞれのドメインは、相手から受け取った経路情報を自分で処理する。
コアシステムに依存しないで「最適」な経路を選択することができる。
各ドメインがそれぞれ独自に経路を選択できるので、ネットワークの拡張性が高い。

2001-04-30 [長年日記]

GRP kazsshd_config

 ListenAddress 0.0.0.0

とすることにより、nk98 から、vaioに入ることができるようになった。

掃除

掃除する。

結局 AM 4:00 までいろいろやった。

いらない(と思われる)本をステまくり。

そういえば、

先週の金曜日にやっと給料が決まった。

スノボーとブーツ

一昨年に安くゆずりうけたのだが、一度も乗ってない。

どなたか欲しいですか。

僕はスノボーのことは全くわからないのですが、当時は、そこそこ良いものだったらしいです。

キズも少ないですし、結構おすすめだと思いますが。

(季節はずれですが)GRP kaz

named on nk98

よくわかってない。

一応、localhostのゾーンで"localhost."を解決できるようにし、nutyon.comで "localhost(.nutyon.com)"を解決できるようになっている。

ただし、両方とも A になっているのでマズイかも。

実際にはどうするんだべ。

* 「A」はマズイと思うので、

nutyon.comゾーンで、

 localhost CNAME localhost.

としておいた。

factor

 $ factor 48

とかすると、素因数分解してくれるなんてステキだ。


2000|01|02|03|04|05|06|07|08|09|10|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|06|07|
2012|01|03|05|06|08|09|
2013|01|08|09|
2014|01|03|05|08|12|
2015|01|04|09|10|
2016|01|

2001年
4月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Copyright (C)2005-2015 nu-chon.org.