2008/12/25

健康で文化的な最低限度って?

生活保護の老齢加算と母子加算が廃止されるという事で裁判所の初判断が示されてニュースになっています。「健康で文化的な最低限度の生活」に対する不当判決というけれど、そもそもあまり「文化的」な生活とは何かという事を考えずに自分の生活が文化的なのかどうか分っていないので、権利を主張する人の声を聞いても心には響いてきません。

母子(父子)家庭に対する手当が必要な状況は当然あるでしょう。けれど老齢と母子とで状況のいろいろ異なるものを一緒にして裁判をする事の意味はよくわかりません。僕がみた時に「それまで持っていたものを取り上げられた者のエゴではなくて、真剣な訴えなんです」という見方をできなくしている理由の一つだろうと感じています。

そもそもあればあっただけ助かる援助というものの加減を計る事はとても難しいのではないでしょうか。しかも法律では困窮の程度に応じて支給するという事になっていますし、一言で生活保護といってもレベルというか内容が8種類に分かれているとか、調べないとよくわからない事がいろいろあります。金額だけをみるとけっこう良い手当が支給されているように思えますし。認められないのが問題、という事なのでしょうか。

ニュースで原告の人がなにか言っていたけれど、ぜんぜん響いてこなかったなぁ。本当に必要な人達に必要な保護が与えられる状況が必要なのに、そういった事に対する見識は何も得られないニュースを少し残念に思いました。
行政の貸し剥がし的な言動や議員による口利き受給とか、いろいろ問題のある生活保護については、もうちょっと高いところから議論して欲しいなぁ…。

2008/12/24

Xen上のdebianで使えるperl XML-RPCライブラリー

Ubuntuではなく、Xen上のDebianにapacheを入れてCGIでXML-RPCサービスを作ってみました。そこでクライアントをRuby/PHP/Perlで作ってみた時の感想です。

Rubyでは"xmlrpc/client"を使い、PHPではビルトインのxmlrpc_encode等とファイル関連関数のfile_get_contentsを使い実装してみました。
PHPは低レベルAPIな印象で、使い易くするためにはデータ変換などをあまり考えないで済むようなラッパーがあると便利そうでした。

さて困ったのはPerlでXML-RPCクライアントを作るために何を作ればいいのかという所です。CPANをみてもいくつか"XML", "RPC"というキーワードを持つものがあります。
UbuntuにActivePerlを入れてppmで"XML::RPC"を入れてみたものの、Debianでは適当なパッケージもなく"Frontier::Client"を使う事にしました。 導入自体はapt-getを使って"libfrontier-rpc-perl"パッケージを導入する事で使えるようになります。

$ sudo apt-get install libfrontier-rpc-perl

IBM DeveloperWorksの記事PerlでXML-RPCを始めよう 第1回:WebサービスにXML-RPCを使用するをみても"Frontier::Client"を使っているところをみると、これが妥当そうです。

この他にSOAP::Liteに入っているXMLRPC::Liteを使う方法も紹介ページが多いように感じましたが、好みの問題でしょうか。 元々SOAP::Liteを使って、SOAP1.2なサーバーとのやり取りが難しかったためにXML-RPCを使う事にしたので、個人的にはSOAP::Liteを使うのは避けてみました。SOAP::Liteはよく出来ているんですけどね。

2008/12/23

大麻の危険性

大麻を覚醒剤のイメージを持って扱うのはナンセンスだと思いますが、 貧者の煙草とはいっても、酒・煙草よりも安全という主張は比較する意味がないというか、観点をずらしていると感じます。

まぁ医療への応用という観点では国のコントロール下に置いても良いのかもしれませんが、一度流通してしまえば不必要な人達も乱用するようになるでしょう。

長期的には人間としての機能に影響を与えるのに、短期的な比較だけで大麻を擁護するかの発言には何となく違和感を感じています。アルコール依存よりは外部に対する攻撃的な反応は弱いのかもしれませんが…。

何にしても、あまりにも積極的な大麻擁護については、「それだけ大麻は危険なんだなぁ」という反面教師的な見方が適当と考えています。酒や煙草みたいに危険なものをこれ以上増やさなくても良いですよね…。

2008/12/18

逆チキンレースが生んだ日本の不況

日本の実態経済はそれほど悪くないと思っているんですが、株価の下落、急激な円高で資金繰りというか資産が目減りした銀行のみかけ上の経営環境が悪化しているのは確かで、これによって貸し渋りが発生するというひどい事になっている側面は確かにあるようです。

貸し渋りがなければ給与カットをする必要がなかった企業も中にはあると思うのですが、自己資本比率の維持が至上命題なのか、中小企業をいじめているとしか思えない現在の状況は他人を思いやるといった日本が本来持っている土壌が失なわれている様をみているようで悲しくなります。

もっとも企業側も安易にリストラを進めている感じはします。優秀な移民を受け入れるでもない日本の社会では、将来を見据えて人を育てる努力が必要だと思いますが、変なところがアメリカに似てきてしまっているようです。
株主のために会社はあるというけれど、所詮は社会のために存在を許されているものでしかありません。社会の中での立ち位置や将来という不確実なものを信じる事は許されず、短期的な株主の利益追求に巻き込まれてしまっている物がいえない会社という入れ物は不幸な存在なのかもしれません。

本来は他の見本となるはずの一流企業、銀行を筆頭に、みんなで逆チキンレースをやっているようです。

政治も行きすぎがないようにルール作る必要があるのに何もできていないし。

ただ終身雇用の実態だけが継続していて怠けている人が淘汰されない環境があるとすればそれは問題でしょう。必要なのはバランス感覚と実行力といったところでしょうか。
このような困難な状況でこそ経営者の真の力量(=バランス感覚+実行力)が問われているのだと思います。

2008/12/13

Inspiron 640mのHDDをHGST 7K320と交換する

120GBもあったのに足りなくなったので、ThinkPadに続きInspiron 640mのHDDをオリジナルのSeagate Moments 5400.3からHGST(旧IBM)7K320な320GB HDDに交換しました。

方法はThinkPadの時と同じでSelfimageを使いDrive全体(entire disk)のコピーをしています。HDDはUSB接続ができるケースを使いました。
しかし今回はDellさんがCドライブの後ろに2GBの領域をMediaDirect用に確保していたので、サクっと削除して「ディスクの管理」からCドライブの拡張を行なっています。

XPではできなかったと思いますが、今回はCドライブとして起動してからMediaDirect用領域の削除とCドライブのボリューム拡張を行ないました。 MediaDirect用の領域を復元しようか考えましたが、使っていないので止めました。
5400rpmでも十分だけれど、さすがに7200rpmな320GBにすると起動時に違いが体感できます。 実際は元々がSATA1.5Gですから、7K320のSATA3Gな性能を活かしてはいませんが十分でしょう。
次はSSDの平均容量が500GBぐらいになったら交換かなぁ…。 さて空いた場所にDB2 Express-CやらActiveStateのPerlやらPythonやらをインストールしてみましょう。

ちなみに後日CHKDSK(ボリュームのエラーチェック)を起動時にスケジュールしたところ、全てが終るのに土曜日の夕方から深夜まで6時間程度かかっています。

2008/12/05

子供たちから携帯電話を取り上げる意味
- Reference: http://book.jiji.com/kyouin/cgi-bin/edu.cgi?20081205-1

学校で携帯を使うのは問題だと思うし、ルールを決める事に反対はしない。
けれどこれは大人たちから子供たちへ「信用できないから、君たちから携帯を取り上げる」というメッセージを送っているように思えます。

わけの判らないものを遠ざけるのではなくて、引き換えに使い方をちゃんと教えるとか取引をしないとこれだけ普及している現状に似わないでしょう。

政治家たちは子供のためといって諸手を挙げて賛意を表明していますが、 本当に子供たちに必要なものはなんなのか、コストの低い対応(携帯禁止)によって得られるもの(なに?情操教育ってのは大人が賢いところを見せなきゃなんじゃない?)の品質などたかが知れている事を思いしるような気がします。

2008/11/25

AM2NF3-VSTAに8GBメモリを載せてみる

メモリメーカーの供給過剰が原因なのか、2GBx2メモリパッケージの値段が非常に安くなってきたので、昔に揃えた4GB分のメモリを捨てて新たに2GBモジュールを4枚購入しました。
昔ならバルクだったけれど、値段も安いのでUMAXのPulsar DCDDR2-4GB-800を2セット買いました。載せるマザーボードはずっと使っているAM2NF3-VSTAというAGPなビデオカードが使えるASRockの変則的なものです。
ちなみにビデオカードはNVIDIA Quadro NVS 280を使っています。

  • CPU: AMD Phenom 9350e
  • Memory: UMAX Pulsar DCDDR2-4GB-800 (2GB Modulex4)
  • Mother Board: AM2NF3-VSTA
  • HDD: HGST HDS721616PLA380 (160G SATAII300 7200) (x4 RAID5)
  • OS: Ubuntu 8.04 amd64 Edition

普通に載せるだけで動くかと思いきや、DDR2-533として認識されたあげくにUbuntu 8.04がカーネルパニックを起したため、手動でDDR2-800を指定しています。
カーネルパニックは偶然だったかもしれませんが、いずれにしてもちゃんと動いています。 DDR2-800だから早くなったという気はしないけれど、ファイルキャッシュに4GBほど収まっている現状でキャッシュからの読み出しが増えたせいか、きびきび動き8GBにして良かったと思います。

2008/11/22

netbeans-6.5を試してみる

3連休だし、なんとなく出たばかりのNetBeans 6.5をUbuntu 8.04で試してみます。

まずは文字化けの対応

たぶん気をつけるのは、最新版のJDK 6を自力で展開して使っている場合にUbuntu 8.04上でそのまま実行すると日本語フォントが正しく表示されないという点です。 apt-getでsun-java6-jdkパッケージを導入している場合には、文字化けの問題はなくNetBeansのインストーラーが"/usr/lib/jvm/java-6-sun"をJDKのトップディレクトリとして認識してくれます。導入していなければバージョンは古いですが、導入してしまいましょう。

$ sudo apt-get install sun-java6-jdk sun-java6-fonts
インストーラーは正しく動きますが、この中で通常使用するJDKとしてダウンロードした最新版のJDK 6のトップディレクトリを指定すると、~/netbeans-6.5/bin/netbeansを実行した時に文字化けしてしまうという現象に遭遇します。

Javaでのフォントの指定は、jre/lib/fontconfig.propertiesにあります。 今回はUbuntuのパッケージに含まれる/etc/java-6-sun/fontconfig.propertiesファイルを流用させてもらいます。 自分で最新版のJDK 6を/usr/java/1.6.0ディレクトリに入れているので、次のような作業をしました。 もしまだ"sun-java6-jdk"パッケージを導入していない場合には、導入しましょう。

$ cd /usr/java/1.6.0/jre/lib
$ sudo rm fontconfig.properties
$ sudo ln -s /etc/java-6-sun/fontconfig.properties .
これで"~/netbeans-6.5/bin/netbeans"を実行すると、綺麗な日本語でIDEが表示されました。

続いてC++サンプルの高速道路シミュレータを試す

NetBeansはダウンロードする時に、一番サイズが大きい全部入っているものを選択したので、JRuby開発狙いでしたが、C++のサンプルを実行してみようと思いました。 転職する時にはC++でプログラムを書くはずだったのが、そんな事はまだ一度もしていなくて、けれどいつか必要になる時のために少し慣れておこうかなと思ったのでした。

さて、メニューから”新規プロジェクト”を選択すると、カテゴリ選択できますが、”サンプル”をみると各カテゴリに割と具体的な名前が並んでいます。 なんとなく”高速道路シミュレータ”を実行させてみようと考えました。 さっそく選択して、まずはビルドしてみます。 しかしエラーが…。

callbacks.cc:168: error: cast from ‘void*’ to ‘int’ loses precision
callbacks.ccファイルをみてみると、C++プログラムなのに普通に"gpointer user_data"で宣言されている変数がint型にキャスト((int) usre_data)されています。 うーん、README.txtファイルにはUbuntu 7.10で確認済みとあるので、g++のバージョンが違う事が原因のようです。O'REILLYのC++ランゲージクイックリファレンスによれば、C++では従来のC言語から引き継いだキャストの他にプログラマが意図を伝えるためのキャスト方法があります。
//int zone = ((int) user_data) - 1;
    int zone = reinterpret_cast<int&>(user_data) - 1;
これとrandx()のところを同様に修正すると、無事にコンパイルが通り、シミュレータを動かす事ができました。

2008/11/15

Thinkpad x22:CD-ROMを使わずにHDD入れ替えWindows XPの引越し

前の会社に入社した時に13万円ぐらいで買った英語版キーボードのThinkPad x22。
さすがに古くなり、ハードディスクに空きがなくなってきたので手持ちのIDE HDDの中から大容量の160GB HDDと交換してみました。 今回のテーマは次の2点です。

  • 無料で手に入るツールを使う事
  • 交換用OSをCD-ROMから起動しない事

