S.C. MAGI-SYSTEM 日記
Diary
2009年になって、実に3年ぶりに更新再開。

hns - 日記自動生成システム - Version 2.19.9

2004年03月01日(月) [n年日記]

[天気:雨のち曇り](家) 起床:10:30 就寝:21:30

#1 [Home] べんきょう

月曜、国試勉強の日。

#2 [*BSD] vtund with UDP

研究室と自宅の間に張ってある vtun による VPN ですが、実は今まで vtunの暗号は弱い という部分が不安だったために、研究室から自宅へ ssh でセッションを張った上で、 その ssh セッションの上に vtun を通すということをしていました。
しかし ssh のセッションの上に VPN を張っているということもあって、 いろいろある VPN の実装の中では比較的動作が軽いと言われている vtun であっても 通信速度が出ないという問題がありました。
そこで思い切って ssh を使わないで、直接 vtun で VPN を張るようにしました。
一応、セキュリティに関しては
  • vtund を inetd から呼ぶことで hosts.allow で制限をかける *1
  • さらに ipf で研究室側のIP以外からの port への接続を拒否
  • 暗号に関しては、諦める (笑)
といった運用ポリシーでなんとかすることにします。
まあ研究室とセッションを張ったところで、VPN 越しに ssh での通信しかしないから あまり暗号云々については心配しなくてもいいのかもしれないけど *2
一応 sample 通りにセッションを張ってみたのだが、なぜか UDP だと思うように通信ができない。
でも TCP であれば問題なくつながる。
接続は以下の図のようになっているのだが…
     vtun server                                      vtun client
  +----------------+  (  +------------------+  )  +-------------------+
  | melchior(自宅) |  (  | p2-agw(研究室GW) |  )  | yggdrasil(ホスト) |
  |  (global IP)   +--(--+ (global IP/NAT)  +--)--+   (private IP)    |
  +----------------+  (  +------------------+  )  +-------------------+
どうやら研究室側のGWの NAT が悪さをしているっぽい。
一応 vtun のドキュメントによると、サーバ側が NAT の裏にある場合は TCP を 使えとなっているが、別にクライアント側が NAT の裏にある場合は UDP はダメとは どこにも書いていない。
理論的には UDP であっても NAT できちんと private <-> global 変換されるはず *3 なので問題なく通信できるはずなのだが…
これは研究室GWのNATプログラム(ipchain)の問題なのだろうか。
誰か理由が分かる方がいたら教えて下さい。
*1: 実は vtund って libwrap を使っていないので、こういった制限をかけるには inetd から呼ぶしかないんです。
*2: と書いてから、平文パスワードを流す POP を使っていることを思い出した。
*3: でないと NAT 裏にあるホストは外部のDNSを直接叩けなくなってしまう。 DNS は UDP サービスなので。

2004年03月02日(火) [n年日記]

[天気:曇り](家) 起床:6:30 就寝:19:00

#1 [Home] 眠

昨日、勉強していたら疲れて早く寝てしまったせいで 今日は逆に早く起きてしまった。
でも早起きをしたために、夕方にはもう眠くなってしまってそのままダウン。

なんだか健康的なのだか不健康なんだか…

2004年03月03日(水) [n年日記]

[天気:曇りときどき雨](家) 起床:7:30 就寝:23:00

#1 [Home] 起

早寝早起。
明日は岡崎行きなので、今日は掃除と洗濯を済ませる。
今日も早く寝て、明日に備えるか。

2004年03月04日(木) [n年日記]

[天気:曇り](岡崎共同研究機構) 起床:6:15 就寝:21:30

#1 [Univ] ワークショップ

岡崎共同研究機構 にて ワークショップ に参加するために、新幹線で東京から豊橋まで移動。
その先は名鉄で東岡崎まで。

内容は基本的には計算化学に関することなのですが、 今回特に注目しているのは Intel の人が来て Intel Fortran Compiler *1 での最適化の仕方や最適化しやすいコードの書き方などを教授していただけるというもの。
少しでも計算を速くしたいと思っている私のような研究分野の人間には それこそ涎が出るような発表内容です。
今日と明日は国試を忘れて楽しんできます。

しっかし、早起きしたので途中で 寝てしまわないか 心配なのですが…
では行ってきます。
*1: 通称 IFC。

#2 [Univ] ワークショップ@岡崎

予想通り Intel のセミナーみたいな感じの内容となりました。
Intel Fortran Compiler 8.0 からは "ifort" になりました。 このバージョンからは、旧 Compaq Fortran 開発チームが合流したそうで、 Compaq Fortran (fort) のフロントエンドが使われているため、 対話インターフェースがかなり変わりました。
内容としては、ifort がどうやって高速化を実現しているか、 Software Pipelining の実際、などです。
基本的に今の Intel の Enterprise 分野が Itanium2 にターゲットを 絞っているために、今回も Itanium2 を対象とした話が多かったのですが、 Itanium2 と Xeon などの現行 IA-32 との違いが非常に良く分かりました。
また Itanium (not Itanium2) が遅い遅いと言われた理由なども 説明があり、少しだけ IA-64 を見直せた気がします。

余談ですが、宿泊したホテルは無線LAN *2 が入っていました。
すばらしー。
*2: 802.11b ですが。

2004年03月05日(金) [n年日記]

[天気:曇り](岡崎共同研究機構) 起床:7:00 就寝:23:30

#1 [Univ] ワークショップ 2日目

岡崎共同研究機構 にて ワークショップ に参加。

今日は NEC の HPC 部門の方が来て、 IPF *1 について、ifortに unroll させずに自分で unroll する方がいい、 実は最適化オプションを指定すると遅くなるケースもある、 普段研究で使っている MD *2 計算プログラムは最適化による恩恵を受け難いなどの有益な話を 聞いてきました。
*1: Itanium Processors Family の略だそうで。
*2: 分子動力学

#2 [Home] 山籠もり

岡崎の帰りにそのまま祖母の家へ。
祖母の家は食事は出てくるし IP unreachable なので、勉強をするには最適。
ちょっと何日か修行してきます…

2004年03月06日() [n年日記]

[天気:晴れ](都内某所) 起床:8:30 就寝:23:00

#1 [Home] 修行するぞー

朝から焼魚とご飯、そして味噌汁とすばらしい朝食。
これで栄養をつければ勉強だってはかどるというもの。

