50 回目の献血をした

今さらだけど、僕はプログラミング以外のことは何もできないどうしようもない人なので、せめて人の役に立ちたいと思って定期的に献血をしてる。

少なくとも僕は、多少血を抜いたくらいでもぴんぴんしていてタフで平気なので、積極的にというかむしろ最近は常習的に献血をしてる。そしてついに今日、献血の累計回数が 50 回目になってしまった。

実は、49 回目の献血のとき、いつも通りにナースさんが献血用の注射針を刺すとき、誤って針を血管の奥の壁か何かに刺してしまったみたいで、怖くなってしばらく行くのをやめてた。
針を刺した後、「指先にピリッと感じるような痛みはありませんでしたか?」って聞かれるのがたぶんマニュアルなんだけど、この時は腕全体に衝撃的な痛みがして、軽く気を失ったし、少しだけ内出血した。

でも前回の出来事はあくまで偶然だし、問診の医者も「次から大丈夫!」だというので、勇気を振り絞って 50 回目の献血に行った。

実際のところ、博多とか新宿、秋葉原に出かけた時、時間潰しや休憩のためスタバやネカフェに行く代わりに、献血ルームを「無料睡眠所 兼 無料ジュース飲み放題 兼 無料映画鑑賞 兼 無料マンガ&雑誌読み放題 さらにおみやげがもらえる注射ルーム」、として利用できて非常に便利だし、血液検査の結果が送られてくるので、ALT 値が上昇して脂物を摂りすぎとか、γ-GTP が基準値を超えてて酒飲みすぎだ、とか健康状態がわかる。このように、Web 上で数値を記録しておいてグラフで見ると非常にわかりやすい。
(ただし、旅行先での献血は帰宅途中に倒れてしまった場合のリスクもあるので、自信のある人以外は控えたほうがよい、らしい。)

つまり、そこまでして献血に行く理由はただ単に善意だけでなく、献血にはそれ相応以上のサービスもあるからなのではないかな、と。
体力には個人差があるので無理してまで献血する必要はないけど、健康すぎる人はぜひ献血を。

blooddonation.jpg
「50 回がんばったで賞」で高級そうな緑色のグラスをもらったけど使い道がわからない。粗品でじゃがりことハミガキをもらった。(ハミガキは写ってない)

P.S.
ブログが mixi 日記と連動しているせいか、「カタカナと英語ばかりでキモい」とか「変態」とかいろいろ言われて困ったので、技術メモな内容は今後、はてなダイアリーの「CMOSにっき」に書きます。

Vistumbler の日本語化パッチを作ったよ

追記
Vistumbler 9.0 以降には、日本語パックが含まれています。
設定の仕方はこちら → Vistumbler を日本語化する方法 - CMOSにっき

先日インストールした、Vista 用無線 LAN 検出ソフトの Vistumbler がうまく動作してくれないので、おかしいと思って調べてた。

Netsh コマンドの結果から取り込む部分のパターンマッチ用の検索ワードが英語のままになっているのが原因で動作しないことがわかったので、日本語 Windows で動作するように検索ワードを日本語仕様に変更しておいた。
その結果、シグナルの強さやチャネル、認証方式などあらゆるデータを取り込めるようになった。

検索ワードが入っているファイルと、表示用の言語ファイルが一緒になっていたので、ついでに英語の表記を日本語に翻訳して言語パッチとして Vistumbler のフォーラムにアップしておいた。以下からダウンロードできる。
TechIdiots Forum • View topic - Japanese

日本語化の方法は、C:\Program Files\Vistumbler\Languages の中に、ダウンロードした Japanese.ini を保存。
設定→言語の設定 (Settings→Language) で言語を Japanese に設定すれば OK。
出てこない場合は、下のフォームで Japanese.ini を読み込ませれば OK。


噂のアイコンをアイコンエディタの IcoFX で開いてみた。こんな感じ。

vistumbler-icon.png

一番小さいのはアイコン自体が変わってるな。

追記 (2008.10.17)
開発者の ACalcutt 氏からリプライが来た
SF の SVN にアップされてたので、次のリリースのときには日本語に対応されると思う。

