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

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

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


最近の日記
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
以上、10 日分です。
先月 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