CD-ROMで新しいHDDにOSを入れずにHDDを新しくする方法はMicrosoftのサイトでみつける事はできませんでしたが、ツールを購入したり、Knoppixを使うなどの選択肢はいろいろあるようです。 Knoppixが使えればddで起動するだけですが、余ったHDDの領域はDドライブなど他のパーティションになってしまいます。
Googleさんではこれぞという方法が見付からなかったので、Unix系OSでいうところのddコマンドを使った移行と同じ事ができないかいろいろ調べてみると、GUIを持つ"SelfImage"というツールでディスク単位でのコピーができるということがわかりました。

SelfImageのサイトに書かれている説明をみるとWindows版の"dd"コマンドでは、稼働中のディスクのコピーはできないが"SelfImage"はできると書かれています。

linuxでの"dd"コマンドと同様に"selfimage"では移行元のディスクと同容量のCドライブが作成されるという事で、余った部分はDドライブにするなどして使う必要があると調べたサイトに書かれていました。
けれどDドライブはいらないし、余った領域をCドライブに追加できないか調べてみます。 まずはGNU partedでNTFSの拡張ができるか調べたところNG。 ただしWindows XP付属する"diskpart"コマンドでNTFSの拡張操作のみは可能だという事が判明。

単純に、

  1. 160GB HDDをDドライブとして追加
  2. "selfimage"でCドライブをDドライブにVolumeコピーし再起動
  3. DOS窓で"diskpart"を実行しCドライブのVolumeを拡張+再起動
  4. その後で物理的にDドライブをCドライブに交換
"SelfImage"コマンドと"diskpart"コマンドを利用して、2-3時間程度で20GBのCドライブを、およそ145GBに拡張することができました。

注意点

気をつける事はBIOSを最新にして120GB以上のディスクを認識させる点と、ThinkPadにドッキングベイ+ウルトラベイ2000などを使って2台目のHDDを付けなければいけない点。
またMicrosoft純正の"diskpart"コマンドといえどもCドライブは拡張できないため、"selfimage"でのディスクコピー後にNTFSの拡張操作をしてから、CドライブとDドライブの物理的入れ替えを行なうという手順を守る点。

CD-ROMでKnoppixを起動して、HDD2台の内容をコピーする必要があるかと思って外付けUSB CD-ROMドライブを買わないとかなと躊躇していましたが、Dドライブをマウントするためのウルトラベイ2000を持っていたので、2台目のディスクを接続するだけで可能でした。 もう少し早くやっておけば良かったと少し後悔しました。

2008/11/08

Ubuntu 8.04 LTSでArduino Diecimilaを使ってみる

後継機としてはDuemilanoveというモデルが出ているらしいけれど、Diecimilaもどっちも発音できないのでどうでもいい。

USBで接続する前にドライバの導入

とりあえずUbuntu 8.04にUSBでArduinoを接続するためのドライバを導入する。 とはいってもしばらく前にBuffaloのSirial-USBケーブルを接続するために導入してしまったので思い出してみる。

$ sudo apt-get install libftdi0
これでいいはず。

UbuntuとArduinoをUSBでつないでみる

まず必要なものは次のようなもの。

  • 公式サイトで配布している開発環境 - Arduino - 0012
  • gccとライブラリ、ヘッダーファイル一式
開発環境はダウンロードして適当な場所に展開して、その中にあるarduinoを起動します。
$ cd /tmp
$ tar xvzf ~/arduino-0012-linux-amd64.tgz
$ cd arduino-0012
$ ./arduino
ここで適当なサンプルプログラムを公式サイトからコピーして実行してみたところ、エラーがいろいろ出てしまいました。とりあえず最初のエラーは"avr-gccがない"で、次に"avr/io.hが発見できません”でした。 これを回避するためにavr関連のパッケージを導入します。
sudo apt-get install avr-libc gcc-avr
ちなみにarコマンドなどが入っているbinutilsはgcc-avrと一緒に導入されます。
avr用のgccクロスコンパイラを導入しただけではヘッダーファイルがなくて怒られてしまいます。

サンプルプログラムの実行

公式サイトでは"Learning"というメニューから用途別のサンプルコードをみる事ができます。最初にあるDigital I/Oの"Blink"というコードをそのまま実行(Fileメニューから"Upload to I/O Board"を選択)してみます。
コードと一緒にある写真ではLEDをポート13番にさしていますが、Diecimila君はボード上にLEDがあるためLEDを別途接続しなくても確認できます。 手持ちのLEDをGNDとポート13に接続したところ明るく点滅し、オンボードのLEDは暗くなりました。

2008/11/07

コンビニ受け取りの荷物が行方不明に…

ちゃんと出てきたから良かったのですが、某所で購入したArduino Diecimila君を受け取るために某宅急便会社のコンビニ受け取りサービスを使いました。月曜日に不在通知が届いたから、週末まで待つのもなぁ、と思ってコンビニで受け取る事にしたところ一時行方不明に…。いつも通りに土曜日の午前中に届けてもらえばよかった。

仕事帰りに受け取りに行ったところ店員と責任者らしき方の二人が出てきて当店にはそのような荷物はない旨の回答をもらいました。まぁWebで地図に出てきた店をクリックして指定したとはいえコンビニの店名か場所を間違えたかもしれないし、と思って一時帰宅。 けれどメールチェックの住所をGoogle Mapでみても、どうも勘違いではなさそう。

結局コールセンター経由で探してもらう事にしました。 そこでも配達員はコンビニに確かに置いたし、電話で近くのコンビニに聞いたけれど、どこにもないって事になりました。それでも人を送って探しますという事で、折り返し発見した旨の返事がきました。

でもね、コンビニで最初に物がないっていう返事をした人もしらんぷりだし、こうなってくると配達員がそっとコンビニに置き忘れた荷物を持っていったのかもしれない。 横浜に住んでいた時は便利に使ってたんだけどなぁ。田舎だからこんなサービス使うのは僕だけなのかなぁ。 まぁ対応にはそれほど問題はなかったけれど、コンビニに荷物を預けるのは止める事にしよう。

この事件の隙をついて実家から来た荷物はすぐに営業所預かりにしました。今度はどうかなぁ…。ちなみにArduino君はlinuxに繋いでいて、LEDを光らせながら元気に動いています。

2008/11/04

ニコニコ小沢ライブで「片手落ち」が差別的発言といわれていた

ニコニコ動画で民主党小沢代表のライブ番組をやっていたのを聞いて、その録画動画をみてみた。内容はどうでもいいのですが、その中で「片手落ち」という言葉への反応が気になりました。
小沢代表の発言にあった「片手落ち」について自分が聞いた時の感覚からいっても差別的な意味合いはまったく感じられませんでしたし、経験からこの言葉自体にもそのような意味合いを持って使われている事はないと考えています。

すごーく難しい連想ゲームをやっていくと「手が落ちる」様を連想するのかもしれませんが、その論理で制限を加えていくのは、客観的な事実、道理に基づいて判断せずに世間体という仮想的な第三者の目を判断基準にしてきた日本の差別的な風潮そのもののように思えます。

もちろん不快な印象を受ける人がでるような発言は良くありませんが、現状でこの言葉を差別的と捉える人が少なくない事は事実のようです。
この言葉を差別的と考える人は、この単語に反応するような回路を持っているのだと思いますが、この言葉を差別的な意味合いで使う状況というのはイメージできないのではないでしょうか。差別的な言葉として現在避けられている言葉は、直接的に特定の障害を持った人を指す言葉や特定の状況をイメージさせるものだと感じています。

ただ差別的な言葉とされているものには、一般的な名詞にも拘わらず過去に差別的意図を強く持って使われた言葉である場合もあるので、「片手落ち」という言葉が特定の障害を持つ人を指す言葉として定着してしまえば、公で使うには不適切な言葉になるでしょう。そうならない事、そんな意図で発言する人が出てこない事を願っています。

更迭された航空幕僚長の論文

テレビで散々やっている話題ですが、問題になった論文の文言だけ取り上げられて、その記述前後の内容についてはまったく触れられていないので論文を読んでみた。
書かれている個々の記述は引用などで裏付けがあって、細かい点では微妙なものもあるけれど、全体としてはよくまとまっていると思います。

けれど、現代の感覚で当時を解釈仕直したというか、結論ありきでそこに至るまでの間に都合の良い事実を並べたという感じは強く感じました。それは当時の状況を考えれば日本の対応は非常に紳士的であったし、戦争という行為に至った事にも列強に陥れられたためという事実を述べた流れで、侵略国家というのは濡れ衣だと表現している点に表れていると思います。

中国や韓国での日本叩きは内政の問題を外交に向けさせるために政府から放置されエスカレートした結果だから、日本が繰り返し謝罪や補償を含めた対応をする必要はないと思うけれど、かといって侵略戦争ではないというのは当てはまらないと思う。
仕向けられたものだとしてもそれに乗った責任はあると思うし、侵略でないとするならば自衛という事になりそうですが、石油を求めて南下して戦線を拡大したのは間違いないと思います。そんな戦争に巻き込まれた市民の事を考えれば、日本として申し分けないという気持ちを持つ事は重要なのではないでしょうか。侵略したけれど当時の状況の中で日本人は立派に対応したという事なら理解できるんですけれど、戦争はしたけれど侵略していないというのは成立しないように思います。

問題は必要以上にネガティブな歴史観を持ったまま、それを自ら修正する事もなく受けいれてしまう日本人がいる事と、そんな事を教えてしまう教育にあると思いますが、そういう憤りを論文という形にまとめてしまったように感じました。幕僚長という立場を考えれば退官後にゆっくりと堂々と意見を主張するべきだったでしょう。
こんなに素直な人が組織のトップになるなんて、老練かつ狡猾なやり取りが必要とされている現代にあってつくづく日本は平和なんだと思います。

2008/11/03

vmwareでclone化したUbuntu 8.04でeth0がeth1になってしまう

まぁなんてことはないんですが、CMSパッケージをいくつか試してみようと考えて、VmwareにインストールしたUbuntu 8.04 Server版のイメージを元にCloneを作成しました。

なにげなく起動してパッケージ情報を更新しようと"sudo apt-get update"を実行したところネットワークに接続されていない事でエラーが発生してしまいました。
わりとすぐに以前ALIXで調べた/etc/udev/rules.d以下のファイルを書き換える必要があるんだろうと気がついてよかったですが、ひさしぶりに慣れない事をするとはまりそうになります。
調べ方だけまとめておきます。

ネットワークインタフェースの状態を把握する

linuxではネットワークインタフェースはループバックデバイス"lo"の他に"eth0", "eth1"、...といった"eth"+"数字"で認識されていて、昔は物理的なネットワークカードに対応して0番目から1..nと増えていったものです。最近は後述するようにネットワークカード毎にユニークなMACアドレスを紐づけて、電源を入れる度にランダムにネットワークカードとデバイス名の対応が壊れないように管理されています。一つのインタフェースに複数のIPアドレスを"eth0:0"のような形式で設定する("sudo ifconfig eth0:0 192.168.x.y"等)事もできますが、現在のような形で管理されてしまうとなかなか見る機会も使う機会もなさそうです。

というわけでネットワークに接続できない場合には、まずどんなネットワークデバイスが認識され、有効になっているか確認します。 まずは有効になっているネットワークアドレスを調べます。

$ ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
これで127.0.0.1という必ず設定されている自分自身を表すループバックアドレスだけが認識されている事がわかります。これはお約束で設定されているため、これだけではネットワークに接続する事ができません。

次にネットワークに認識されているデバイスを調べます。

ifconfig -a
eth1      Link encap:Ethernet  HWaddr 00:0c:29:14:yy:yy  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          ...
lo
          ...
通常は2行目にIPアドレスの指定が入り、"BROADCAST"で始まる行が"UP BROADCAST"と稼働中を表わす"UP"で始まるようになります。

ここで"eth0"ではなく、"eth1"が認識されているものの稼働していない理由を調べます。Ubuntu 8.04では"/etc/network/interfaces"にデバイス毎の設定が入ります。

$ cat /etc/network/interfaces 
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp
ここで"eth1"に対応する設定が入っていない事でDHCPサーバーからの自動IP設定もIPアドレスの直接指定もできずに"eth1"が認識されたまま起動しないのだとわかります。
ここでの解決策はおそらく次のいずれかになるでしょう。
  1. /etc/network/interfacesファイルにeth1用の記述を追加する
  2. eth1をeth0として認識させる