「Vistumbler」で Vista から無線 LAN の詳細な状態を確認する

追記 (2008.10.14)
チャネルや強度が正しく表示されない不具合は日本語の言語パッチをインストールすると治ります。
Vistumbler の日本語化パッチを作ったよ | BlueSky Lab.

3 連休なのに、毎日研究室へ登校してる。
別に休日だからといって特別なことはなく、自動車も所有していないし、彼女もいないし、それ以前にしなくちゃいけないことは山ほどある。そもそも毎日が連休かといえば、それも若干うなずけなくもないので、そんなことはわざわざ気にしない。


それで今日は、某研究で使う某組み込み機器の某 Wi-Fi 機能の検証をしてる。
周囲にある AP の詳細な状態を確認するため、ノート PC に無線 LAN 調査ツールの Network Stumbler をインストールしたけど、Vista だと 「No APs Active」と表示されて、無線 LAN の検知ができない。

開発元のサイト NetStumbler.com を見たところ、2007 年 12 月からサイトの更新が止まっており、どうやら Windows Vista には対応しておらず、対応するつもりもなさそうなので、代わりに Vistumbler (ビスタンブラー?) というオープンソースのフリーウェアを使ってみた。

最新版の 8.1 をダウンロードして解凍したら、AVG 君が「ウイルスが検出されました」と警告していて、いきなり不安なので、SourceForge.net のプロジェクトページから、ひとつ古いバージョンの 8.0 を探してきてダウンロードしたところ、特に警告は出なかったのでたぶん大丈夫。

「Vistumbler8.zip」がインストーラなし版で、「VistumblerInstaller8.exe」がインストーラ付き版になっている。試してみるだけなら、インストーラなし版で問題ない。

Vistumbler を起動し、左上の「Scan APs」を押すと、ちゃんと AP を認識した。

ざっと気づいた点は、
・インターフェースが緑色で慣れない
・SSID と MAC アドレス、製造元、強度 (0%か100%) くらいしか表示してくれない
・製造元も Buffalo や NETGEAR などは表示されるけど、Planex などは Unknown になる
・せめてチャネルとかも表示できたらいいと思う
・グラフが全く表示されない
・GPS と同期がとれるっぽい
・日本語がないので英語がわからないと不便かも

アイコンは大きいままだとゴキブリみたいですごくキモいけど、小さくするとウサギさんのように非常にかわいくなるので、もし気に入ったら、キーホルダーやTシャツ、自動車のバンパーに貼り付けるステッカーなどを販売しているので、購入すればいいと思う。

Vistumbler-ss.png


ちなみに、ソフトなど使うほどでもない簡易的なチェックならば、コマンドプロンプトから、次のようにコマンドを入力すればよい。

C:\Users\Owner>netsh wlan show networks mode=bssid
インターフェイス名 : ワイヤレス ネットワーク接続 現在 6 のネットワークが表示されています。
SSID 1 : ***** ネットワークの種類 : インフラストラクチャ 認証 : 開く 暗号化 : WEP
...省略...

ただし、認証の「Open (オープン)」を「開く」、と Microsoft が誤訳している。

Ubuntu のデフォルトでは gcc でコンパイルできないので build-essential を入れておく

先日インストールした、Ubuntu Linux 8.04 LTS で gcc を使って C 言語のプログラムをコンパイルしようとしたら、「stdio.h がありません」、と出た。
いろいろ調べてみたら、デフォルトのインストールのままでは、libc が入っている build-essential のパッケージが入っていないそうなので、追加でインストールしておいた。

ubuntu@ubuntu:~$ gcc test.c
test.c:1:19: error: stdio.h: No such file or directory
test.c: In function 'main':
test.c:5: 警告: incompatible implicit declaration of built-in function 'printf'

エラーはこんな感じ。「stdio.h がありません」、「printf の宣言がわかりません」、などと言っている。
なので、sudo apt-get install build-essential とコマンドを打ってみる。

ubuntu@ubuntu:~$ sudo apt-get install build-essential
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  dpkg-dev g++ g++-4.2 libc6-dev libstdc++6-4.2-dev libtimedate-perl
  linux-libc-dev patch
