logo
code:Haemophilus influenzae

ここに書かれていることは無保証です。同じことを行って問題が発生しても、 龍義は責任をとりません。
 2003年9月 
 2003年10月 
 2003年11月 
 2003年12月 
 2004年1月  2004年7月 
 2004年2月  2004年8月 
 2004年3月  2004年9月 
 2004年4月  2004年10月 
 2004年5月  2004年11月 
 2004年6月  2004年12月 
 2005年1月  2005年7月 
 2005年2月  2005年8月 
 2005年3月  2005年9月 
 2005年4月  2005年10月 
 2005年5月  2005年11月 
 2005年6月  2005年12月 
 2006年1月  2006年7月 
 2006年2月  2006年8月 
 2006年3月  2006年9月 
 2006年4月  2006年10月 
 2006年5月  2006年11月 
 2006年6月  2006年12月 
 2007年1月 
 2007年2月 
 2007年3月 
アイコンの説明

 4/1
Other
ちょっと海外に行こうと思っていて、ノートPC(Libretto L5)が壊れてしまった
場合、デジカメのデータをどこに保存しようか、少し悩んだのだけど、よく考えたら
インターネットカフェから、 gmail で自分に送れば良いのか、と気が付いた。
今、 3G 近くまで使えるので、多分耐えられるでしょうし。心配して USB メモリを
買ってしまったのだけど、買わなくて良かったのか…。

 4/2
Other
C な mysql に接続に行くプログラムを作って、試験をしていたのだけど、設定で
ポート番号を 0 にしたとき、問題なく接続してしまった。 mysql_real_connect()
のリファレンスを読んでいたら

If port is not 0, the value is used as the port number for the TCP/IP
connection. Note that the host parameter determines the type of the
connection.

と書かれていた。 0 の場合は、デフォルトの 3306 が使われる、ってことか。

 4/3
Other
curl を使ってたら
curl: (28) Operation timed out with 0 out of -1 bytes received
なんてエラーを吐いた。単純にタイムアウトなんだけど。どんなときに出すのか、
最新 7.16.1 の source をダウンロードしてきて、検索してみたら、メッセージは
見つからない。使っていたのが 7.12.1 なので、それに近い 7.14.0 をダウンロード
してきて、 source を見たら、あった。

  if (data->set.timeout &&
      ((Curl_tvdiff(k->now, k->start)/1000) >= data->set.timeout)) {
    failf(data, "Operation timed out with %" FORMAT_OFF_T
          " out of %" FORMAT_OFF_T " bytes received",
          k->bytecount, conn->size);
    return CURLE_OPERATION_TIMEOUTED;
  }

この部分は、7.16.1 だと

  if (data->set.timeout &&
      ((Curl_tvdiff(k->now, k->start)/1000) >= data->set.timeout)) {
    if (k->size != -1) {
      failf(data, "Operation timed out after %d seconds with %"
            FORMAT_OFF_T " out of %" FORMAT_OFF_T " bytes received",
            data->set.timeout, k->bytecount, k->size);
    } else {
      failf(data, "Operation timed out after %d seconds with %"
            FORMAT_OFF_T " bytes received",
            data->set.timeout, k->bytecount);
    }
    return CURLE_OPERATION_TIMEOUTED;
  }

になっている。ちょっと、表示がやさしくなったようである。さて、cgi の修正を
しなくては。

 4/4
Network
月末に海外に行こうと思っていたのだけど、 ajaxime のページが死んでいて、
困ったな、という状況だった。どうやら復活したみたいである。助かった。

 4/5
Other
ダイハツの軽自動車を調べてみたのだけど、もう4気筒のエンジンは作らない
方向みたい。コペンが最後の4気筒で、その昔はムーブにまで積んでいた4気筒も
すっかり影を潜めてしまったようである。スズキも F6B が 660cc の最後の4気筒
で、この前売り出されたセルボで4気筒モデルが出るんじゃないかと少し期待を
したのだけど、あっさり K6A 積んできたし。別に4気筒にこだわっているわけじゃ
ないけど、色々バリエーションがあった方が選ぶ方としてはありがたい。

 4/6