ここでは2番目のeth1をeth0として認識させる方法で対応します。 設定ファイルは"eth0"という文字を含むでしょうから、まずこのファイルを表示させます。
$ sudo find /etc/ -type f -exec grep eth0 {} \; -print
...
/etc/network/interfaces
...
/etc/dhcp3/dhclient.conf.dpkg-dist
...
/etc/udev/rules.d/70-persistent-net.rules
...
/etc/initramfs-tools/initramfs.conf
sudoを使用するのは一般ユーザーでは読めないファイルがあった時のエラーを防ぐためだけで、必要性は高くありません。grepの結果が表示されて、続いてそのファイルが表示されます。この中で2つのファイル、"interfaces"と"initramfs.conf"、はmanで何のファイルか確認する事ができます。"dhclient.conf.dpkg-dist"のファイルの後ろにある".dpkg-dist"はパッケージの更新時に既存のファイルを残す選択をした時に作成されたもので、普通は新しいパッケージについてくる未編集の設定ファイルです。"man dhclient.conf"と".dpkg-dist"を除いた形では説明を読む事ができます。
残った"/etc/udev/rules.d/70-persistent-net.rules"ファイルが問題のファイルで、この中は次のようになっています。
$ cat /etc/udev/rules.d/70-persistent-net.rules 
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:14:xx:xx", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:14:yy:yy", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
いま認識されているMACアドレスは"00:0c:29:14:yy:yy"なので、これがeth1になっているのは、このファイルの記述通りです。"00:0c:29:14:xx:xx"はVMWareでCloneを作成する元になった方で使用していました。これは今後使われる可能性がないので、おもいきって消してeth1をeth0にしてしまいます。
$ cat /etc/udev/rules.d/70-persistent-net.rules 
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:14:yy:yy", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
これで再起動すれば、"eth0"となったデバイスに、/etc/network/interfacesの設定通りdhcpで設定されたIPアドレスが設定されます。

2008/10/17

多発性骨髄腫の治療薬としてサリドマイドが承認される

サリドマイドを扱ったドキュメンタリーをずいぶん小さい頃にみた記憶はなかなか消えない。生まれながらに手が短かい女性が改造されたAT車を運転したり、薬を製造した工場が石鹸工場に転用された様子なんかを今でも覚えている。
そんな薬が役に立つ病気があるという事で使われるらしい。 まだ製造されていて研究されていたというところを含めて、なんか複雑な感じがしますが少しでも病状が改善されるのであれば素晴しい事だと思います。

サリドマイドの薬害はテレビ番組で見ただけだけれど、最近の子供達はイタイタイ病やサリドマイドといった初期の薬害を教科書や資料集に書かれている以上の情報を知っているのだろうか…。

2008/10/03

bashで同時平行プロセス数を制限する

多くのプロセスを起動する必要があるけれど、負荷分散の目的で同時に起動するプロセスの数を最大n個に制限する処理をbashで作ってみます。perlならProc::Queueで十分だし実際に以前の仕事では使っていたけれど、今回はbashで簡単な負荷分散を考えてみました。けれど標準的な方法としては、どうやるのが良いんだろう。
とりあえず5秒スリープする1プロセスを起動する毎にファイルを1つ作成して、適宜その数を数えるようにしてみます。 bash内でサポート関数を作成しますが、前提としてテンポラリディレクトリをTEMPDIRシェル変数から読み込みます。

TEMPDIR="$(mktemp -d /tmp/myscript.XXXXX)"
function get_proc_count {
  local i=$(ls "${TEMPDIR}" | wc -l )
  echo $i
}
function exec_cmd {
  uuid="$(uuidgen)"
  touch "${TEMPDIR}/${uuid}"
  "$@"
  rm "${TEMPDIR}/${uuid}"
}
この関数を使って、"sleep 5"を同時平行数2つに制限した上で実行するスクリプトは、こんな感じになりました。
while true
do
  if test "$(get_proc_count)" -lt 2 ; then
    exec_cmd sleep 5 &
  fi
  sleep 1
done
wait
rmdir ${TEMPDIR}
これを実行すると、2個程度(ときどき3個)のプロセスが動き、"sleep 5"の部分を動かしたいプログラムに置き換えれば、簡易な負荷分散が可能になります。3個平行で動いていしまう部分はfunctionを止めれば良さそうなのですが、少しふらつくようです。

こんな方法でもそこそこ動くものが作れるけれど、標準的な方法が知りたいなぁ…。

2008/09/25

「さらば財務省!」を読んで

今度の本は似たタイトルだけれども、小泉、阿部政権の中に居た方が書かれた本です。 こちらは自身が働いていた小泉政権を肯定的に捉えていて「さらば外務省!」とは別の視点が得られておもしろかったです。そうはいっても手放しで賞賛しているわけでもなく、元官僚が官僚の省益を優先させる勝手さを書いている点は両方の本で共通しています。
それぞれでフォーカスしている部分が違うので、政権交代についての意見はまったく違いますが、背景にある動機は共通しているように見えるんですよね。 まぁ選挙でどっちが勝ったから良いというわけではなくて、何が争点になって、選挙後にどう変わっていくのかという点が明らかにならないといけないわけですが、そういう高いレベルで争われる選挙にはならないんでしょうね。

民主党は自民党の足元をすくう事しか考えていないように見えるし、官僚の独特な文化を変えていく必要があると思うのですが、そのために何をしてくれるのかというと、まだ付き合いの深い自民党の方が良いでしょうし。

自民v.s.民主という図式じゃなくて、いっかいみんなバラバラにして喫緊の問題について方向性の近い人達で固まってくれるとわかりやすいんですけどね。 そういう意味では何にもかも反対している民主党に魅力はないし、官僚出身の政治家が省益優先の文化を保護しかねない自民党にも魅力はないところをどう投票に反映したら良いんでしょう。

2008/09/24

「さらば外務省!」を読んで

ひさしぶりに本を読む時間が取れたので、勉強のためにAmazonで小泉政権時代を批判的に扱っていそうな本を注文した。今回の総裁選で記者から質問を受けて誰もまともに回答しなかった話題だったので気になりました。
元外務官僚で大使を努めた天木直人さんの書いた「さらば外務省!」というタイトルの本もその中の一冊です。サブタイトルには「私は小泉首相と売国官僚を許さない」とあってセンセーショナルだなぁと思いながらも読んでみました。

内容はいたって穏かで日本を代表する大使の仕事は、外務省に報告を上げても無視され、外務省からは現地政府に対して失礼と思える指示を実行することだとわかります。 なんか基本的なコミュニケーションが欠如している組織に日本の対外的な顔を任せていて大丈夫かなと心配してしまいます。

まぁ中東問題を含めて世界平和に日本は軍事力以外に貢献できるはずだし、小さい事でも何かしら貢献して欲しいと期待している方はこの本を読んでみると、そんな希望が簡単に打ち砕かれることでしょう。なんだか暗くなりますが、この本が出版された2003年から変っていて欲しいなぁと思います。

中にいた人が経験から実情をちゃんと説明した本という事では対外的な日本の仕事はどんなものなのか、タイトルでひかずに読んでみる事をお勧めします。

2008/09/21

Ubuntu 8.04 Server(amd64)でXenを動かしてみる

引っ越しやら転職やらで忙しくしていたので、7.04のXenサーバーは使わなくなっていました。そこでまっさらなPCにUbuntu 8.04 Server amd64版を入れたところにXenを構成してみました。リリースされて随分経つのでUbuntu 8.04でXenを稼働させる事には大勢の先達がいらっしゃいます。
今回はその試行錯誤の結果を利用させてもらい、非常に簡単に立ち上げる事ができました。ほんの少しだけ自分なりの工夫を入れてXenでゲストOSを立ち上げる過程のメモを残します。

Ubuntu 8.04 Server amd64版を入れてからの大まかな流れは次のようになりました。

  1. "apt-get update", "apt-get upgrade"による最新版への更新
  2. /etc/modulesを編集してloopデバイスを増殖
  3. "shutdown -r now"による再起動
  4. "apt-get install ubuntu-xen-server"によるXen関連パッケージの一括導入
  5. Xenが有効になったカーネルで起動するため、再び再起動
  6. /etc/xen-tools/xen-tools.confの編集
  7. /usr/bin/xen-create-imageコマンドの修正
  8. xen-create-imageコマンドによるゲストOSイメージの導入
  9. xm createコマンドによるゲストOSの起動

Xenカーネルで起動するまで

まずはまともなUbuntuサーバーとして稼働するように最新版のパッケージに更新します。

$ sudo apt-get update
$ sudo apt-get upgrade
続いてloopデバイスの数を増やすために/etc/modulesファイルを編集します。 "loop"としか書かれていない行を編集して次のようにします。
$ grep loop /etc/modules
loop max_loop=256
upgradeの結果、kernelも新しいものが導入されていたりするので念のため再起動します。
$ sudo shutdown -r now
起動しきたら再びログインし、Xen関連のパッケージを導入します。
$ sudo apt-get install ubuntu-xen-server
無事に起動したらまた再起動します。
$ sudo shutdown -r now

ゲストOSを作る前の手続き

Xenのバージョンがかわり、結果として落とし穴が増えているようです。 試行錯誤の結果は残しませんが、次のようなところではまりました。

  • cfgファイル中でディスクイメージファイルを指定する方法が"file"から"tap:aio"に変更になった点
  • ディスクデバイス名が"sda"から"xvda"に変更になった点
  • シリアルデバイスファイルが"tty1"から”xvc0”に変更になった点
まずは作業を簡素化するために/etc/xen-tools/xen-tools.confを編集し、よく使う値を設定してしまいます。追加した設定行は"dir","gateway","netmask","broadcast","serial_device"の5行。修正したのは"mirror"の1行だけです。変更前後のdiff出力を載せます。unified formatじゃない方が見易いですよね。
$ diff /etc/xen-tools/xen-tools.conf.20080921 /etc/xen-tools/xen-tools.conf
45c45
< # dir = /home/xen
---
> dir = /home/xen
163,165c163,165
< # gateway   = 192.168.1.1
< # netmask   = 255.255.255.0
< # broadcast = 192.168.1.255
---
> gateway   = 192.168.1.1
> netmask   = 255.255.255.0
> broadcast = 192.168.1.255
214c214
< mirror = http://ftp.us.debian.org/debian/
---
> mirror = http://ftp.jp.debian.org/debian/
258c258
< # serial_device = xvc0
---
> serial_device = xvc0
"serial_device"の設定は必ず設定しなければなりません。 これをしないとゲストOSの起動時にコンソールに接続することができなくなります。 まぁsshdは起動しているのでdisk.imgをマウントしてrootにパスワードを設定するか、パスワードなしでのログインを許可すればネットワーク接続できるので、何とかなりますけれど。
さて続いては /usr/bin/xen-create-image コマンドの修正。なぜなら後からcfgファイルを編集して"file:"を"tap:aio:"に変換するのが面倒だから。なのでこれは"serial_device"行の編集と同じで必須ではないです。
変更内容は以下の通りですが、最初の":"(コロン)が削除されるようなので、少し変な感じになっています。
$ diff /usr/bin/xen-create-image.20080921  /usr/bin/xen-create-image

2411c2411
<         $partition->{'imagetype'} = 'file:';
---
>         $partition->{'imagetype'} = 'tap::aio';

ゲストOSの作成と起動

いろいろな試行錯誤の結果が xen-tools.conf と xen-create-image の修正に含まれているため、ここの作業は簡単です。
ここではホスト名を"xen63"、IPアドレスを"192.168.1.63"として、イメージの作成と起動は次のように行なえます。

$ sudo xen-create-image --hostname xen63 --debootstrap --ip 192.168.1.63
$ sudo xm create -c /etc/xen/xen63.cfg
後からxmのコンソールに接続したい場合には:
$ sudo xm console xen63
不具合があって強制終了したい場合には:
$ sudo xm shutdown xen63
"xm shutdown"では終了できず、"xm list"で延々と表示されてしまう向きには:
$ sudo xm destroy xen63
こんな感じで作業完了です。

2008/09/18

VmwareにUbuntu 8.04 Serverを導入してみる

vmware workstationを持っていてsnortをテストするためにネットワークを組んでいたりしますが、最近あまり使っていなかったのでオリジナルのVirtual Machineイメージが古くなってしまいました。気がつくとVMWare Toolsを導入するために必要な前提パッケージの情報をまとめて いなかったのでメモを残します。

UbuntuはeUbuntuなどの用途別にパッケージをまとめたバリエーションの他にサーバーイメージもCD-ROMイメージで配布しています。DVDでない分コンパクトで導入も早いですが、gccなどの開発環境がないためVMWare Toolsがそのままでは素直に動いてくれません。
結局はapt-getするだけですが、Server版のUbuntu 8.04をデフォルト導入後に最低限必要なものをまとめておきます。vmware-install.plを実行して足りないといわれたものを追加するだけなんですけどね。

"linux-headers"を導入して、"kernel-source"を導入すればよさそうなものだけれど、足りないgccとmakeを別途導入するか…。さてさて"linux-headers"は微妙に動いているkernelのバージョンに依存するところがあるので次のような感じになります。

$ sudo apt-get install linux-headers-$(uname -r) linux-source gcc libc-dev make
あれ、こんなに必要だったっけ、なんだかもっと楽な方法があったような気がするんだけどなぁ。CentOSの場合だったっけ…。手間を省くためにいろいろ時間を使ってもしょうがないので、次回また試してみましょう。

2008/09/05

ひさしぶりにiMac G5の電源を入れる

20inchのiMac G5はIPS液晶なので買い替えずに持っていますが、ひさしぶりに電源を入れたところWebサイトの表示に少し間を感じてしまい、「レスポンスが悪いなぁ~。そろそろ限界かなぁ」と思いました。画面の表示はlinux機が接続されているFlexScan L567と比べるといまいちだけれど、DELLのノートPCよりはずっと良い。
レスポンスについてはlinuxの環境も早いわけではないので、おかしいと思い端末からtracerouteやらpingやら打ってみたところDNSの名前解決に時間がかかっている事が判明。

