日々

link permalink

メーデー!メーデー!

今日はメーデーです。そんなことより、エクスプローラのネットワークドライブへの無駄なリトライがすごくイライラする。

あるマシン A で Windows のネットワークドライブを設定(宛先を B とする)して、接続先であるマシン B を落とすと、当然そのネットワークドライブは使えなくなります。

そこまでは良いのですが、エクスプローラってば使えなくなったネットワークドライブにアクセスしようとすると 10秒近くフリーズしてしまいます。TCP SYN+ACK 待ちにしては諦めが早すぎるので、NetBIOS でしょうか?

さらに嫌なことに、ネットワークドライブと全く関係ない操作(例:フォーカスを戻す)でも、毎回ネットワークドライブを確認してはフリーズします。もうイライラして仕方ないです。

マシン A を起動した時点でマシン B が死んでいると、ネットワークドライブは切断されている扱いになって、上記の現象は起きません。その後マシン B を起動してもネットワークドライブは切断された扱いのままです。

切断されている状態だとネットワークドライブ上のファイルへのアクセスが軒並み失敗しますので、すぐにわかるかと思います。

しかしエクスプローラからネットワークドライブを見てしまうと再接続処理が走るようで、以降は接続された扱いになります。こうなるともうダメで、マシン B を落とすと上記のフリーズしまくり状態に突入します。

Samba だとダメ

ネットワークドライブの接続先が Samba の場合はフリーズ現象が発生します。接続先のマシンを落とすと、ネットワークドライブのプロパティには「ネットワークドライブ:NTFS(または未フォーマットとも)」などと表示されます。

一方で Windows XP の共有ドライブの場合はフリーズ現象が起こりません。接続先のマシンを落とすと、ネットワークドライブのプロパティには「切断されたネットワークドライブ」と表示されます。

どうも Samba はサーバ終了時に、接続中のクライアントに何かを通知すべきなのに、全部すっ飛ばして終了するみたいです。オプションでなんとかならんかなあ…。

原因不明

しかし、いつまでも未練がましく覚えているクライアント側も大概にしてほしいものです。なんとかしてネットワークドライブの記憶を消せないか探ってみました。

まず、以下のコマンドで ARP のキャッシュをクリアしました。
arp -d *
しかし症状は変わらず。

次に NetBIOS のホスト名 <-> IP アドレスのキャッシュをクリアしました。
nbtstat -R
やはり直りません。

エクスプローラが何か覚えているのかもと explorer.exe を強制終了させ再起動しましたが、依然として直りません。

残るは System プロセス(pid: 4)が覚えている可能性がありますが、確かめる方法がわからんなあ。

[編集者: すずき]
[更新: 2008年 5月 2日 04:17]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

ページテーブルはどこに行った

Linux のページディレクトリを見ていると 0xc000 0000 以降(※)はページディレクトリエントリがあるのに、その先のページテーブルがありません。なぜこれで動くんでしょう?

調べてみると、なるほど、トリックがありました。

Linux は CR4 の PSE ビット(Page Size Extension、ビット 4)を 1 にして、4MB/4KB どちらのサイズでも使えるようにしています。

確かめ方は、右 Alt + ScrLock を押してレジスタダンプすると簡単でしょうか?以下のようなメッセージが出るはずです。Pentium Pro から導入されているはずですので、未対応というのはそうそうないかと…。

