RowState の状態遷移

.NetFramework の DataTable 内の行を表す DataRow は、現在状態を RowState で知ることができます。
このプロパティは DataRow に対して操作をすることで刻々と変わっていくわけですが、何をしたらどう変わるのかについてまとめたのが上記の図です。

状態遷移表に下記表すと、下記のようになります。
左端の列が行に対するタスクで、DataRow.RowState の値がそれより右の列のときにそのタスクを実行すると、セル内の値に変わる事を表します。

タスク 開始 Added Deleted Detached Modified Unchanged
DataTable.NewRow() Detached -- -- -- -- --
DbAdapter.Fill() Unchanged -- -- -- -- --
行変更 -- Added DeletedRowInaccessibleException Detached Modified Modified
DataTable.AcceptChanges() -- Unchanged Detached Detached Unchanged Unchanged
DataRow.Delete() -- Detached Deleted Detached Deleted Deleted
DataTable.Rows.Add() -- ArgumentException ArgumentException Added ArgumentException ArgumentException

DataTable.NewRow() で行を作成すると Detached 、 DbAdapter.Fill() で DataTable に値を流し込んだ直後の DataRow は Unchanged になっています。
これに対していろいろ操作していくわけですが、 Added の DataRow を編集しても Added のままであることは、ちょっと注目してもいいかもしれません。
ネット上で公開されているサンプルでは DataTable.NewRow() で新しい行を作成した後、その行に値を設定して、それから DataTable.Rows.Add() でテーブルに行を追加するという流れになっているものがほとんどです。
しかし Added の DataRow を編集しても Added のままですから、 DataTable.NewRow() ⇒ DataTable.Rows.Add() ⇒ 値編集 という流れにしても問題ないことがわかります。
たとえば Fill() してきた DataTable に目的の行があればそれを編集して、なければ新規追加という流れはよくある話でしょう。
これをサンプル通りに書くと行の作成とテーブルへの追加のそれぞれで if 文が必要になりますが、上記の状態遷移を考えると、 if 文は行作成時の一回だけですむことになります。

山手線の外回り・内回り


東京の路線というのは慣れないと非常にわかりにくいわけですが、特にわかりにくいのが山手線の外回り・内回りではないかと。
私も初めて上京した頃、どっちがどっちだかわかりませんでした。
ところが模式図にすればわかりやすいのではないかなと思って、こんな図を描いてみました。

1. 楕円を描く。これが東京都。
2. 東京都の中に、左端が楕円の中心付近に来るような円を描く。これが山手線。
3. 山手線の右端から真横に貫く直線を描く。これが中央線。
4. 山手線と中央線の交点のうち、左側が新宿、右側が東京。
5. 新宿を下から上に横切るのが山手線外回り、逆が内回り。又、東京を下から上に横切るのが内回りで、逆が外回り。

環状線である山手線を二重丸に見立てたときに、その電車がどちらの丸を走るかが外回り・内回りの由来です。
で、電車というのは車と同じく左側通行ですから、どの方面を向いているかで自ずとどちら回りかも決まるわけですね。
あとは路線図などを見て山手線のそれぞれの駅がどの辺にあるかをマッピングできれば、外回りと内回りのどちらに乗ればいいのかもわかる次第。

昔はいろいろな色の CD-R があった

明けましておめでとうございます。
旧年中は様々な意味で皆様のご支援をいただき、大変お世話になりました。
今年もまたよろしくお願いいたします。

さて Twitter 上で CD とかの規格について少し触れたので、こちらにまとめ直しておきます。
とはいえ記憶頼りのあやふやなネタですが。



10年ほど前まだ DVD が規格戦争を繰り広げていた頃、 PC の恒久的データ保存と言えば CD-R でした。
全盛期には、ホントにいろんな会社がいろいろな生メディアを出していたんです。
やはり安いメディアは耐久性が低く、日光に少し当てるとまったく読めなくなってしまった記憶があります。
しかし高いメディアはきっちりと耐え、特に太陽誘電製のメディアは絶対的な信頼性がありました。

で、おもしろいメディアとしては、色つきの基板を使ったものがありました。
色つきディスクというと PlayStation の黒色基板が記憶に残っていますが、生メディアでも赤、黒、青などがありました。
色付いててもデータを読めるのかと思いますが、これが規格上、なんの問題もないんですね。

