ページ

2012年8月1日水曜日

古い体温計だからか

風邪を引いたっぽいから体温を測ろうと思い長年使っていた電子体温計のスイッチを押しても反応がないので、どうやら電池切れのようだ。しかし精密ドライバーがないので交換できずにいた。

精密ドライバーを用意してふたを外して電池の型番を調べてみた。SR41SWと書いてある。近所のスーパーマーケットではLR41とかは置いてあってもSR41とかは置いてない。SRのSは酸化銀電池を意味するらしいが、Lはアルカリ電池を意味するらしい。形も電圧も似たようなものだから互換性はあるようなのだが、酸化銀電池の方が長持ちらしい。

しかし、どの程度電圧が低下しているのかと思いテスターで測ってみると、1.58[V]もあるね・・・。この電池は1.55[V]のはずなんだが、全然電圧低くなってない。

ということは、電子体温計の方が壊れたのか?

もう20年くらい使っているような気がするのだが、実際いつ製造されたものなのか分からないので調べてみようと型番を検索しても出てこないし・・・。相当古いってことだろうか。

それで電池を入れ直してもう一度スイッチを押してみると、ちゃんと動作した。

36.8℃くらいだから平熱より少し高いな。まだ風邪ちゃんと治ってないな。まだ咳ときどき出るし。

とりあえず興味本位でテスターで電圧測っておいて良かった。無駄な買い物しないで済んだ。

でも動作不安定なのも困るな。しばらく様子見て、やっぱり変だったら体温計を買い換えた方がいいんだろうな。

それはそうと、テスターって便利だな。

2012年7月12日木曜日

平均にも色々あるようだ

統計の教科書を読みながら久しぶりに Common Lispに触れてみる。

平均と言って、普段使っているのは算術平均。

(1 2 3 4 5)

というリストがあるとして、全要素を合計した値を要素数で割れば良い。

> (+ 1 2 3 4 5)
15

> (/ (+ 1 2 3 4 5) 5)
3

リスト (1 2 3 4 5) の算術平均は 3 と出た。

しかし、成長率とか増加率のような比率を平均したい場合には算術平均は使えないので代わりに幾何平均を使う。

(0.1 0.2 0.3 0.4 0.5)

というリストがある場合。めんどうなので各要素に 1 を足しておく。

mapcar が便利。

