Landscape トップページ | < 前の月 2006-01 2006-02 次の月 2006-03 >

Landscape - エンジニアのメモ 2006-02

月ごとの記事一覧
2007年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2006年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2005年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2004年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2003年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2002年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
日ごとのページ
2006-02/ 1日 2日 3日 4日 5日 6日 7日 8日 9日 10日 11日 12日 13日 14日 15日 16日 17日 18日 19日 20日 21日 22日 23日 24日 25日 26日 27日 28日

2006-02-28 (Tue)

* リスのシルエットが探している虫

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [おいでよ どうぶつの森]

私の一番のお気に入りのどうぶつであるリスのシルエット。ぱっちりした目と大きな丸いしっぽがラブリー。小学校の同級生にこんな雰囲気の子がいたなあ。

ラブリーな外見に反して、性格は強気で高飛車だ。ただそれは、自分が女であることをを強く意識していることの表れでもある。「カシミアなんて、しょみんの あなたには しきいが たかいでしょ?」とか言われたこともあったけど、女はどうあるべきかを常に持ち続けている彼女は尊敬すべきところがあった。

そんなシルエットもときどきよくわからないことを言う。虫取り網を持ってソニック村を歩いていたシルエットが発した言葉がこれ。

あたし ゴキブリってムシを さがしてるの
あのかたち ブローチにしたら ステキだわ きっと

シルエット・・・本気で言ってるのか? セレブな女性の考えることはよくわからない。

2006-02-27 (Mon)

* シェルのパラメータ展開でスクリプト自身のファイル名を取得する

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [bash] [シェルスクリプト]

2006-02-22 に書いた「シェルスクリプト自身のファイル名を取得できる特殊変数 $0」についてメールで指摘を頂いた。ありがとうございます。

私はスラッシュなどのパス指定文字列を除去するために basename コマンドを使っていたのだが、そうしなくても済む方法があるとのこと。

http://sonic64.com/2006-02-22.html
で言及さている 「basename コマンドを使わなくても済む特殊変数」ですが、
echo "This script name is ${0##*/}" でお望みの動作になるはずです。