ネットワーク設定でみると、ALIXで作ったDHCP/DNSサーバーを参照していない事がわかり、ブロードバンドルーターのDHCPサーバー設定を停止して再割り当てしたところ情報が更新されてレスポンスも向上しました。
なぜ停止したはずのブロードバンドルーターのdhcpサーバーが上がっているのかな。 レスポンスが悪いのは古いルーターを使っているからだけれど、最近のブロードバンドルーターに切り替えるのはもったいない。しばらくはALIXを手動で調整しながらDHCP/DNSサーバーを運用する事になりそうです。DynamicDNSは設定していて良いけれど、いろんなVirtual MachineやらDDNSに対応しない古いマシンのためにDHCPサーバーを細かく設定してDNSと情報を合わせる事が難しそう。何もしないのが一番楽なんだなぁ。

SysAdmin Mag.にDHCPクライアント管理サーバーのネタが載っていたなぁと思ってCD-ROMから検索すると、"NetReg"についての記事を発見。ぱっと見た感じで2005年頃で止まっているようにも見えるけれど、時間のある時にこれを応用できないか考えてみよう。

2008/07/22

非正社員の実態
- Reference: http://www.gatenkeirentai.net/info/zittai/zittai01.html

BS11の番組で紹介されていたガテン系連帯という、いわゆる非正規雇用形態の環境で働いている方々の組合のサイトにはいろいろ興味深い記事が掲載されています。
例えば31万円以上という努力次第で給与が決まる雰囲気を出している求人情報に対して、31万円って誇大広告だよね、と指摘している記事: 非正社員の実態①

その他では発足記念講演: 鎌田慧さんのかなりまとまった発言が載っています。
最近は鎌田さんの本を読んでいなかったので、なかなかおもしろかったです。 生温い、ただの取材記事をまとめた本がノンフィクションとして本屋さんに並んでいたりすると、「あーあ」と思いますが、最近の非正規雇用を扱った本の中にはおもしろいものがありますね。
それだけネタに困らないというか身近にあるという事なのでしょう。

いくつかのサイトを読んで感じた事は、非正規雇用の中で働く労働者が「ちゃんと扱って欲しい」と主張しているという事でした。
その様子はなんというか健気で、せめて「安全管理に必要な訓練と装備は請負発注側が提供する」とか「解雇時に社宅を追い出すまでに一定の猶予期間を設ける」とかとか、しないと安全な環境と会社の都合で振り回される状況は改善されないと思いました。
こんなに都合良く使うだけでペナルティがほとんどないような構造はやはり異常といわざるをえなくて、是正しなくてはバランスが悪いですよね。こういう事は利益を追求する会社じゃできないから、行政の役割りなのに先行きはあまり明くないですね。

なんにしても印象的だったのは秋葉原の事件がきっかけで日雇いが禁止されそうな現状に対して、『合法的な活動よりも犯罪が世の中を動かすのは歪な社会だと思う』というコメントでした。

個人的には働き方の多様性は重要で正社員として雇用する事だけが解決策だとは思いません。その一方で自分の子供にやっている事を説明できないような、基本的なルールさえも無視して都合良く働かせている会社はとても大人が仕切ってビジネスを遂行しているとはいえないでしょう。
利益を追求するのはベースになるルールあっての事だという事を良しとせずに、ルールを作らず、無視し、破壊してしまうのは、やはりイビツといわざるを得ません。 どういうルールがあれば良い社会になるのか、そういう議論が必要なのだと思います。 ルールはシンプルな方がゲームは良く、面白くなりますが…。

2008/07/17

エンジニアとは

ひさしぶりの休みでドライブで有料道路に入って、途中で車を止めてボーっと山を眺めていたけれど、工場でステンレスってよく使われていたんですよね。さびないし、強いし。
でステンレスってサビないから、ステイン+レスなのかなと思ったりして、なぜかステンレスの事を考えていました。

ステンレスで思い出すのは、六本木ヒルズの回転トビラの事故。たしかNHKの番組で原因追求が行なわれていて、元々ヨーロッパではアルミで作られていたものが、見た目の重厚感などからステンレスに日本で変更された事。この材質の変更で重くなったトビラが凶器に変ったこと。

現場では要求に沿う事ができるよう材質を変更しただけ、エンジニアが必要な変更方法を考えて図面を上げて作り上げただけなのでしょう。 気になるのは日本ではその重厚感からステレンスの需要が高いという、あの番組のナレーション。
いろいろな要因があっての事故だったけれど、エンジニアの役割ってどこまで何でしょうね。エンジニアがこの事故を防げたとしたら素晴らしかったけれど、防ぐって事は事故がなかった事になるから、顧客の要求を却下したその人はきっと会社で窓ぎわに追いやられてしまうような気がします。もっともあの事故の前にも危険性をメーカーは認識できたと認定されているようですし、問題点はいろいろあるはずです。けれど何か象徴的な事件のように思えてならないんですよね。

2008/07/13

ALIXのCFカードスピードをhdparmで計測

ひさしぶりにALIXにログインをして、新しいCFカードを買う参考にいまの体感速度が実際どの程度なのかhdparmを実行してみる。


$ sudo /sbin/hdparm -Tt /dev/hda1

/dev/hda1:
 Timing cached reads:   446 MB in  2.00 seconds = 222.51 MB/sec
 Timing buffered disk reads:   38 MB in  3.09 seconds =  12.29 MB/sec
使っているのはLexar Premium II 1GB (80x)ですが、世の中には300倍速とかもありますが、まぁLexarの場合は最低保証ですからね…。今度はWebサーバー走らせてapachebenchかjMeterをかけてみたいですが、負荷テストは無理かなぁ…。
ちなみに安売りしていたSanDisk 2GBのReadyBoostにも対応しているUSBメモリをpdumpfsのバックアップ領域としてext3でマウントしています。この領域にhdparmをかけると次のようになりました。
$ sudo /sbin/hdparm -Tt /dev/sda1
Password:

/dev/sda1:
 Timing cached reads:   448 MB in  2.01 seconds = 223.20 MB/sec
 Timing buffered disk reads:   72 MB in  3.05 seconds =  23.61 MB/sec
cacheに収まっているものの速度は大差ないのは良いとして、倍速ぐらいにはなりますね…。さすがはUSBメモリというべきなのか。

2008/07/12

ReadyBoostに使っていたSDカードが逝ってしまった

フォーマットしてもファイルが消えてしまう現象が発生し、SDカードが一枚使いものにならなくなりました。思い当るのは、Vistaを中途半端に止めたまま鞄に入れて職場に持っていった事。
会社で鞄を開けると、PCが熱を出し続けていたのでもわっとした空気が…。 慌てて電源ボタンの長押しで止めたけれど、キーボードなんかのプラスティック部品が壊れるんじゃないかと思うほど熱かったです。
ReadyBoostによるランダムアクセスが寿命を縮めたというよりも、電源が落ちなかったことが致命傷になったのでしょう。

しかし、しばらく使っていて反応が鈍くなったことで気がついたので、ReadyBoostの効果は、少なくとも自分にはあったのだと思います。
そこで今回は独自基準で読み書き15MB/sでClass4というSanDiskの2GB SDカードを買ってきました。Panasonicの"up to 5MB/s"というClass4 SDカードとほぼ同じ金額で並んでいるところが微笑ましいです。各社がどんな計測方法を使っているかよくわからない上に数字が違っても値段は同じという状態です。最初からPanasonicでは過熱状態やさらに過酷な条件でも動きそうだったのでSanDiskにしてしばらく使ってみたいと思います。

このSandiskのSDカードはReadyBoost用のデバイスとして認識されて、すぐにはキャッシュへの読み書きが発生していませんでしたが、一度電源を入れ直してからは非常に順調に快適です。少なくとも自分にはReadyBoostの効果はあったようなので、その発見はおもしろかったです。

いまのところ専用にフラッシュメモリを用意しないと実用上は問題が大いにありそうなところと、2GBの物理メモリに収まらないような変な使い方をしている人間にしか効果はなさそうですが気に入っています。

金貨コレクションが売却されたらしい

金貨を売って57億円とニワニュースでみたけれど、一般財源に繰り入れられるらしい。 美術的な価値もありそうだから、定期的に公開するようにして国が持っていてもいいんじゃないかなぁ。
税収も減っているから貢献するための方策なのでしょうけれど、タクシー代は凍結かもしれませんが、官僚が無駄に使う経費に消えなければ良いなぁと願うばかりです。実際のところ中央省庁が天下り団体から購入している書籍を全部止めればこの100倍ぐらいの税収になるんじゃないんでしょうか。

そもそもこのニュースって随分前に流れたような気がする。
調べてみると、確かに財務省のWebサイトには7月10日付けで売却終了が告知されているけれど、4月頃のニュースでも57億円と書かれているからいまさらと思ったのは間違いなかった。

2008/07/11

大学病院に戻らない若手医師

日経新聞に2年間の研修を終えた若手医師が大学病院に戻らないというデータが載っていましたが、論調は、医者の地域格差によってこれまで地域医療を担っていた大学病院の危機、といった感じでした。まぁ街中にあって、初診料が高額な大学病院がなぜ地域医療の担い手か、というのが記事を読んだ率直な感想。まぁ高度医療を受ける必要がある病気に対しては、いろいろ充実しているはずの大学病院は必要という事なのかもしれません。 短かい記事だったから、いろいろ書けなかったんでしょうね。

けれど田舎の医師が常駐しないか不足している病院を運営する市町村なんかは、不足分を補うために医師の派遣を大学に依頼したりするといいます。依頼に答えられなくなるのは、医師の所属する医局のボスである教授の影響力が低下してしまいます。まぁいろいろ汚職や変化を恐れる土壌の温床となる医局制度ですから、大学に医師が戻ってこない事自体は良い事だと思うんですよね。
問題点は関東圏に医師が集中するとかっていう事なんじゃないかなと思いますが、記事は大学に医師が戻ってこないというデータから、地域医療の危機という論旨だったので少し時代遅れの印象を持ちました。

離島や山間部なんかの医院に所属する医師や派遣される医師を国が認定して何か優遇策を出すといった公的な助成が必要な気がします。仕事が楽で賃金が高い場所を求める医師は放っておいても、そうではない医師にとっても離島などに行く事は最新の知識や技術から離れる危機感があるはずで、こういった部分のフォローがなければ市場原理に任せておきつつ「問題だ」というだけでは解決するわけがない。
この問題はかなり複雑で深刻なはずですが、これまで包括的に問題点を指摘して改善について議論しているような番組や記事をみた事がありません。たぶん発見できていないだけなのでしょうけれど、問題点の羅列ばかりの情報が多いような気がしていて少し将来が心配です。

2008/07/05

Inspiron 640mのVistaでReadyBoostを試してみる

Vistaの勉強用に購入したInspiron 640mはもはや仕事用PCになってしまったので、あまり遊べなくなってしまった。 いろんなソフトウェアを入れているので仕事には便利なのですが、やっぱりオーバースペックなので、仕事のPCはWindows XPで良いんだけどなぁ…(会社は準備してくれないし…)。

このPCは最大の2GBまでメモリを搭載しているのですが、ウィンドウ切り替え時の画面の描画が若干遅い場合があります。チップセットの内蔵ビデオを使っているし描画が遅いのはしょうがないのですが、仕事に使うのにもたつくのは少し気になるところ。
そんな時にトランセンドの32GB PC Expressカード(TS32GSSD34E-M)が手に入ったので場所も余っているしReadyBoostを試してみました。

GoogleにReadyBoostの評判を聞くと、どうも追加したフラッシュメモリの容量分だけ物理メモリの容量を増やすものという前提で意見が述べられているものが多いように思えました。MSが発行しているReadyBoostを含む"Windows PCアクセラレータ"についてのペーパーによれば、HDDにスワップアウトされたページをReadyBoost用に追加したフラッシュメモリにも配置すると書かれています。つまり物理メモリに収まらない領域が書き込まれるので、確かに2GBのメモリがあれば不要、あるいは効果はあまりないんじゃない?というインターネットでの意見は正しそうに思えます。
ただ問題は物理メモリの2GBよりも多くのページを使っているという事なんですよね。僕の使い方も悪いんでしょうけれど、タスクマネージャーでページファイルをみると2.5GBほど使っています。

さてさて、PC Expressカードスロットに32GBのフラッシュメモリを挿してNTFSに変換してから、プロパティからReadyBoostを有効にしてしばらく使ってみると、気になる事が起きました。もともと資料やバックアップ領域として使おうとしていたのでファイルコピーをしてみると遅い、とても遅い。普通のHDD内の転送は良いのですが、この32GBフラッシュにファイルを転送すると数KBしかスピードがでません…。確かに1つの大きなファイルを転送しているわけではなく、pdumpfsを使っていたりするので、細切れになっているファイルを転送しているからパフォーマンスが悪いのはしかたがないですが、これはひどい。
ただファイルコピーなどで32GBフラッシュを使わなければ、体感速度は若干良くなった気がします。気のせいかもしれないといったところです。NTFSが悪いのかなぁ…。もう使っているので再フォーマットまでして確認するのは止めておきます。