> (mapcar #'(lambda (x) (+ x 1)) '(0.1 0.2 0.3 0.4 0.5))
(1.1 1.2 1.3 1.4 1.5)

それで要素全部を掛け算する。

> (* 1.1 1.2 1.3 1.4 1.5)
3.6036

このリストが各年の成長率だとしたら 5 年間で約 3.6 倍になるらしい。

それでは平均して 1 年あたり何パーセントずつ成長しているのかを計算するには

算術平均なら

> (/ (+ 1.1 1.2 1.3 1.4 1.5)  5)
1.3

1.3 という数になる。つまり平均30パーセント増。
要素数が 5 で、それぞれ 1.3倍ずつ増えていくのだから 1.3 の 5 乗になるはず。
実際に計算してみると

> (expt 1.3 5)
3.712929

となるので、さっきの 3.6036 とは違う。だから算術平均では駄目。
そこで全要素の積を計算し、要素数 n 個なら n 乗根を出せば良い。

> (expt (* 1.1 1.2 1.3 1.4 1.5) (/ 1 5))
1.2922523

平均して29パーセントの成長率と言える。しかし、各要素に 1 を足さないで (0.1 0.2 0.3 0.4 0.5) のままで同じ計算 (expt (* 0.1 0.2 0.3 0.4 0.5) 0.2) をすると違う結果 0.26 になる。これで平均26パーセントの成長率だと思ってしまうと間違いになるから注意しないといけない。

それから或る区間を往復した場合の平均速度のような場合は調和平均を使う。

60kmの距離を行きは10 [km/h]、帰りは6[km/h]で往復した場合の平均速度は

> (/ (+ 10 6) 2)
8

算術平均で 8 [km/h] としたら間違い。
60kmの距離を10[km/h] の速さで移動したら所要時間は 60/10 = 6 時間、60kmの距離を 6[km/h] の速さで移動したら所要時間は 60/6 = 10 時間、所要時間の合計は 6 + 10 = 16 時間、距離は 60×2 = 120[km] なので、平均速度は 120/16 = 15/2 = 7.5[km/h] となる。

この場合のリストは (10 6) で、要素数が2個しかないけど、要素数が多い場合はやっぱり mapcar が便利

> (setf a '(10 6))
(10 6)
> (list '/ 1 (list '* (list '/ 1 (length a)) (cons '+ (mapcar #'(lambda (x) (/ 1 x)) a))))
(/ 1 (* (/ 1 2) (+ 1/10 1/6)))
> (eval (list '/ 1 (list '* (list '/ 1 (length a)) (cons '+ (mapcar #'(lambda (x) (/ 1 x)) a)))))
15/2
> (/ 15 2.0)
7.5

ちゃんと 7.5 になってる。

与えられた数字のリストを用いて算術平均、幾何平均、調和平均を出力する clisp のプログラムを作ってみようと考え本を読みながら試行錯誤。

とりあえずこんなのができた。

$ cat sample.lisp
#!/usr/bin/clisp
(defun readlist (&rest args)
        (values (read-from-string
                (concatenate 'string "("
                        (apply #'read-line args)
                        ")"))))

(setf a (readlist))
(setf len (length a))
(format t "list:~A, length:~A~%" a len)

(format t "~%arithmetic average:~%" )
(setf b (cons '+ a))
(format t "~A=~F~%" b (eval b))
(setf c (list '/ b len))
(format t "~A=~F~%" c (eval c))

(format t "~%geometric average:~%")
(setf d (cons '* a))
(format t "~A=~F~%" d (eval d))
(setf e (list 'expt d (/ 1 len)))
(format t "~A=~F~%" e (eval e))

(format t "~%harmonic average:~%")
(setf f (cons '+ (mapcar #'(lambda (x) (/ 1 x)) a)))
(format t "~A=~F~%" f (eval f))
(setf g (list '/ 1 (list '* '(/ 1 len) f)))
(format t "~A=~F~%" g (eval g))


$ echo 1 2 3 4 5 | ./sample.lisp
list:(1 2 3 4 5), length:5

arithmetic average:
(+ 1 2 3 4 5)=15.0
(/ (+ 1 2 3 4 5) 5)=3.0

geometric average:
(* 1 2 3 4 5)=120.0
(EXPT (* 1 2 3 4 5) 1/5)=2.6051712

harmonic average:
(+ 1 1/2 1/3 1/4 1/5)=2.2833333
(/ 1 (* (/ 1 LEN) (+ 1 1/2 1/3 1/4 1/5)))=2.189781

2012年5月24日木曜日

嗚呼悲しいショック失望した・・・。

先月頃の新聞で近所の千葉県立現代産業科学館が除染対象に選ばれていることに気がついて「おや?福島からはけっこう距離があるのになんで除染しなきゃいけないんだ?」と不思議に思った。

で、風向きかな、千葉県は意外と汚染されていたようだ。子供を外で遊ばせてはいけないようだ。通学以外での外出は極力控えるべきだ。引越しする程ではなさそうだ。などと思った。

そして、無目的にYouTubeを眺めていると、ふと福島原発関連の動画に気がついて見てみた。

いつものように、「嗚呼、危険なのを知りながら放置し続けた自分を含む全国民の罪だわ。観念してガンに怯えて暮らすしかないんだわ。ガンになっても『ただちに死ぬわけではない』のだから。」などと思っていた。しかし。

http://www.youtube.com/watch?v=GjwQHW78Afs&feature=relmfu

あれ?おや?えーーーー!

ラジオとかでは3号機の爆発がこんなに大きかったなんて聞いてないぞ。

水素爆発って聞いていたけど、映像を見る限り水素爆発であそこまで吹き上げるとは思えない。たぶん本当に即発臨界による爆発だろう。

アメリカが退避勧告してた範囲が大袈裟なのは用心深いからだろうと思っていたのだが、これを見る限りでは妥当だったみたい。

隣の建物から配管をつたって水素が入り込むなんてヘンだなと思いはしたが、政府を信用する事にしていたから、非常にがっかりした。

これは、たぶんチェルノブイリを越えている。

2012年3月31日土曜日

lenny -> squeeze めんどうだった。

ここ数日気分が滅入っていた。

お腹の調子が悪かったと言うのもあるが、Debian lenny なマシンで perl から csv ファイルを扱いたいからって Perl モジュールを aptitude でインストールしようと試みたのだ。

で、なにやらやたらといつもの事だけど依存関係でいろんなパッケージがアップグレードされていくし、なぜかカーネルのバージョンアップもされたりする。

しかし、失敗する。

目的のパッケージがインストールできさえすればいいんだけど、今回は目的のパッケージがインストールされないばかりかシステムに必須と思えるようなコマンドまで消えてしまっている。

嗚呼、さんざん警告を無視し続けてだましだまし使い続けてきたが、もうさすがに限界なのか、X Window System も使えなくなってしまった。かなりまずい。

いろいろ aptitude を試してみたけど駄目だなぁと。というか aptitude が機能しない。

きっと再起動したら正常に起動しなくなっているんだろうなと思いつつも、現状を打開したいので再起動。

嗚呼、やっぱりまともに起動しなくなっていた。

とりあえず initramfs な環境でどうしようかなぁと・・・。どうしようもないから別のカーネルで起動。するとなんとか起動はした。新しいカーネルでは起動できなくなっていたようだ。

そうか、ソフトウェアRAIDで設定したRAID1のディスクが認識できていないようだ。LVMも微妙な感じだ。

嗚呼、困った。再起動前の状態を事前に記録しておけば良かった。元に戻すにしても元がどうなっていたんだっけ?

まぁ、いいや。深く考えない。

とにかく initrd の再作成が必要なようだ。で initrd を再作成したんだけど、そうしたら今度は古いほうのカーネルでも起動しなくなってしまった・・・。嗚呼、困った。

つまり、lenny から squeeze へのバージョンアップがいつの間にか進んでいて、あまりアップグレードしたくなかったんだけど、面倒な事になるから。だけど、使っているうちにどんどん依存関係上アップグレードが進行してしまい、カーネルのバージョンアップが必要なわけで、しかしなぜか失敗しているので困った。

/var/cache/apt/archive あたりに保存されていた新しいカーネルを dpkg で手動でインストールしようとしたら原因が分かった。root filesystem が容量不足だ。/lib にモジュールが入れられない。

ということで、以前も /usr が容量不足だったときに /home をソフトウェアRAIDでRAID1構成にした新しいハードディスク上に置いて、/home に使っていたLVMボリュームを /usr に割り当てていたのだ。その /usr として使っていたのは容量が中途半端だからって放置していたんだけど、/ で容量不足なら昔の /usr を割り当てれば良いではないかと考え debian の install CD から rescue モードで起動して root filesystem の中身を以前の usr に移して fstab を書き換えたいんだけど /usr/bin/vi が見つからないのは何故?しかたないので LVM のラベル名を変更して fstab そのままでも良いようにした。

しかし、それでもまだ問題は解決しない。

/ の容量に余裕ができたから aptitude でカーネルやらなにやらをどんどんアップグレードしていくけれど、古いカーネル用の initrd を再作成したら古いカーネルでも起動しなくなったじゃないか。

嗚呼、困った、でもオプションで all を指定しなかったから古くも新しくも無い中くらいのカーネルで起動できた。どうやら lenny から squeeze へのアップグレードの際の注意点をよく読めという話のようだ。

なにしろ起動するたびにソフトウェアRAIDのディスクを手動で認識させ、LVMを手動でACTIVEにしないと/homeが見つからないから大変。なんか udev の挙動が変。/dev/shm も消えているし。udev は最新のカーネルパッケージを要求しているのにカーネルがインストールできなかったので "/" ファイルシステムの容量を大きくしてインストールできるようにして、やっとカーネルのアップグレードができたと思ったんだけど、やっぱり最新のカーネルでは起動できない。

嗚呼、どうやらGRUBを最新にしないと mdadm で作ったRAIDは見えなかったらしい。その他いろいろやってようやく一番新しいカーネルでも起動できるようになった。

それで xorg も再設定。NVIDIAカーネルも入れて X も立ち上がるところまで修復できた。それで日常の業務を行うスクリプトを走らせるとなんか止まる。

mysqldump がエラー出してる。

ええい面倒だということで mysql 関連パッケージをアップグレード。

そしたら今度は mysql サーバー自体が動かなくなってしまった・・・。

嗚呼、困った。本当に困った。

で、結局 my.cnf の中身が不正なんじゃないかということが分かってきたので試しに my.cnf をリネームして /etc/init.d/mysql start とかしてみるとすんなり起動した。

今までの my.cnf のメモリーの取り方は間違っていたみたいだ。やたらとパフォーマンスが悪くていろいろ試していたのが今回のバージョンアップで引っかかってしまった。

そうしてようやくやっと、ほぼ元の状態と同じ程度に使えるようになった。

でも、リモートホストからのMySQLの接続が失敗する。GRANTで許可するネットワークのサブネットを指定しても接続元のホスト名で拒否されてしまう。どうやらIPアドレスの範囲で許可したつもりでも名前解決を行いホスト名で判断されてしまう。

困った。GRANTで許可するホスト名を指定しないと駄目なのかも。

とりあえず使えるようにはなった。多少変更が必要そうだけど大丈夫そうだ。まあこんなものだ。ときどきバージョンアップせざるを得なくなって苦労するんだ。

ここ数日、自分用のサーバーが使い物にならなくなっていたので気分が悪かった。いわゆる基幹サーバーとかだったらもっと気分が悪いのだろう。自分はもっと小規模なホームサーバーちっくな自分しか使っていないようなサーバーだからあんまり困らなかったけど、自分は困るけど。何日か使えなくなってもあまり深刻にならないで済む。とはいえ月末だから月が変わる前に直しておかないと毎月のデータ抽出に支障が出る。つまり1週間以内に直さなくてはいけなかったのだ。間に合ってよかった。

2012年2月25日土曜日

クレバリーのキーボード専門店が閉店するそうな

昨日の暮に秋葉原にフラッと寄り道したときにキーボードを見に行こうとクレバリーへ行くと閉店セール中でした。なんだか寂しいわ。

http://akiba-pc.watch.impress.co.jp/hotline/20120211/etc_clevery.html

以前はぷらっとホームのキーボードコーナーを良く見に行ってたんだが、こんどはクレバリーの方も閉店しちゃうのね。

最近は欲しいって思えるマニアックなキーボードが無くなってしまったような気がするのは探す努力が足りないからなのだろうか?

寂しいわ~。

2012年2月9日木曜日

人体のエネルギー効率が気になった

下記によるとヒトの重量1gあたり1km移動するのに要するエネルギーは0.75カロリーらしい。
http://www2.ttcn.ne.jp/honkawa/6390.html
すると体重60kgのヒトならば 45 kcal/km 程度か?

次にウォーキングによる消費カロリーを見ると体重60kgのヒトは1分あたり3.3kcal前後消費するそうです。
http://muuum.com/calorie/1018.html

5km/h としたら 1km 移動するのに 12分かかるから 39.6 kcal くらいであろうか?

上の数字と近いけど微妙な差が生じている。

ジョギングの場合は kcal = 体重[kg] × 距離[km] になるらしい。
http://muuum.com/calorie/1017.html
60kg のヒトならば 60kcal であろうか。

42.195km ジョギングしたら 2.5 * 103 kcal ってところか。

食パンにマーガリンでもぬって食べると 1枚あたり 250 kcal になるらしい。
http://www.eiyoukeisan.com/calorie/gramphoto/zryouri/toast.html
ということは、スローペースでマラソンを完走するにはマーガリンぬったパンを10枚食べれば良いのか。

ところが雪印さんが言うにはマーガリン10gのカロリーは 63.8 kcal なのだそうだ。
http://www.meg-snow.com/products/margarine/18cb4.html

そしてヤマザキさんが言うには食パン1枚辺り160kcal前後らしい。
http://www.yamazakipan.co.jp/product/eiyou/shokupan.html
つまり 160 + 64 = 224 kcal ということで上記よりも少し低い。11枚くらい食べなきゃ駄目ということになる。

ただ、僕は体重が軽いので 10 枚で足りるようだ。

ということは 42.195 km 移動するのに必要なお値段は・・・。

食パンが一袋130円くらいで一枚あたり22円くらいかな、マーガリンが一箱320gで290円だと10gで9円くらいかな。だから一枚あたり31円くらいで、10枚だったら310円ってところか。

ちなみに松屋の牛めしは並盛りで280円だけどカロリーは 758kcal だそうだ。
http://www.matsuyafoods.co.jp/menu/list/index.html?cate=A#iconExplanation

つまり、単純にカロリーだけで判断するなら食パンにマーガリンぬって食べた方がコストパフォーマンスが良い。

ではJRの電車賃と比べるとどうだろう。
http://bunkatsu.info/fare.html
どうやら740円くらいかかるらしい。

さて、そうすると電車を使うよりも小走り程度でも自分の足で移動した方がコストがかからないらしい。

しかし、時速7km程度で移動できたとして42.195kmを移動するのにかかる時間は 6時間もかかる。

たぶん首都圏の電車なら door-to-door で 1時間半くらいあれば目的地に着けるのではないだろうか・・・。

う~ん、困ったなぁ、どうしよう。単純にエネルギー効率だけで考えれば自転車を使えば良いのだが、置き場所を探す苦労や盗難のリスク、故障時には荷物になるばかりというデメリットが無視できないのよね・・・。

嗚呼、自分はいったい何を考えているんだろうか。

2012年1月10日火曜日

OpenPNEを試してみようかと・・・。

多人数でのファイル共有もできるようだからってSNSを試してみようと思い、OpenPNE を試してみようと思ったけど、なんだかセットアップ手順を読みながら実行しても途中でこける。

なにやら aptitiude update してから aptitude install php5 で PHPのバージョンを上げてみると回避できたっぽい。

ところがその後から様々なサービスが使えなくなるという非常に面倒な状況になった。

で、aptitude install ... といった感じで様々なパッケージのバージョンアップが必要になってしまい、めんどうだった。

そして当のOpenPNEの方も真っ白な画面が出るばかりで悲しい状況。apache2 の error.log を見ると結構な量のエラーメッセージが出ている。

丁寧に調べて直す気力が無いので放置。もう少し元気なときに取り組む事にします。