今回の例に限っては ${0#*/} でも良いですが、Full Path を指定して実行した場合に意図しない結果になると思われます。
man bash 内を ${parameter##word}で検索してみてください。

試してみると、確かに ${0##*/} でスクリプト自身の名前を取得できた。

#!/bin/sh

echo "This script name is $0"
echo "This script name is `basename $0`"

echo "This script name is ${0##*/}"
echo "This script name is ${0#*/}"

上記を get_script_name.sh という名前で保存し、相対パス指定で実行した結果。

$ ./get_script_name.sh
This script name is ./get_script_name.sh
This script name is get_script_name.sh
This script name is get_script_name.sh
This script name is get_script_name.sh.

1行目の $0 のみを指定したもの以外は、見事にファイル名を取得できている。
次に、フルパスでスクリプトファイルを指定して実行してみる。

$ /home/sonic64/tmp/get_script_name.sh
This script name is /home/sonic64/tmp/get_script_name.sh
This script name is get_script_name.sh
This script name is get_script_name.sh
This script name is home/sonic64/tmp/get_script_name.sh

指摘の通り、3行目の ${0##*/} は見事にファイル名だけを取得できているが、4行目に書いた ${0#*/} だと余計な文字が入ってしまっている。

- ${parameter##word} の意味を調べる

さて、${parameter##word} ってどういう意味だろう? man bash して ${parameter##word} を検索してみる。あった。

${parameter##word}

word が展開され、パス名展開の場合と同じようなパターンを作ります。このパターンが parameter の値の先頭部分とマッチする場合、展開して得られる値は parameter を展開した値から最短一致パターン (``#''の場合) または最長一致パターン (``##'' の場合) を取り除いたものになります。 parameter が @ または * である場合、パターンを削除する操作は全ての位置パラメータに順番に適用され、展開結果はリストとして得られます。 parameter が @ または * が添字になっている配列変数である場合、パターンを削除する操作は配列の全ての要素に順番に適用され、展開結果はリストとして得られます。

上記を一度読んでもすぐには理解できなかった。順番に読んでいく。

・word に指定されたものについて、パス名展開と同じような展開がなされてパターンが作られる。
・パターンが parameter の先頭とマッチする場合、そこからパターンを削除する。
・word の前が ## の場合は最長一致、# の場合は最短一致。

わかってきた。あとはパス名展開の定義を調べておこう。

パス名展開

* 空文字列を含む、任意の文字列にマッチします。

ということは、*/ は「空文字を含む任意の文字列にスラッシュが続く」という文字列に展開されるということか。で、その文字列が最長一致で parameter の先頭とマッチしたときに parameter から取り除かれるんだな。なるほど、やっとわかった。こういう意味だったのか。勉強になったなあ。

2006-02-24 (Fri)

* Gmail で一通もスパムがないと Hooray, no spam here!

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Google] [メール]

Gmail でスパムが振り分けられて格納されるディレクトリに一通もスパムがないと Hooray, no spam here! って言われる。

スパムも含めて大量のメールがディレクトリに存在している方が、大容量のメールボックスとスパムフィルタ搭載を謳う Gmail らしさがある。でも、「スパムないよ!」 と無邪気に喜んでいる Gmail はなんだかほほえましい。私はこの表現が好きで、ついついスパムディレクトリを空にしてメッセージを見たくなる。

Hooray って応援団の「ふれー、ふれー!」の「ふれー」なのか。「オーライ!」のことかと思ったよ。
辞書を引くまで知らなかったけど、「ふれー」って「ばんざーい」って意味なんだね。

2006-02-23 (Thu)

* 所得税の寄付金控除の適用下限が平成18年度税制改正で5000円に引き下げ

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [メモ]

平成18年1月17日に閣議決定された平成18年度税制改正の要綱を読んでいたら、寄付についての所得控除の金額が1万円から五千円に引き下げられたことに気づいた。

平成18年度税制改正の要綱(2/2)
http://www.mof.go.jp/seifuan18/zei001_a2.htm
2  寄付金控除の適用下限額を5千円(現行1万円)に引き下げる。

今までは以下計算のうちの少ない方を控除することができた。
・当該年の寄付金合計 - 10000円
・当該年の総所得額の30%

今後は以下のうち少ない方という算定方法になり、より少ない金額でも控除できるようになる。
・当該年の寄付金合計 - 5000円
・当該年の総所得額の30%

- 控除の対象となる寄付

やっぱり母校に寄付するのが一般的かな。あと、特定非営利活動法人 (NPO) になっている団体なども適用対象。国境なき医師団や赤十字とかユニセフなどが代表的だけど、ユーザーグループなどで NPO になってるのがあればそれに寄付するのもいい。日本PostgreSQLユーザ会などは NPO になったはず。FreeBSD とかはどうなってたかな? もっとも、先立つものがないんだけどね。

●一定の寄附金を支払ったとき(寄附金控除)
http://www.taxanser.nta.go.jp/1150.htm
2 特定寄附金の範囲
  特定寄附金とは、次のいずれかに当てはまるものをいいます。

(1) 国や地方公共団体に対する寄附金
(2) 学校法人、社会福祉法人などの特定の団体に対する寄附金
(3) 公益法人などに対するもので財務大臣の指定した寄附金
(4) 主務大臣の認定を受けた日の翌日から5年を経過していない特定公益信託の信託財産とするために金銭でする寄附金
(5) 特定非営利活動法人(NPO法人)のうち国税庁長官の承認を受けたものに対する寄附金(平成13年10月1日以後に支出されたものから適用されます。)
(6) 一定の政治献金

 ただし、学校の入学に関してするもの、政治資金規正法に違反するもの、寄附をした者に特別の利益が及ぶと認められるものは、特定寄附金にはなりません。

- 実際にどれくらい控除されるのか

そもそも控除といっても所得からの控除だから額は少ない。年間の寄付金の合計が10000円だとして、10000 - 5000 = 5000円を所得から控除できるが、所得税率10%の人だと500円しか税額が変わらない。まあ、寄付は控除だけを目的としてやるものじゃないからいいんだけどね。また、控除を受けるには年末調整ではなく確定申告が必要。

2006-02-22 (Wed)

* シェルスクリプト自身のファイル名を取得できる特殊変数 $0

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [bash] [シェルスクリプト]

パラメータ $0 でシェルスクリプト自身の名前を取得できる。

#!/bin/sh

echo "This script name is $0"
echo "This script name is `basename $0`"

上記スクリプトを get_script_name.sh というファイル名で保存し、実行。

$ ./get_script_name.sh

This script name is ./get_script_name.sh
This script name is get_script_name.sh

スクリプトの呼び出し方によってはパス指定文字列が入ってしまうので、二行目では basename コマンドでファイル名部分だけを取り出している。basename コマンドを使わなくても済む特殊変数って無いのかな? man bash してみたけど見つけられなかった。

追記。
2006-02-27 に「シェルのパラメータ展開でスクリプト自身のファイル名を取得する」という記事を書いた。
basename コマンドを使わなくても、${0##*/} でスクリプト自身の名前を取得できる。

2006-02-21 (Tue)

* Accept-Encoding に gzip を付けてないクライアントをリダイレクト

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Apache] [http] [sonic64.com]

アクセスログを見ていたら、503 Service Temporarily Unavailable が出ていることに気づいた。503 はサーバ側の都合でサービスができないことを意味する HTTP ステータスコード。要するに、503 が出ている間は当サイトにアクセスできなかったということだ。

ログによると、最近アクセスが多かったようで一日20GB を超える転送量が続いていた模様。中でも全記事全文入りの RSS である cl-full.xml の転送量が90%を占めていた。おそらくこれのせいでさくらインターネットの転送量制限を超えてしまい、503 となっていたのだろう。

cl-full.xml は過去の全記事全文入りで 4MB を超えるサイズだから、サイト全体の転送量が増えても仕方がないかもしれないけど、ちょっと多い感じがする。だれかの役に立つかもしれないから公開しているのでどんどん使ってもらって構わないのだが、サイトのサービスの妨げになるのは困る。仕方がないので制限をかけることにした。

- 制限をかける

2005-09-15 の「mod_rewrite でリクエストに応じて gzip 圧縮ファイルを返す」では、mod_gzip を 使えない当サイトの環境でも Accept-Encoding: gzip を送ってきているクライアントには gzip 圧縮したデータを返すようにした。今回はそれを一歩進めて、リクエストされたファイルが cl-full.xml でかつ Accept-Encoding: gzip がない場合、HTTP レスポンスコード 302 Moved Temporarily を返して、数十キロバイト程度でサイズの小さい cl.xml へリダイレクトする。

リクエストに Accept-Encoding: gzip がある場合は今まで通り gzip 圧縮した cl-full.xml を返す。

- Accept-Encoding に gzip を付けてないクライアントをリダイレクトする mod_rewrite の RewiteRule

単純にリダイレクトしてるだけ。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} cl-full\.xml$
RewriteCond %{HTTP:Accept-Encoding} !gzip
RewriteRule .+ http://sonic64.com/cl.xml [L,R]

リダイレクトせずに cl.xml の中身を返すようにすることもできるけど、「君はこっちのコンテンツを使ってね」というリダイレクトの意図が伝わりにくいので使わない。でも、それだったら Vary を付ける方がいいかなあ。

- HTTP トランザクションの中身を見て確認

2005-04-16 で書いた「Live Http headers - HTTP ヘッダ表示ツール」で HTTP トランザクションの中身を表示して確認する。

以下のように、 Accept-Encoding: gzip つきならそのままアクセス許可。

http://sonic64.com/cl-full.xml

GET /cl-full.xml HTTP/1.1
Host: sonic64.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://sonic64.com/
Pragma: no-cache
Cache-Control: no-cache

HTTP/1.x 200 OK
Date: Mon, 20 Feb 2006 04:43:35 GMT
Server: Apache/1.3.34 (Unix)
Last-Modified: Mon, 20 Feb 2006 02:33:38 GMT
Etag: "339758-fab0f-43ebfb82"
Accept-Ranges: bytes
Content-Length: 1026831
Keep-Alive: timeout=3, max=8
Connection: Keep-Alive
Content-Type: application/xml
Content-Encoding: gzip

以下のように、Accept-Encoding に gzip を付けてないクライアントは 302 を返して cl.xml へリダイレクト。
まず、Accept-Encoding に gzip なしのクライアントがリクエストしてくるとする。

GET /cl-full.xml HTTP/1.1
Host: sonic64.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://sonic64.com/
Pragma: no-cache
Cache-Control: no-cache

302 を返して cl.xml へリダイレクト。

HTTP/1.x 302 Found
Date: Mon, 20 Feb 2006 04:46:02 GMT
Server: Apache/1.3.34 (Unix)
Location: http://sonic64.com/cl.xml
Keep-Alive: timeout=3, max=7
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1

302 を受けたクライアントは cl.xml にリクエスト。

GET /cl.xml HTTP/1.1
Host: sonic64.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
If-Modified-Since: Mon, 20 Feb 2006 02:33:30 GMT
If-None-Match: "339172-24c4-43ebfb7a"

もちろん Accept-Encoding: gzip などはリクエストにないが、cl.xml はそういったリクエストの場合は圧縮していないコンテンツを返すだけなので、無事レスポンスが返される。

HTTP/1.x 304 Not Modified
Date: Mon, 20 Feb 2006 04:46:02 GMT
Server: Apache/1.3.34 (Unix)
Connection: Keep-Alive, Keep-Alive
Keep-Alive: timeout=3, max=6
Etag: "339172-24c4-43ebfb7a"

これでよしと。

2006-02-20 (Mon)

* ASP.NET で Trace が有効かどうか判定する

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net] [C#]

System.Web.HttpContext.Current.Trace.IsEnabled でトレース自体の有効・無効を判定できる。

- トレース自体が有効かどうかを判定する

ASP.NET にはトレース出力機能がある。prinf デバッグなどと違い、トレースの有効・無効を web.config 等の設定ファイルで一括変更できるため使い勝手がよい。

トレースがオフになっている場合はデータは画面などには出力されない。しかし、取得に時間がかかるデータなどの場合、出力だけでなくトレースに必要なデータのセットアップ自体をしないで欲しいときがある。

System.Web.HttpContext.Current.Trace.IsEnabled にトレース自体の有効・無効がセットされているので、これを判定して Trace を呼び分けてやればよい。

if (HttpContext.Current.Trace.IsEnabled) {
    Tarce.Warn(GetHeavyData());
}

もしくは、コンパイル時の条件変数を使う。ただ、当然ながら有効化にはコンパイルが必要で手間がかかる。 HttpContext.Current.Trace.IsEnabled の方が使い勝手が良い。

#if DEBUG
Tarce.Warn(GetHeavyData());
#endif

via: .NETエンタープライズWebアプリケーション開発技術大全 vol.3 ASP.NET応用 240ページ。

2006-02-16 (Thu)

* レジストリへの追加と削除をレジストリファイルからおこなう

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Windows]

Windows のレジストリに値を追加したり削除したいとき、regedit.exe から GUI で行う方法の他に、あらかじめ作っておいたレジストリファイルを結合するという方法がある。その方法についてメモ。

- レジストリファイルを使ったレジストリへの追加

追加のとき。

ファイルの先頭行には Windows Registry Editor Version 5.00 という文字列を入れておく。これがないとレジストリファイルとして認識されない。

あとは [] で追加したいキーを指定し、値を列挙するだけ。文字列型であればとくに面倒な型指定も不要だった。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Landscape]
"Domain"="sonic64.com"
"description"=hex(7):a8,30,f3,30,b8,30,cb,30,a2,30,6e,30,e1,30,e2,30,02,30,d7,\
  30,ed,30,b0,30,e9,30,df,30,f3,30,b0,30,01,30,cd,30,c3,30,c8,30,ef,30,fc,30,\
  af,30,01,30,c7,30,fc,30,bf,30,d9,30,fc,30,b9,30,01,30,4c,00,69,00,6e,00,75,\
  00,78,00,01,30,75,00,6e,00,69,00,78,00,01,30,b2,30,fc,30,e0,30,01,30,f3,97,\
  7d,69,01,30,2c,67,01,30,99,65,06,74,01,30,ca,8e,01,30,5d,30,6e,30,d6,4e,e5,\
  65,38,5e,6e,30,e1,30,e2,30,6a,30,69,30,02,30,00,00,00,00
"title"="Landscape - エンジニアのメモ"
"link"="http://sonic64.com/"

description は「複数行文字列値」のためエンコードされている。ちなみに、description に指定した文字列は「エンジニアのメモ。プログラミング、ネットワーク、データベース、Linux、unix、ゲーム、音楽、本、料理、車、その他日常のメモなど。」という当サイト Landscape の説明。

- レジストリファイルを使ったレジストリの削除

削除のとき。- をキーの先頭に付けるだけ。

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\Landscape]

削除の場合、サブディレクトリも再帰的に削除の対象となる。上記の場合、HKEY_CURRENT_USER\Software\Landscape 以下はすべて削除される。

2006-02-13 (Mon)

* ボクサーズロードのステータス表示コマンドと不老不死

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム]


プレイステーションのボクサー育成ゲーム「ボクサーズロード Boxer's Road」で、各種ステータスを表示させるコマンドと、主人公が不老不死となり年を取らなくなる誕生日のメモ。

- 不老不死

キャラクターメイキングで1977年9月20日を主人公の誕生日にすると、年を取らなくなる。加齢による能力値上昇の停止や衰えがなくなるので、ボクサーとして非常に有利。

- ステータス表示コマンド

以下はうろ覚え。ボクサーズロードは主人公をトレーニングして試合に出場させて戦うというゲームだが、自分がどれだけ強くなったかを数値で確認することができない。ただ、コマンドを使うとグラフである程度の成長度合いを確認することができた。グラフはファミ通か攻略本か何かで説明があったような気もするが、もう忘れてしまった。

ボクサーズロード ゲームレビュー
http://kakutei.cside.com/kakutei02.site/game/boxerslor.htm
ほかに、試合時に、パラメータや時間が表示出来るコマンドがあったのですが、どなたか知りませんか?(03.10.31)

実は、試合中にLRボタンを全て押しながら左+□、下+×、右+○、上+△の順に押すと残り時間と選手のデータが表示されます。あのパラメータが何を示すのか詳しいことはわかりませんが、上から2番目がダウンゲージで、これが0になるとダウンします。上から3番目がライフで、これが0になると立ち上がることができなくなります。一番下がラッシュスタミナです。

- ボクサーズロードはプレイステーション初期の名作

ボクサーズロードは弟と一緒にプレイしてたなあ。私がトレーニングメニュー作成やトレーニングなどのシミュレーション部分担当で、バーチャファイターなどの格闘ゲームが得意な弟が試合担当。

選手名は「空条承太郎」で、リングネームは当然「Star Platinium」(スタープラチナ) だった。二人して「プラチニウム」にしかみえないプラチナのスペルに違和感を覚えまくってたのが懐かしい。承太郎は非常に強かった。リーチも長いし、近距離パワー型でガンガン K.O. しまくるタイプのボクサーだった。さすがに時は止められなかったけど。彼は今でも弟のメモリーカードで眠ってるかも。

ボクサーズロードが発売された1995年は良いゲームがたくさん出た年で、本業も忙しいのと重なって大変だった。
風来のシレン (スーパーファミコン)、タクティクスオウガ(スーパーファミコン) バーチャファイター2 (セガサターン)、そしてこのボクサーズロード。本当にいいゲームばかりだ。

- ボクサーズロード2 ザ・リアル というゲームが PSP で出るらしい

ボクサーズロード2 ザ・リアルボクサーズロード2 ザ・リアル

アーテイン
発売日: 2006/09/28
Sony PSP

amazon で詳しく見る

PSP でボクサーズロード2 ザ・リアルというゲームが出るらしい。

以前「はじめの一歩」というゲームの中でボクサーズロードモードというのがあったようだが、今回はボクサーズロードの純粋な続編なのかな? 2006年春の発売ということなのでそろそろだ。続報待ちだな。

2006-02-10 (Fri)

* Visual Studio スタートページの既存のプロジェクトの表示件数を変える

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net] [C#]

Visual Studio スタートページには、作業したプロジェクトの履歴が表示される。過去のプロジェクトの環境をすぐに復元して作業を始められるので便利。ただ、デフォルトでは4件しか表示されない。これだと圧倒的に足りない。

プロジェクトのファイルはソースコード管理ツール VSS (Visual Source Safe) から取得しているし、その後のソースコード管理はソリューションエクスプローラに任せられるので、ローカルのどこに保存されたかなどはあまり気にしてない。

そのため、4件という履歴の保存件数を超えたプロジェクトを開こうとすると、プロジェクトのローカルのパスや名前を覚えていなければならないので時間がかかる。久しぶりに開くプロジェクトならなおさら。ブックマークしてるけど URL を知らないサイトを検索なしで探すような感じ。

「既存のプロジェクト」の表示件数を変えてもっと大量に表示したい。以下、Visual Studio .NET 2003 での設定方法。

- Visual Studio スタートページの既存のプロジェクトの表示件数を変える

「ツール (T)」 の「オプション (O)」 の「環境」ディレクトリの「全般」を開く。
以下を設定する。

最後に使用した一覧に表示する項目(&Y): 24 項目

99 を入れたら、以下のダイアログが出て拒否された。

Microsoft Development Environment

最後に使用した一覧には 1 - 24 項目まで含めることができます。

仕方ないので24で設定。ヘルプを読んだら以下のようにちゃんと書いてあった。

[最後に使用した一覧に表示する項目]

[ファイル] メニューに表示される、最近使ったプロジェクトとファイルの数をカスタマイズします。1 〜 24 の数値を入力します。既定は 4 です。このオプションを使用すると、最近使用したプロジェクトやファイルを簡単に表示できます。

99くらいは設定させてほしいな。こういうものは可能な限り保存しておくと後で便利だからね。2003-03-31 の「/etc/profile への設定内容」で書いたように、私はシェルのコマンドラインの履歴も10万件保存してる。あとでコマンドを再び使いたいときに非常に楽だ。ケータイの着信履歴もデフォルトで1000件くらい保存しておいてほしいと思う。見られたくないものがあるときは別だけど。

2006-02-09 (Thu)

* HTTP レスポンスヘッダの Apache バージョンを非表示にする

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Apache]

諸般の事情で、HTTP レスポンスの Server ヘッダなどの情報を最小限にしなければならなくなったので方法をメモ。

- HTTP レスポンスヘッダの Server ヘッダの情報を最小限にする

httpd.conf の ServerTokens を ProductOnly にすることで、HTTP レスポンスヘッダに含まれるのは Server: Apache だけになる。

ServerTokens ProductOnly

Apache Core Features Apache コア機能
http://httpd.apache.org/docs/1.3/mod/core.html

ServerTokens ディレクティブ

構文: ServerTokens Minimal|ProductOnly|OS|Full
デフォルト: ServerTokens Full
コンテキスト: サーバ設定ファイル
ステータス: core
互換性: ServerTokens は Apache 1.3 以降で利用可能です。 また、ProductOnly キーワードは Apache 1.3.12 以降で利用可能です。

このディレクティブは、クライアントに送り返す Server レスポンスヘッダ内に、サーバの一般的な OS 種別や、コンパイルされて組み込まれているモジュールの情報を 含めるかどうかを指定します。

ServerTokens Prod[uctOnly]
サーバは (例えば): Server: Apache といったように送ります。
ServerTokens Min[imal]
サーバは (例えば): Server: Apache/1.3.0 といったように送ります。
ServerTokens OS
サーバは (例えば): Server: Apache/1.3.0 (Unix) といったように送ります。
ServerTokens Full (もしくは未指定)
サーバは (例えば): Server: Apache/1.3.0 (Unix) PHP/3.0 MyMod/1.2 といったように送ります。
この設定はサーバ全体に適用され、 バーチャルホスト上で有効にしたり無効にしたりはできません。

- ServerSignature を Off にして Apache が生成したドキュメント中の情報も抑制

ServerSignature もあわせて Off に設定し、DirectoryIndex などに情報が出ないようにした。私の使っているマシンでは E-Mail がデフォルトで設定されていた。.htaccess などでも設定可能とのことだが、サーバ全体で表示をオフにしたいのでやはり httpd.conf で設定。

ServerSignature Off

ServerSignature ディレクティブ

構文: ServerSignature On|Off|EMail
デフォルト: ServerSignature Off
コンテキスト: サーバ設定ファイル、バーチャルホスト、ディレクトリ、.htaccess
ステータス: core
互換性: ServerSignature は Apache 1.3 以降で利用可能です。

ServerSignature ディレクティブは、サーバが生成するドキュメント (エラーメッセージ、mod_proxy における FTP のディレクトリリスト、 mod_info の出力、等々) の最下行に付与するフッタの設定を行ないます。 そのような、フッタ行を有効にしたい理由としては、 プロキシが複数連なっている場合に、ユーザはどのサーバが返した エラーメッセージかを知る手段がほとんど無いからです。
デフォルトである Off に設定をすると、エラーの際の行が抑制されます。 (そして、Apache-1.2 以前と互換の動作をします) On に設定した場合は、単にドキュメントの中に、 サーバのバージョン、稼動中のバーチャルホストの ServerName の書かれた行を追加し、 EMail にした場合はさらに参照されたドキュメントに対する ServerAdmin を指す "mailto:" が追加されます。

2つとも基本的なことだけど、こういう事こそメモしておくと役に立つことが多い。

2006-02-08 (Wed)

* HTML テーブルの枠を色つき表示するブックマークレット

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [JavaScript] [Bookmarklet] [HTML]

HTML Table の枠を色づけして表示してくれるブックマークレット。

HTML テーブルの枠を色つき表示

javascript:void(d=document); void(cs='http://sonic64.com/dat/tableborders.css'); void(d.g=d.getElementsByTagName);void(l='link');void(H=d.g('head').item(0)); void(c=(d.all)?c=d.all.tags(l):d.g(l)); with(c){for(i=0;i<length;i++){if(item(i).getAttribute('href')==cs)location.reload();}} void(L=d.createElement(l));void(L.s=L.setAttribute); void(L.s('rel','StyleSheet')); void(L.s('href',cs));void(H.appendChild(L));

使い方。
上記リンクを右クリックしてブックマークに入れる。
テーブルのあるページでブックマークを呼び出す。

IE6 でも Mozilla Firefox 1.0.7 でも動いた。Opera はどうだったろう? 当サイト Landscape は Table をほとんど使ってないので、他のページで試すと良い。

結構前から使っているのでどこで手に入れたかはもう覚えてないが、スクリプトから読み込むスタイルシート中に frogdesign.com の sam さん作成と書かれている。彼の作品ということか。自分の管理下に置いておきたいので、スタイルシートの読み込み先は sonic64.com に変更した。

2006-02-07 (Tue)

* VSS でチェックアウト中のファイルを再帰的に一覧表示する

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [VSS] [.net]

ソースコード管理ツール Visual Source Safe (VSS) で、チェックアウト中のファイルを再帰的に一覧表示する方法。

- VSS でチェックアウト中のファイルを再帰的に一覧表示する

Visual Source Safe 6.0d でのやりかた。

表示(V) の検索(S) のチェックアウト ユーザー名で検索(S) を選択。
以下のダイアログに対象ユーザーと表示範囲を設定する。

チェックアウト ユーザー

○ すべてのチェックアウト ファイル(A)
● 特定ユーザーのチェックアウト ファイル(F): [Landscape]

「特定ユーザーのチェックアウト ファイル」を選択する。ユーザーは自分以外でも指定可能。長期休暇に入る予定の人がチェックアウトしっぱなしにしているソースがないか確認するののにも使える。

検索範囲

○ 現在のプロジェクトのみを検索(C)
● 現在のプロジェクトとすべてのサブプロジェクトを検索(S)
○ すべてのプロジェクトを検索(P)

「現在のプロジェクトとすべてのサブプロジェクトを検索」を選択するのがポイント。そうすることで、選択しているディレクトリとそのサブディレクトリを再帰的に検索し、結果を表示してくれるので便利。

- 自分がどのファイルをチェックアウトしているかを把握できてないことが問題

CVS や Subversion では、いわゆる楽観的ロックが一般的。ソースの取得時にはとくにロックを行わず、チェックイン (コミット) 時に競合を検出する方法だ。これなら、自分がどのファイルをローカルに持ってきているかはとくに問題にならない。多数のメンバーが入れ替わり立ち替わり修正を加えていく開発スタイルなら、こちらの方が良いだろう。

しかし、少数の固定的なメンバーしかソースを修正しないなら、チェックアウト時に排他をかけるという、いわゆる悲観的ロックの方がわかりやすく安全だ。ただ、これを使うには、それぞれのメンバーで自分自身がチェックアウトしているファイルを常に把握している必要がある。チェックアウトしっぱなしになっているファイルがあると他のユーザがソースを修正できなくなるので、そのままでは開発に支障をきたすおそれがある。

なぜチェックアウトしっぱなにしてしまうかというと、自分がチェックアウトしていることを忘れてしまうからだ。複数のプロジェクトにまたがる複数のドキュメントを平行して修正していると、結局修正しなかったファイルのチェックアウトを取り消すのを忘れてしまったりする。

そういう意味で、VSS はもっとチェックアウト中のファイルを簡単に把握できるインターフェイスを用意してほしい。今回の方法で調べることはできるのだが、プロジェクトのツリーを選択する度に再帰的に検索を走らせているようで、動作が非常に遅い。ときどき確認するくらいなら良いのだが、常に把握するという要求は満たせない。

リポジトリをネットワーク上に置かなければもっと速いのかもしれないが、複数人で利用するソースコード管理サーバはネットワーク上に置きたい。

2006-02-06 (Mon)

* 上三川の らー麺バカ一代 大晟 (たいせい) が2月12日で一時休業に

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ラーメン] []