さて32GBを使うのは断念して、余っているSDスロットを使う事を考えました。このInspiron 640mはSD/SDIO対応でSDHC非対応になっています。新しく買うのももったいないので、elecomのClass4 2GB SDカード(MF-FSD02GC4)が余っていたので挿してみます。
SDカードはPC内蔵スロットの転送速度とカード自体のスピードが良くないと、ReadyBoostに対応できないらしいですが、チェックしてみるとあっさりと有効にできました。もっとも1.6GBほどが持っていかれてReadyBoost専用ですが、まぁこっちには都合が良いです。

フォーマットはFATのままで、リソースモニタを使ってD:\ReadyBoost.sfcacheファイルの読み込み、書き込み速度をみてみます。毎分1MB~2MB程度は読み書きが発生して多い時は12MBほど書き込みが発生しています。
この状態でウィンドウをいろいろ切り替えてから、Firefoxのタブを切り替えたりしてみても、特にもたつく感じはなし。SDカードを抜いて同じ事をしてみると、Firefoxのタブの切り替えやVisualStudioの新規ファイルオープンに時間がかかる感じ。
改めてSDカードを挿して、しばらく書き込みが収まるまで放置してみます。うーん書き込みが大量に発生していますが200MBを越えているって本当なんでしょうか。このリソースモニタの表示を疑っちゃいます。タスクマネージャーのページファイルは2500MB前後で物理メモリに収まらないページは500MBぐらいなんだけどなぁ…。まぁ5分くらいしてもあまり変化がないので御飯を食べたり30分ほど放置してから、先ほどと同じような事をしてみます。やっぱり違いがわかるぐらいには反応が良いんですよね。

これを気休めと取るかどうかは、使う人が試して判断すれば良いのだと思います。ただReadyBoostの仕組み自体を考えると、搭載するメモリ量などとは関係なく使えば何かしら利点があるでしょう。体感できるか、払ったコストに見合うかどうかがはっきりしないのですが、個人的にはVistaを使うのであればReadyBoostは使うべきなんだろうと思います。

2008/06/23

ロボトミーについて軽く調べてみた

一週間の海外出張後に1日休みが日本で取れたので、その間にHDD内蔵テレビに取りだめしておいたコールドケース3をみてみた。ロボトミー手術を受けた女性が凍死する話しで、Googleでロボトミー手術について調べてみた。
1975年に全面的に日本での同手術が中止されてからは、1979年にその15年前にロボトミー手術を受けた患者による医師の家族殺害事件ぐらいが最後の話題だったらしい。そういえばスケバン刑事の映画版にロボトミー手術を受けて植物人間状態になる人がいましたね…。

まぁ同手法のトンデモぶりはともかく、創始者がノーベル医学賞を受けていた事を知ると、ノーベル受賞者の黒歴史本が作れそうな気がします。偉大な賞で価値があると思いますが、しょせんその時代の一面を切り取って評価しているだけという事なのでしょう。
この話題について書かれているblogなどをみていると、精神疾患に対する外科的な手法から薬物治療に移っている事について、薬物治療を受けている人間にでさえ化学的なロボトミー手術をほどこしているかのような見方があるという主張をみました。

Googleさんにお伺いを立ててみると、どうやら薬物治療にも相当の問題があるのは確かなようです。 効果があるからといって安易に投薬される傾向が加速しているようですし、製薬会社も利益のためにそれを望んでいるようです。患者が(例えば他人に知られたくないといった理由で)短時間での改善(というか完治。基準がわかりませんが。)を望むという事もあるのでしょう。
問題点は原因について考察が浅いままに効果について過大に注目した外科的ロボトミー手法の反省が活かされないままに、薬物治療についても同様に「改善しているんだから、薬を(永遠に買って)投与すれば良い」といった血の通わない、患者を人間ではなくてお金に換金できるものとして見ているかのような、商業的な雰囲気が感じられる事にあると思います。

おそらく程度にもよるのでしょうが、ちゃんと患者の立場に立って安易な治療を避ける事ができれば、薬物治療の問題点について触れている事柄のいくつかは改善できるように感じます。
医学的な観点だけでは解決できない社会全体の問題も含んでいて、現実は甘くないという事なのでしょうが、精神疾患は誰の身にも程度の差があるだけで起り得る事なのではないでしょうか。自分は(たまたま)深刻ではないというだけで、自分から遠避けて扱おうとしている事に憤りを感じて、きっとそれが問題の本質的なところなんでしょうね。こんな手法にノーベル賞とは、ちょっと萎えましたが…。こんな事を避けるためにも脳についての研究が進歩する事を願っています。

2008/05/19

ubuntu 7.10 から 8.04 へのアップグレード

x86_64版のubuntu 7.10を使っていましたが、私生活に若干の余裕が出てきたのでそろそろ8.04でも良いかなということでアップグレードをしてみました。
通常の方法を使ったのでGUIからアップデートマネージャーを起動して、8.04へのアップグレードのボタンを選択するだけでした。

普通ならここで終りですが、liloを使ってRAID5な/dev/md0を'/'(ルート)にしているせいか、そのままではエラーになり起動できなくなりました。

checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd

"LILO"のメッセージが出てくる前に'Alt'キーを押しっぱなしにしてメニューから古いカーネルを選択すると通常どおり起動できる事がわかり、8.04のカーネルかinitrd.imgが悪いという可能性が高くなります。
liloと"bad gzip magic numbers"ぐらいをキーワードに検索してみると、どうやら/etc/lilo.confに"large-memory"のオプションを追加すれば良いという事。けれど7.10で使っていたinitrd.imgと700KB程度しかサイズは違わないんですけどね。 まぁそれが分かれば、古いカーネルで起動した状態で /etc/lilo.conf を書き換えてから"sudo /sbin/lilo"を実行して無事に8.04への移行が完了しました。

2008/05/12

オノ・ヨーコさんの番組をみて

NHKから振り込み用紙が届いた。ケーブルテレビを解約したので団体契約からの変更するためだったけれど、電話をかけた時にはNHKのお姉さんの後ろからすごい笑い声が響いていた。 まぁ笑いのない冷い職場よりは良いけれど、複雑な心境です。

さてさてNHKでイマジン・ピース・タワーを扱った番組を放送していました。 平和を想像してみる、というコンセプトをみて何となく違和感を感じたのですが、平和な世の中というのが某宗教団体がパンフレットに載せているような争いのない世界なのかなというと、感情のある人間が集まる限りそんな事にはならないんじゃないかなと思いました。

人間が怒ったり、言い争いをする事はなくならないと思うけれど、その内容に注目する必要があって、「愛」がそこにあるかどうかが大切なんじゃないかなと思いました。
平和より、人間がその行動の中に愛を含めようというメッセージの方が、より信じられるのかなって思います。「戦争のない世の中」というよりも「愛のない争いのない世の中」の方が実現に向けてまだ信じられるって、番組をみていて感じました。番組自体はそういうメッセージを含んでいて、実現可能な未来について考えさせられる良い番組だったと思います。

2008/05/11

日曜日のテレビをみて

田原さんのテレビ番組というと、古いイメージがあって、今日は中曽根さん、土井さん、不破さんを集めて昔話をしていた。まぁ主義主張の違う人を集めておきながら、敗戦(終戦?どっちでもいいけれど)の時に玉音放送をいつ、どこで聞いたかといった内容だった。改憲した場合の9条の扱いについて、中曽根さんの言っている内容は筋が通って聞こえたけれど、自民党全体としてはそのように考えているのか微妙だった。

何にしても昔ばなしにはあんまり意味はなくて、三人に「熱い夏はいつだった?」と聞いて、三人とも「いま」と答えていたのが印象的だった。それに加えて学生を前にして「国に頼るな、望む方向へ変えていけ」と意見が一致しているのがおもしろかった。
この国の教育内容はこういった政治家たちの意見を反映させているようには思えないんですよね。

2008/05/10

実家に帰っている間にアパートのマシンに入るために22番ポートを開けてきたけれど、ログをみるといろんな痕跡が残っていた。とりあえず次のようなIDに対してログインを試みた痕跡があった。
非常時のshutdown用に"shutdown"なんてログインIDをパスワードなしで作るのもありえる話しとは思いますが、気をつけないとですね。 もっともsshd_configの設定でパスワードなしのログインを許可しない(PermitEmptyPasswords no)ようになっていない環境はインターネットに直接接続するのは危険すぎますが…。

adam,adm,admin,administrator,admins,agent,alan,alex,alias,amanda,amavisd,angel,apache,appowner,appserver,aptproxy,brett,core,cyrus,cyrusimap,dan,danny,data,david,dean,desktop,divine,eleve,eppc,frank,ftp,ftpuser,george,gopher,guest,halt,harrypotter,http,httpd,ident,identd,info,jabber,james,jeff,john,library,linux,mailman,mailnull,master,michael,mike,mysql,named,newsletter,nfsnobody,office,operator,oracle,party,paul,pgsql,pop,popa3d,postfix,postgres,postmaster,qtss,radiomail,recruit,richard,robert,rpc,rpcuser,rpm,sales,samba,sara,search,securityagent,sgi,shop,shutdown,smmsp,snort,spam,ssh,staff,stephen,steven,sunny,susan,telnetd,test,tokend,tomcat,tony,unknown,user,username,users,virus,visitor,web,webadmin,webmaster,webpop,windowserver,workshop,www,wwwrun,xgridagent,xgridcontroller,zzz
カスタマイズするためのオプションなので当たり前かもしれませんが、危険な設定のべき、べからず集の定番ってないですよね。検索すればいろいろでてくるんですが。

2008/05/08

gmailのメールを複数のPOPクライアントで共有する

AirH"のカードをGetしたので、WindowsとLinuxからSylpheed(2.4.x)を使って、gmailのメールを扱おうと思いました。メインはLinuxですけれども、ノートPCを持って出てもちゃんとメールが見れる環境も必要かなと思い準備してみました。
一応IMAPも使えるとは思ったのですが、むかし痛い目に当ったので今回は感情的な理由でPOPクライアントとしてSylpheedを扱っています。

通常のgmailの設定は、単一のPOPクライアント(Sylpheed)とWebブラウザからのgmailの共用ぐらいがちょうど良いように調整されているようです。
この状態でWindowsとLinuxの両方でSylpheedを使った場合、次のような状態になります。

  • Windows側でメールAを取り込む
  • Linux側で”受信”ボタンを押しても、メールAは表れない
  • Webブラウザからアクセスするgmail上では表示されている
Webブラウザからアクセスした場合にメールが消えている場合は、「アーカイブする」を設定していれば「すべてのメール」メニューからアクセスできますし、「削除する」を設定している場合には「ゴミ箱」に移動され30日後に削除されます。
その反面、POPクライアントで取り込んだメールを削除するように設定していても消えていかずにgmail上に残ってくれる点は特徴ともいえます。

やはり両方のSylpheedにメールが分散するのは管理が大変なので、両方で同じメールを受信させたいものです。このため、gmailのFAQにもありますが、接続する際のユーザー名の先頭に"recent:"の7文字を付け加えると、よくあるプロバイダが提供するようなPOPサーバーとして振る舞ってくれます。 ただし、この設定ではgmailの設定でメールを受信ボックスに残すようにしていてもPOPクライアントが削除を指示した場合には消えていきます。消えても30日以内はゴミ箱に移動するだけですから、あまり考えなくても良いかもしれません。

困った点は、この設定をしていて一度ゴミ箱からメールを受信トレイに移動したところ再度受信しメールが重複してしまったので、"recent:"を付けたらあまりgmail上のメールを移動させたりはせずに、そのまま使う方が良いようです。
将来複数のPOPクライアントからgmailにアクセスしたいのであれば、事前に"recent:"設定を入れて慣れておくと良いでしょう。もしWebブラウザと一つのPOPクライアントを使うのであれば、通常設定の方が扱い易いところだと思われます。

2008/05/07

RAID5を復旧させる

起動途中に電源を落としたりしたせいで、RAID5のディスク一つの同期が取られなくなり、sdc2が認識されずに下記のような状態 "UU_U"になってしまった。

$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sda2[0] sdd2[3] sdb2[1]
      467370816 blocks level 5, 64k chunk, algorithm 2 [4/3] [UU_U]

unused devices: <none>

ちなみにdmesgに表示されている起動途中のメッセージは次のような感じです。

[   75.015810] md: md0 stopped.
[   75.023087] md: bind
[   75.023280] md: bind
[   75.023460] md: bind
[   75.023634] md: bind
[   75.023706] md: kicking non-fresh sdc2 from array!
[   75.023764] md: unbind
[   75.023818] md: export_rdev(sdc2)
[   75.029305] raid5: device sda2 operational as raid disk 0
[   75.029363] raid5: device sdd2 operational as raid disk 3
[   75.029418] raid5: device sdb2 operational as raid disk 1
[   75.030264] raid5: allocated 4262kB for md0
[   75.030322] raid5: raid level 5 set md0 active with 3 out of 4 devices, algorithm 2

さて、ここで sdc2 を復旧します。すでにsdc2はremoved状態になっているので