CD は波長が 780nm の赤外線レーザーでディスク上の微小な凹凸を読み取ります。
ということは、この波長を規定以上通す物質であれば基盤になり得るわけです。
……と理論的にわかっていても、不思議なものですよね。
てことで当時、赤外線から紫外線までの範囲で、各波長の吸収率を調べたことがあります。
生ディスクを細長く切って反射層を剥がし、色素をアルコールで拭き取って分光光度計にかけました。
そうすると、どの色も見事に 780nm あたりにウィンドウがあることがわかりました。
これならちゃんと読めるわな、と。
ちなみに普通の透明の基板だと可視光領域は全領域で見事に透明で、光学性能の高さを痛感した次第です。

余談ですが、当時 CD-R の光学的耐久性を調べたくて、殺菌灯を記録面に当ててみたことがあります。
ところが一週間くらい連続で照射しても、読み取りエラーがまったく起こらないんですね。
周りのダンボールやホルダー代わりのディスクケースは変色して朽ちかけていたにもかかわらず、です。
おっかしいなーと思って先の吸収率のデータを見直してみたら、透明の基板は殺菌灯が主に発する波長である 220nm のあたりをほぼ完全に吸収していました。
つまり、殺菌灯にとって CD-R の基板ってのは真っ黒なんです。
ところがブラックライトの 365nm 付近は 50% ほど透過していたので、こちらに切り替えて加速度試験をしていました。
あ、以上は全部趣味ね。



今となっては HDD のクラッシュですべて消えてしまったのが心残りです。
DAT には残っていたはずなんですが、こちらもドライブが壊れてしまったので復旧不能
ええ、個人で DDS4 使ってましたw

キッチン掃除の傾向と対策

年の瀬も迫りまくってきたこの時期、ほとんどのご家庭では大掃除に追われている頃ではないでしょうか。
その中でも二番目の難敵がキッチン周りのお掃除。
ホコリと油と食べかすでぐっちゃぐちゃのこの場所をいかにスマートに済ませるかで、大掃除の攻略が決まると言っても過言ではない気がします。
ということで、元化学屋(一応、学生時代の専攻は分析化学)の私が結構マジになって考えてみました。
どの項目にも共通していえることですが、まずは荒く汚れを落として、仕上げをすることです。
一撃で何とかしようと考えちゃ行けません。

換気扇

汚れの傾向:油とホコリ
対策:天ぷら油で古い油を溶かし、台所用洗剤でフィニッシュ

キッチン掃除の最大の敵ですよね、換気扇。
扇風機型にしろフード型にしろ、ホコリを吸いまくった油がどろっどろに溜まりまくっていて、どんなに洗剤をぶち込んでもどんどん消費され、いっこうにきれいになる気配がありません。
ところがね。油って、油に溶けるんですよ。
てことは、きれいな油をかけてやればグリス状の古い油を洗い流すことができるんです。
「きれいな油」と言っても、天ぷら油の残りとかでOK。
換気扇に結構景気よく油をかけて、ペーパータオルでゆっくりと拭いてやると、古い油を笑っちゃうくらい簡単に落とせます。
最後に台所用洗剤で洗ってやればOK。

シンク

汚れの傾向:食べかすとその腐敗物。主にタンパク質と油。
対策:お湯で下洗いをしてクリームクレンザーでげしげしと。

色が変わってたりぬるぬるしてたりと、これを落とすのかと思うと結構げんなりします。
ところがグリス状の油と違ってほとんどが水で流せるモノなので、まずはお湯とスポンジで下洗いをしましょう。
この段階ではお湯を使うのがポイント。シンクの汚れのほとんどは、40度くらいに温めると結構流れていきます。
あと、ここでは洗剤は不要です。どうせ下洗いだから。
次に、ジフなどのクリームクレンザーを景気よくかけて、きっちり洗っていきましょう。
なければ台所用洗剤でもOKです。

シンク内の小物

汚れの傾向:食べかすとその腐敗物。主にタンパク質と油。
対策:お湯で下洗いの後、台所用洗剤で洗浄。次亜塩素酸で殺菌。

三角コーナーバケツとか、排水溝のふたとか、ゴミ受けとか、サイホンカップとか。
シンクとほぼ同じなんですけど、汚れの程度が違います。
顔をしかめながら、まずはシンクと同じ要領でがんばって洗いましょう。
これだけいろいろな種類の汚れがついているのに、薬品だけで何とかしようって考えは甘いです。
スポンジやたわしで機械的に汚れを落とすことが重要です。
その後で、バケツに水を張ってハイターなどの次亜塩素酸で殺菌。
殺菌する際は、水の容量をよく確認しましょう。
バケツにしろキッチン用の桶にしろ、思ったよりも水が入りますよ。