上三川 (かみのかわ) の「らー麺バカ一代 大晟 (たいせい)」が2006年2月12日の日曜日をもって一時休業するとのこと。

- 大晟 一時休業のお知らせの張り紙

久しぶりに大晟に行ってみると、カウンター席の前に以下の張り紙があった。

お客様へ

この度、「らー麺 バカ一代 大晟」は、二月十二日 (日) を最終営業日として、この地
での営業を一時休業することをお知らせします。

これからも、より精進し良き時に又、
再開できるよう頑張りたいと思います。

長い間、皆様にご贔屓頂きまして
誠に感謝申し上げます

ありがとうございました。

らー麺バカ一代 大晟 代表 ○○○○

句読点や改行位置は原文のまま。○○○○は店主の名前が入っていたが、ウェブ上で見かけたことはなかったので伏せた。検索してもヒットしなかったし。

閉店ではなく一時休業とあるが、再開の予定が明示されておらず、本当に再開するんだろうかとか、「この地での営業」という言葉があるから、もしかしてどこかに移転するのかとか、いろいろ疑問は尽きない。ただ、とにかく2月12日をもって「鶏油じゃい麺 白 一枚入り 煮卵つき」は食べられなくなるということだ。突き出しのあの漬け物も味わえなくなる。

- 大晟の休業の理由は?