$ sudo mdadm -D /dev/md0
....
    Number   Major   Minor   RaidDevice State
       0       8        2        0      active sync   /dev/sda2
       1       8       18        1      active sync   /dev/sdb2
       2       0        0        2      removed
       3       8       50        3      active sync   /dev/sdd2

追加は普通にmdadmで追加します。

$ sudo mdadm /dev/md0 --add /dev/sdc2

この直後は/proc/mdstatに進捗が表示されるので終るまで過激なI/Oは一応避けます。

$ while true ; do cat /proc/mdstat ; sleep 5 ; done
$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdc2[4] sda2[0] sdd2[3] sdb2[1]
      467370816 blocks level 5, 64k chunk, algorithm 2 [4/3] [UU_U]
      [>....................]  recovery =  0.1% (201996/155790272) finish=51.3min speed=50499K/sec

さて本格的に壊れなくてよかったなと思いますが、起動する度に sda2 や sdb2 が見えなかった事もあったので物理的には弱いと思いますが、論理的な破壊では意外にRAID5は頑丈なのかもしれません。RAID10も復旧に関しては同じか、RAID5よりもお手軽に解決するでしょうけれども。 まぁバックアップはpdumpfsを使ってUSB接続の外部ディスクに/usr/local, /homeに限定して定期的に取っているので何かあっても大丈夫でしょう。

2008/04/04

GyaoのPCがHP製に?

これまでLenovo製が多いなぁと思ってみていたGyaoジョッキーのMCが使用するPCがHP製にかわっていた。ドラマを見た時のスポンサーがHPだったので、スポンサーとして提供しているのかもしれない。

コンピュータメーカーとしては世界一位ですが、社長がこれからは研究に力を入れるといっているぐらい技術より営業がリードしてきた会社という印象を持っています。
HPのノートPCはよく知りませんが、いままで「これだからHP製を使おう」というポイントはあまりいわれて来なかったように感じます。

研究開発が活発になって、ユニークなPCになったら買ってみようかなぁ。

2008/04/01

私は国政の混乱を望んだのか

民主党が参議院で多数を占めている事は前回の選挙の結果で、自民党が両院で与党となっていては少し将来が心配なのでこれは反対ではないのだけれど、現在の政治はあまり自分が望んだような道を進んではいないようだ。

ガソリン関連の暫定税率問題はさっそく混乱を招いているし、必要な税金を集めないというのは問題だし、これは一兆円を越える還元なのに車を運転しない自分にはまったく実感はない。ガソリンを買っている人にもそれほどのスケールが実感できているのかよくわからない。
民主党はとりあえずガソリンスタンドが混乱しないような方法を提案しているだけで、財源の手当や行政の混乱防止のための対案らしいものは出していないようだ。

福田首相が国民に向けてこの現状を打破できないもどかしさを訴えていたけれど、その裏側では公務員改革が骨抜きにされて、人事権は各省庁に貼りついたままになったらしい。 風通しの良さはなくなって、自民党に任せていても行革は進まないのかなという感じもする。

わがままな子供みたいな民主党と、したたかな自民党といった感じ。民主党が「解散」とかわけのわかんない事をいわずに、もう少し着実な結果を重視する姿勢で望んで、マスコミが政府の動向を伝える事が必要なのかなぁ。これからこの国はどうなるんだろ。

2008/03/29

プログラムが得意だからSIを仕事にするの?

まぁ運用の仕事をしていて、そこそこアプリのコードが読めて書けて、UNIXの仕組みに詳しいといろいろと便利に使われますが、開発者へ適当な指示も出せるし、自動化の仕組みも作れるし、よりよいサービスという結果に直接関われるという事では充実した仕事環境ではあります。

ギターを弾いたりするのでふと考えていて、音楽をする人って自分が気持ちいいと思うジャンルの音楽をやっているんでしょうね。まぁジャンルなんて意識していないのかもしれませんが、とにかく自分の技術が未熟だからやりたい事をあきらめるとかっていう人はあまりいなくて、自分が気持ちいいと思う事のために頑張って、楽しんでいるはずだなぁと思いました。
仕事としてやると、そういう事ばかりじゃないのは確かだけれど、背景としてはそういう事がいえるんじゃないかなと。

それで自分の周りにあてはめて、コンピュータに対する技量や知識、そういうものによって開発なのか運用なのかといったジャンルを決めているところがあるような気がするんですよね。
仕事だからワガママは通らないけれど、どっちが良いとか興味があるとか、そういう自分の中での気持ち良さみたいなものを感じていない人が多いんじゃないでしょうか。 その感覚は結構な知識や経験がないと難しいだろうし、それを体得するまでには楽器の練習みたいな継続的な活動が必要だと思うんですよね

音楽なら趣味の範囲かもしれないけれど、この業界ってスキルのバラバラなメンバーでオーケストラを組んで仕事しているのに、大丈夫なのかなと思うところもあります。
各構成員の知識とか技量って、すごーく大事だと思うんですけれど、あまり気にされないんですよね。

朝なまをひさしぶりにみた

ひさしぶりに「朝まで生テレビ」をみた。 地方自治の話題で道路特定財源なんかについて話し合いをしていた。
いろいろニュースで取り上げられている話題だったけれど、本当のところ関係者がどんな事を考えているか判断するのに良い番組だったと思う。道路特定財源の使い方をどうするのかの議論なしに「賛成ですか、反対ですか」と問いかけているニュースは気持ちが悪かったけれど、これをみて少し溜飲が下がりました。

以前みたつまらない感じではなくて、この人選と話題だったら深夜じゃなくて夜の遅めの時間ぐらいで十分できるんじゃないでしょうか。ちょうど春休みだし若い人達含めて、多くの人がみるといいんですけどね。

2008/03/27

海腹川背Portableを試す

あまりに評判が悪いので試してみました。
バグの事が良く取り上げられていますが、どちらかというと全体的な操作感に問題があると思います。これまでとは違うPSP版と思ってプレイしてみたつもりだったけれど、ボタンの押し具合に対するキャラの画面での反応に違和感を感じるんですよね。これでちゃんと振り子が作れれば良いのですが、しばらく遊んでも小さい振り子を作れる気がしませんでした。

原因はルアーをひっかけた状態での下ボタンに対する跳ねっ返りが強すぎるのかなと思います。ちょっとした反動で凄く大きなジャンプができるので、繊細な動きは期待できません。

SFC版とPS版の違いがどうという事ではなしに、もう少しだけルアーが伸びて、ゴムの弾性が弱くなるといいのかなと思いました。
ゲームではあるけれど爽快感はあまりないですね。

触れても死ななかったり、オタマジャクシ面が簡単だったり、初心者向けに配慮した割にはゴムの弾性が強すぎて振り子をちゃんと作ろうとしても難しいところは残念なのかなと思います。そんな理由でおもしろいと思う人もいるだろうし、我慢ならない人もいるでしょうし、単純につまらないと思う私のような人もいるんじゃないでしょうか。

2008/03/20

zabadakのDVDをみる

ニコニコ動画でzabadakの「のれんわけ」ライブの様子をみていた時に、コメントでDVDがマグネットという会社の直販で入手できる事をしってさっそく注文してみた。
いやぁいいですね。やっぱり。DVDでみると全体の雰囲気がよくわかるし、ライブとしての完成度が高かったんだなと実感します。

zabadakのDVDをamazonで検索してなかったから無理だと思っていたのに、まさか直販のみで存在していたとは思わなかった。こういう事もあるんですね。
以前にGoogleで検索できないものは、世間から無いものとして扱われるという話しを先生とした事があったけれど、その話しを思い出しました。

2008/03/09

テレビでトイレ掃除を親子でする姿をみて

掃除を親子でするのは微笑ましい事であり、掃除を嫌がるのはいかがなものかと思います。 ただその番組で父親が、あきらかに茶色なサンドペーパーを片手に掃除している姿をみて、違和感を感じました。そういえば以前素手でトイレ掃除をする事で人間性がどうとか、という番組もあったなぁと思い出しました。

問題はサンドペーパー(紙やすり)で、遠目にみた感じでは粗そうなものを使っていました。これは違うかもしれませんが、Googleに聞くと300番以下の荒目のものを準備する団体もあるようです。
掃除業者も紙やすりを使うようですが、これもGoogleで調べた範囲では1000番越えのできるだけ目の細かいもの、かつ耐水性のあるやすりを使うようにしているようです。それでも陶器を傷つける事があるので、一般家庭向けに硬度を調節した「トイレ用消しゴム」なるものもあるようですが、そういう配慮はないようですね。

精神的な修練のために素手で掃除する事は、「トレイは不浄なものである」という前提を打ち崩すところにあると思いますが、目的のためには物理的にトイレを傷つけても構わないという感じと、これに関連したWebページをみると懐疑的な意見を持つ事が否定されかねない雰囲気を感じるので、カルトに近いのものもあるのかなと思います。

テレビ番組自体は、ほんわかする良い作りだったと思いますが、紙ヤスリと素手で掃除 をする姿に全体主義的なものを感じるのは私の心がすさんでいるのでしょうか。

2008/03/03

nsupdateを使ったDDNSへの固定IP登録

いままでセカンドマシンでzoneファイルを生成するスクリプトでやっていた固定IPのDNS登録作業をnsupdateで行なうために少し調べてみました。
正引きと逆引きをさせないといけないけれど、まずはnsupdateコマンドを実行するために/etc/bind/rndc.key ファイルの中身を確認する必要があって、"key"で始まる行と"secret"で始まる行の2つの情報がいります。 例えば、次のような rndc.key ファイルの中身だったとします。

key "rndc-key" {
  algorithm hmac-md5;
  secret "dGVzdHRlc3R0ZXN0Cg==";
}
この場合必要な nsupdate のコマンドラインは、次のようになります。
$ nsupdate -y rndc-key:dGVzdHRlc3R0ZXN0Cg==
無事に動くとプロンプトが出てコマンドを入力する事ができるようになります。 IPアドレス "192.168.1.3" で、ホスト名(FQDN)が"smtp.localdomain"を登録してみます。
< update add smtp.localdomain. 86400 IN A 192.168.1.3
< update add 3.1.168.192.in-addr.arpa. 86400 IN PTR smtp.localdomain.
< send
< quit
登録した情報を削除したい場合には、"update delete"に続いて"smtp.localdomain." もしくは"3.1.168.192.in-addr.arpa."を入力します。
< update delete smtp.localdomain.
< update delete 3.1.168.192.in-addr.arpa.
< send
< quit
だいたいこんな感じですが、DNSの操作をする時にはFQDNの後ろにつける'.'がポイントだったりします。あとは現在登録されているはずの正引き、逆引き情報一覧が引き出せればWeb経由で登録させたりする事ができますね…。

2008/03/02

DDNSにALIXのサーバー名を登録する

1台のALIXがDNSサーバーとしてHomeLANの192.168.1.2で動いているけれど、2台目のALIXを普通にdhcp3-clientとして動かしてもDDNSにサーバー名を登録しようとしない事に気がつきました。そこで"/etc/dhcp3/dhclient.conf"を修正する事にしました。
最初の方法は家の環境に依存していますが、手軽です。 設定ファイルにコメントがあるので空行と'#'で始まる行は省きます。

# egrep -v '^#|^$' /etc/dhcp3/dhclient.conf
send host-name "debian";
request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, host-name,
        netbios-name-servers, netbios-scope, interface-mtu;
別の方法はマニュアルにある通り、"send fqdn...."を使用する方法。 IPを逆引きすると"debian.localdomain.localdomain"のような誤った名前解決がされてしまう場合には"fqdn.encoded"の値を調整します。
send fqdn.fqdn "debian.localdomain";
send fqdn.encoded off;
send fqdn.server-update on;
request 以下省略
2台目のALIXの名前が"debian"なのは、ちょっと嫌なのですが、いまのところ目的がないので、安直に導入されているものそのままです。"etch"の方がまだまし…。

そういえばALIXのbogomipsはおよそ1000で、クロック数の約2倍で最近のCPUの傾向と同じ。USBポートにHDDを接続してubuntu-7.10のISOイメージをscpしてみましたが、だいたい4MB/s程度の転送速度がでていました。メインマシンに同じHDDをUSBで接続してセカンドマシンから同様にscpすると11MB/s程度のスピードですが、遅すぎるという事はないですよね…ビデオなんかのボリュームを扱うファイルサーバーという感じではないというところでしょうか。
DNS, SMTP, DHCP, NTPなどのサーバーにするには手軽かつ十分な機能でしょう。その他の使い道が決まらないとなぁ。WebサーバーはDNSの操作とかのCGIを動かす事になるかな。他はどうしようかな。

2008/03/01

シリアルケーブルの種類

ALIXとPCを接続するために近くのヨドバシカメラにシリアルケーブルを買いに行った時に、シリアルクロスケーブルとして2種類のケーブルが売られていました。
何も考えずに印刷されている両端子間の結線図をみて、7,8番ピンが入れ替わっているものを選びましたが、7,8番ピンがショートして片側の1番ピンと接続されている対称的ではない接続をするケーブルもクロスとありましたが、以前PCとUNIXサーバーを接続する時にはうまく使えませんでした。