コンロ

汚れの傾向:焦げ付いた食材と油
対策:まずは水漬け、その後スチールウールとクレンザーでがんばる。

焦げ付きは正直どうにもならねぇ……
カーボンって、本気で何にも溶けないんです。
火をつければ燃えますけど、ご家庭の掃除でンな事するわけに行かないし。
しかし完全に炭化していることはまれなので、お湯につけると剥がれやすくなります。
てことで、まずはお湯に10分ほどつけて柔らかくし、その後スチールウールとクリームクレンザーでげしげし削ってください。

なお、五徳の先についている焦げ付きはシリコンが主成分です。
ぶっちゃけ、石ね。
空気中を舞っている砂埃がこびりついちゃってるんですね。
これは赤くなるまで強熱してハンマーで叩いてやるときれいに割れると聞いたことがあるんですが、私は成功したことがない。

コンロ周りの壁

汚れの傾向:油
対策:緩く絞った雑巾で水拭き、天ぷら油で拭き取り、最後にお湯で拭き取り

コンロから蒸発した壁に油膜を貼っている例ですね。
洗剤使おうにも洗い流せないので、結構難儀します。
とはいえ、この辺はほとんどがタイル張りか樹脂コーティングしてあると思うので、それ前提で考えます。
まずはお湯で水拭きして埃を落とします。
下がきっちりした樹脂コーティングで、油膜が薄い場合はこれで結構落ちます。
それで落ちない油は、換気扇と同様にきれいな油でぬぐいます。
このときはペーパータオルに油を含ませて拭くだけでOK。多すぎると後で苦労します。
んで、最後にもう一度お湯で拭き取ります。

キッチンの床

汚れの傾向:食材の切れ端、埃、油
対策:掃除機かけて、お湯で拭いて、床用水拭きシート

強力な換気扇を使っていても、結構油でべとべとしてますよね。
とはいえ、キッチンのほかの場所と違ってほとんどが埃汚れなので、まずは掃除機です。
次のお湯で水拭きします。これは、お湯の温度で油を融かして拭き取るのが目的。
んで、最後にクイックルワイパーの床用水拭きで仕上げます。
いきなりクイックルワイパー使うと、消耗が激しすぎてやってられません。



ところで、一番の難敵は使わなくなった大量のモノの廃棄なんですけどね。
これは……どうしようかなぁ。

au スマホに「ISフラット」は本当に有利だろうか

先日、携帯電話を落としました。
その衝撃でか、au ICカードを読み込みができなくなってしまいました。
54ヶ月使った端末ですが、ついに鬼籍に入ることに。

てことで、即日スマホに機種変更。
京セラの Android スマホ "URBANO PROGRESSO" です。
防塵・防水に加えて、ホームボタンなどが機械式なので誤動作しにくいのがウリですね。
あと、スピーカーがない。
ディスプレイそのものを振動させてスピーカーとする "スマートソニックレシーバー" という技術だそうです。

さて。
auスマホを利用する場合 "ISフラット" を契約するのが定石でしょうが、料金的には本当に有利なんでしょうか。
私のケースで検証してみました。

まずは前提条件。
私はデータ通信用途として @niftyWiMAX に契約済みです。
携帯電話はガラケーだったモノが、今回の災厄に伴ってスマホになった次第。
この状態で WiMAX を廃止してスマホに一本化し、 ISフラットに変更した場合を想定してみます。

データ通信部分の金額だけを取り出してみると、

ISフラット 1,627円(税込)
+ WiMAX      525円(税込)
-------------------------
合計       5,985円

では WiMAX を廃止せずに、スマホWiFi回線でのみデータ通信をするとしてみるとどうでしょうか。

ダブル定額スーパーライト   390円(税込)
@nifty 基本料              250円(税抜)
@nifty WiMAX             3,420円(税抜)
---------------------------------------
小計                     4,060円
消費税                     183円
---------------------------------------
合計                     4,343円

ということで、WiMAX を継続した方が1742円有利という事になります。
しかし私のケースではIS フラットを使用すると端末の割引が入るので880円安くなりますので、現実には後者の方が 862円有利と考えた方がいいでしょう。