休業の理由はなんだろう?

そういえば、大晟という名前になる前は「麺や 笑福」という名前だった。ご主人が体調を崩されたか怪我をしたとかで笑福は一時休業になり、その後大晟としてオープンしたという経緯があったはず。もう4年か5年くらい前のことなのであまり覚えていないが。

もしかしてそういう事情があるんじゃないかと思い、会計の時にめがねを掛けた男性の店員さんに「一時休業って、(従業員の) 皆さんのお体の加減でも悪いんですか?」と尋ねてみたが、「そういうわけじゃないんですが(笑)・・・」と返された。混んでいたので、これ以上質問を続けては仕事に障るかと思い、それ以上は聞かなかった。とりあえず「よかった・・・。病気の子供はいないんだ・・・。」と思っておくしかなさそうだ。

今日の大晟は混んでいた。大晟のファンにはすでに情報が出回っていたのか、今日の大晟は14:00 を回っていてもお客が途切れない。みんな残り少ない大晟を名残惜しんで来ているんだろうか。壬生のつるやが御幸方面に移転して営業を再開し、栃木のラーメン界に順風が吹き始めたところでこの知らせ。今回の件は非常に残念だが、再開を楽しみに待つしかない。

2006-02-05 (Sun)

* 自動で「一目で分かる ハードディスク故障確率 早見表」の計算をする HDD 故障確率推定器

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [PC]