購入したケーブルはインターリンク・クロス・ケーブルと呼ばれていましたが、店頭ではどちらにも「クロス」の文字があり同じようにみえます。
いろいろ検索しても適切なものを使いましょうとしか書かれていませんが、古いPC-98時代の独自使用の名残りなのかなぁ…。とりあえず買う時には7,8番ピンがショートしていないかを目安にしています。

2008/02/28

linuxからシリアル経由でALIXに接続する

シリアルクロスケーブルを使って、メインマシンのubuntu 7.10からALIXに接続します。
でもkermit使って、接続するだけなんですよね。

$ sudo apt-get install ckermit
$ kermit
(/tmp) C-Kermit> set port /dev/ttyS0
(/tmp) C-Kermit> set speed 38400
(/tmp) C-Kermit> set carrier-watch off
(/tmp) C-Kermit> connect
これだけ。
この後に表示されるメッセージにもありますが、Controlキーと'\'キーを同時に押してから'c'キーを押すと"C-Kermit>"プロンプトに戻ります。終了するなら'exit'を打ち、ALIXに戻るなら'connect'で再接続します。

メモリが256MBあると、Javaを使ったりしない限りは余裕がありそうだけれど、これで何にするかが問題だなぁ。dhcp, dns server を動かすだけだとつまらないし、以前作った固定IPとホスト名のマッピングをなんちゃってrfc1912形式でアップデートするツールのDDNS版なんかも考えないとかなぁ。nsupdate使うと簡単そうだけれど…。

2008/02/23

ALIXとdebianのもろもろ

いろいろ便利に使うために、ちょっとした設定をしてみました。

sshdの導入
もしネットワークルーターにするつもりなら、sshdのようなネットワークログイン可能な仕組みはセキュリティホールになる可能性がありますが、今回はあまりその心配をしない事にしてsshdを動かして普段のメンテナンスはssh経由にしてしまいます。

# apt-get install openssh-server
これは特別な設定を意識せずに動かします。

ホスト名の変更
ホスト名は ns、FQDNで ns.localdomain にしたというのにログインすると元々のCFカードをUSB経由で接続していたマシンのホスト名になっているままです。 そのためホスト名をnsに変更してしまいます。

# echo ns > /etc/hostname
# shutdown -r now
結果を確実に確認するためには、一度shutdownしましょう。 いくらHDDがないとはいってもいきなり電源ケーブルを抜くわけにはいかないのでshutdownします。

sudo管理用ツールの導入
sshdによってネットワーク経由のログインができるようになりましたが、/etc/ssh/sshd_config をみると "PermitRootLogin yes" が有効になっています。 そうはいっても "PermitEmptyPasswords no" の設定もあり、"passwd"コマンドでrootユーザーにパスワードがついていないとログインできない事になります。
sshdを動かす時点で誰かがログインするリスクはありますが、rootでのログインは拒否してしまう方が良いのは確かです。誰でもrootユーザーがUNIXシステムに存在する事は知っているので、rootでのログインを試みる事になります。実際にブロードバンドルーターの設定を変更してsshdの接続を許可すると、ポートスキャンでsshポートが空いている事を察知した攻撃者がrootを含む、まぁありがちな名前でログインを試みます。
今回は自分の趣味で一般ユーザーを作成してrootユーザーのパスワードを/etc/shadowファイルから削除し'*'で置き換えてしまう、ubuntu的な手法を使うための準備としてsudoを導入しておきます。

# apt-get install sudo
# useradd -m uniqid
# passwd uniqid
# id uniqid
今後はuniqid(仮名)でログインして作業をするので、パスワードも設定しておきます。 最後のidコマンドの出力で、uniqidがグループに指定されているはずなので、このグループに所属するメンバーがsudoを自由に使えるように設定を変更します。
visudoコマンドで変更しますが、エディタとして勝手にnanoが動きます。 nano以外に変更したい場合にはEDITOR変数に希望のプログラムを指定します。 emacsが使いたければ emacs を apt-get で導入してから始めましょう。
# env EDITOR=/usr/bin/vi visudo
%uniqid ALL=(ALL) ALL
sshでuniqidでログインしてからsudoコマンドの設定を確認しましょう。
# ssh uniqid@localhost
$ sudo -l
User yasu may run the following commands on this host:
    (ALL) ALL
最後のところで"(ALL) ALL"が表示されれば、まぁ大丈夫でしょう。 それでも怖いのでrootのパスワードを消すのは、しばらく後にします。

apt-get installとapt-cache searchを組合せて必要なものを探していけば、殆どの事はコンパイラやツールなどがなくても、なんとかなると思われます。
ただし、システム管理という観点からは /etc/defautls/ 以下のファイルや /etc/init.d/ スクリプトの動きなども理解する必要があって、複数のネットワークインタフェースを持つALIX2をターゲットにすると、dhcpdサーバーはeth0, eth2だけで動かしたいとか、いろいろな要件を実現するためにまだまだ設定するところがあります。

引き続きALIXでDNSとDHCPdサーバーを構成する

さてDNSサーバーにするには、それで何をさせたいのかという所もポイントになります。 今回はDHCPサーバーにもするつもりなので、Dynamic-DNSサーバーにしていきます。 サーバープログラムの選択肢はいくつかありますが、bind9を使う事にします。 debian + dhcp3-server + bind9 の組合せでDDNSサーバーを構成する方法を解説しているサイトがあるので、これを参考にします。 Configuring Dynamic DNS & DHCP on Debian Stable

bind9かbind9-serverか、どんな名前でapt-getすれば良いのかわからない場合には、キーワードを指定して探す事ができます。

# apt-cache search bind9
...
# apt-get install bind9 bind9-host
必要な設定ファイルは/etc/bind以下に展開されています。 とりあえず /etc/bind/named.conf.options の fowarders にプロバイダのDNSサーバー名を追加しておきます。
# cat /etc/bind/named.conf.options
options {
        directory "/var/cache/bind";

...
        forwarders {
                192.168.1.1;
        };
...
次に /etc/resolv.conf を編集して nameserver で始まる行を外しておきます。 searchの指定がない1行だけなら空のファイルになります。
# cat /etc/resolv.conf
search localdomain
これで自分のbindを使ってIPアドレスを検索するようになります。

ついでなので、192.168.1.0/24の名前解決をするようにします。 とりあえずDynamic DNSの布石として、/etc/bind/rndc-keyを知っているユーザーだけが通知できるようにします。

# tail -3 /etc/bind/named.conf.options
controls {
        inet 127.0.0.1 allow {localhost; } keys { "rndc-key"; };
};
# cat /etc/bind/named.conf.local
...
zone "localdomain" {
        type master;
        file "/etc/bind/db.localdomain";
        allow-update { key "rndc-key"; };
        notify yes;
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192.168.1";
        allow-update { key "rndc-key"; };
        notify yes;
};

include "/etc/bind/rndc.key";
zoneの中で"/etc/bind/rndc.key"ファイルの中で指定されているkey名を書いていますが、そのファイルの"inlcude"は順番が後なんですよね。 ちょっと違和感がありますが、参考書はこう書いてあるので、とりあえずこのままにします。
fileで指定したファイルを準備します。
# sed -e 's/localhost\./localhost\.localdomain\./g' db.127 < db.192.168.1
# sed -e 's/localhost\./localhost\.localdomain\./g' db.empty < db.localdomain
作成したファイルの最後の方を少し編集していきます。
# tail -3 db.localdomain
@       IN      NS      ns.localdomain.
localhost       IN      A       127.0.0.1
ns              IN      A       192.168.1.2
# tail -2 db.192.168.1
@       IN      NS      localhost.localdomain.
2       IN      PTR     ns.localdomain.

dhcpdを導入します。選択肢はdhcp,dhcp3-serverぐらいでしょうか。 今回はdhcp==dhcp2らしいので、より新しいdhcp3-serverを使っていきます。

# apt-get install dhcp3-server
必要な設定ファイルは /etc/dhcp3 の中にあります。 適当に設定ファイルを眺めて、詳細は後で確認する事にして、次のような設定ファイルをでっち上げました。
cat /etc/dhcp3/dhcpd.conf
##
ddns-update-style       interim;
ddns-updates                on;
ddns-domainname             "localdomain.";
include                     "/etc/bind/rndc.key";

# option definitions common to all supported networks...
option domain-name "localdomain";
option domain-name-servers 192.168.1.2;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;

shared-network localdomain {
  subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.30 192.168.1.45;
    option domain-name-servers 192.168.1.2;
    option domain-name "localdomain.";
    option routers 192.168.1.1;
    option broadcast-address 192.168.1.255;
    default-lease-time 600;
    max-lease-time 7200;

    zone    1.168.192.in-addr.arpa. {
            primary 127.0.0.1;
            key             "rndc-key";
    }

    zone    localdomain. {
            primary 127.0.0.1;
            key             "rndc-key";
    }
  }
}
ここまで設定して tail -f /var/loga/daemin.log をみているとエラーメッセージが表示されます。その中にbind9が/etc/bind以下に書き込み権限を持っていないというものがあったので、namedの実行ユーザーbindのプライマリーグループのbindに書き込み権限を付与しました。
# chmod g+w /etc/bind
# ls -adl /etc/bind
drwxrwsr-x 2 root bind 1024 Feb 23 14:09 /etc/bind

とりあえず土曜日の暇潰しにはちょうど良かったかな。 まだカスタマイズしたいところもあるけれど、とりあえずここら辺で今は終りにしましょう

2008/12/13追記

"option domain-name-servers”にホスト名を指定している場合、うまくクライアントがDNSサーバーを設定できない場合があります。IPアドレスを指定するようにしましょう。

ALIXで動くdebianをネットワークにつなぐ

調子に乗ってALIX3も購入してしまいました。そこでここからはALIX2からALIX3にCFカードを載せ替えて進めていきます。ただしそのために古い情報が残る場所もあるので、注意して進めていきます。

先日作成したCFカードを接続してALIX側でNTP, DNS, DHCPサーバーにするぐらいをしようと思います。いきなりCFカードを接続して画面の文字表示が壊れた場合にはTeraTermなどの端末プログラムのバンドレートを確認して、ブートが途中でハングアップする場合には電源を入れてメモリのカウントアップ中に's'を入力してから'm'をタイプして、mfgpt workaroundを有効にします。いままで遭遇した事象で気になるのはこれぐらいかな…。

loginプロンプトには'root'を入力してパスワードなしでログインできるので、まずは適当なパスワードを設定しましょう。

# passwd

ネットワークに接続する場合には/etc/network/interfaceに適当な記述を追加します。 ただしその前にifconfigでデバイス名を確認します。
# athlon:~# ifconfig -a
eth3      Link encap:Ethernet  HWaddr 00:ss:tt:zz:yy:xx
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:10 Base address:0x1000

lo        Link encap:Local Loopback
...
と、eth0ではなくeth3から名前がついています。 MACアドレスでgrepしていくと/etc/udev/rules.d/z25_persistent-net.rulesファイルの中にeth3とこのMACアドレスを紐付けている箇所がありました。 複数のALIXでCFカードを接続していくと、こんな問題になるのだと思います。 必要に応じて適宜修正するか、後のeth0を読み替えて進めます。

# cat /etc/network/interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
 address 192.168.1.2
 netmask 255.255.255.0
 network 192.168.1.0
 gateway 192.168.1.1
どう書いて良いかわからなければ、最初はDHCPで起動してみるのも良いかもしれません。
auto eth0
iface eth0 inet dhcp
今回はALIXをdhcpサーバーにするつもりなので、固定IPを指定しています。 設定を有効にするには再起動するか、ネットワーク設定を行なうスクリプトを実行します。
# /etc/init.d/networking restart
ネットワークが有効になったところで必要なファイルをapt-getするので、DNSを適当なところに設定します。
# cat /etc/resolv.conf
nameserver 192.168.1.1

さらにNTPdを導入して時刻同期を行ないます。

# apt-get install openntpd ntpdate
時刻同期はRINGプロジェクトが提供しているので、そこを指定する事にします。 以下では"listen on *"としていますが、これは家庭内LANで他のマシンからの問い合わせに答えるためです。全部の手持ちのマシンからntp.ring.gr.jpに問い合わせる必要はないですから。
# cat /etc/openntpd/ntpd.conf
listen on *
server ntp.ring.gr.jp
"ntp.t.ring.gr.jp"と記述していましたが、2008/Sep/20の時点ではまだDNSがIPを返答しない場合があります。ちゃんと使うのであれば"ntp.ring.gr.jp"を使いましょう。
このままリスタートしても時刻がリセットされてしまうので、時間がずれたままになってしまいます。"-s"オプションを付けて実行することで、openntpdの起動時に強制的に時刻をntpd.confに書かれているサーバーの時刻と合わせるようにします。
# cat /etc/default/openntpd
...
DAEMON_OPTS="-s"
リスタートします。
# /etc/init.d/openntpd stop
# ntpdate ntp.t.ring.gr.jp
# /etc/init.d/openntpd start
これで時刻は合いますが、表示はUTCで表示されます。 もし日本の時刻-JST-で表示させたければ、/etc/localtimeファイルを適当なリンクに置き換えます。
# ln -sf /usr/share/zoneinfo/Japan /etc/localtime
# date 
Sat Feb 23 11:42:29 JST 2008
ここまでで時刻同期はできていますが、一応どこのNTPサーバーに接続しているのか確認しておきます。
# netstat -na | grep 123
udp        0      0 192.168.1.2:1032        210.188.213.230:123     ESTABLISHED
...
このIPアドレスがどこに向いているのかを確認するためには"nslookup"コマンドや"host"コマンドで確認すれば良いのですが、どうやらまだ導入されていないようです。 ひとまずここで終りにして、次は必要なコマンドを導入しつつ、DNSサーバーを作るところから進めていきます。