提案パッケージ:
  debian-keyring g++-multilib g++-4.2-multilib gcc-4.2-doc libstdc++6-4.2-dbg
  glibc-doc manpages-dev libstdc++6-4.2-doc diff-doc
以下のパッケージが新たにインストールされます:
  build-essential dpkg-dev g++ g++-4.2 libc6-dev libstdc++6-4.2-dev
  libtimedate-perl linux-libc-dev patch
アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 3 個。
8701kB のアーカイブを取得する必要があります。
この操作後に追加で 34.3MB のディスク容量が消費されます。
続行しますか [Y/n]? Y

Y キーを押す

...省略
build-essential (11.3ubuntu1) を設定しています ...
ubuntu@ubuntu:~$ 

build-essential パッケージがインストールされた。

ubuntu@ubuntu:~$ gcc test.c
ubuntu@ubuntu:~$ ./a.out
hello
ubuntu@ubuntu:~$ 

コンパイル & プログラム実行に成功。

うまくネットワークからインストールできない場合 (LiveCD などの場合) は、このようになる。

ubuntu@ubuntu:~$ sudo apt-get install build-essential
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ build-essential が見つかりません

システム→システム管理→ソフトウェアソースで、「インターネットからダウンロード」の欄のいくつかにチェックが入っているか確認して、「閉じる」を押す。
アプリケーション→追加と削除で、アプリケーションのアップデートを行っておく。
端末を閉じて、もう一度、sudo apt-get install build-essential コマンドを実行すればインストールできた。


ここ 2~3 日で、研究室のマシンや、3年生の後輩のノート PC などがたくさん Ubuntu になったので楽しいな。

研究室で共用の Windows Vista ワークステーションでは Ubuntu の LiveCD が恐ろしく快適に動作するので、Vista を削除して Ubuntu をインストールしようかと思ったけど、絶対に怒られそうなのでやめた。

PostgreSQL で大文字を含む列名や表名を扱う SQL

某管理システムで使っているデータベースのメンテナンス作業中だけど、一般的に PostgreSQL では半角英数の小文字やアンダースコアのみで列や表の名前を付ける。
MySQL か何かから移行のときにそれを忘れてて、大文字が混じったままの列名がたくさんあって、UPDATE できなくて焦ったのでメモ。