「HDD 故障確率推定器」は、2006-02-03 の「一目で分かる ハードディスク故障確率 早見表」でおこなう計算を、フォームに入力するだけで自動でやってくれる。作成は「近況報告を兼ねた独り言」だ。ありがとうございます。

HDD 故障確率推定器
http://ema.fsr.jp/hdd/hdd.html

使い方は簡単で、ATA などの種類、温度、使用年数を選ぶだけ。自動的に計算して、MTBF と故障率を出してくれる。

- 本気で監視するなら S.M.A.R.T. 等を使う

一目で分かる ハードディスク故障確率 早見表 - 近況報告を兼ねた独り言 (2006-02-04)
http://ema.fsr.jp/20060204.html#p01
恐らく、S.M.A.R.T. の情報を使って HDD の状態を監視するソフト使う方が建設的でしょう。

本気でディスクの管理をやるならば、S.M.A.R.T. などを利用してモニタリングする方が確実だと私も考えています。定期的にデータをとり続けることができるのであれば、一時点の計算よりは精度は高くなります。おっしゃるとおり、HDD Health http://www.panterasoft.com/ や HDDLife http://www.hddlife.com/ 、その他マザーボード付属のツールなどで監視をするのが良いですね。

実際、データセンターに置いてあるサーバたちにはベンダー提供のハードウェア監視ツールをインストールしてありますし、異常があった場合には運用監視のシステムに警告が出るようになっています。