update/upgradeの実行について

ALIXでは内蔵時刻を保持するための電池を内蔵しているものを除き、時刻の設定を起動時に行なう必要があります。
CFカードをALIXに接続した後は手動で時刻を設定しない限り、"apt-get update"や"apt-get upgrade"といったコマンドを実行する事ができません。 ntpdateとopenntpdの設定を終える前に、これらのコマンドを実行したい場合には手動で時刻を合せましょう。例えば”2009年01月22日22時56分”に設定する場合は、こんな感じです。

# date 0122225609

2008/02/21

Ubuntu 7.10からALIXでブート可能なCFカードを作成する

voyageはデフォルトで/をroでマウントしたり、実用の観点からは非常に良いのですが、そのためカスタマイズが少し難しく感じたので、voyageを参考にALIX用に素のdebianが動くCFカードを作成してみました。

メインマシンのubuntu 7.10にUSBのカードリーダーを接続し、CFカードを入れ、dmesgコマンドの出力から/dev/sdgとして認識されているところまで確認します。
とりあえずext2fsにフォーマットします。

$ sudo /sbin/fdisk /dev/sdg
コマンド (m でヘルプ): p

Disk /dev/sdg: 519 MB, 519708672 bytes
16 heads, 62 sectors/track, 1023 cylinders
Units = シリンダ数 of 992 * 512 = 507904 bytes
Disk identifier: 0x18468ac9

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdg1               1        1023      507377   83  Linux
$ sudo /sbin/mke2fs /dev/sdg1
$ sudo /sbin/tune2fs -c 0 -i 0 /dev/sdg1
次にdebファイルを展開します。ここでは作成した/dev/sdg1を/mnt/cfにマウントしておきます。
$ sudo mount /dev/sdg1 /mnt/cf
$ sudo debootstrap --arch i386 etch /mnt/cf
i386を指定しているのはメインマシンがx86_64だからです。ここで画面がずっとスクロールして、そこそこの時間が掛ります。次にブートローダーをMBRに導入してしまいます。
$ sudo grub-install --root-directory=/mnt/cf /dev/sdg 
ここまでで、そこそこ動くようにはなっていますが、なにしろ/mnt/cf/boot以下にカーネルイメージがありません。そこでカーネル含めいろいろapt-getしていく事にします。chrootを使って普通にapt-getします。
$ sudo chroot /mnt/cf /bin/bash
# apt-get install linux-image-2.6.18-6-486
"Do you want to abort now?"には"No"を選択し、これ以外はデフォルトの選択肢をそのままリターンキーを押して選択していきます。grubが動くように/boot/grub/menu.lstファイルを作成します。
# cat /boot/grub/menu.lst
serial --speed=38400
terminal serial
##
default         0
timeout         10
##
title           debian etch
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18-6-486 root=/dev/hda1 console=ttyS0,38400n8
initrd          /boot/initrd.img-2.6.18-6-486
savedefault
さらに/etc/inittabでtty[1-6]でのgettyをコメントアウトし、シリアルでgettyが動くようにttyS0を有効にします。
# cat /etc/inittab
...
##1:2345:respawn:/sbin/getty 38400 tty1
##2:23:respawn:/sbin/getty 38400 tty2
##3:23:respawn:/sbin/getty 38400 tty3
##4:23:respawn:/sbin/getty 38400 tty4
##5:23:respawn:/sbin/getty 38400 tty5
##6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100
...
シリアルで接続する際は通信レートが合わないと、画面がグダグダになってしまうので"38400"に修正します。これは原因がわからずに迷ってしまう可能性が高いところなので、TeraTermなどの端末の表示がおかしくなった場合には気をつけてください。 あとは/etc/fstabファイルです。
# cat /etc/fstab
/dev/hda1 / ext2 defaults 0 0
proc /proc proc defaults 0 0
とりあえず必要なものは後からapt-getする事にすれば、これで稼動するはずです。 まだ/etc/network/interfaceなどを準備する必要がありますが、これはALIX側でシリアル経由で行なっていきます。

2008/02/19

ALIX2ボードで遊んでみる

ヤマモトツールワークスというところから、AMD Geode 500MHzを使ったシングルボードコンピュータを買ってみた。アプライアンスなネットワーク機器を作るためのものだけあってシンプルな構成だけれど、x86ベースなのはいろいろ便利そうだ。

さっそくvoyage-0.4.1を使ってみたけれど、BIOSの設定を変更してmfgpt (Multi-Function General Purpose Timer?)を有効にしてみた。メモリのカウントアップ中に's'キーを押して、'm'を押してから抜けるだけだけれど、画面では'm'で変更されたのかわからなかった。

HDDのような物理的な駆動装置がないので遠慮なく電源落とせて簡単に試せるのがいいです。 なにしろx86ベースだし、500MHzで動くとなると、それなりにパワーも期待できるか、家のmicroATXなPCで動いているサーバー機能を引っ越しながら試してみます。

そうそうUSBなCFライタをlinuxに差して/dev/sd*として認識させたけれど、ブートローダーの設定とか普通にできるんですね。CFカードとSATAの変換器を使わないとかなと思い込んでいたけれど、手軽にCFカードに書き込みができて本当に便利でした。

2008/02/17

Visual Studio 2005でサンプルがコンパイルできない

モバイル開発環境が2008版からProfessional以上にしか付かなくなるので、駆け込みでVisual Studio 2005 Standard版を購入した。
Express版を持っていたのでアップグレードパッケージを買ったけれど、期間限定でなくなっているし、通常版を買うのは開発を専門にするような会社なのかな。

とりあえずWindows Mobileの環境は作るだけで放置する事にして、普通にC++のサンプルをダウンロードしてコードをいじりながら試してみる事にした。
ZIPファイルを展開して、*.slnファイルをオープンしてビルド!と思いきや、ビルドをスキップされてしまう…。
エラーも表示されないし、どうしたものかと思ったけれど、スタート画面から作成したプロジェクトは普通に実行できるので、メニューを適当に眺める事にした。

「ビルド」メニュー →「構成マネージャー」を起動してみると"Itanium"の文字が…。IA-64ですか、そうですか。

これをWin32に変更して無事にビルドできるようになりました。

2008/02/12

テレビを買ってみた

学部を卒業して就職する友達から貰った95年製のテレビに別れをつげて、日立のL37-XR01という液晶フルハイビジョンテレビを買いました。もらった時から数えても10年ぐらい使っているので、まぁ十分でしょう。

選択する時の基準はIPS液晶(できれば国産)と倍速駆動だけなので、パナソニック、ビクター、東芝等と比べて、単純にたまにみるテレビ番組が録画できれば良いから程度の理由で、ダブルチューナーでHDD内蔵のXR01にしてみました。

元々機能には期待していなかったので、まぁこんなもんでしょうと思います。 でもまともにテレビをみる生活をする人なら大人しく、パナソニックで液晶+HDDレコーダーを揃えてHDMI接続した方が幸せな感じになるでしょうね。

実家のアクオスな液晶+HDDレコーダーの組み合せと比較すると、XR01のEPGの機能は使いづらいし、録画した映像を選択する時のまどろっこしさは製品化する時にQAerがよく許可したなと、QAerは他社の液晶テレビを使ったことがなかったんじゃないかと思うほどです。

それでもPS3と接続して観るBlu-rayの映像は素晴しいです。 店員さんにアクオスと比べると、ぼやっとした感じになりますよ、と言われたけれど、あんなに明るくてとんがった映像よりはよほどいい。まぁ昔からパソコンの液晶もIPSだし、慣れてるのかな。

それにしてもテレビの単価って、液晶に切り替わってからすごく上がっていますよね。 何年か前にブラウン管で買い替えを考えた時には、3-5万円ぐらいで迷って止めましたからね。 考えてみるとテレビだけじゃなくて、パック当りの量を増やしたりして、何かを一つ買う時の単価は21世紀になってからだんだん上がっている。

個人の収入は増えなくても、1回の消費の単価が上がれば、企業はもうかるよなぁ。

2008/02/03

日本国憲法を考える

動画サイトをみていると、いくつか憲法改正やら9条の取り扱いについて話されているものがあった。みていて気持ちが悪くなったのだけれど、9条を守れば世界から尊敬されるとか、自衛隊は憲法違反だから解散するべきだとか、戦後与えられた憲法だから変更するべきだ、とかいう主張のベースに何があるのか見えてこない。

私は平和を真に希求するという理念と実行力を持つ事が世界に対して表明できれば良いと思っています。その点では現在の自衛隊の位置付けは恣意的に運用される可能性があり、必ずしも世界平和に貢献していない点を懸念していますが、自衛隊の存在が悪いとは思っていません。
ただし戦争の後の文化的な復興を日本が強いリーダシップを持って行なうような、PKOのような活動ではないところに、アメリカから頼まれなくても向っていく集団が欲しいと思っています。

9条の存在、自衛隊は持たず、非武装、非抵抗が世界から尊敬されるという人たち。

憲法改正に賛成と聞いて、自衛軍創設を支持するのだと脳内変換する勘違いな人たち。

アメリカの尻拭いのようなPKO活動に参加するために憲法を改正しようとする国を自分の物だと勘違いしている人たち。

どの道をいっても中国に占領されるか、何もかわらないか、アメリカの召し使いになるか… 将来に希望を持つ事ができません。
具体的な大きな目標を掲げて、現在の憲法改正の大きな動きの中道を行くような将来のビジョンを持って行動できる人たちはいないのでしょうか。

けしてそれぞれの人達の言う事自体が悪いとは思っていなし、その中にはとても良い事が含まれているけれど、その根底にある、その人を突き動かしている物を考えた時に、平和を訴える人達にも、軍拡に進みたい人達にも、ぞっとしたものを感じます。

2008/02/02

X Windowに絶望する

某Webサイトのオープンソースソフトウェア解説漫画やら、何も知らないであろう職場の同僚や後輩が「いっくすうぃんどう」と発言しているのをみると、「エックスでいいんじゃない?」と思います。

職場では、タイミングをずらして訂正しますが、やはり手遅れで認知度が低いようです。
まぁ細かいところにこだわるのは本筋ではないのですが、「それ違うでしょう」というお客様のツッコミに反応できるだけの知識もないとなんですよね。

まぁ普段はそれでいいけれど、「X」の正式名称がわざわざ定義されていて、それ故にこだわる人がいる事だけは覚えておきましょう。

記憶と情報のはざま

昔、祖母が使わなくなった物を押し入れに入れていた事を不意に思い出しました。何に使うという事でもなかったけれど、私も包装紙を保存しておけばブックカバーに転用したりできるかなって少し思いました。最近はブックカバーに少し凝っているので。

それからいろいろ思い出して、お菓子作りやら御飯やら料理が得意だった祖母は、いつだったか学生でろくに自炊をしない私に「いまの時代は外で買ったもの食べてもおいしいものね。むかしはそんなにおいしいものなかったわ〜」といっていた事を思い出します。
今は餃子の農薬問題やら食品添加物が問題になったりするけれど、保健所やら行政が頑張っているせいか変なものはあまりないようです。それなりに幸せな時代っていう事なんでしょうか。

そんな祖母は婦人向け雑誌のレシピの切り抜きをやたら残していましたが、昔はいまみたいに情報がこんな安価に流通していなかったから、そういう情報を残しておく癖がついたんでしょうね。
押し入れの他のものも、もったいない、というよりも次に手に入るチャンスがあるとは思っていなかったんでしょう。いまでは大抵のものは後で手に入れたものの方が良いものがあるという雰囲気です。

いまは、何の保証もないですが、レシピや探し物は簡単に探す事ができます。
自分が必要としている情報は検索したり、簡単に探せるところに"誰かが残してくれている"と思って安心しているということはないでしょうか。
あるいは後から手に入れるものの方が品質が高いと思っているのかもしれません。

雑誌の記事ならその会社がある程度の信頼性(保証なし、信用のみ)を担保してくれますが、匿名性が高い、今のインターネットの使われ方は少し危険な方向を向いているのかもしれません。
誰が何を書いたかトラッキングできる概念を持つザナドゥは、実現してはいませんが、一定の方向性をいまだに持ち続けているという意味で偉大な発明(概念)だと思います。
いまの時代に私たちは手に余るコンピューティングパワーを手に入れて、何をするんでしょう。 今まで手に入れる事ができなかったものをどんどん手に入れていくこの時代に何をするべきなのでしょうか。

インターネットに完全な本人確認は不要だと信じていますが、確かに何かには必要なんでしょう。 それがNGNなのか、Carnivoreのような検閲の仕組みなのか、また違うもので実現されるのかわかりませんが。