そういうときは、列名や表名にダブルクォーテーション (") をつけておけばよい。
一方、イコールの右辺 (値) には、シングルクオーテーション (') を付ける。

具体的には、以下のようにすればよい。

SELECT * FROM user order BY "idNo";
SELECT * FROM item where "itemId">=2000 ORDER BY "itemNo";
INSERT INTO subjects VALUES (5,'タイトル'));
UPDATE subjects SET "subName"='件名' WHERE "subNo"=5;

PHP だとこんな感じ。

$query = "SELECT * FROM user order BY \"idNo\";";
$query = "SELECT * FROM item where \"itemId\">=2000 ORDER BY \"itemNo\";";
$query = "INSERT INTO subjects VALUES (5,'タイトル'));";
$query = "UPDATE subjects SET \"subName\"='件名' WHERE \"subNo\"=5;";

よく考えたら 3 番目のはあまり関係ないな。

ThinkPad X61 に Windows Vista と Ubuntu Linux をデュアルブートする

僕はあくまでも IT コンシェルジュという名の IT 雑用係なので、外出先で使用するノート PC は Windows も Linux も使えなくちゃいけない。 それでこの前購入した Lenovo ThinkPad X61 に Ubuntu Linux 8.04 LTS をデュアルブートしておいた。ThinkPad も Ubuntu も初めてなので試行錯誤したけど、以下の手順でできた。

ThinkPad はデフォルトで HDD の全領域を C ドライブに割り当てられていて非常に使いづらい上に、リカバリのメニューからも自由にパーティションを設定できなくて困っていたので、ついでにパーティションを設定し直して、Windows に D ドライブを作成しておいた。大まかには以下の流れでできる。


1. リカバリディスクを作成する
ThinkPad にはリカバリディスクが付属せず、HDD の隠し領域からリカバリできるようになっている。いまどきのノート PC なら当たり前だけど。
しかし、HDD のパーティションを壊した場合に備えて、念のためリカバリディスクを作成しておく。
Windows Vista を起動し、スタート→ すべてのプログラム → ThinkVantage → Create Recovey Media から作成できる。

リカバリディスクは 1 セットだけしか作成できないようになっているけど、HDD からリカバリを行えば、また作成できるようになる。Windows のレジストリのどこかをいじってもまた作成できるようになると思う。たぶん。
(Lenovo リカバリー・メディア を作成する方法 - ThinkPad / ThinkCentre - Japan)

2. Ubuntu Linux をインストール
Ubuntuの入手 からダウンロードした、ISO イメージを CD-R に書き込み、CD-R を入れて ThinkPad を起動する。
Windows からアプリケーションとして起動させるのではなく、 ブート時に起動プログラムを実行させるので注意。

3.パーティションの設定
次へ→次へ→次へ・・・で、パーティションの設定が行える。
ここの画面では、Windows のパーティションを自由に減らしたり増やしたりできる。Fedora や Vine Linux では Partition Magic などのソフトウェアを使用するか、Windows を新たにインストールし直す必要があったけど、Ubuntu のインストーラだけでデュアルブート用のパーティション構成がすべてできる。ここが Ubuntu の優秀なところ。

ここで、購入直後でない場合はリカバリするなどして、C ドライブの使用セクタを先頭に固めるのがミソ。
ついでに、Windows Vista の領域 (C ドライブ) をぐんと少なめにして、NTFS の領域をもうひとつ作れば、D ドライブの完成。さらに空いた領域に Ubuntu をインストールすればよい。ただ単に D ドライブを作りたいだけなら、パーティションを記録してからセットアップを中断すればよい(たぶん)。

先頭に見える約 4GB 分のボリュームは ThinkVantage。リカバリ用のデータなどが入っている領域なので消さないでおく。
4 つめ以降のボリュームは物理ボリュームではなく、論理ボリュームとして作成しないといけないので、注意する。

最終的に、このような構成になったはず。
・ThinkVantage 4GB
・C: 60GB
・D: 約65GB (C: に 60GB、Ubuntu に 20GB を割り当てた結果、余った分の容量)
・/ 18G
・swap 2G

4. その他インストール
IP アドレスの設定、アカウントやパスワードの設定など行う。Ubuntu には Fedora やCentOS と違って root がないので若干戸惑ったけど、「Ubuntu には root はない」そうなので、気にしなくてよい。
残りも「次へ」→「次へ」でサクサクと進める。

5. 完成
CD-ROM を取り除いて、ThinkPad を起動すると、Lenovo の起動画面の後に、ブートローダが起動し、
・Ubuntu (最新版のカーネル)
・Ubuntu (前の版のカーネル)
・Memtest86 (メモリの診断ツール)
・Windows Vista (ThinkVantage)
・通常の Windows Vista
の 5 つの起動メニューが現れる。

ブートローダのデフォルトが Ubuntu になっていて都合が悪いので、暇な時に Windows Vista に設定しなおしておく。

もちろん、デュアルブート後も 指紋センサーや ThinkVantage AccessConnentions などといった ThinkPad の偉大な恩恵を享受することができる。
Ubuntuでは、デフォルトのままでは指紋センサーは動作しないけど、無線 LAN などは問題なく使用できる。トラックポイントのスクロール機能が使えないのは残念だけど。


追記 (2008.10.09) ブートローダのデフォルトの OS を Windows Vista に設定する

sudo gedit /boot/grub/menu.lst

ブートローダ GRUB の設定ファイルを gedit で開く。vim でも構わない。

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not use 'savedefault' or your
# array will desync and will not let you boot your system.
default		5

default で始まる行に、ブートローダに表示されるの起動 OS 一覧で、デフォルトにしたい OS の順番を記入する。
0 から始まるので注意するほか、「Other operating systems:」の行もカウントするので注意する。

保存して、再起動して確認しておく。