2006年1月アーカイブ

coLinux /dev/random

| コメント(0)

[Fri Jan 27 17:19:02 2006] [notice] Digest: generating secret for digest authentication ...
[Fri Jan 27 17:25:23 2006] [notice] Digest: done

mod_auth_digest 入りの apache2coLinux で動かそうとすると、起動がとてつもなく遅くなることが多くて 色々調べてみました。これは coLinux の /dev/random 問題として coLinux でsubversion を動かしている人の 間では結構有名な問題なんですね。

DevRandomProblem というページに以下のようにあります。たしかに手元のcoLinuxで strace dd if=/dev/random of=/tmp/hoge count=1 とかやると read() でブロックしている様子が見えます。

In colinux sometimes you may find some cryptographic applications freezing. This is due to the lack of randomness available to /dev/random.

Workaround 2:

  • Change the /dev/random to some pseudo-random source that automatically fills, such as /dev/urandom. For example:

# # /dev/random is  "c 1 8"
# # /dev/urandom is "c 1 9"
# rm /dev/random
# mknod /dev/random c 1 9
# # do your cryptographic thing

ま、手元の開発環境なので同じように /dev/random を /dev/urandom と同じものにしておきました。

追記coLinux ではなく、まともな /dev/random を持つ普通の Linux ならわざわざ/dev/random を変更する必要はありません。 問題は /dev/random を使って Digest 用の secret を生成している部分で apr_generate_random_bytes() を呼び出してとまることなので。

Pro Perl Debugging

| コメント(0)

さて、SF出張も一週間が過ぎました。USのエンジニアと一緒に作業すると 勉強になることも多いです。 一番便利だなぁと思ったのが perl -d でデバッグしていること。 はい。ずっと 'use Data::Dumper; warn Dumper($hoge)' を書いてデバッグしてました。

TypePad チームが使っているツールはちょっと工夫してあって、デバッガでのコマンドヒストリを保存して あります。これは 一旦デバッガを終了して、再度 perl -d しても以前のヒストリーが使えたりして便利です。

とはいえ、 perl -d はほとんど経験がないので宮川さんにコンピュータ関連の技術書が多いと 教えてもらった本屋 STACEY'S まで 雨の中(土曜日だってのに朝から雨)歩いていって Pro Perl Debugging: From Professional To Expert (Pro: from Professional to Expert) を買ってきました。 読みながらちまちまと体に染み込ませようかと思っております。

Pro Perl Debugging: From Professional To Expert (Pro: from Professional to Expert)
Richard Foley Andy Lester
Apress (2005/07/25)
売り上げランキング: 276,298

$ svn ci gaga
Sending        gaga/hoge/a.tmpl
Adding         gaga/hoge/b.tmpl
Transmitting file data ....svn: Commit failed (details follow):
svn: MERGE request failed on '/repos/some/where/gaga'
svn:
'pre-commit' hook failed with error output:

File name case conflict found:

  some/where/gaga/hoge/a.tmpl already exists as hoge/a.tmpl


ううむ。

向かいに座っている宮川さんに聞いて、以下のように一旦手元のリポジトリからファイルを消してcommitすればOKでした。

$ svn remove --force gaga/hoge/a.tmpl
$ svn ci gaga/hoge/a.tmpl
$ svn cp http://www.example.com/repos/some/where-test/gaga/a.tmpl gaga/hoge/a.tmpl
$ svn ci gaga

Transmitting file data ....
Committed revision 22

Firefox のフォント設定を Tahoma にしてみました。 font-familiy が設定されていないページを見る場合でもアンチエイリアスが効いて少しだけ幸せになれます。

欧文フォントなのでや、日本語とかはシステムのデフォルトになりますけど。。

coLinux の resolv.conf

| コメント(0)

coLinux をオフィスのネットワークで使ったり、部屋に戻って無線LANに参加するたびに /etc/resolv.conf を書き換えていました。めんどくさいなぁと思って colinux dns で検索すると そのものずばりな情報が YoshikiさんClouder::Blogger: coLinuxを入れてみる というページにありました。

"TAP" を使っている場合は /etc/resolve.conf に nameserver 192.168.0.1 と書くだけです。 都合によって TAP が使えない場合は、 Windows のコマンドプロンプトで 以下を実行すると 192.168.0.1 側の 53 ポートUDPで DNSの代理問い合わせを受け付けてくれます。

C:\> netsh routing ip dnsproxy install

次に coLinux 側の /etc/resolv.conf を 共有しているアドレス 192.168.0.1 に変更します。

root@colinux# echo "nameserver 192.168.0.1" > /etc/resolv.conf

後は、以下のように問い合わせるだけ。 ちなみにTCPには対応していないので dig hoge.example.com +tcp では 使えません。

sekimura@colinux:~$ dig qootas.org +short
59.106.15.125
sekimura@colinux:~$ dig qootas.org +short +tcp


UPDATE
TAP の場合は /etc/resolve.conf に nameserver 192.168.0.1 を書くだけでいいことを追記

filtering Port 25

| コメント(0)

先日から出張で San Francisco に来ています。 宿泊先のネットワーク設定は同室の方の AirMac Expressで設定したので、ベッドの上でメールを読んだりと便利です。

つらつらとメールを読んで返事を出そうと思うと、どうもサーバにつながらない。 そういえばとWebを検索すると、SBC Packbell is filtering port 25 とのこと。 あわてて、submission port の 587 を使うように Postfix と thunderbird の設定を変更しました。

日本でも広まっているようですが、USでは「25ポート閉じ」を導入されている範囲も広そうなので 海外出張の前には事前にチェックしておくと良いですね。