しかし、今日は天気がいいせいか鼻水が止まらない…。
花粉症持ちにはつらい季節になってきました。
なんて一生来なくていいのにっ。 (意味深

2004年03月07日() [n年日記]

[天気:曇りときどき晴れ](都内某所) 起床:9:30 就寝:25:30

#1 [Home] 依存症

ネットワークから切り離されてはや3日。
そろそろ依存症が出てきました。
キーボードを叩きたくて震えだす手。
先日から ADSL の linkup の調子が悪くて不調な mpd が 心配でなりません。
がくがく。

勉強するはずなのに、琵琶湖マラソンを観てしまったり。
だめだなぁ。

2004年03月08日(月) [n年日記]

[天気:晴れ](研究室) 起床:9:00 就寝:27:00

#1 [Univ] 報告

岡崎でのワークショップの内容を報告するために大学へ。
その後、久し振りに研究室に来た *1 こともあり、ちょっと研究の方にも手を出す。

いろいろやっていて思ったのですが、アミノ酸 *2 配列を N末端 方向へ伸長させるのってシミュレーション的にも難しいんですね。
X線結晶構造解析のデータだと、全ての配列のデータが得られていなくて 欠損している部分を補う必要があるのですが、これが C末端 側であれば 結構簡単にできるんだけど、 N末端 側となると難しい。
生体内でアミノ酸を合成するときも C末端 方向に伸長していくそうなので、 やっぱり難しいから生体でもそうしているのだろうか。
*1: とは言っても1週間振りくらいなんですが。
*2: 一応補足しておきますが、アミノ酸にはアミン基を持つ N末端 と カルボン酸基を持つ C末端 があります。

2004年03月09日(火) [n年日記]

[天気:晴れ](家) 起床:11:30 就寝:20:30

#1 [Home] 腹痛

夕食を食った直後から原因不明の腹痛に悩まされる。
別に食中毒とか何かヤバいものを食った訳じゃないのですが、 とにかく腸が煮えくり返る(違)ような痛みに襲われました。
しばらく横になっていたら、今度は眩暈と渇きに襲われる。
腹は別に冷えたというよりも温度が上がっているような感じだったので、 やっぱり食中毒じゃないけど何らかの炎症反応が起きているのか?
立っていても座っていても横になっても痛いともうどうしようもない。
とりあえず風邪薬に痛み止めに相当するものが入っているだろうと、 風邪薬を飲み、水分を補給して早々に横になることにする。
でもしばらくは痛くて寝るどころではなかった。
明日になったら痛みが消えているといいが…

2004年03月10日(水) [n年日記]

[天気:晴れ](家) 起床:11:00 就寝:24:00

#1 [Home] 続・腹痛

まだ治りません。
痛みがあると全然勉強に集中できない。 どうしたらいいものか…。
そういえば、病は気からと言いますが、これは心理性の腹痛だったりするのか?!

#2 [*BSD] TCP extensions (RFC 1323)

全然関係ないことですが、自宅内のネットワークでは外に出て行く余分なトラフィックを 減らすために Squidipfilter を併用した transparent proxy を運用しています。
実は最近の FreeBSD では ipfilter の ヘッダファイルが /usr/include 以下に インストールされなくなってしまったために、 --enable-ipf-transparent 付きの Squid の build に失敗する [ports/60700] 問題があったりするのですが、うちでは /usr/src/sys 以下にあるヘッダファイルに symlink を張ってなんとかしています。(笑)
ところで、この transparent proxy を使っているとたまにファイルをロードしている 途中で止まってしまうことがあり、困っていました。
今までは ADSL 特有の MTU 問題かなぁ、とか思っていたのですが、 どうやら tcp_extensions="NO" とすると回避できるらしい。
# sysctl sysctl net.inet.tcp.rfc1323=0
sysctl net.inet.tcp.rfc1323: 1 -> 0
確かにこうしたら、ロードが止まることがなくなった。
ちなみにうちでは MTU 問題は ipfilter(ipnat) の mssclamp で回避しているのですが、 これって ipnat を通らない PPPoE router からの直接のアクセスでは MSS 補正が かかってないってことですよね?
最近の mpd では mssfixup という機能が追加されたらしいけど…
やっぱり PPPoE は厄介です。

#3 [Web] irc.reicha.net

最近 wide.ad.jp のIRCネットワークが split-mode のままで 直りそうにないので、普段から出入りしている IRC のチャネルを のきなみ irc.reicha.net に移動しました。
ログ関係も reicha の方を取るように変えましたので、 関係部署の各人はどうぞよろしく。

2004年03月11日(木) [n年日記]

[天気:晴れ常に強風](家) 起床:11:00 就寝:25:00

#1 [Home] 不治の病

今日は一日中、信じられないくらいの強風が吹き荒れていました。
おかげさまで早くも花粉に悩まされております。
こう鼻水が止まらないと、しんどくてたまりませんね。

…あ、花粉症がひどくなったら腹痛は治ったかも。

#2 [MacOSX] Camino Nightly Build

なんとなく build 。 [Camino-20040311.dmg.gz]
History 周りのバグ修正が入っていますが、それを除けば実質 20040226 版 と同じです。

2004年03月12日(金) [n年日記]

[天気:晴れときどき曇り](家) 起床:11:00 就寝:25:00

#1 [*BSD] Linpack Benchmark

TOP500 リストというのは結構有名だと思いますが、 ここのランキングは Flops で表されています。
はたして www.magisystem.netの Dual PentiumPRO 200MHz (1MB L2 Cache) がどのくらいの性能が出るのか Linpack Benchmark で計ってみました。
ブロックサイズやデータサイズを何パターンか試したところ、 ピーク値でだいたい 200MFlops 前後出ているようです。
まあ、サーバとしての運用をしつつの計測だったので完全なベンチマークとは言えないかもしれませんが、 だいたいの目安として妥当だと思います。
さきほどのリストの 500位 でも 400 G Flops 出ていることを考えると… 2000分の1 ですか?
まあ、相手が128台のクラスタであることを考えると、そんなもんかな。

計測することよりも、 ATLAS のコンパイルに1日もかかった方が長かった。(笑)
ちなみにせっかくの 1MB L2 Cache ですが、どうも演算の方が遅いために その L2 Cache をフルに充填させることなく、256〜384KB くらいしか使っていないようです。
つまり PentiumPRO 200MHz くらいの処理性能では 1MB の L2 Cache は 豚に真珠ってことですね。

…なんか悲しくなってきた。

2004年03月13日() [n年日記]

[天気:晴れ](家) 起床:10:30 就寝:23:00

#1 [*BSD] まめちしきー

ちょっと Mac 関係のサイトで調べていたら MacBidouille というサイトがあるのですが、読んでいたらメモリやHDDの容量に MoGo って単位が使われているのです。
なんで o なんだろうと思って、ちょっと調べてみました。
このサイトはフランス語なんですが、どうやらフランス語では byteoctet と表現するようなのです。
というのも、byte の発音がフランス語だと「びっと」となり、 bit と区別しにくいからだとか。
言われてみると、ネットワーク分野では byte ではなく octet (オクテット) で 表記することもありますね。
そういえば、データ転送レートの単位には ボー (baud) *1 というのもありましたな。
これもどうやらフランス人の Baudot さんにちなんで付けられたそうで。
フランスの IT用語 は不思議だ。
*1: 私は baud というローマ字表記の方しか知らなったので、てっきり 「ぼーど」って読むのかと思っていました。

#2 [Muzik] amazon

本当は他にもいろいろ買っているのですが、面倒 *2 なので、今日届いたのだけ。

LOVE PSYCHEDELICO LOVE PSYCHEDELICO III:

LOVE PSYCHEDELICO III
ようやく買いました。
つい最近までアルバムが出てたのを知らなかった。
今回も出来はいい。

*2: 特に画像を探すのとリンク貼るのが。(笑)

2004年03月14日() [n年日記]

[天気:晴れときどき曇り](家) 起床:11:30 就寝:26:00

#1 [Home] 支援物資

経済的苦境に立たされている *1 今日この頃。
本日サークル DAM'men のイベントに最後だけちょこっと乱入。
当方 www.magisystem.netサーバの運用費の一部を回収させていただきました。
みなさん、ありがとうございます。

その費用はそっくりそのまま西友で消費 *2 されました。
*1: 最大の原因は岡崎出張と、今度の大阪出張の交通費です。 決して amazon ではないですよ?
*2: NTT と OCN の支払いはカードです。

2004年03月15日(月) [n年日記]

[天気:晴れときどき曇り](家) 起床:14:30 就寝:24:30

#1 [Home] 春の病

私にとって春の病といえばまずは 花粉症 なのですが、実はもう1つ強敵がいます。
それは 春眠暁を覚えず
ここのところ家で引き籠もり生活をしていますが、 一応朝の11時には起きる努力をしています。
ですが、今日は気付いたら昼を回っていました…
やはりあまりにも暖かいと、どうも体が目覚めるのが遅くなるようだ。

ここのところの私の生活サイクルは朝起きて、体を目覚めさせてから 午後に勉強するという感じなのだが、こう起きたのが昼を過ぎていると 完全にリズムが狂ってしまう。
むぅ。
恐るべし、春。

2004年03月16日(火) [n年日記]

[天気:晴れときどき曇り](家) 起床:15:00 就寝:25:00

#1 [Home] 春眠

今日も起きたら昼を回っていました。

だめじゃん。

ついでにネタもない。

#2 [MacOSX] MacOS X 10.3.3 Update

出た そうです。
実はアップデートの存在を知ったのはついさっき。
普通なら起動直後に SoftwareUpdate が走るんですが、 最近は PowerBook の電源を落とさないで、使わないときは スリープ *1 させるようにしていたため、 SoftwareUpdate が走らずにアップデートに 気付きませんでした。
ちなみに uptime が 10日 を越えていました。(笑)
アップデート後に再起動が必要だったため、久し振りに再起動。
噂では 10.3.2 で起動時間が長くなるバグが 10.3.3 では解消されたそうですが、 そもそも再起動を滅多に行わない環境なので、早くなったのかどうか分からず。
こうやって頻繁にアップデートが出て改善されていくのは素晴しいことです。
*1: 何も特別なことをしないでスリープできる *BSD は MacOS X だけっ!

2004年03月17日(水) [n年日記]

[天気:晴れ常に強風](家) 起床:9:30 就寝:25:00

#1 [Home] 春風

今日も風が強い。
いやだなぁ。

#2 [*BSD] C code

某日記に書かれていたのに気付いたのでちょっとコメントしてみる。
注意
私は独学で C を(主にソースコードを読んで)勉強した人間なので プログラミング言語 C としての 正しい用語 をよく知りません。(笑)
もしかしたら以下の用語が間違っているかもしれせんが、内容的には問題がない…はず。
char array[10];
memset(&array, 0x00, sizeof(array));
の動きと意味が分からないということですが、おそらく目的は char の配列 arrayの初期化 *1 だと思います。
ですが、仮に初期化を目的としていたとしてもこのコードには 重大な誤りがありますね。
それは memset() を呼んでいる第1引数が &array となっていることです。
第1行目で array を char の配列(sizeは10)として宣言しているので、 この array は単体で既に ポインタ を意味していることになります。
例えば array[0] が char としての実体を返す訳で、memset() の第1引数として ポインタを与える場合には &array ではなく array だけでいい *2 のです。
では &array は一体何を返すのでしょう?
ポインタのポインタということになるので何のこっちゃとなりますが、 試しに以下のコードを実行してみました。
#include <stdio.h>

int
main(int argc, char **argv)
{
	char array[10];

	printf("size %d\n", sizeof(array));
	printf("  %p\n", array);
	printf("& %p\n", &array);
	printf("&[0] %p\n", &array[0]);
	printf("&[1] %p\n", &array[1]);
	printf("&[9] %p\n", &array[9]);

	return 0;
}
結果は
Machintosh% cc -o hoge hoge.c
Machintosh% ./hoge
size 10
  0xbffffc00
& 0xbffffc00
&[0] 0xbffffc00
&[1] 0xbffffc01
&[9] 0xbffffc09
となりました。
これはコンパイラと動作環境に依存するかもしれませんが、 私の MacOS X + gcc では array も &array も同じということになりました。

…まてよ。
では次のコードはどうなるでしょうか。
#include <stdio.h>

int
main(int argc, char **argv)
{
	char array[10];
	char *ptr;

	printf("  %p\n", array);
	printf("& %p\n", &array);

	ptr = array;

	printf("ptr %p\n", ptr);
	printf("&ptr[0] %p\n", &ptr[0]);
	printf("&ptr %p\n", &ptr);

	return 0;
}
結果は
Machintosh% cc -o hoge hoge.c
Machintosh% ./hoge
  0xbffffbf0
& 0xbffffbf0
ptr 0xbffffbf0
&ptr[0] 0xbffffbf0
&ptr 0xbffffc00
となりました。
ここで ptr == &ptr[0] となるのは期待通り(というか当然)の動作なのですが、 ptr != &ptr という結果になります。
これがどうしてかはもうお分かりですよね。
この ptr という変数は始めから char のポインタ型として宣言されているので、 中にはポインタの値が格納されています。
ですから &ptr はその "ptrというポインタ値" が格納されているメモリアドレスを 示すポインタになるのです。

つまり、先程の array == &array となったのは array が単体のポインタではなく 配列型であったがために &array が array の先頭のポインタ (つまり &array[0]) を 指していたことによる偶然だった訳です。
C を書けない人に言わせると「ポインタ」が最大の難関だそうですが、 ポインタの書き方と、意味を理解してしまうとこれほど便利なものはないですね。
私が研究室でよく説明に用いている通称「ポインタ・サイクル」を示しておきます。
int value; /*1メモリ確保*/
&value (ポインタ) ← value (実体)

int *value; /*メモリ未確保*/
&value (ポインタ格納先のアドレス) ← value (ポインタ) → *value (実体)

int value[1]; /*添字分メモリ確保*/
&value (配列先頭のアドレス?) ← value (ポインタ) → value[0] (実体)
ですが、やはり配列で宣言した際にその先頭を意味したい場合に &value を使うのは よろしくない…というか正しくないと思いますね。
*1: Initialize。ようは 0 (Zero) で埋める作業。
*2: あるいは &array[0] かな? …あんまり意味ないけど。この場合 [] が & よりも強いので array[0] が評価されてから & が評価されます。つまり &(array[0]) 。

#3 [MacOSX] Camino Nightly Build

気紛れな Camino Nightly Build です。
ここのところ build がないのは、面倒だと思ってやっていないとか、勉強で忙しい *3 という訳ではなく、 tinderbox にもあるように
Tree FROZEN for 1.7beta - checkin requires drivers approval.
Mozilla 1.7beta に向けて CVS リポジトリが凍結されているために Camino 関連の修正も commit されない状況にあるからです。
たぶん数週間以内には Mozilla 1.7beta がリリースされると思いますが、 そろそろ 1.7 (trunk) も安定してきたんじゃないか、と思い Camino の trunk 版を build してみました。 [Camino_trunk-20040317.dmg.gz]
Camino 部分に関しては先日の 1.6 版と同じです。
今回違うのは Mozilla 部分。
ちなみに、試し build なので私はノーチェックです。(笑) *4
*3: 一応、そういうことにしておこう。(笑)
*4: 一応起動することぐらいは確認しましたが。

2004年03月18日(木) [n年日記]

[天気:雨のち曇り](家) 起床:10:30 就寝:25:00

#1 [Univ] DNS

知識のない人がサーバを管理することほど恐しいことはない。
そのサーバと関係者だけが被害を被るなら構わないのですが、 DNS やメールサーバとかになると周りまでゴミトラフィックで 迷惑を受けます。

いくら引っ越しだからって、勝手にサーバ止めんなよ。
それから NS レコードだけ書き変えても上流で SOA 持っているところで NS 委譲先も変更してもらわないと変更される訳ないだろ。

患者とかのプライバシーに関わるデータを扱うという理由から NAT ルーティング経路の外に独自ネットワークを持つようになったのに、 管理がこんな状態では NAT の下にいる方がはるかに安全です。
ほんと薬学部って信じられない組織です。

仕事しろ hiroshi *1
できないなら辞めろ。
そして基盤メディアセンターに全て任せてしまえ。
*1: p.chiba-u.ac.jp SOA の管理人。

2004年03月19日(金) [n年日記]

[天気:曇りときどき晴れ](家) 起床:11:30 就寝:25:00

#1 [MacOSX] Camino Nightly Build

またもや気紛れな Camino Nightly Build です。
tinderbox のステータスが
Tree FROZEN for 1.7 final - checkin requires drivers approval.
と変わり、1.7 の正式リリースへの準備に入ったようです。
では先日の Mozilla 1.7beta はどうなったのか…というと、無事に リリース されました。
そこで、Mozilla 1.7beta ベース (trunk) で Camino を build 。 [Camino_trunk-20040319.dmg.gz]
Camino 部分に関しては先日の 1.7 trunk 版と同じです。

今回の 1.7beta ベースはかなり使い易くなっていると思います。
一応 Mozilla 1.7beta の エラッタ によると
  • Plugins
    古い Macromedia Flash Player を使っていると落ちる可能性があるとのこと。 こちら からアップデートすることをお勧めします。
  • IPv6 issue
    MacOS X の Mozilla では IPv6 DNS lookup の問題 *1 からデフォルトでは IPv6 を 無効 にしているそうです。 ユーザの user.js に
    user_pref("network.dns.disableIPv6", false);
    
    を加えれば有効化できるとのことです。
    ちなみに私の作っている Camino では 有効 にしてあります。
という訳で、今回の trunk 版は結構お勧めだったりします。
ちなみに今まで SDKs を使っていた関係できちんと prebinding できていなかったことが発覚。
一応 MacOSX10.2.8 SDKs で prebinding し直してあります。
なので Panther をお使いの方は
Machintosh% cd Camino.app/Contents/MacOS
Machintosh% update_prebinding -files \
	../Frameworks/SharedMenusCocoa.framework/Versions/Current/SharedMenusCocoa
Machintosh% sh redo-prebinding.sh
を実行すると起動とかが速くなる "かも" しれません。
まあ、うちの Camino は Static build なので prebinding の効果はそんなにないと思いますが。
*1: Jaguar での問題であって、Panther では問題ないとのことです。

2004年03月20日() [n年日記]

[天気:雨のち曇り](家) 起床:16:30 就寝:26:00

#1 [Web][*BSD] Apache 2.0.49

Apache の 2.0.49 が リリース されました。
これに合わせて www.magisystem.netのWebサーバもアップデートしました。

また、せっかくなので性懲りもなく worker MPM に挑戦してみました。
worker MPM を使う際は mod_cgi に代わって mod_cgid を使う とのことなので、その通りに設定。
一応 cgid を通して suexec 環境での CGI が実行されることは確認しました。
ただそのリクエストを受けたスレッドが死ぬまでの間、肝心の CGI の プロセスは Zombie になったまま終了しないのです。
それほどリクエストの多いサイトでもないので Zombie が残っていても それほど影響はないのですが、 それを言うと prefork ではなく worker である必要性もない訳で。(笑)
結局 worker は使えないという結論に今回も達しました。
やっぱり thread 周りがきちんと動作することに期待できるのは 5.x 系 *1 なんだろうか?
*1: 今は 4.9-RELEASE です。

#2 [Web][*BSD] もじゅーる だいえっと

先程入れ換えた Apache ですが worker MPM ができなかった腹いせ(?)に、使っていない Module を可能な限り無効化してダイエットしてみることにしました。
ちなみに私は Apache を FreeBSD ports から入れていますが、この際 /etc/make.conf
.if ${.CURDIR} == "/usr/ports/www/apache2"
WITH_SUEXEC=	yes
WITH_IPV6_V6ONLY=	yes
WITHOUT_SSL=	yes
.endif
として suexec の有効化、IPv4 と IPv6 の共用 Socket の無効化、 そして SSL の無効化を入れて make しています。
さて FreeBSD ports から入れた Apache はデフォルトでは
melchior% /usr/local/sbin/httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c
core、prefork MPM と他のモジュールを動的ロードするための mod_so だけが static にコンパイルされ、残りは全て動的モジュールとなっています。
まあ、他のモジュールも static にしたければ make の際に
melchior# make WITH_STATIC_MODULES="ssl rewrite include"
とすることで上の例では mod_ssl、mod_rewrite、mod_include を static に することができます。
ちなみに FreeBSD ports の Apache で有効になっている動的モジュールは
melchior% grep ^LoadModule /usr/local/etc/apache2/httpd.conf | awk '{print $2}'
access_module
auth_module
auth_anon_module
auth_dbm_module
charset_lite_module
include_module
deflate_module
log_config_module
logio_module
env_module
mime_magic_module
cern_meta_module
expires_module
headers_module
usertrack_module
unique_id_module
setenvif_module
mime_module
status_module
autoindex_module
asis_module
info_module
suexec_module
cgi_module
vhost_alias_module
negotiation_module
dir_module
imap_module
actions_module
speling_module
userdir_module
alias_module
rewrite_module
とこんなにあります。(笑)
では、この中で必要だと思われるものとそうでないものを仕分けしてみます。 必要だとする理由も併記しておきましょう。
access_module
アクセス制限をする Allow, Deny に使う
auth_module
Basic認証に使う (必要だが、場合によってはいらないかも)
auth_anon_module
Basic認証と組み合わせて、anonymous accessを可能とする
auth_dbm_module
Basic認証でパスワードを保存するファイルに DBM を用いる
charset_lite_module
サーバ側で文字コード変換を行える (experimental)
include_module
SSI*2 を行う (必要だが、場合によってはいらないかも)
deflate_module
サーバ側で送信するデータを圧縮。細い回線では役立つ (必要だが、場合によってはいらないかも)
log_config_module
サーバのログを取る設定に関するモジュール
logio_module
ログを取る際に転送した Byte 単位で記録する
env_module
環境変数の設定
mime_magic_module
MIMEヘッダを file magic から推測する
cern_meta_module
mrtgなどMetaデータを使う場合にいる (必要だが、場合によってはいらないかも)
expires_module
設定ファイルで Expire を指定できる
headers_module
カスタムな HTTP ヘッダを送れる
usertrack_module
Cookie のログを取る (必要だが、場合によってはいらないかも)
unique_id_module
CGI用に unique_id を提供 (必要だが、場合によってはいらないかも)
setenvif_module
httpd.conf内で Module の有無で分岐を書く際にも使える
mime_module
MIMEの設定
status_module
Apacheのstatus-infoを出せる…が、.htaccessから設定できちゃうので無効にした方がいい。
autoindex_module
Options Indexes に必要
asis_module
こちらもカスタムな HTTP ヘッダを返すのに使う
info_module
status_module のように info を出せる
suexec_module
CGIのsuexec環境の提供
cgi_module
CGIの実行環境
vhost_alias_module
VirtualHostごとにAliasを変える
negotiation_module
コンテントネゴシエーション
dir_module
DirectoryIndex など / に index.html を返す処理をする
imap_module
IMAPの提供
actions_module
特定のパスへのリクエストをCGIに投げる
speling_module
間違ったURIに対して自動でspell修正してくれる
userdir_module
ユーザのpublic_htmlをチルダで参照できるようにする
alias_module
Alias ディレクティブを使う
rewrite_module
rewriteという強力な機能を提供
ふぅ…長い。
詳しい内容は Apache の ドキュメントを参照してもらうとして、 上で で示した必要そうなものだけをまとめてみるとこうなります。
melchior% grep ^LoadModule /usr/local/etc/apache2/httpd.conf
LoadModule access_module libexec/apache2/mod_access.so
LoadModule auth_module libexec/apache2/mod_auth.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule deflate_module libexec/apache2/mod_deflate.so
LoadModule log_config_module libexec/apache2/mod_log_config.so
LoadModule env_module libexec/apache2/mod_env.so
LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
LoadModule cern_meta_module libexec/apache2/mod_cern_meta.so
LoadModule usertrack_module libexec/apache2/mod_usertrack.so
LoadModule unique_id_module libexec/apache2/mod_unique_id.so
LoadModule setenvif_module libexec/apache2/mod_setenvif.so
LoadModule mime_module libexec/apache2/mod_mime.so
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
LoadModule suexec_module libexec/apache2/mod_suexec.so
LoadModule cgi_module libexec/apache2/mod_cgi.so
LoadModule negotiation_module libexec/apache2/mod_negotiation.so
LoadModule dir_module libexec/apache2/mod_dir.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
先程 33 もあったものが 19 まで減りました。
実際にメモリ占有量がどれだけ変わったのかは正確には計算していませんが、 モジュールの数が半分近くまで減ったのですから 1 プロセスあたりで 30% くらいはメモリ消費が減ったのではないでしょうか。
たかが 30% と思うかもしれませんが、裏を返せば今までのスペックでも 1.6倍 の数の httpd を走らせられるということになります。

アクセス過多になるようなサーバを個人で運営している人なんてほとんどいない かもしれませんが、このようにモジュールを減らすことでサーバの状態を 改善できるかもしれませんね。
*2: Server Side Includes

2004年03月21日() [n年日記]

[天気:晴れ](家) 起床:10:30 就寝:24:00

#1 [Web] Openbot form TW

総統選挙で沸き立つどこかの国から DoS 攻撃を受けました。
受けたのは今日の 14:09:24 から 16:29:05 までの 140分間。
実に総計 785 リクエストです。単純に考えて10秒に1回のペース。
しかし、実際には等間隔で定期的に来るのではなくて、 あるタイミングで 100 近いリクエストを同時に、 しかも全て日記のある CGI に対して *1 投げてくる 激烈凶悪 な bot です。
この時のすさまじさは MRTG を見てもらうと分かるかもしれません。
ピーク時には load average が 30 を越え、sendmail がリクエストを拒否。 また squid は swap が足りなくなって core を吐く…と散々でした。
でもこれでサーバが止まることにならなかっただけ助かりましたね。
早速昨日のApacheモジュールダイエットが効いたのでしょうか?(笑)
ログにはこんな感じに残っています。
202.1.239.117 - - [21/Mar/2004:14:09:24 +0900] "GET /robots.txt HTTP/1.0" 200 43
"-" "Openbot/3.0+(robot-response@openfind.com.tw;+http://www.openfind.com.tw/robot.html)"
あまりに腹が立つので IP を晒します。
ところでこの IP アドレス、どこが保有しているのか whoisで調べてみましたが…
inetnum:      202.1.232.0 - 202.1.239.255
netname:      YAHOO-ASIA
descr:        streaming media, e-mail, instant messenger, www,  etc
country:      HK
とあるので、どうやら Yahoo! 香港の検索 bot らしい。
bot 自体は TW 製なんだけど、運用しているのは HK なのか。
ちなみに本家の方の Openbot は 66.237.60.96 (robot66.openfind.com) のように .openfind.com で逆引きされるので、ホスト名ベースで拒否すれば大丈夫。
いくらリンクを順にたどる bot だからって、CGIに対してのリクエストか そうでないかくらいは識別できるだろうに。
まあ、あっちの国の人に日本の「察する」なんて文化が理解できる はずがないので、アドレスブロックごと ipf でパケットを落とす。

…はぁ。
*1: 一度に30以上も perl が同時に起動する…悪夢を想像してみて下さい。

#2 [*BSD] sieve

Cyrus IMAP Server に付属してくる sieve を試してみました。
この sieve というのは imapd が lmtpd 経由でメールを受け取って、 ユーザのメールボックスに配信する際に仕分けやフィルタリングをすることのできるものです。
国内で紹介されているサイトは非常に少なく、調べた限りでは ここ[nekojita.org]ここ[dendai.ac.jp] くらいでしょうか。
書き方が結構特殊で、perlもどきみたいな感じです。

実際の設定の仕方ですが Cyrusのドキュメント が参考になります。
まず cyrus.confで sieve を有効にする必要があります。
(snip)
# UNIX sockets start with a slash and are put into /var/imap/socket
SERVICES {
  # add or remove based on preferences
  imap		cmd="imapd" listen="imap" prefork=0
  imaps		cmd="imapd -s" listen="imaps" prefork=0
  pop3		cmd="pop3d" listen="pop3" prefork=0
  pop3s		cmd="pop3d -s" listen="pop3s" prefork=0
  sieve		cmd="timsieved" listen="sieve" prefork=0	# これです
(snip)
ところで、この設定では cyrus の master daemon が "sieve" という名前の port で sieve のサービスを listen していることになっていますが、 実は /etc/servicesには "sieve" という名前のサービスは 存在しません 。(笑)
Cyrus のドキュメントによると "sieve" は port 2000 を想定しているそうですが、 FreeBSD の port 2000 は "callbook" となっていました。
まあ /etc/servicesの port 2000 を "sieve" に書き直すのもいいのですが、OSのファイルをあまり いじりたくないので、上記の cyrus.confの listen=" sieve " を listen=" callbook " に書き換え。
ここで
melchior% telnet localhost 2000
Trying ::1...
Connected to localhost.
Escape character is '^]'.
"IMPLEMENTATION" "Cyrus timsieved v2.2.3"
"SASL" "NTLM LOGIN PLAIN OTP DIGEST-MD5 CRAM-MD5"
"SIEVE" "fileinto reject envelope vacation imapflags notify subaddress relational regex"
OK
logout
OK "Logout Complete"
Connection closed by foreign host.
となれば大丈夫。
続いて sieve のスクリプトを書く。
今回はうちの CTM 用のアカウントで例を示します。
require ["fileinto", "regex", "reject"];

if allof (
	header :contains "to" [
		"ctm-cvs-cur@freebsd.org",
		"openbsd-cvs@openbsd.org",
		"openbsd-cvs-x11@openbsd.org",
		"openbsd-cvs-xf4@openbsd.org"
	],
	header :regex "Subject" "^ctm-mail"
) {
	keep;	# CTMのメールは保持
} elsif anyof (
	header :contains ["to","cc"] [
		"ctm-announce@freebsd.org",
		"ctm-users@freebsd.org",
		"mailman-owner@freebsd.org"
	]
) {
	redirect "xxx@yyy.zzz";	# CTM以外のメールで、ML経由のものは
				# 管理者アカウントへリダイレクト
} else {
	reject;	# それ以外は SPAM なので、リジェクト
}
この内容を sieve.scriptに書くとします。
そうしたら
melchior% sieveshell localhost
Please enter your password: ******
> put sieve.script
(文法エラーがある場合はここでエラーが出ますので修正)
> list
sieve
> activate sieve
> list
sieve  <- active script
> quit
これで完了です。
ちなみに sieve を無効にしたい場合は "deactivate" とします。

今回は CTM 用のアカウントでの SPAM 避け (というかCTM以外を無視する) の設定でしたが、 メーリングリストなどに複数入っていたりする場合、
if header :contains "List-Id" "DarwinPorts development" {
	fileinto "INBOX.ml.darwinports";	# ml/darwiportsボックスに移動
}
みたいな感じに仕分けできます。
また、ヘッダや Subject 、宛先に応じて
if header :is "X-MAGI-NOTICE" "IP change" {
	redirect "xxx@keitai.zzz";	# まず携帯のメアドに転送
	keep;				# 一応、ここにも残しておく
}
みたいに IP アドレスが変わったら携帯に通知する…なんてこともできます。(笑)

sieve はサーバ側で設定してしまえばクライアントを選ばないし、 ただの仕分けやフィルタリングだけでなく、状況に応じた転送ができるので 覚えるといろいろと便利かもしれませんね。

#3 [Home] 7days

実際には 7 どころかあと 5日 なんですけど…
ちょっと今週末は現実逃避しすぎました。(笑)
明日から国試が終わるまではネットワークから自分を切り離すことにします。
なので日記も更新しませんので、どうぞよろしく。

2004年03月22日(月) [n年日記]

[天気:雨](家) 起床:8:30 就寝:25:00

#1 [Home] 王の帰還

別にロード・オブ・ザ・リングを観てきたとかそういう訳ではありません。

2004/3/30に両親が帰国します
一時帰国とかではなく 本帰国 です。ドイツから完全に撤収するとのこと。
って、あなた国試の翌々日で薬学会の真っ最中ですよ?

別に片付けなきゃいけないこととか、そういうものはないんですが、 帰国後にサーバを移動させられる可能性はあります。
通信環境とか電源とか、心配することは山積みです。

考えてみれば受験生だった1998年からほぼ6年近くにわたったひとり暮しも、 これで幕を閉じることになります。
今さらねぇ…

2004年03月28日() [n年日記]

[天気:晴れ](家) 起床:3:00 就寝:20:00

#1 [Home][Univ] こくし

ようやく終わりました。
昨日、今日と長い一日だった。
何よりも試験会場の東京農業大 *1 が遠かった…

あとは結果を待つのみ。
*1: 最寄り駅経堂からでも徒歩30分。

#2 [Univ] がっかい

明日は大阪の薬学会でポスター発表します。
さすがに今日出発は無理なので、明日の早朝の新幹線で移動します。
…明日も3時起きかぁ。

おやすみなさい…

2004年03月29日(月) [n年日記]

[天気:晴れ](大阪ATC) 起床:0:00 就寝:20:30

#1 [Univ] 第124年会 日本薬学会

試験の翌日に学会でポスター発表と、いくら マゾ だからって今回の予定はちょっとやりすぎたと思う。
金曜日の夜から土曜日(試験1日目)にかけては完徹だった上に 日曜日は3時起き。
そして今日は3時どころか日付けが変わると同時に起きました。(ぉ
出掛ける仕度をしていますが、あまりに疲れていると予想されるので 学会の発表のある1日目だけ参加して、 日帰り にしてしまおうかと考えています。

でも、何か間違いがあったときに備えて一応泊まれる準備 *1 はするか。

そういえば薬学会の資料を見てて思ったのですが、何と私の手元に薬学会の 要旨集がありません 。(笑)
なんで届かなかったのかと探してみたら… 2/6締め切りの振り込み用紙があったー
…しまった…
これじゃ、何が発表されるのか分からないよ。
現地で貰えるのかどうか尋いてみるか。
*1: ただ発表者ということでスーツで行くのですが、私服を用意するかどうかは悩みどころ。

#2 [*BSD] New Mailing List Driver

うちのサーバで管理しているメーリングリストは閑古鳥が鳴いている状況なので おそらく気付いた人はいないと思いますが、秘かにメーリングリスト配信プログラム *2 を書き換えました。
入れ換えたのではなく、 書き 換えです。
今までの function/procedure ベースで書かれた Perl のコードを全面的に Object Oriented Style に書き直しました。
実際のコードは CVS に上がっていたりします。
今回全面的に直した HMail.pm は私の中では屈指の出来だと思っています。
興味があったら見てみて下さい。
ちなみに Perl で OOP するにあたっては こちら を参考にさせていただきました。
近いうちに amazon で本でも買ってしまうかも。
試験も終わったし、好きなだけコードが書けるしねっ!
*2: ML driver と言う

#3 [Home] 帰宅

結局、発表だけして帰ってきました。
帰りの新幹線の中では爆睡。
帰宅してもすぐに爆睡。
はやり疲労には勝てませんでした、とほほ。

2004年03月30日(火) [n年日記]

[天気:曇りのち雨](家) 起床:12:00 就寝:27:00

#1 [MacOSX] Camino Nightly Build

気紛れな Camino Nightly Build 。
今日は Mozilla 1.6 版の方です。
Camino の UI 周り(特にアイコン)に修正が入ったので、 それを反映させました。 [Camino-20040330.dmg.gz]

#2 [Home] 当社比3倍

人口密度が実に 3倍 になりました。(笑)
現在、洋間は親のスーツケースによって占領されております。
ちなみに引っ越し荷物が届くまでは父親に至っては掛け布団もないありさま。
洗面所や風呂場も取り合いになって大変です。
いやー、10年前は普通にこうやって生活できていたはずだったんですけどね。
何事も慣れるまでは大変ってことです。

#3 [*BSD] Sendmail with SASL and TLS

sendmail で SASL と TLS を有効にしてみました。
SASL の方は SMTP AUTH といって smtp でメールを送信する際に 認証を行うことでリレーを許可する仕組みで、 TLS (STARTTLS) は smtp の通信そのものを SSL の上で暗号化して 行えるようにしたものです。
どちらも最近の sendmail では普通にサポートしているようですが、 私は諸事情 *1 あって 8.11.x 系を使っているのでちょっとカスタマイズした port を使って入れました。
melchior% /usr/sbin/sendmail -bv -d0.1
Version 8.11.7+3.4W
 Compiled with: MAP_REGEX LOG MATCHGECOS MIME7TO8 MIME8TO7 NAMED_BIND
                NETINET NETINET6 NETUNIX NEWDB NIS QUEUE SASL SCANF SMTP
                STARTTLS TCPWRAPPERS USERDB XDEBUG QUICK_RESPONSE MULTI_MAILER
                DYNAMIC_TOBUF MAILER_PREF CLIENT_SMTP_CONFIG CTE8CHECK
                OO_NULLSENDER CF_ALIASING MF_SEPARATE MASKED_ADDR SPR_CON_CACHE
                FORWARDPROGCTL MAILER_TIMEOUTS CHECK_WARNING
んで実際に有効にする方法ですが、 sendmail.mc に次のものを加えます。
dnl SASL SMTP-AUTH setups
define(`confDONT_BLAME_SENDMAIL', `GroupReadableSASLFile')
define(`confRUN_AS_USER', `root:mail')
define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5')
TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5')

dnl STARTTLS setups
define(`confCACERT_PATH', `MAIL_SETTINGS_DIR`'certs')
define(`confCACERT', `confCACERT_PATH/cacert.pem')
define(`confSERVER_CERT', `confCACERT_PATH/tls.crt')
define(`confSERVER_KEY', `confCACERT_PATH/tls.key')
define(`confCLIENT_CERT', `confCACERT_PATH/tls.crt')
define(`confCLIENT_KEY', `confCACERT_PATH/tls.key')
前半が SMTP AUTH の設定。
TRUST_AUTH_MECH の部分で DIGEST-MD5 と CRAM-MD5 に成功した場合、 リレーを許可するようにしています。
メールクライアント *2 によっては LOGIN しか使えない場合もありますが、MacOS X の Mail.app は問題ないので、このままにしてあります。
続いて後半の STARTTLS の設定ですが、こちらはちょっと厄介で openssl で 認証証明書 (Certificate) を作る必要があります。 もちろん自己署名です。(笑)
まずは /etc/ssl に /usr/local/openssl/misc/CA.sh をコピー。
その CA.sh で
CATOP=./CA
と書き換えます。また、sendmail 起動のたびにパスワードを尋かれないように
-newreq) 
    # create a certificate request
    $REQ -new -nodes -keyout newreq.pem -out newreq.pem $DAYS
と -nodes を加えておきます。
そして
melchior# ./CA.sh -newcert	(新規認証局 Certificate Authority の作成)
(snip)
melchior# ./CA.sh -newreq	(新規sendmail用証明書 Certificate の作成)
(snip)
melchior# ./CA.sh -signreq	(sendmail用証明書を認証局が署名する)
(snip)
melchior# ls
CA newreq.pem  newreq.key  newcert.pem
ここで newcert.pem が 署名済み 証明書です。これを tls.crt として /etc/mail/certs にコピーします。
続いて newreq.key がその証明書の秘密鍵なので、これを tls.key にコピー。
melchior# mkdir /etc/mail/certs
melchior# chmod 700 /etc/mail/certs
melchior# cp newcert.pem /etc/mail/certs/tls.crt
melchior# cp newreq.key /etc/mail/certs/tls.key
melchior# chmod 500 /etc/mail/certs/tls.*
これで TLS の準備は完了です。
ローカルからメールを送り
melchior# mail root
Received: from melchior.magisystem.net ([unix socket]) (authenticated user=root@yyy.zzz bits=0)
        by melchior.magisystem.net (Cyrus v2.2.3) with LMTP; Wed, 31 Mar 2004 00:33:30 +0900
Received: (from root@localhost)
        by melchior.magisystem.net (8.11.7+3.4W/8.11.7) id i2UFXUI81211
        for root; Wed, 31 Mar 2004 00:33:30 +0900 (JST)
        (envelope-from root)
となり (authenticated user=root@yyy.zzz) が SSL で認証されたことを示しています。
あと、CA (自分が勝手に作った認証局)の証明書をクライアントに追加しなければなりません。
これは
melchior# cd /etc/ssl/CA
melchior# openssl x509 -in cacert.pem -inform PAM -out cacert.crt -outform DER
この cacert.crt をクライアントに持って行って、追加してあげます。
MacOS X の場合にはちょっとテクニックが必要で、 ここ とか ここ にあるように、持ってきた cacert.crt をクリックしたあとに Keychain Access の X509 Anchors (※注意: X509Anchors ではない! )に追加します。
あとは Mail.app でSMTP AUTH と SSL を有効にしてメールを送りましょう。
Received: from melchior.magisystem.net ([unix socket])
        by melchior.magisystem.net (Cyrus v2.2.3) with LMTP; Tue, 30 Mar 2004 15:49:03 +0900
Received: from [IPv6:2001:380:1c6:1:203:93ff:fee8:a88a]
	(rei.ipv6.magisystem.net [2001:380:1c6:1:203:93ff:fee8:a88a])
        (authenticated as hideishi with CRAM-MD5)
        by melchior.magisystem.net (8.11.7+3.4W/8.11.7) with ESMTP id i2U6n2875753
        (using TLSv1/SSLv3 with cipher RC4-SHA (128 bits) verified NO)
        for <hideishi@yyy.zzz>; Tue, 30 Mar 2004 15:49:03 +0900 (JST)
        (envelope-from hideishi@yyy.zzz)
見ての通り CRAM-MD5 で SMTP AUTH をして、TLS も用いてSSLの上で通信していることが分かります。
ただ verified NO となっているので、クライアント側からは Certificate による認証はできません。

駆け足ですが、だいたいこんな感じです。
TLS はともかく、SMTP AUTH は外から家のメールサーバを利用してメールを送りたいときに有用だと思います。
次は Cyrus IMAPd でも TLS を使えるようにしますか。
*1: submit.cf を使いたくない。
*2: MUA

#4 [Muzik] 火曜日TSUTAYAレンタルの日

松浦亜弥 風信子(ヒヤシンス):

Miz New Day:

New Day
2/14 にポップジャムの公開収録を観に行った時にも出演していて その時からちょっと気になっていたのですが、 ようやく CD を聴く機会を得ました。
女性ヴォーカルによるロックっていうところです。
結構好みかも。
シングル2曲目の What's It To You?! がなかなか出来がいい。
本人の声量もあるし、決して曲に負けてないし、売れて欲しいなぁ。

大塚愛 さくらんぼ:

大塚愛 甘えんぼ:


2004年03月31日(水) [n年日記]

[天気:晴れ](研究室) 起床:8:30 就寝:27:00

#1 [Univ] HDD交換 リターンズ

久し振りに研究室に出勤。

先月、散々苦労した研究室ファイルサーバのHDD交換ですが、 2台目のファイルサーバである yggdrasilのHDDを交換。
さすがに一度やった後なので手際もよくなり、今日は時間内に作業を終えられました。
バックアップサーバからデータを書き戻すように設定してから帰ってきたので、 明日にはレストアは完了していることでしょう。
…何もトラブルがなければね。


最近の日記
2019年06月24日
10年振り
2009年12月31日
定期アップデート
2009年04月03日
定期アップデート
2009年03月22日
定期アップデート
2009年01月26日
pomera
2009年01月23日
今日のBOT
2009年01月22日
BOT
2009年01月20日
Seagate HDD
PowerPCの備忘録
RSS feed
abuse
2009年01月19日
Windows 7 beta
2009年01月16日
perl-after-upgrade
2009年01月14日
アクセスカウンタ
2009年01月13日
ひとまず完了
2009年01月12日
7.1-RELEASE(適用)
2009年01月10日
hns 2.19.9
2009年01月09日
recursion no
以上、26 日分です。
先月 2004年03月 来月
01 02 03 04 05 06
07 08 09 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project