2011年12月2日金曜日

SQL ServerのSQLで西暦を和暦に変換する方法

SQL ServerのSQLで8桁のYYYYMMDD形式の西暦を和暦に変換する。
select case
when BIRTHDAY > '19890107' then '平成'
when BIRTHDAY > '19261224' then '昭和'
when BIRTHDAY > '19120729' then '大正'
when BIRTHDAY > '18680124' then '明治'
else '0'
end 年号,
case
when BIRTHDAY > '19890107' then BIRTHDAY - 19880000
when BIRTHDAY > '19261224' then BIRTHDAY - 19250000
when BIRTHDAY > '19120729' then BIRTHDAY - 19110000
when BIRTHDAY > '18680124' then BIRTHDAY - 18670000
end 年月日
from (select '19990123' BIRTHDAY) DUMMY
実行結果は以下の通り
年号 年月日
---- -----------
平成 110123

(1 行処理されました)
年号と和暦の年月日を出力する。
このSQLでは年号を「平成」とか「昭和」という文字列で出しているが、実際はコードに変換するようなことの方が多いかもしれない。

西暦4桁の年だけで和暦に変換するには基準となる年月を定める必要がある。
select case
when BIRTHDAY >= '1989' then '平成'
when BIRTHDAY >= '1926' then '昭和'
when BIRTHDAY >= '1912' then '大正'
when BIRTHDAY >= '1868' then '明治'
else '0'
end 年号,
case
when BIRTHDAY >= '1989' then BIRTHDAY - 1988
when BIRTHDAY >= '1926' then BIRTHDAY - 1925
when BIRTHDAY >= '1912' then BIRTHDAY - 1911
when BIRTHDAY >= '1868' then BIRTHDAY - 1867
end 年
from (select '1999' BIRTHDAY) DUMMY
実行結果
年号 年
---- -----------
平成 11

(1 行処理されました)
この場合12月24日~12月31日のいずれかの日を基準とする場合には正常な結果になるが、それ以外で使うには、上記SQLの数字部分を書き換える必要がある。

Linuxカーネルのバージョンを確認する

yum updateをする際に現在のカーネルのバージョンを見たかったので以下のコマンドで調べた。
uname -a
以下のような結果が表示される
Linux hostname 2.6.18-274.7.1.el5 #1 SMP Thu Oct 20 16:21:01 EDT 2011 x86_64 x8
6_64 x86_64 GNU/Linux
カーネルバージョンは 2.6.18-274.7.1.el5 だと分かる。

unameはシステム情報を表示するコマンドで、オプションの指定により、マシンタイプ、ホスト名等の情報を見ることもできる。

光ポータブルで有線LAN、無線LAN、3Gを自動切り替え

so-netモバイル3G」を使うためにNTTの「光ポータブル」というサービスに申し込んだ。
「光ポータブル」はモバイルWi-Fiルーターのレンタルだ。NTTの光回線を契約している場合に、315円追加することで使うことが出来る。
このルーターはNTT docomoのFOMAデータ通信やイー・モバイル、ぷららモバイルでも使うことができる。
このルーターは、二通りの使い方がある(ルーターの機械的なスイッチで切りかえる)。
1.LAN側を無線LAN、WAN側を、3G、無線LAN、有線LAN
2.LAN側を有線LAN、WAN側を、3G、無線LAN
きっちり頭の中を整理しないと、ややこしい。

1の場合、パソコンとルーター間は無線LANで接続し、ルーターから先を3通りから選択できる。

ひとつは有線LANで、ADSLモデムや光回線のONUに直接つなぐルーターモードと、ルーターをブリッジモードに切りかえて、既存のLAN内に追加する形で使うことができる。既存のLANから先にインターネットがつながっているのであれば、パソコンからルーターを経由してインターネットにもつながる。
2つめは、無線LANのアクセスポイントにつなげることができる。これは市販のアクセスポイントを持った無線LANルーターの他、公衆無線LANも設定できる。これらアクセスポイントは複数設定できるので、その場に応じて、最適なアクセスポイントを選択させることができる。自宅にいるときは、自宅の無線LANアクセスポイント、外出先にいるときは、それぞれの場所に応じた公衆無線LANを使うといったようにだ。認証はIEEE802.1x/EAP、WPA-PSK、WPA2-PSK、WPA-EAP、WPA2-EAP、暗号方式はWEP、TKIP、AESに対応している。
3つめの3Gは、NTT docomoやイー・モバイル等の3G回線に接続する。私の場合ここがso-netの回線となる。ただし設定できるのは1つだけなので、複数回線を自動で切りかえるようなことはできない。3Gスケジュール機能というのがあって接続時間帯を制限することができる。時間帯によっては従量制に切り替わる契約プランを行なっている事業者への対応だ。

一般的に、通信速度や通信コストは、有線LAN > 無線LAN > 3G の順になることが多い。
パソコンとルーター間はいつも無線LANで、ルーターから先のWANについては、有線LANが使える時は有線LAN、それが使えないときは無線LAN、それもダメなら3G、と使い分けることができる。
ただし、有線LANのコネクタはルーター本体についておらず、充電器を兼ねたクレイドル側にあるため、外出先で有線LANを使うということはできないと考えた方がよい(クレイドルも持って出ればできる)。
以上のことから、自宅では有線LANか無線LAN、外出先では無線LANか3Gというのが、通常想定される使い方になるだろう。
ルーターをクレイドルに乗せると、有線LANが使われるのは分かるが、無線LANと3Gの場合、どちらを使うかという選択についても通常はルーターに任せておけばよい。カスタマイズしたいなら「接続性優先モード」「無線LAN優先モード」も用意されている。
このように、一回ルーターさえ設定すれば、その場に応じて3種類の回線を自動的に使い分けしてくれる。

もうひとつの2の使い方の場合は、クレイドルの有線LANポートを使って、パソコンとルーター間を有線LANで接続する。
こちらは唯一の有線LANポートが使われてしまうので、WAN側を有線LANにはできない。またクレイドルが必要なので、持ち運びには不便となる。

このルーターPWR-100FはbuffaloからDRW-PGとしても販売されている。定価37,000円、実売で2万5千円ほどする。
レンタルで2年使ったとして315円×24ヶ月=7,560円。普通はレンタルの方が得だ。ただし2年以内に解約すると解約料7,530円かかる。あくまで借り物なので、使い終わったら返さなければならないし、破損すると弁証だ。

サイズや重量は、こんなものだろうと思う。
表面はザラつきのあるブラックで、プラスティッキーなところが、ちょっと安っぽい感じはする。
ポケットやかばんにすっぽり入るサイズなので、パソコンと一緒に持ち運ぶのに、それほど負担にはならない。
かばんやポケットに入れっぱなしで、ノートパソコンを開くと、Wi-Fi接続を受けたルーターが勝手にスタンバイから復帰して、意識することなくインターネットにつながる環境ができる。
バッテリーも1日ぐらいは持つようだ。万一のときはケーブルがあればUSB給電で充電できる。

無線LANが54Mbpsまでしか対応していないので、自宅のメインのルーターの代わりとして使うにはちょっと力不足ではある。
このあたりのことを考えるとやはり光ポータブルでレンタルでよいように思う。