配列の要素の総和

最初は
[ruby]
a = [1,2,3]
sum = 0
a.each{|i| sum += i}
[/ruby]
とかやっていて,どうもいまいちだなあと思って,しばし考えた後こうしてみた。

sum = eval(a.join("+"))

だいぶスマートになったけど,よくよく考えると joinというメソッドは加算とはぜんぜん関係ないだけに,ぱっと見,総和を出しているようには見えない。結局理想形は

sum = a.sum

という風に書ける Array#sumを定義すればいいんだろうけど,メソッド定義するほど大げさなものでもないので,つまるところ eval方式に落ち着いた。

アナログテスター物色

これまた「CPUの創り方」で紹介されていた日置電機と三和電気計器の製品を調べてみた。

  • 日置電機製「3030-10 ハイテスタ」 ?6800
  • 三和電気計測製「CX-506」 ?7850
  • 三和電気計測製「AX-313TR」 ?5980
  • 三和電気計測製「SH-88TR」 ?5450
  • 三和電気計測製「YX-361TR」 ?4780

が主な候補といったところか。

ThinkPad A31p

後輩が「シリアルポートがどうも認識されないんですけど…」といってきたのでちょっと調べてみることに。最初は OS(RedHat9)の設定が悪いのではと、いろいろいじってみたが setserial直叩きでも一向に認識される気配がない。結局 IBMのサポートページで検索しまくった結果、なんと BIOSの設定でシリアルポートの使用可否がデフォルトで disableになっていることが判明。

で、実機を確認すると確かに disableになってます。どおりで動かないわけだ。enableに直して再起動したらすんなり認識するようになりました。しかし、デフォルトで disableにする意味がよくわからん…。

半田ごて購入

最近自分の周りで電子工作ブームがおきている。「CPUの創り方」しかり「SoftwareDesign 2003年11月号」の「1万円で作る10万円オーディオ」しかり(ブームといっても 2つしかない訳だが)。そんなわけで気持ちはすっかり作る気なのだが、なにぶん工具がまったくない状態なのでまずは半田ごてを買いに東急ハンズへ。

何を買うかは決めていて、「CPUの創り方」で紹介されていた太洋電機産業株式会社製「KS-20R」。すぐ見つかったので即購入決定。半田こて台もついでに購入。半田ごては 990円。安いですね。さて次はテスターを買わないと…(先は長い)

NetBSD-current(1.6.1)

連休で時間があるので、自宅の PCにNetBSD-currentをインストールすることにした。UNIX MAGAZINE 2003年8月号を参考にして、ざっと以下のような手順。

ソースツリーの取得

# setenv CVS_RSH ssh
# cvs -d :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot login
# cd /usr
# cvs -d :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot checkout src
# cvs logout

パスワードは anoncvs。

カーネルの構築

ツールとカーネルの作成。

# mkdir /usr/obj
# cd /usr/src
# ./build.sh tools
# ./build.sh kernel=GENERIC

うまくいかない場合は

# cd /usr/src
# cvs login
# cvs udpate -dP
# cvs logout

でソースツリーを更新して再トライ。
カーネルのインストール

# cd /usr/src/sys/arch/i386/compile/obj/GENERIC
# make install

再起動で新しいカーネルで起動

# reboot

ユーザランドの構築

# cd /usr/src
# mkdir /usr/NetBSD-new-build
# ./build.sh -D /usr/NetBSD-new-build build > build.log &

できたバイナリをインストールする

# cd /usr/src
# ./build.sh -D /usr/NetBSD-new-build -T /usr/src/tooldir.NetBSD-1.6ZC-i386 install=/ >& install.log &

SUPの設定


# mkdir /etc/supfiles
# cp /usr/share/examples/supfiles/sup.jp.netbsd.org /etc/supfiles/coll.list
# sup -sv

/etc/hostsに自ホストのエントリを追加しておくこと。