Network
あるプログラムの検証をしていたのだけど、どうもパケットがロスしてしまう。
プログラムが悪いと思って、ずっとどこが悪いのか悩んでいたのだけど、結局、
別なネットワーク環境でやったら、あっさり動いてしまった。検証に使っていた
環境は、 VPN + NAPT な環境でさらに戻ってきて、グローバルな IP からローカルな
IP に NAT 振られて返ってくる、なんて言葉で説明してもよくわからない状態。

PC(ビルA) - インターネット - ビルB - NAPT - インターネット - NAT - PC(ビルB)

ビルA - ビルB 間が VPN 。どこで落ちてるのか、検証するのも面倒そうである。
あっさり、あきらめる。

 4/7
Other
wiki クローンをインストールしようと思ったのだけど、いっぱいありすぎて、
どれをインストールしようか迷ってしまう。こんなときは、1つ2つしかない
方が、助かる。 wiki クローンが使っている言語が JAVA/PHP/Perl/Ruby/Python
な感じのものがほとんどなので、自動的に JAVA と PHP は選択肢から外せるの
だけど、あとはどうしたものかな、と言う感じ。無難な pukiwiki にしようと
思ったのだけど、 PHP なので、 pyukiwiki かなぁ…。

 4/8
Electric
幸福号、という中国のバイクを見せてもらったのだけど、2000年の刻印があるにも
かかわらず、整流にセレン素子を使っているらしい。というか、21世紀も間近な
2000年にセレン素子なんて新品で手に入ること自体おかしな話だし、その前に
設計を変えないというのも、どうかな、なんて思ってしまう。ま、そこが良い所の
1つかもしれないのだけど。

 4/9
Network
Dovecot 1.0.rc30, 1.0rc31 が立て続けに出た。多分、本リリースまであと1週間
だと思われるが、ここにきてバタバタしてるな、という感じである。それと、付属
文書が wiki からの変換なので、ものすごく更新量が多い。設定ファイルの更新は
なかったみたいなので、とりあえず対処しておく。

 4/10
Network
Apache 2.0 な環境で VirtualHost の設定をしてみた。

<VirtualHost *>
    ServerAdmin toyota@example.jp
    DocumentRoot /var/www/example
    ServerName www.example.jp
    ServerAlias example.jp
    ErrorLog logs/example_error_log
    CustomLog logs/example_access_log combined
</VirtualHost>

な、感じ。で、再起動してみたら、

[warn] _default_ VirtualHost overlap on port 80, the first has precedence

と。設定が何か間違っているのでしょう。色々見てみたら、

NameVirtualHost *

の設定が必要らしい。ということで、これを追加して再起動。今度は問題なく
起動した。が、今までのコンテンツも全て /var/www/exapmle を見に行っている。
ドキュメントを読んだら。

Main host goes away
If you are adding virtual hosts to an existing web server, you must also
create a <VirtualHost> block for the existing host. The ServerName and
DocumentRoot included in this virtual host should be the same as the global
ServerName and DocumentRoot. List this virtual host first in the configuration
file so that it will act as the default host.

と。確かに、手元の 1.3 の設定はそうなっている。すっかり忘れていたようである。
続きは明日にしよう…。

 4/11
Network
Apache の動作確認をするため、

[toyota@naboo]% uname -a
OpenBSD naboo.tatsuyoshi.net 3.8 NABOO#2 i386

な環境で tcpdump を動かしたら。

naboo# /usr/sbin/tcpdump -s 2000 port 80
tcpdump: unknown user _tcpdump

なんて言われてしまった。ま、 /etc/passwd を見ればわかるのだけど、 OpenBSD
は、独自拡張をしていて、それぞれのサービスで特別のユーザが必要なのである。
私の OpenBSD は 4.3 の時代から使っていたので、どこかのバージョンで tcpdump
でもユーザが必要になったのでしょう。ということで、適当に _tcpdump ユーザを
作成して、実行したら問題なく動いた。 OpenBSD は慣れないとちょっと戸惑う。

 4/12
WWW Network
家の web サーバは、流れ的に

Internet - router - web server1 - web server2

ということになっていて、ほとんどが web server1 で対応しているのだけど、
一部 web server2 のコンテンツもある。 virtual host と reverse proxy を
使って web server1 から web server2 のコンテンツにアクセスしている感じ
である。で、2日前から設定変更していて、 web server2 でも virtual host の
設定をしよう、という作業をしている。が、うまくいかない。
web server1 の httpd.conf の該当部分は以下の感じ。