- 早見表の良いところは簡便さ

早見表の良いところは、対象マシンに監視ツールなどをインストールしなくても傾向がわかるということにあります。監視ツールをインストールしたくてもできないとか、使い方がわからないという人でも、一応の傾向がわかります。

早見表による計算結果を見て危機感を持ち、バックアップを取ったりディスクを定期的に予防交換するきっかけになればと考えています。当の私も、2006-02-03 で計算した結果によると故障確率は12%なので、容量追加をかねてそろそろディスクを増設しようかなあと思っています。

2006-02-04 (Sat)

* 八幡屋磯五郎の七味唐辛子が旨い

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: []

長野の八幡屋磯五郎 (やわたや いそごろう) の七味唐辛子が旨い。

八幡屋礒五郎
http://www.yawataya.co.jp/

八幡屋磯五郎は、長野にある七味唐辛子のお店。母がおみやげとして買ってきてくれた。

- 八幡屋磯五郎の七味唐辛子が旨い

磯五郎の七味唐辛子は香りが素晴らしい。最近はいろんな料理の香り付けに使っている。我が家では親しみを込めて、磯五郎とファーストネームで呼ぶ。

実家で食事をすると、ほぼ必ず母が漬け物を出してくれる。きゅうり、なす、にんじん、大根などいろいろあるが、なかでも特筆すべきは白菜漬けだ。磯五郎は母の白菜漬けとの相性が抜群にいい。「葉先三寸」と呼ばれる柔らかくジューシーな葉の部分も、甘みがある茎の部分も、磯五郎が風味をひきたててくれる。おかげでご飯がよく進む。