レジスタダンプの例
Pid: 0, comm:              swapper
EIP: 0060:[<c01019bd>] CPU: 0
EIP is at default_idle+0x31/0x59
 EFLAGS: 00010246    Not tainted  (2.6.18-6-486 #1)
EAX: 00000000 EBX: 00000800 ECX: c1101040 EDX: c030e000
ESI: 00099100 EDI: c0302800 EBP: 003a7007 DS: 007b ES: 007b
CR0: 8005003b CR2: c02bd7f4 CR3: 07175000 CR4: 00000690
 [<c0101a1c>] cpu_idle+0x37/0x4c
 [<c03105fa>] start_kernel+0x270/0x272

肝心なのは CR4 レジスタの値です。CR4 レジスタが 0x0000 0690、2進数だと 0110 1001 0000 ですから、ビット 4(ビット 0 から数えるので、右から 5番目)の PSE ビットが 1 になっていることが分かります。

(※)カーネルが使うリニアアドレス用のマッピングで、物理メモリ先頭 896MB 分を仮想アドレス 0xc000 0000 へマップしています。
物理: 0x0000 0000 .... 0x37ff ffff
リニア: 0xc000 0000 .... 0xf7ff ffff
というマッピングです。

二種類のページ

じゃあ 4MB と 4KB の区別はどこでやってるのさ?というと、ページディレクトリテーブルの要素である、ページディレクトリエントリでやっています。インテルのマニュアルによれば、ページディレクトリエントリの構成は以下のようになっています。


32ビット x86 のページディレクトリエントリ

細かい説明は後述しますが、PS ビット(Page Size、ビット 7)が 1 になっていれば 4MB のページを指し、0 ならば 4KB のページを使うことを意味します。

128MB の実メモリを割り当てた仮想マシン上で Linux を起動して、適当なプロセスのページテーブルをダンプしてみると、768 要素目から以下のようなページディレクトリエントリが見受けられます。

128MB しか実メモリがないので、768〜799 番目(4MB x 32ページ)までしか値が埋まりません。余った 800 番目以降は別の用途に使われます。

カーネルのページディレクトリテーブルの一部
  768: 0x000001e3, 0x004001e3, 0x008001e3, 0x00c001e3, 
  772: 0x010001e3, 0x014001e3, 0x018001e3, 0x01c001e3, 
  776: 0x020001e3, 0x024001e3, 0x028001e3, 0x02c001e3, 
  780: 0x030001e3, 0x034001e3, 0x038001e3, 0x03c001e3, 
  784: 0x040001e3, 0x044001e3, 0x048001e3, 0x04c001e3, 
  788: 0x050001e3, 0x054001e3, 0x058001e3, 0x05c001e3, 
  792: 0x060001e3, 0x064001e3, 0x068001e3, 0x06c001e3, 
  796: 0x070001e3, 0x074001e3, 0x078001e3, 0x07c001e3, 
  800: 0x00000000, 0x00000000, 0x07baf067, 0x00000000, 

772 番目を例に取ると、0xc100 0000〜0xc13f ffff の 4MB 分のアドレスをマップしています。0x010001e3 は 2進数だと 0001 0000 0000 0000 0001 1110 0011 ですので、先ほどの図に当てはめてみると、

ビット 0: P(存在): 1
4KB ページの時はページテーブルがロードされていることを表します。4MB ページの場合はページが存在していることを表します。
ビット 1: R/W(読み取り/書き込み): 1
0 は読み取り専用、1 なら書き込み可能であることを表します。
CR0 の WP ビット(書き込み保護、ビット 16)を 1 にすると、スーパバイザからユーザの書き込み禁止ページに書き込んだときに、ページフォルト例外が発生するようになります。コピーオンライト機能の実現に役立ちます。
  • ページテーブルエントリ EA が指すページ A をコピーせよという命令に対し、実際はコピーせず、エントリ EA を読み取り専用にし、さらに同じページを指すエントリ EB を読み取り専用で作ります。
  • 読み取り時
    • エントリ EA の指すページ A への読み取りは今まで通りです。
    • エントリ EB は書き込みがない限りページ A と同じ内容なので、読み取りだけならばエントリの指すページを変更する必要はありません。
  • 書き込み時
    • エントリ EA の指すページ A に書き込もうとすると、ページフォルト例外を発生させてページをコピーし、ページ A' を作ります(書き込み時のコピー、コピーオンライト、COW とも)。
      以降はエントリ EA は書き込み可能、指す先はページ A' です(EA -> A', EB -> A)。
      そうしないとエントリ EB が指すページ A を使っている人が混乱します。エントリ EB を使っている人から見ると、何もしていないのに(エントリ EA の指すページ A への書き込み発生時に)勝手にページの内容が変わったように見えます。
    • 同様にエントリ EB の指すページ A に書き込もうとしても、ページフォルト例外が発生します。そのとき初めてページ A の複製、ページ B を作ります(コピーオンライト)。
      以降、エントリ EB は書き込み可能、指す先はページ B に変更されます。(EA -> A, EB -> B)
      ただし既にエントリ EA がページ A を指していないことが分かっているなら、コピー作業は無駄なのでしません。エントリ EB はページ A を指したままで、書き込み可能に変更されるだけです(EA -> A', EB -> A)。
ビット 2: U/S(ユーザ/スーパバイザ): 0
0 はスーパバイザ用の領域を意味し、1 はユーザ/スーパバイザ用の領域を意味します。
ビット 3: PWT(ページライトスルー): 0
0 ならページへの書き込み時に、可能ならキャッシュのみを更新(ライトバック方式)します。1 にするとキャッシュとメモリを同時に更新(ライトスルー方式)します。PCD が 1 のときは、そもそもキャッシュを使わないので無意味です。
  • CR0 の NW ビット(非ライトバック、ビット 29)が 1 だと、ライトスルー方式が採用されます。こちらが優先です。
  • CR3 の PWT ビット(ページライトスルー、ビット 3)が 1 だと、ライトスルー方式が採用されます。これはページディレクトリエントリだけのキャッシュ方式に適用されます。
しかし MTRR の設定とも関係します。ライトバックとライトスルーの設定がかち合ったときは、ライトスルーが優先されます。
ビット 4: PCD(ページキャッシュ無効): 0
0 にするとページをキャッシュします。1 にするとページをキャッシュしなくなります。I/O メモリなど、キャッシュしても意味がない領域などに使うそうです。
  • CR0 の CD ビット(キャッシュ無効、ビット 30)が 1 だと、メモリに対するキャッシュ全てが無効になります。こちらが優先です。
  • CR3 の PCD ビット(ページキャッシュ無効、ビット 4)が 1 だと、ページ単位のキャッシュは無効になります。これはページディレクトリエントリだけのキャッシュ方式に適用されます。
キャッシュの設定は MTRR の設定とも関係します。ライトバックとライトスルーがかち合ったときは、ライトスルーが優先されます。
ビット 5: A(アクセス): 1
ページ番号が指しているページに読み込み、書き込みがあると 1 にセットされます。
ビット 6: D(ダーティ): 1
ページ番号が指しているページに書き込みがあると 1 にセットされます。
ビット 7: PS(ページサイズ): 1
0 なら 4KB ページ、1 なら 4MB ページを表します。ページディレクトリエントリ(一段目のテーブル)だけで有効です。
Linux ではページテーブル(二段目のテーブル)でアクセス権のないページを表すために、P ビットと合わせて使っています(当然 CPU は無視します)。P:PS = 0:0 なら存在しないページ、P:PS = 0:1 ならアクセス権のないページを表します。
(4KB ページ、ページテーブルエントリ(二段目のテーブル)のみ)Pentium Pro 以降であれば、このビットは PAT ビットを表します。このビットが 1 であれば PCD および PWT の 2ビットで 4 つのメモリ属性(ライトバック、ライトスルー、MTRR 優先のキャッシュ無効、MTRR 上書きのキャッシュ無効)を表します。このビットが 0 であれば、従来と同じです。
ビット 8: G(グローバル): 1
0 なら TLB フラッシュの時に消されます、1 なら消されずにずっと残ります。
CR4 の PGE ビット(グローバルページ有効、ビット 7)を 1 にしないと意味がありません。
ビット 12: PAT(ページ属性テーブル): 0
(4MB ページのみ)0 なら PAT 機能を無効にして、1 なら PAT 機能を有効にします。
ビット 31-22: ページ番号: 4(0x4)
先頭から 16MB(4MB x 4個目)の位置にある 4MB 分の領域(0x0100 0000〜0x013f ffff)をマップすることを表します。

なぜ使い分けるのか

4MB のページングを使っているのはカーネル用のリニアアドレス(0xc000 0000〜)だけのようです。他のページディレクトリエントリには PS ビットが設定されていません。ページ番号の指す先には、もう一段ページテーブルがあり、その先にやっと 4KB のページがあります。

理由ですが、インテルのマニュアルによると 4MB と 4KB のページは別の TLB に置かれるので、カーネルのように頻繁に使うコードやデータは 4MB ページに置いておくと、フラッシュされなくて良いよ、ってなことが書いてあります。また、ページサイズが大きければ TLB ミスも少ないよ、ってな解説もあります。恐らくそんな理由です。


あるプロセスのページディレクトリテーブル

絵にしてみるとこんな感じでしょうか。間違ってるかも…。

サイズはアドレスの範囲を意味するのではなくてテーブル自体の大きさのことです。ページディレクトリテーブル(一段目のテーブル)も、ページテーブル(二段目のテーブル)も 4バイト x 1024 要素なので同じ 4KB ですよ、って言いたかっただけです。

[編集者: すずき]
[更新: 2008年 5月 3日 19:20]
link 編集する

コメント一覧

  • hdk 
    あれ? PAT は? (・∀・)

    A ビットは書き込みがあっても 1 になりますね。A, D ビットは実際は TLB とも深く関わってます。R/W と CR0 の WR フラグも関係があります。 
    (2008年05月03日 14:11:03)
  • すずき 
    PAT に MTRR ですか…正直、勘弁してくださいという領域ですorz
    良くわからんくせに、書き足しました。内容には全く自信ないです。 
    (2008年05月03日 16:23:33)
  • hdk 
    MTRR ってわけわからんですよねー。
    たしか CR3 のキャッシュの設定って CPU がページディレクトリエントリを読み書きする時にキャッシュの設定をどうするかじゃなかったですか?  
    (2008年05月03日 18:07:45)
  • すずき 
    >MTRR
    マニュアル読んだけど理解させる気ないね。難しすぎ。
    >CR3
    うお、早速間違ってた。直します。 
    (2008年05月03日 19:19:30)
  • すずき 
    それにしても読みづらい日記だな…。
    hdk氏には感謝感謝。 
    (2008年05月03日 19:22:14)
  • すずき 
    かなりいまさらになりますが…日記でやってるページテーブルダンプのやり方(bash, zsh 専用)
    # i=0x6e94000; dd if=/dev/mem skip=$((i / 4096)) bs=4096 count=1 | hexdump -v -e '" " 4/4 "0x%08x, " "\n"' | nl -v 0 -i 4 -s :
    です。

    i に代入する値は、
    ・適当にレジスタダンプ
    ・dmesg で結果見る
    ・CR3 レジスタ(= ページディレクトリエントリの値です)
    を確認してそれを 16進でそのまま入れてください。 
    (2010年05月07日 10:30:51)
  • すずき 
    用語がふにゃふにゃしててすみません。訂正します。
    ページ「テーブル」のダンプじゃなくて、ページ「ディレクトリテーブル」のダンプです。
    日記に書いたとおり 4MB ページの場合は、ページテーブルはありません。 
    (2010年05月07日 10:35:35)
open/close この記事にコメントする



link permalink

何を補うの?

毎回話題がバラバラな日記ですみません。今日は補数の話です。

N 進数の補数は 2つあります。N の補数と、N-1 の補数です。10進数ならば 10 の補数と 10-1 の補数(9の補数ともいう)があります。

N 進数における二つの補数

ある N 進数 x の N の補数 y とは、足すと桁上がりする最小の数値を指します。
10進数でいきますと、x = 123 だとしたら、10 の補数は足すと桁上がり(1,000 になる)する最小の数値ですから 877 です。

要するに y = 1,000 - x = 1,000 - 123 = 877 と計算します。4桁の数字なら 10,000 から引けばいいですし、5桁なら 100,000 から、n 桁なら 10^(n) から引いてください。

ある N 進数 x の N-1 の補数 z とは、足しても桁上がりしない最大の数値を指します。
また 10進数を例に取ると、x = 123 として、10-1 の補数は足しても桁上がり(1,000)に達しない最大の数ですから、876 です。足すと 999 になります。

これも要するに z = (1,000 - 1) - x = 999 - x = 876 と計算します。特徴として、10 の補数から 1 引いても得られますし、逆に 10-1 の補数に 1 を加えると 10 の補数になります(この性質は後ほど重要です)。

補数の活用方法

N の補数は何が嬉しいかというと「負の数の表現として使えば、引き算が不要になる」という点です。

3桁の 10進数 500 - 300 を計算したいとします。「引き算は知らないが 3桁の足し算と 10 の補数を書いた表だけ持ってる」と仮定します。むちゃくちゃに見えますけど、後で意味が分かると思います。

引き算は知りませんので、まずは負の数を消しにかかります。負の数は絶対値の補数に置き換えて消します。表を見ると 300 の 10 の補数は 700(計算で出すなら 1,000 - 300)ですから、
500 - 300 = 500 + 700
こう置き換えます。すると足し算のみになって、計算できるようになります。
500 + 700 = 1,200
4桁目が出てきてしまいましたが、3桁の足し算しか知らんので 4桁目は捨てます。さようなら〜。
1,200 => 200
この結果は 500 - 300 = 200 の結果と一致します。

不思議に見えますが、そもそも補数 y の定義が y = 1,000 - x なので、x = 300 で式を展開すると、
500 + (1,000 - 300) = 1,200 --(4桁目無視)--> 200
となるのは当たり前といわれれば当たり前の結果です。しつこいですが大事なポイントは「引き算が足し算に化ける」という点です。

2進数だと非常に嬉しい

とはいえ、10進数だと補数を計算するために結局引き算が必要で、ありがたみがありません。これはその他の記数法(図では 3進数を例とした)でも同じです。


3進数と 3 の補数、3-1 の補数

ところが 2進数となると非常に嬉しい性質があります。以下の図を見てください。


2進数と 2 の補数、2-1 の補数

2進数においては全桁を反転させる演算(Not 演算)によって、容易に 2-1 の補数を得ることができ、そこに 1 加えれば 2 の補数を得ることができます。つまり Not 演算さえあれば 2 の補数の導出に引き算は不要です。コンピュータだからこそできる技といえましょう。

この性質のためコンピュータに減算器は不要で(※)、加算器の前に Not 演算と 1 加える回路をつけるだけで良いのです。回路が少なくなればコンピュータも安くなります。いやあ、補数って素晴らしいですね。

(※)コンピュータは前章の説明に出てきた「引き算は知らないが 3桁の足し算と 10 の補数を書いた表だけ持ってる」の代表格です。コンピュータの場合 2進数を扱うため 10の補数ではなく 2の補数です。
まとめると「一定桁(32桁、64桁など)の足し算と、2の補数しか知らない」変な奴と言えます。本当は意図的にそう作っていると言った方が正しいですけど…。

負の数を解釈

補数を負の数として扱うと良いこと(減算がなくなる)があるのは分かっていただけたかとおもいます。残る問題はどこからを負の数と見なすかです。卑近な例で言うと printf したときに、どこからマイナスなのよ?って話です。

前章まで話してきた計算の問題と関係ありそうに見えますが、実は全然関係ありません。ぶっちゃけた話、どこから負の数と見なしても構いません。以下の図をご覧下さい。


2進数から 10進数へ解釈する一方法

この図にある解釈方法ですと 2進数の 101 以上を負の数と見なします。

  • 101 未満の数を表示しなさいと言われたら、そのまま 10進数に変換した値を印字します。
  • 101 以上の数を表示しなさいと言われたら、補数をとって 10進数に変換した値と、マイナスの符号をともに印字します。
例えば 110 を渡されたら、101 以上なので補数を取って 010 とし、010 を 10進数にすると 3 なので、-3 と表示します。

何?ずれてる?いやいや…。このような解釈でも使っている人がウンと言えばそれで良いんです。とはいったものの、この方式ではウンと言う人は少なそうです。この方式は欠点が多すぎます。

桁が増えたときに正負の境界をどう決めるかがあいまいであるがために、境界を見分ける処理が複雑になる可能性があります。プログラマや回路設計者に嫌われますね。それとやたら正の数ばかりが多くて、負の数を使いたい人にも嫌われます。

良い解釈方法はあるか

多くの方が見慣れたパターンは、最上位のビットが 1 なら負の数と見なす、以下のような解釈方法でしょう。


2進数から 10進数へ解釈する効率的な方法

この解釈方法が採用されている理由は、効率的だからだと思われます。この解釈方法であれば、何桁になろうとも「最上位ビットの有無」という同じルールが適用できます。さらに正の数の範囲と負の数の範囲がほぼ同じ(負の数の範囲が 1 広いけど)で使いやすいのです。

[編集者: すずき]
[更新: 2008年 5月 4日 16:51]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

メモはすぐどっかに消える

ファミコンのアルテリオスというゲームを攻略した情報を一生懸命メモした(特にパスワード)のに、またやろうとしたら紙がない。こういう時って、やる気がなくなって諦めた頃に紙が出てくるもんですよね。

ここに書いてしまえば忘れないだろってことで書いておきます。まあ、ネット上の情報も「どう頑張っても探せなくなった」ら、消えたも同然なんですけどね。人の記憶と似てますねえ。

アルテリオスはうまくできていて、主人公の名前によって扉のパスワードが変わります。なので主人公の名前を「A」にしないと、以下のパスワードと違うパスワードになってしまうはずです(私には確認できませんが、カセットのロットなどその他の要因でも変わるかも)。

メイランド
特に何もない。レベルあげて武器買ったらさっさとリートランドへ進む。
リートランド、コロニー
ディーモスの右の扉のパスワード「1726」
小惑星でコルテス博士に会え、パスワードは「8A71」
(ウルムの言葉を習ってからもう一度)
ウルム: フローダのオルト博士に会え、パスワードは「B1B3」
リートランド、小惑星
(扉の向こう)コルテス博士: 4人の博士に会え、パスワード「7A7A」
(ウルムの言葉を習ってからもう一度)
左奥のウルム: 宮殿のパスワードは「27B1」
ユナイト、ダーフラの街
ディーモスの左の扉のパスワード「3740」
ユナイト、ニーツニーの街
オドラノエルでウルムの言葉を習える
弟: イクニバッドにいる姉さんに会え
ユナイト、イクニバッドの街
姉: ジェノ博士の部屋のパスワード「1B3A」、先に弟に会わないと何も言わない
ユナイト、オドラノエルの街
(扉の向こう)ジェノ博士: 4人の老人に会え、パスワードは「34C8」
老人: ウルムの言葉を教えてくれる。(この後、リートランドのウルムにもう一度会いに行くこと)
ディーモス、ノエロパの街
左には赤い石を置け、右には青い石を置け
リートランドにオルト博士を知っているウルムが居る(※リートランドのコロニーのこと)
ディーモス、エトラパノフの街
クラークス博士はレルチという街(ディーモスではなくてトゥメールカムスにある街)に いる、パスワードは「5A6A」
ディーモス、城内
(左の扉の向こう)レッドクリスタルがある、ヘビーシェルが守っている
(右の扉の向こう)ブルークリスタルがある、ヘビーシェルが守っている
(真ん中の扉)ヘビーシェル x 2 が守っている
レティシア: 宮殿の扉のパスワードは「2112」、ヘビーシェルが守っている
トゥメールカムス、レルチの街
(扉の向こう)クラークス博士: 4人の老人に会え、パスワードは「14FD」
トゥメールカムス、フローダの街
(扉の向こう)宮殿の扉のパスワードは「109E」
オルト博士: 4人の老人に会え、パスワードは「CBDB」
トゥメールカムス、宮殿
(最初の扉)フローダの街で聞いたパスワード
(次の扉)リートランドの小惑星で聞いたパスワード
(左の扉)コルテスのパスワード、クリスタルをくれる
(右の扉)クラークスのパスワード、クリスタルをくれる
(右下の扉)オルトのパスワード、クリスタルをくれる
(左下の扉)ジェノのパスワード、クリスタルをくれる
(次の扉)レティシアのパスワード
トゥメールカムス、宮殿最深部
詳細忘れた。皿みたいなものにもらった 4つのクリスタルを置けば先に進めるんだったかな?
最後のボス(サーベラー)がいるんではり倒す。メチャクチャ硬いです。

まあ、攻略の有無以前に単純に敵が強くてクリアできてないけどな…。ハイパーなんちゃら系がアホみたいに TUEEEEEE ので、必ずボコボコにされる。

以下、おまけ

チートコードを調べてたときのメモです。知ってどうする情報とか、いじるとおかしくなる情報もあります。自己責任で。セーブデータが飛んでも知りません。


0026: 戦闘時の横位置、移動時の横位置も?
0702: 戦闘時の縦位置

0428: HP
0430: WE

6201: 敵の縦位置 0x65 くらいで自分の初期位置
6202: 敵の横位置 0x80 くらいで自分の初期位置

6230: 敵弾の判定? 0にすると敵の弾が来ない

070e: 左の自弾の横位置
0716: 右の自弾の横位置

マップは変化しないが、出現する敵などに影響する。
0420: 現在居る惑星
00 メイランド
01 ユナイト
02 リートランド
03 ディーモス
04 トゥメールカムス
05 ディーモス
06 トゥメールカムス
07 (バグってリセットされる)

自身が居る位置は左上から右向きに 1ずつ増えるようだ。
(画面左端)0 1 2 3(画面右端)
            4 5 6 7
            続く...
例えばメイランドだと、0x40 足すと一個下に進める
0421: 自身が居る位置、上位 8ビット
0422: 自身が居る位置、下位 8ビット

マップを変えられるが、大抵変なところにはまる。
0423: 現在居るマップ
00 メイランド、メイン迷路
01 ユナイト、メイン迷路
02 ユナイト、ダーフラの街
03 ユナイト、ニーツニーの街
04 ユナイト、イクニバッドの街
05 ユナイト、オドラノエルの街
06 リートランド、メイン迷路
07 リートランド、小惑星
08 リートランド、コロニー
09 ディーモス、メイン迷路
0a ディーモス、城内
0b ディーモス、ノエロパの街
0c ディーモス、エトラパノフの街
0d トゥメールカムス、メイン迷路
0e トゥメールカムス、宮殿
0f トゥメールカムス、宮殿最深部
10 トゥメールカムス、レルチの街
11 トゥメールカムス、フローダの街
12 以降はバグる

(下位 4ビットが種類、5ビット目が装備しているか否か、それ以外は無意味)
042c: 武器1
042d: 武器2
042e: 武器3
042f: 武器4

043e: ストップ個数
043f: デビルハンマー個数
0440: デストロイド個数
0446: アイテム装備状態(2: ストップ, 4: デビルハンマー, 8: デストロイド)
0447: 武器攻撃力合計値

実家にはまだアルテリオスのカセットがあるはずですが、肝心のファミコン本体が死んじゃったからなあ。もうエミュレータでしか画面が拝めないのかあ…。

[編集者: すずき]
[更新: 2008年 5月 4日 17:26]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

淡路島とは関係ありません

大下さんちに遊びに行きました。阪急の淡路駅で初めて降りた気がします。

淡路駅は特急が止まります。ですが駅前には商店街があるだけで特に何があるっつーわけでもないです。駅や周辺地域の規模ではなくて、交通要所(千里線と京都線の乗り換え駅)だから止まるんだな。たぶん。

[編集者: すずき]
[更新: 2008年 5月 8日 21:57]
link 編集する

コメント一覧

  • hdk 
    南千住駅には快速が止まります。ですが駅前には商店街があるだけで特に何があるっつーわけでもないです。駅や周辺地域の規模ではなくて、交通要所ですらなくて、うーんw 
    (2008年05月08日 22:17:48)
  • すずき 
    南千住ね…かなりいらない子だわ。一応東京都内だからお情けで止まるのかもw 
    (2008年05月09日 01:55:37)
open/close この記事にコメントする



link permalink

再いんすこ

大下邸の PC のセットアップをしました。NTT 西日本の B フレッツ(光プレミアム)では ONU(光ファイバーつなぐやつ)以外に、CTU というルータのような装置を貸与されます。CTU は DHCP サーバとして動くので、大抵はケーブルを差せば動くようになっております。

無線 LAN も使いたかったので、無線 LAN ルータの DHCP サーバ機能を殺して接続しておきました。PPPoE も DHCP も NAT も何もかも OFF にしているため、無線 LAN ルータではなく単なる有線 <-> 無線ブリッジになり下がってますけど。もったいない話だ。

CTU

CTU は NTT 西日本独自の装置らしくて、地域 IP 網(IPv6)とユーザ側のネットワーク(多くは IPv4)を橋渡しする役目を果たしているようです。それ以外もごちゃごちゃやってるようですが、あまり詳しく書いてあるところがないですね…。

大きさも普通のルータ程度ですし、ルータ機能も良くできてると思いますが、設定するために一々 NTT のサーバへアクセス(アドレスは https://ctu.fletsnet.com/, IPv4:210.247.16.1, IPv6:2001:d70:3:1::3:3)しなければならないのがめんどくさい…。

そして

うーむ、風邪引いたかもしれん。

[編集者: すずき]
[更新: 2008年 5月 9日 00:09]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

やめて!VAIO の HP はもう 0 よ!

いつからか我が家の VAIO type G のファンがぶんぶん回りっぱなしになっています。冬の間は「うるせえなあ…」と思う程度で済んだのですが、改めて本体を触るとかなり熱い。

これから夏を迎えるに当たって温度が心配になってきましたので、原因を探ってみました。

負荷を調べる(2008年 5月18日改訂)

さて負荷をどうやって調べるかが問題です。ファンがブンブンしている状態でタスクマネージャを見ても 0% のままで、負荷がかかっているのかすらわかりません。というわけで 1秒おきに rdtsc 命令を発行し、その差分を表示するプログラムを書き(※)ました。

このプログラムが表示する値を理解するには、まず CPU の動作周波数がどうやって決まるか、rdtsc 命令の返す値は何を表すか、を説明しなければなりません。付け焼き刃の知識で頑張って説明します。

(※)本来なら自分で書かなくても、Crystal CPUID の Real Time Clock 表示機能を使うべきです。しかし Crystal CPUID は無駄に表示が凝っており、表示の負荷でシステムクロック周波数が上がる(rdtsc の変化分が 300MHz くらいまで)本末転倒状態だったので、没にしました。

システムクロックと CPU バスクロック(2008年 5月18日追記)

まず CPU バスクロック(CPU <-> ノースブリッジバス)の説明から入ります。CPU バスクロックはシステムバスクロックの半整数倍です。VAIO 君の場合はシステムクロック = 133MHz、CPU バスクロック = システムクロック(133MHz)x 4倍 = 533MHz のようです。

システムクロックはマザーボード上の水晶振動子(安い 10MHz〜30MHz くらい?)を原発振とした PLL(Phase Locked Loop)で供給されます。PLL って何?と聞かれても詳しくは知らんので勘弁して下さい。

CPU バスは Intel の伝統で FSB(Front Side Bus)と呼ばれ(※)ますが、今回は CPU バスで通します。

ノースブリッジにはメモリコントローラが載っていて SDRAM が繋がっています。比較的高速のバス(AGP バス、PCI-e x16 バス)などをノースブリッジに繋げることが多いようです。
ノースブリッジの先にはサウスブリッジが居て、PCI バス、PCI-e x1, x4 バスなど、比較的低速のデバイスを繋ぐことが多いようです。


CPU <- (1) -> ノースブリッジ <- (2) -> サウスブリッジ
                  |                        | (PCI バス)
              DDR SDRAM                PCI デバイス

(1) FSB(Front Side Bus, Intel 系), HyperTransport(AMD 系)
(2) DMI(Direct Media Interface, Intel 系), HyperTransport(AMD 系)

別にこの 2つでなければならないことはないです。
他の方式で接続するシステムも有るはず。

重要な点として、(1)、(2) のクロックと DDR SDRAM や PCI のクロックは全て同期しています。でないとデータのやりとりができないからだと思うんですが…。
そのため CPU バスと同様に、システムクロックから生成したバスクロックを用います。PCI バスだと 33MHz を欲しがるので、システムクロック 133MHz x 1/4 = 33MHz とします。

  • CPU の動作周波数 = システムクロック x CPU 内部動作周波数倍率
  • CPU バスの動作周波数 = システムクロック x 倍率
  • 周辺バスの動作周波数(例: PCI バス)= システムクロック x 倍率

(※)"Front" Side Bus に対して "Back" Side Bus もあるのか?
BSB もあります、いや…ありました。BSB は CPU <-> 2次キャッシュのバスです。しかし最近は CPU に 2次キャッシュも混載されているので BSB は不要です。ですから「最近のシステムにはありません」という方が正しそう。

rdtsc と CPU の動作周波数(2008年 5月18日追記)

rdtsc 命令とは CPU 内部のタイムスタンプカウンタを読み出す命令です。Core 系以前の CPU では rdtsc のカウントアップ周波数 = CPU 動作周波数でしたので、SpeedStep などで倍率を変化させると rdtsc の増分も変化していました。しかし Core 系では常に一定の周波数(Core Solo 1500U の場合は最大動作周波数 1330MHz)でカウントアップされます。
(hdk 氏、ご指摘&情報提供ありがとうございます)

つまり、
過去の CPU: システムクロック x 動作倍率(可変)
Core 系: システムクロック x 一定値
です。

じゃあ最初に書いた rdtsc を見るプログラムって意味無くね?と思うのはまだ早いんだ、これが。

VAIO 上で先ほどのプログラムを使って rdtsc の増分を見ると、システムの負荷によって変化します。rdtsc の増分はシステムクロック x 一定値、のはずですから、変化しているのはシステムクロック側と予想されます。

システムクロックを上げれば茨の道のオーバークロック(※)ですが、下げる方向に使えば省エネです。VAIO では CPU の省エネ機能(Enhanced SpeedStep)に飽きたらず、システムクロックも下げさらに省エネしようという設計なのでしょう。

(※)規定値よりシステムクロックを上げることをオーバークロックといいます。今までの説明からも類推できるように、システムクロックをメチャクチャ上げると CPU バスクロック、さらには PCI バス(1/4 倍 = 33MHz)や AGP バス(1/2倍 = 66MHz)まで上がり、いずれバスに繋がっているデバイスの許容値を超えて異常動作したり動作しなくなります。
この問題の解決にはシステムクロックと周辺バスクロックの比率を変える必要があります。オーバークロックを売りにしているマザーボードだと比較的柔軟みたいです。

VAIO の現状(2008年 5月18日追記)

システムに負荷をかけると、システムクロックが最大値に張り付いて rdtsc の増分も最大値である 1330MHz に張り付きます。負荷が低いと 50MHz 程度(※)まで落ちます。

さて、今の VAIO を見ると 1330MHz に張り付きっぱなしです。ファンがずっとブンブンしているのはこのせいでしょう。

ファンのスピードはシステム負荷に連動しているようなので、rdtsc 値の増分を下げる方向 = システムクロックを下げる方向へ改善することで「ファンがブンブン言う問題」は解決すると思われます。VAIO がシステム負荷をどうやって測定しているのかまではわかりませんでした。

(※)負荷が低いときは CPU 内部動作周波数倍率は 6.0倍まで落ちますので、rdtsc カウンタの増分 x 6/10 が本来のシステムクロックです。まあ、その辺の細かい値は今回どうでもいいので、高い、中間、低い、くらいが見えれば OK です。

犯人は USB HDD だ

というわけで犯人捜しです。片っ端からケーブルを引っこ抜いてみると、USB HDD を引っこ抜いた段階で 50MHz くらいまで下がりました。犯人はこれかあ。手始めに、デバイスの取り外しで無効化してみたものの全く負荷が下がりません。

USB 2.0 コントローラが有効な状態で一度 USB HDD を認識させてから、USB 2.0 コントローラ(Intel USB2 EHCI)を無効にすることで、USB 1.1 の機器として再認識させると、負荷が下がりました。

これで解決ですね……って、こんなん毎回やってられんよ。面倒くさくて死にそう。

もしかして

ひょっとすると HDD ケース(センチュリーのやつだった気がする)がおかしいのかもしれません。こやつは Windows XP の起動時に電源 ON だと 100% BoD するという、怪しさ爆発デバイスです。

というわけで別の USB HDD を繋いで、再度実験。やはり負荷が上がってダメです。さらに手持ちのデバイスで実験。

  • USB Flush メモリ -> 負荷高
  • USB DVD ドライブ -> 負荷高
  • USB 2.0 ハブ -> 負荷低
  • USB モデム(NEC N902iS、USB 2.0 デバイス) -> 負荷低
  • USB マウス(USB 1.1 デバイス) -> 負荷低

うーむ、どうも USB Mass Strage が NG っぽいですね。Windows の USB EHCI ドライバか、USB Mass Strage ドライバのどちらかが常に負荷をかける作りになっているんでしょうか?これはノート PC の設計者に優しくない作りだなあ…。

まとめ

  • USB Mass Storage(USB HDD、USB 2.0 デバイス) -> 負荷高、速い
  • USB Mass Storage(USB 2.0 デバイス)を「デバイスの取り外し」で無効化 -> 使えないくせに、負荷高
  • USB Mass Storage(USB DVD、USB 2.0 デバイス) -> 負荷高
  • USB Mass Storage(Flush メモリ、USB 2.0 デバイス) -> 負荷高
  • USB Mass Storage(USB 1.1 デバイス) -> 負荷低、ただし遅い
  • USB モデム、シリアルポート(NEC N902iS、USB 2.0 デバイス?) -> 負荷低
  • USB ハブ(ARVEL、USB 2.0 デバイス) -> 負荷低
  • USB マウス(Logicool、USB 1.1 デバイス) -> 負荷低
  • USB ゲームパッド(MS SideWinder、USB 1.1 デバイス) -> 負荷低

まとめといた。

[編集者: すずき]
[更新: 2008年 5月 18日 10:35]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

メイリオは不明瞭

Windows XP 用のメイリオフォントが公開されたので入れてみたら、IT Media のビジネスニュースサイト Business Media 誠の表示がメイリオで出るようになってしまった。見づらい。

調べたら、スタイルシートでフォントが指定("メイリオ","Hiragino Kaku Gothic Pro","ヒラギノ角ゴ Pro W3","MS Pゴシック",Osaka の順だった)されていたためでした。今までは優先度 4 の MS Pゴシックが選ばれていたのに、メイリオを入れたことによって優先度 1 のメイリオが選ばれるようになったわけです。

Web ページでフォント指定するなよ、全くもってダサイな…。SeaMonkey の設定で、Allow documents use other fonts を OFF に、ついでに Minimum Font Size も 10 くらいに上げておきました。ん、見やすい見やすい。

[編集者: すずき]
[更新: 2008年 5月 9日 02:19]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

SP3 というセキュリティフィックス

5/7 に Windows XP SP3 がリリースされました。デスクトップに早々とインストールしたものの、ノートのことをすっかり忘れていました。

これまた寝る前に始めたのが良くなかった。朝までノートを動かす羽目になりました。寝るときノートの液晶画面が眩しい、かといて閉じるとスリープする…とお悩みの方。スリープしないよう設定変更するのも手ですけど、単に輝度を最低に落とすだけでも割と良い感じですよ。

ブラウジング環境

会社でも SeaMonkey を使っています。通常のブラウジングには苦労しませんが、会社の変なシステムが IE6 専用でして、全く動きません。しかもやたら別ウインドウを開きたがる悪い癖のあるシステムなのでウインドウだらけになる。IE 系のタブブラウザでも動くかなあ、動くようなら導入しようかな。

風邪悪化

5/6 から引きずってた風邪がここにきて悪化してきた。頭がガンガンする。飲み会に行きたかったけど、諦めて寝よう。

[編集者: すずき]
[更新: 2008年 5月 13日 01:03]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

今日は

おとなしく寝てました。熱もあるんだろうけど、鼻〜喉がヤバい。焼け付くような感じがする。

[編集者: すずき]
[更新: 2008年 5月 13日 01:05]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

風邪

熱は下がったけど、喉がヤバいことに変わりなし。起きている間に良化 -> 寝ている間に悪化を繰り返しているみたい。部屋の空気が乾燥しているとかかなあ?

昨日はご飯食べるの忘れてたので、今日はきちんと食べました。

[編集者: すずき]
[更新: 2008年 5月 13日 01:07]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

念のため

有給をとって休みました。お休みを病欠で消費するとすごくもったいない気がするのです…。

上の一文をどこかで見た気がすると思ったら、去年の 6月11日(2007年 6月 11日の日記参照)にも風邪で有給を取って休んでいて、同じようなこと書いていました。ああ、進化してない。

昔からこの時期(4月末〜 5月末)はほぼ確実に風邪を引いている。時期に何か秘密があるのかなあ?季節の変わり目にしては遅いような気がするんだけど。

[編集者: すずき]
[更新: 2008年 5月 13日 01:19]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

struct page って何

以前から Linux のページディスクリプタ(要は struct page)って何なの?という疑問が晴れないまま居ました。特に実際のページフレームとの対応をどうやって取っているのかが全くわからん。どこかに対応が書いてあるにしては、それらしい場所がない…。

分からんながらも、機会を見つけては調べたり考えたりしていたら、なんとなーく分かった気がする。

分かった気がすることを書き散らしますが、間違っててもご勘弁下さい。自信ないです。

メモリゾーン

前提知識として簡単に説明します。Linux ではメモリ領域をゾーンという固まりで管理しています。ゾーンはページフレーム(普通は 4KB のメモリ領域)をいくつかまとめた固まりです。ページフレームがずらーっと並んでいるようなイメージ。

厳密にはもっと書くべきことがあるのでしょうが、今回はこのくらいの理解で進めるはず。たぶん。

ページディスクリプタとページフレーム

では本題に入ります。
まず私の疑問点は「ページディスクリプタ(以下、struct page)のポインタをもらったとき、どうやって対応するページフレームを得るのか?」です。

ここで struct page のメンバに直接書いてあれば話は早いのですが、struct page にページフレーム番号を示す情報などはありません。残念。

実は struct page は中身も大事ですが、ポインタ値が非常に重要な意味を持ちます。というのも実メモリのページフレームとの対応を取るために、ポインタの計算を行うからです。計算についてはまた説明します。

ページフレームを求めるためには、
ページディスクリプタ -> ゾーン -> ページフレーム
の順に求めます。まどろこしいですが、直接求められないのです。

ページディスクリプタ -> ゾーン

ページディスクリプタが対応するページフレーム、こいつが属するゾーンを求めます。自分でも何言ってるのかわかんないけど、まあいいや。

まず struct page に page_flags_t flags というメンバを見ます。こいつはその名の通りページの属性や状態を示すフラグを格納する変数なのですが、上位 3ビット(または 8ビット)だけは意味が違っていて(※1)、このページが所属するゾーンを表す数値が入っています。

なので flags >> NODEZONE_SHIFT によってページが何番目のゾーンに所属しているのかがわかります。例えば 1 だとしたら、ゾーンの配列 zone_table[1](グローバル変数)を見ればゾーンの情報が見られます(※2)。

(※1)不思議な設計に見えますが、むやみにメンバを増やすと struct page だけで相当量のメモリを圧迫(struct page はページフレームの数だけ存在する)してしまいます。

(※2)最近の Linux ではゾーンの一覧(zone_table)はグローバル配列ではありません。struct pglist_data という構造体(ゾーンが必要なら node_data というグローバル配列(アーキテクチャ依存)、ゾーンが不要なら contig_page_data という変数)経由でゾーンを見るようになっています。ゾーンが要らないというアーキテクチャを考慮したのでしょう。

ページディスクリプタ&ゾーン -> ページフレーム

長くなってきましたが、本題のページフレームの求め方に行きます。先ほど苦労して求めたゾーンには zone_mem_map というメンバが居て、ゾーンに属する struct page の一覧を持っています(※3)。


ゾーンの zone_mem_map のイメージ

上の絵で注目して欲しいのは zone_mem_map と、ページディスクリプタのポインタ(p とします)がわかれば、zone_mem_map の何番目に p が存在しているかわかるということです。上の絵では 5番目に位置しています。

薄い水色の四角内で具体的な数値(数値は適当ですが)を当てはめて p のアドレスから zone_mem_map のアドレスを引くことで、p が zone_mem_map の何番目にいるか求められる様子を示しています。


ページフレームを求める

これで struct page がゾーンの先頭から何番目のページなのかがわかりました。あとはページフレームを求めるだけです。ゾーンの構造体のメンバ zone_start_pfn がゾーンの開始ページフレーム番号を表しているので、そこへ先ほどの数字(5)を足します。

これにて struct page と対応するページフレームが求められました。

もし物理アドレスに興味があるのならば、ページフレームの番号にページフレームのサイズ(普通は 4KB のはず)を掛けてあげればよいです。
高位メモリや非連続なメモリモデルを持つアーキテクチャだと、単純に掛けるだけではダメかもしれません。

(※3)最近の Linux にはありません。恐らく zone_pgdat->node_mem_map が等価だと思われます。たぶん…。

[編集者: すずき]
[更新: 2008年 5月 14日 03:46]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

正方形だって?

所属していた研究室の Skepe チャットで、変なキーボードの話をしていました。聞けばほぼ正方形のスペースキーを搭載した変なキーボードがあると言うではないですか。写真も見せてもらいましたが、本当に正方形です。変なの!

確かに正方形だ

…やややや、まてよ?このキーボードどこかで見たことないか?と思い、会社のメインキーボード(DELL SK-8135 日本語配列)を見たら、スペースキーが正方形じゃないですか…。そりゃ見たことあるわけだよ、既に使ってたんだもん。

見た目はかなり変テコですが、使い心地は普通です。スペースキーが小さい分、微妙にデカい無変換キー(普通は Alt より細い)を誤打するくらいで、すぐに慣れてしまいます。

このキーボードのおかげなのか、家のキーボードでスペースキーを叩くときもキー一つ分(幅としては SK-8135 の無変換キー分くらい)を無意識に避けて押しています。

今回の日記を書いているときに初めて気づいたので、いつからこうなってたのかはわかりませんけども。

実際

ぜひ皆様にどんなキーボードか見ていただきたくて、型番で Google 検索したらこんな写真をブログに貼っている人がいました。

うは、まさにこれだ。スペースキーが正方形なのさ。

[編集者: すずき]
[更新: 2008年 5月 18日 11:23]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

使い切るぞ

今週一週間で、月の残業時間の半分を使ってしまった。またか、またなのか!

付け方を控えめにしてるつもりなのにねえ…。

[編集者: すずき]
[更新: 2008年 5月 18日 11:24]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

過去を改竄

ご指摘のあった 5月7日の日記を大幅改訂しました。hdk 氏、ありがとう。

詳しくない分野に踏み込んだので間違ってるかも知れませんが、そんときゃそんときだ。うん。

[編集者: すずき]
[更新: 2008年 5月 18日 11:26]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

窃盗は犯罪です

グリーンピースがまた犯罪行為してます。目立とうとしすぎて犯罪団体になっています。さすがに拉致、放火、殺人はやらないと信じたいですけど…。とにかく捕鯨船乗組員の安全を祈るばかりです。

そういえばグリーンピース・ジャパンのページを見ると、
Q. 鹿やカンガルーのように鯨も間引くという考えはないのか。
A. 鹿やカンガルーは「捕食される側」の動物だから、間引かれるべき。鯨は「捕食する側」だから間引くのはおかしい。
という問答があります。つまり鹿やカンガルーは多すぎだから逝って良しってことで FA らしい。これが環境保護か。

捕鯨相手はおいしい

窃盗までして捕鯨を責める暇と金と時間があるなら、
環境を蘇らせる技術の研究所を世界各地の大学に作って、全面バックアップしました!!
とか、
ど田舎の土地を日本の国土面積の数倍規模でがっつり買い取って、全部環境保護区にしました!!
こんなことをやって欲しいです。一面にこんな見出しが躍ってたら痺れます。

グリーンピースには世界各地の企業、財団からの大量の寄付(うちは環境に配慮してますよ、という姿勢のため)で潤ってるはずなので、資金はあると思います。が、残念ながら、どんなに資金があってもやらないでしょう。グリーンピースがスポンサーを取り続けるには、とにかく目立つしかありませんから、結局は環境なんか二の次で「目立つ(つまり儲かる)こと」を選ぶのです。

また、スポンサー企業を敵に回すような活動はできません。グリーンピース以外にも環境団体はいくらでもありますから、そちらに流れられたら一巻の終わりです。
例えば石油を消費すると CO2 が増えて環境に悪いです。しかし石油製品の不買運動なんて運動はさっぱり見かけません。だってそんなことしたら金づ…じゃなかった、石油関連企業からそっぽ向かれますから。

その点、捕鯨反対なら心配ありません。鯨を食べる国は圧倒的に少なく反感を買いませんし、大きな生き物を殺す抵抗感にも訴えられます。さらに日本船が相手なら超ラッキー!機関砲かロケットランチャーぶちこまれるまで反撃しない国ですからね。

カモがネギ背負って鍋担いでガスコンロとボンベにマッチまで持ってるんですから、おいしくいただかない理由はありません。というわけで捕鯨反対はやめられない止まらないのです。

[編集者: すずき]
[更新: 2008年 5月 20日 01:59]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

大嘘ついてた

唐突に気づいたのですが、クラーク像は「札幌じゃなくて北広島にある。」って、色んな人に吹聴した気がする。壮絶な嘘です。クラーク像はどちらも(※1)ちゃんと札幌市にあります。嘘を教えてしまった方々には深くお詫び致します。

無知も良いところでした。今度実家に帰ったとき、ちゃんと見てきた方が良いですかねえ…。

(※1)胸像と全身像があります。胸像は北海道大学(札幌キャンパス、札幌市北区北 8条〜24条)に、全身像は羊ヶ丘展望台(北海道札幌市豊平区羊ヶ丘 1番地)に建っています。

北広島市とクラーク博士

北広島市と勘違いしていた理由も調べました。クラーク博士がアメリカに帰るとき「Boys be ambitious …」と言って去った有名なエピソード、この舞台が現在の北広島市にあるのです。像と Boys be ambitious の話とがごっちゃになったようです。

ついでに例のフレーズは「Boys, be ambitious like this old man.」(小供等よ、此老人の如く大望にあれ。)と続く(※2)ことも知りました。

クラーク博士ってばまるで映画の主人公のようですが、歴史が美化されるのはお約束ですから怒っても仕方ないのさ。

(※2)英文および訳文は北海道大学付属図書館 W.S.クラーク博士関係文献目録の一部である、こちらのページから引用しました。

[編集者: すずき]
[更新: 2008年 5月 26日 00:46]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

そしてカツラになる

知り合いに小泉という名字の人が居ます。最近は毎日と言って良いほど、彼の名を思い出します。

といっても意味深なことはなくて、通勤中に電車の窓から「こいずみがわ」と平仮名で書いた看板が見えるというだけです。位置は島本〜長岡京の間、JR 京都線の北側(京都方面を向いて左手)にあります。川の脇にある緑色の看板です。

JR 京都線はさほど混まないので、気づけば毎日同じような位置に立ち、毎日同じような景色を見るようになっていた、ってなわけです。明日もまた同じように「こいずみがわ」を見るでしょう。

小泉川の写真でも撮って、その小泉君に見せたら面白いかなあ?と思ってたら、なんと既にこのページで上流〜中流〜下流(桂川と合流)まで、写真付きで詳しく紹介されていました。

うむむ…。世の中は広いんだぜ…。

[編集者: すずき]
[更新: 2008年 5月 25日 23:24]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

給料日、定時退社

社会人 2年生になって、基本給がレベルアップしました。しかし前年度より手取りが下がります(来月から住民税を取られる)。

今年の住民税の所得割額は「昨年の総所得」から決まります。つまり今年の所得に対してかかる住民税は、来年納めるわけです。実に 1年も時間差をつけて攻撃(納税)されます。

サラリーマンはあまり問題ないかもしれませんが、仕事を変えるなど所得が大きく変化するとき、臨時で大きな収入があった年などは、住民税のことを覚えておかないと、翌年の時間差攻撃でひどい目にあうかも…。

なぜ出てはいけない

阪急のドア横には「非常時に引くとドアが開きます」と注意書きされた箱があります。緊急時、すぐさま車両の外に避難しなければならない時に使います。

で、少し気になったのは「地下鉄内では使わないでください」という注意書きです。注意書きには残念ながら詳細な理由は書いていません。地下鉄のトンネルに出ると何か問題が起きるのだろうか?

地下鉄で感電する

私が思い当たる理由は給電方式の差です。地下鉄は地上の電車のように上から給電するタイプ(架線給電方式)と、レール近くの電線から給電するタイプ(第三軌条給電方式)があります。第三軌条給電の場合、トンネルへ下手に降りて電線(600V〜 くらい)に触れようものなら感電死します。

阪急は架線給電だから阪急が乗り入れる地下鉄も架線給電でないと走れません。架線給電なら、トンネル内に出ても危険はないはずです。しかし大阪市営地下鉄は第三軌条給電が多いらしく、阪急の時と同じノリで地下鉄から降りられると危ないので、全面禁止にしたのでしょう。

お陰で乗客は降りて良いトンネルにも降りられません。阪急もその辺は理解していると思いますが、乗客への説明&周知徹底する面倒くささには勝てないのでしょう。

[編集者: すずき]
[更新: 2008年 5月 26日 00:44]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

絶景かな?かな?

同期の皆さんとともに天橋立(京都府宮津市)に行ってきました。丹後の天橋立(京都府)、安芸の宮島(広島県)、陸奥の松島(宮城県)が日本三景と言われています。


日本三景碑

天橋立は海流によって砂が運ばれ堆積した地形です。くちばしのような形状が多いことから、砂嘴(さし、砂のくちばし)と呼ぶそうですが、天橋立のように成長して対岸にくっついた場合は砂州(さす)と呼ぶそうです。

地理の話はそのくらいにして、まずは南側から対岸へ向けて、松林を北上しました。晴れていればとても素敵な散歩道だったでしょう。今日は雨のせいで何も見えません。


霞む対岸、怪しい雲行き、不安な僕ら

松林は軽く 4km ほど続きます。景色がずっと同じで写真の撮りがいがありません。困ったもんです。

観光協会も気づいているのか、松林の退屈さをなんとかしようと道ばたにアームストロング砲を置いたり、変わった形の松に名前を付け(夫婦松など)たり、地元の伝承を事細かに語る看板を立てたりと、頑張ってます。


斜めってる松

が、その努力も虚しく 2km ほど行った地点でマンネリ感に満ちてきます。あとは 小 1時間ずっと同じ景色、雨も相まって正直きついです。

傘を差していたのに傘から雨がしみ出していて肩から腕までびしょぬれ。さらにイラつくことに傘は新品、しかも 300円よ?土産屋で買ったのが良くなかったな。素直に友達の折りたたみ傘を借りれば良かったと何度も後悔した。


橋立明神、海神を祭っているらしい

途中にあった神社が妙に金持ちです。建物はピカピカですし、手水舎にセンサーがついていて近づくと自動で出る、などという成金な仕掛けがありました。仕掛けが面白かったので動画で撮りましたが、私のキモい話声が際限なく入ってたので公開はやめときます。


籠神社(このじんじゃ)

山の上からなら見えるだろうと一縷の希望にすがり、ロープウェーに乗り、展望台へ。…うむ、空も海も橋もへったくれもない。なにも見えん。

近くに居たおばちゃん達と「一瞬でも良いから晴れないかねえ…。」なんて話しつつ、霧が晴れるのを待ちましたが晴れる気配なし。悲しいけど風邪を引く前に撤退。


展望台にある股のぞきポイント


展望台より天橋立を望む?

一番マシな写真がこれです。肉眼でもこんなもんでした。残念。チャンスがあればもう一回行くべきだな。

[編集者: すずき]
[更新: 2008年 6月 12日 00:10]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

北野天満宮

大下さんと北野天満宮(京都府京都市上京区)の骨董市に行きました。骨董市といっても特別なことは何もなくて、出店とフリーマーケットが混ざったお祭りみたいなもんです。

北野天満宮に来たのは初めてだったので、ついでに写真を撮りながら歩きました。


北野天満宮、楼門

境内にも人が一杯。建物の中でご祈祷をやっていました。祈祷料は数千円と書いてありました。「面白そうだからやろう」と大下さんを誘ったのですが、高いから嫌って言われた…あっそ…。一人でやってもなんか虚しそうだよなあ。


北野天満宮、中門(三光門)

店を一通り見たら疲れてしまった。社会人になろうとも体力のなさは変わらないのである。

おやつでも食べようかってことで中村軒(京都府京都市西京区)に行きました。桂離宮の近くにあります。かき氷が有名なお店なのだとか。


中村軒のかき氷(奥)、おうす(抹茶のこと、左)、白きんつば(手前)

大下さんが何度もここのかき氷はおいしいんです!と言ってましたが、正直かき氷なんてどれも大差ないと思ってました。しかし食べてみると違うもんですね。

いわゆるかき氷シロップではなくて、生の苺をすりつぶして作ったソースがかかっているのです。うまうま。

[編集者: すずき]
[更新: 2008年 6月 13日 00:42]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

金曜は寿司の日

同期の Sena さんと寿司を食いに行きました。というか今更書かなくても毎週行ってますけど…。Sena さんは、寿司ばっか食ってる私に、飽きずによく付き合ってくれてありがたいです。

富田駅の近くにある権太呂寿司です。回らない寿司屋だけど 2貫で 126円(税込)と、値段は回転寿司並のリーズナブルさが良いのです。

最近はビントロばかり食ってます。あっさりなのかこってりなのか良くわからないこの感じが、何とも言えないぜ。

[編集者: すずき]
[更新: 2008年 6月 12日 23:25]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

さらに延滞

先日、同室の隣人から DVD 返しておいてくださいな、と頼まれました。延滞してるから後で払います、よろしく〜と、彼は再び岡山へ旅立って行きました。いつも大変そうだなあ…。

で、その DVD は本来昨日返すべきだったのですが、中の映画(ボーン・アルティメイタム)が気になって見てたら閉店時間を過ぎてしまった。余計に延滞してしまったぞ。

今日返したら 4日延滞と言われ 1,200円も取られた。延滞料金って高いのな…。

[編集者: すずき]
[更新: 2008年 6月 12日 23:34]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報