<VirtualHost *>
    ServerAdmin www@example.jp
    ServerName www.example.jp
    ServerAlias example.jp
    ProxyPass / http://192.168.0.28/
    ErrorLog /var/log/apache/example_error_log
    CustomLog /var/log/apache/example_access_log combined
</VirtualHost>

<VirtualHost *>
    ServerAdmin toyota@example.net
    ServerName www.example.net
    ServerAlias example.net
    ProxyPass / http://192.168.0.28/
    ErrorLog /var/log/apache/net_error_log
    CustomLog /var/log/apache/net_access_log combined
</VirtualHost>

web server2 の httpd.conf は。

<VirtualHost *>
    ServerAdmin webmaster@example.jp
    DocumentRoot "/var/www/htdocs"
    ServerName www.example.jp
    ServerAlias example.jp
</VirtualHost>

<VirtualHost *>
    ServerAdmin toyota@example.net
    DocumentRoot /var/www/enet
    ServerName www.example.net
    ServerAlias example.net
<VirtualHost>

この設定で example.net にアクセスしても、 example.jp のディレクトリである
/var/www/htdocs を見に行ってしまうのである。で、昨日の tcpdump なんかを
使って調べてみた。答えは、 ServerName を判断する HTTP_HOST が 192.168.0.28
になっていたためである。HTTP/1.1 で必須になった Host が 192.168.0.28 に
なっているため、上記設定の ServerName もしくは ServerAlias に合致しないため
最初の VirtualHost の設定が有効になっていたのである。これを解決するには、
どうしたら良いのか、少し考えてみて、以下のようにした。

web server1 の /etc/hosts に www.example.net を追加。

192.168.0.28      naboo naboo.tatsuyoshi.net www.example.net

web server1 の httpd.conf を修正。

<VirtualHost *>
    ServerAdmin www@example.jp
    ServerName www.example.jp
    ServerAlias example.jp
    ProxyPass / http://192.168.0.28/
    ErrorLog /var/log/apache/example_error_log
    CustomLog /var/log/apache/example_access_log combined
</VirtualHost>

<VirtualHost *>
    ServerAdmin toyota@example.net
    ServerName www.example.net
    ServerAlias example.net
    ProxyPass / http://www.example.net/
    ErrorLog /var/log/apache/net_error_log
    CustomLog /var/log/apache/net_access_log combined
</VirtualHost>

これで動作するようになった。 ProxyPass のアドレスがそのまま GET/POST 等の
HTTP ヘッダの Host に付くようである。とりあえず、解決。

 4/13
Other
ちょっと調べ物をしてると、 Mandriva という Linux のディストリビューションの
名前が、 RedHat と並んで出てきた。聞いたことがないな、と思って調べてみたら、
Mandrake Linux の現在の名前らしい。さらに調べると、 Mandrake Linux は、
Mandrake Linux → Mandrakelinux → Mandriva Linux に名称が変更されていた
ようである。事情はあるのだろうけど、名前って大事なんで、そんなに変更されて
もね…、と思う。

 4/14
Network
こっそり、 dovecot.jp を立ち上げた。

 4/15
WWW Network
リバースプロキシで受けた側のサーバ、というか、 12日の話でいうところの、
web server2 側のログ出力は、アクセス元が全て web server1 になってしまう。
なんで、逆引きしないでも良いので、本当のアクセス元を出力するように変更。
元々

LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" combined

だったのを

LogFormat "%{X-Forwarded-For}i %l %u %t ¥"%r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" combined

にした。これで、出力されるようになった。

 4/16
Network
時間の合間を縫って、 dovecot.jp の文章を追加。半分ぐらいまで訳したいけど、
しばらく無理そうだなぁ…。

 4/17
Other
旅行前なので、手元の電気製品の電圧を調べたり、 SD カードをかき集めたり、
バタバタ。ノート PC がうまく動いてくれると良いのだけど…。

 4/18
Other
ということで、明朝に出国します。このページは当分の間は更新できません。
ビザは3ヶ月なので、切れる前には必ず帰ってきますが…。


21st projects Tatsuyoshi Networks Prompt Works
by Tatsuyoshi
since 2003