また、磯五郎はカレーのじゃがいもに振りかけても旨い。じゃがいもはスパイシーな味付けと相性がいいのだが、七味唐辛子とも良く合う。唐辛子と山椒の香りがいい。

- 八幡屋磯五郎の読み方は、やわたやいそごろう? やはたやいそごろう?

八幡屋磯五郎の読み方は「やわたやいそごろう」と「やはたやいそごろう」のどちらなんだろうか? 公式サイトの「八幡屋礒五郎の歴史」では「やはたやいそごろう」と表記しているが、ひらがなの表記ではなく発音を知りたい。

サイトを見ていくと、CM を公開していた。その CM ビデオクリップのナレーションでは「やわたやいそごろう」と発音している。「わ」でいいんだね。

- 八幡屋磯五郎公式サイトのインターネット通販で注文できるけど・・・

インターネット通販を使えば簡単に磯五郎を注文できる。しかし、それに頼ってしまっては食べることができたときの喜びが薄くなってしまう。こういう嗜好品は、おみやげでもらうとか、何か巡り合わせがあって買うことができたとか、そういった方法で手に入れた方がありがたみがある。潤沢に手に入らない方が、大事に押し頂くように食べるしね。

そういえば、八幡屋磯五郎の公式サイトでは「七味唐からし」と表記している。「しちみとうがらし」と濁った発音ではなく、「しちみとうからし」としている。公式にはそう呼ぶのか。まあ、私は濁った発音を使うけどね。

- 宇都宮に八幡屋磯五郎が来る

東武デパート宇都宮で2006年2月2日から2月7日まで開かれる「第1回 新潟・長野物産展」に八幡屋磯五郎が出店するとのこと。2月2日のオープニングサービスとして限定200個で七味唐辛子を売るそうだ。

初登場
長野 【八幡屋磯五郎】
七味 (17g)
※200個限り 360円
◎日本三大七味の一つ。善光寺門前で売られる名物です。

三大七味ってなんか大げさだな。まあ美味しいからいいか。母が買い物に行くと言っていたので、ついでに磯五郎を買ってくるように頼んだ。売り切れてないといいな。

追記。無事に2つ購入できた。これでしばらくは磯五郎を楽しめる。

2006-02-03 (Fri)

* 一目で分かる ハードディスク故障確率 早見表

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [PC] [2ch]

ハードディスクの故障確率を計算するための早見表が2ちゃんねるに投稿されていた。
ちなみに早見表の MTBF とは Mean Time Between Failures (平均故障間隔) の略で、故障発生までの時間の平均値のこと。

- 一目で分かるHDD故障確率 早見表