ところで、kakaku.com 等を経由すると WiMAX の利用料が場合によっては2000円近く安くなるケースもあるようです。
これらを組み合わせると、料金的には後者の方が圧倒的に有利となります。

しかし、後者には欠点もあります。
3G回線をまったく使わない運用を強いられますので、たとえばビルの中のような WiMAX 電波が届かない場所では使用できません。
都市部での外回りが多い人は問題ありませんが、ビルの自席にべったりだったり、田舎住まいの人には厳しい運用になるかと。

VHD をお手軽にアタッチ・デタッチするバッチ

Windows 7VHD ファイルがネイティブサポートされるようになったんですが、私も最近になってやっと活用するようになってきました。
7に切り替えてから何年経つんだよ、とorz

VHD を使用するにはディスクの管理ツールを使ってGUIでアタッチするというのが常道ですが、VHDを頻繁に差し替える運用をしていると、これ結構面倒なんですよね。
てことで、こんなバッチを組んでみました。

attach_vhd.bat

IF EXIST %1 (
ECHO SELECT VDISK FILE="%1" > %TMP%\diskpart_script.txt
ECHO ATTACH VDISK >> %TMP%\diskpart_script.txt

DISKPART /S %TMP%\diskpart_script.txt
)

:END

detach_vhd.bat

IF EXIST %1 (
ECHO SELECT VDISK FILE="%1" > %TMP%\diskpart_script.txt
ECHO DETACH VDISK >> %TMP%\diskpart_script.txt

DISKPART /S %TMP%\diskpart_script.txt
)

:END

上記を適当なフォルダに保存しておき、 VHD をアタッチするなら attach_vhd.bat に VHD ファイルをドラッグ&ドロップするだけ。デタッチなら detach_vhd.bat を使います。

VHDコマンドラインでアタッチ・デタッチするには DISKPART コマンドを使いますが、こいつを自動化するにはスクリプトファイルを食わせる必要があるんですね。
ところが VHD ファイル名はその都度変わるので、あらかじめスクリプトファイルを作っておくことはできない。
だったらスクリプトファイルをバッチで作っちゃえ! てな発想です。

簡単なバッチですけど、ストレスが大きく軽減されます。
あとは UAC だなー。

ETERNAL RETURN を見てきた

先週末、「コスモプラネタリウム渋谷」でプラネタリウム番組「ETERNAL RETURN-いのちを継ぐもの-」を見てきました。
これはすごいわ……


話の筋は、少女「はるか」が祖父から宇宙の話を聞いているというものです。
ただ、その話の内容が濃ゆい濃ゆい。
ビッグバン直後のインフレーション状態、そして宇宙の晴れ上がりから地球での生命の発生までが最新の理論に従って語られます。
しかも、映像の一つ一つが非常に細かいところまで気を遣って描き込まれています。

たとえば原子といえば原子核の周りを電子が円軌道を描いて回っている図を思い浮かべますが、「ETERNAL RETURN」ではぼやっとした球体で表現されています。これは分子雲を表しているんですね。
実際の原子では電子という粒子が原子核の周り決まった軌道で飛び回っているのではなく、波動関数に従って確率論的に存在することがわかっています。
この辺は量子力学の世界なんですが、上記を図示するとぼやっとした球体になるんです。

他にも宇宙開闢の頃は水素、ヘリウム、リチウムの三種類の元素しかなかったのが周期表で示されています。
これは星が生まれて光り始めると一気に増えるんですが、この時点では26番の鉄までしか示されません。これも、恒星内部での核融合反応の知見通りです。
そして超新星爆発が起こると、周期表が完全に埋まります。
まさしく、すべての元素は星から生まれたことが示されていますね。

それこそシーンの一つ一つが科学的に見てきっちりと描き込まれていますが、監修者を見ればむべなるかな。
国立天文台海洋研究開発機構情報通信研究機構千葉大学真菌医学研究センター、高エネルギー加速器研究機構といった研究機関から、総勢6名が参加しています。
これ、監修者の方々からそれぞれのシーンの思惑について解説付きで見れたら、スゲー楽しいだろうな……


作品のタイトルはメッセージ性の強いものですが、精神論を振りかざしている部分は一切なく、宇宙論の教育素材としても非常にいい作品ではないかと思います。

現在は「コスモプラネタリウム渋谷」でのみの上映ですが、9月8日からは「府中郷土の森博物館」でも上映されることになっています。