Athlon64 ムカウトコロ(`・ω・´)敵ナシ AMD雑談スレ258都市
http://pc7.2ch.net/test/read.cgi/jisaku/1133251695/707
707 :Socket774 [sage] :2005/12/02(金) 23:35:12 ID:pjeoc1vk
<一目で分かるHDD故障確率>

○HDDのMTBF(25℃時)
 2.5インチHDD      30万時間程度
 ATA/S-ATA HDD   40万〜60万時間程度
 SCSI HDD        100万時間程度
 企業向け高寿命HDD 100万〜140万時間程度

実際の使用温度が25℃超の場合、↑の値に対して以下の数値を掛ける
30℃:0.8 35℃:0.65 40℃:0.5 45℃:0.4 50℃:0.3 55℃:0.25 60℃:0.2

 使用 MTBF(万時間)
 期間  5  10  20  30  40  50  70  100

 1年 16%.  8%.  4%.  3%.  2%.  2%.  1%.  1%
 2年 30% 16%.  8%.  6%.  4%.  3%.  2%.  2%
 3年 41% 23% 12%.  8%.  6%.  5%.  4%.  3%
 4年 50% 30% 16% 11%.  8%.  7%.  5%.  3%
 5年 58% 35% 20% 14% 10%.  8%.  6%.  4%
 8年 75% 50% 30% 21% 16% 13% 10%.  7%
10年 83% 58% 35% 25% 20% 16% 12%.  8%

故障確率の求め方。
標準の MTBF に自分の使用環境の温度に応じた係数をかけ、自分の環境での MTBF を算出する。
早見表にあてはめ、算出した MTBF と使用期間に応じた故障確率を見つける。

例。
私の使っている 160GB の 3.5インチの ATA (IDE) のハードディスクの場合。

ATA のディスクの MTBF は40万から60万時間。
私の部屋は暑いし、PC は冷却性能よりも静音重視なので温度は35度とする。
35度の場合は 0.65 を掛けるので、40 * 0.65 = 26万時間。
使い始めて3年目なので、20万時間と3年目の交差点を見ると・・・ 故障確率は 12% となる。

うーん、どうなんだろう? バックアップはこまめにとろう、ってとこかな。というか、早見表と言ってる割には早見じゃないような気もするね。

追記。フォームに入力するだけで、上記の計算を自動でやってくれる「HDD 故障確率推定器」が公開された。この件は 2006-02-05 の「自動で「一目で分かる ハードディスク故障確率 早見表」の計算をする HDD 故障確率推定器」に書いた。

HDD 故障確率推定器
http://ema.fsr.jp/hdd/hdd.html

今回の計算方法では、温度が上がれば上がるほど係数が小さくなって故障確率が上がってる。係数の根拠がわからないけど、冷却が重要ってことだよね。そういえば、データセンターに置いてあるサーバなどは床から天井に向かってものすごい風を送って冷却してた。数年前に導入した、とある 7テラバイトの容量の SAN (Strage Area Network) 機器なんて、それでもかなりの熱気があって驚いた覚えがある。

2006-02-02 (Thu)

* C# では文字列の比較に Equals を使うな

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net] [C#]

C# では文字列の比較に Equals を使わない方がいい。== を使った方がコンパイラの型チェックの恩恵を受けられるし、間違いを少なくすることができる。

Equals を使うな。使う事を推奨するな。
http://www.ailight.jp/blog/kazuk/archive/2006/01/31/11043.as ...
Equals はタイプセーフではない。このため、型のエラーの発見が遅れる。

例:

int a;
string b;
bool result = a.Equals( b );

int a;
string b;
bool result = (a==b);    // CS0019: 演算子 '==' を 'int' と 'string' 型のオペランドに適用することはできません。

よっぽどの理由が無い限り == で比較せよ。

Visual Studio 2003 環境で試してみた。int 型の 0 と string 型の 0 を比較する。

int i = 0;
string s = "0";

Console.WriteLine(i.ToString() == s);
Console.WriteLine(string.Equals(i.ToString(), s));
Console.WriteLine(string.Equals(i, s));
Console.WriteLine(s.Equals(i));

実行結果。上記コードを書いた「プログラマ」としては、比較結果はすべて True になって欲しいのだが、そうなっていない。

True
True
False
False

string.Equals() メソッドにはオーバーロードがあり、string 型同士を比較するものと、Object 型として比較するものがある。Object 型同士の比較だと int 型のオブジェクトと string 型でのオブジェクトという違いがあるので false になってしまう。

これ、バグの元だなあ。Perl だったら型変換があっても気にしないけど、C# というせっかく型の恩恵を受けられる言語を使ってるんだから、最大限に活用した方がいい。

Equals の方が速いとのことだが、上記の動きを理解した上で、100万回のループの中などの速度が重要な部分で使うならいい。でも、日常的に Equals を使うのは避けた方が間違いを減らせる。「速いらしいから」という理由で Equals を常用していた後輩は、上記の動きを知らなかった。

2006-02-01 (Wed)

* おいでよ どうぶつの森の犬のジョンが風邪をひいた

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [おいでよ どうぶつの森]

犬のジョンは私のお気に入りの動物の一人。ちなみに、2005-12-23 「どうぶつクリーナーのラブラドールをもらった」でもらったラブラドールのジョンとは別人。ジョンはモノクロシリーズの家具を愛する優しい犬だ。口と目つきは悪いけど。

ジョンの家に遊びに行ってみると、気分が優れないことを表す渦巻きマークみたいなのと効果音が鳴っている。なんだろうと思って話しかけてみた。

ふるえが とまらねえよ

オレも とうとう ねんぐのおさめどきか・・・ノン

ジョンは「ノン」が口癖だ。フランス人か君は。まあいいや。季節から考えて、どうやらジョンは風邪を引いているらしい。ふるえがとまらねえって、なんか風邪じゃなくてやばいコトにでも手を出してるような感じだけど、寒がってる仕草もしてるし、風邪だよね。

薬をあげたいところだが、でも時刻はもう 00:58 でタヌキ商店は閉まっている。どうする? あ、確か家のクローゼットに薬をしまっておいたはず! 急いで取りに行く。あった。よし、これをジョンにあげよう。ダッシュでジョンの家に戻って薬を渡す。

・・・・・・

ふぅ・・・
ようやく すこし
おちついたぜ、ノン

ありがとな あくあ!
ノン!

よかった。ただ、薬をあげてもすぐに完治するわけじゃないし、しばらく様子見だね。おだいじに。

翌日、虫取り網を持って元気に歩いているジョンがいた。話しかけてみると、風邪はすっかり良くなったようだ。よかったね。

別れ際に、ジョンは私に自分の写真をプレゼントしてくれた。「オレだとおもって だいじにしてくれ」と言っている。これが噂の写真か。おいでよ どうぶつの森では、親友に自分の写真をプレゼントする習慣がある。つまり、ジョンは私を親友として認めてくれたようだ。いわゆるマブダチ。やったね。

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。