正規表現生成・テストGUIツール KregExpEditor

便利な正規表現ですが、サクサクッと正規表現のテストや生成をしたい場面や、人の書いた正規表現を読むのが非常に辛いといった場面にしばしば遭遇します。
そのような時に便利なツールがこれ「KregExpEditor」。
Xデスクトップ環境であるKDEに付随するツールです。

kregexpeditor.jpg

ウィンドウ上部のツールバーより、テキストだとか範囲指定文字だとかを選択し、詳細なプロパティを設定することで正規表現の関係図と正規表現文字列(画面下部)が生成されます。関係図の下のテキストエリアに適当に文字列を入力することでその場で正規表現の動作テストが行えます。
正規表現文字列は直接編集することもできるので、他人が書いた読めない正規表現をここに張りつけてみると理解の手助けになるかもしれませんね。

画面内の正規表現の内容は、ドットから始まり1(または001)から255までの数値、という内容です。.999でのテストは.99までしか反応していないのが分かるかと思います。

正規表現ハンドブック (単行本)

RAID1+0(RAID10) と RAID0+1(RAID01)の説明と両者の違い

おさらい

まずはRAID1+0, RAID0+1のおさらいです。

RAID 0RAID 1を組み合わせてパフォーマンスと安全性を同時に向上させます。仮に、どれか一台のディスクが故障しても、データは問題無く読み出せます。これにより、データの安全性はとても高くなり、しかも、RAID 0の高速性も兼ね備えます。 RAID 1+0(0+1)は、4台以上のディスクがあれば実現できます。(最大ディスク数は、RAIDコントローラによって変わってきます。)だた、4台のディスクを使用しても、実際の容量は半分の2台分になってしまいます。 RAID 1+0は、データ消失が許されず、かつ、パフォーマンスもある程度必要なシステムなどに使われています。RAID 1+0とRAID 0+1の違いは、パフォーマンスは理論上それほど差がつかないはずです。ただし、耐障害性の面では理論上RAID 1+0はRAID 0+1よりも高くなります

RAID1+0の方が耐障害性が高くなる理由

RAID 0+1の復旧不可能になる確率


[1 2 3] <- ストライピンググループ1
[4 5 6] <- ストライピンググループ2
DISK1が故障すると・・・ストライピンググループ1は死亡。

[X 2 3] <- ストライピンググループ1死亡
[4 5 6] <- ストライピンググループ2
残り5本のDISKのうち、4,5,6のいずれが壊れても復旧不可能になってしまう

[X 2 3] <- ストライピンググループ1死亡
[4 5 X] <- ストライピンググループ2死亡
これでシステム継続不能に。
従って、2本のDISK故障で復旧になってしまう確率が3/5

RAID 1+0の復旧不可能になる確率


[1 2] [3 4] [5 6]
DISK1が故障すると・・・

[X 2] [3 4] [5 6]
残り5本のDISKのうち、2が壊れた場合のみ復旧不可能になってしまう

[X X] [3 4] [5 6]
↑ミラーグループ1死亡。ストライプ不可に。
これでシステム継続不能に。
従って、2本のDISK故障で復旧不可能になってしまう確率は1/5

結論

以上の理由から、RAID 1+0とRAID 0+1を比べた時にRAID 1+0のほうが、3倍耐障害性が高いと言える(DISK本数が増えれば増えるほど差は広がる)。容量もパフォーマンスも同等なので、RAID 1+0が組めるRAIDコントローラーの場合は迷わずRAID 1+0を選べばよい。

[高速&安全] RAIDの仕組み・設定・カスタマイズ (単行本)

FireFox版Yahoo!ツールバー

FireFoxYahoo!ツールバーが公開されました。
IE時代実は結構愛用していたので嬉しいです。
http://toolbar.yahoo.co.jp/

ヤフーの各サービス、特にメール・カレンダー・ブックマーク・路線・地図などに1クリックでアクセスできるのはやっぱり便利です。

Firefoxを究める256のテクニック (単行本)

grubのboot floopyの作り方


% dd if=/dev/zero of=grub.img count=2880
% /sbin/mkdosfs grub.img
% syslinux grub.img
% sudo mount -o loop,iocharset=cp437 -t vfat grub.img /mnt
% sudo /sbin/grub-floppy /dev/loop0
% sudo umount /mnt

Linux教科書 LPICレベル1 第2版 (単行本(ソフトカバー))

portsツリーをアップデートする

FreeBSDのローカルportsツリーをアップデートする手順です。

まずはcvsup(GUIなし)をインストールします。
今回はFreeBSD-6用のパッケージを利用しています。


# pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/All/cvsup-without-gui-16.1h_2.tbz
次にcsvupの設定ファイルをコピーします。

# mkdir /usr/local/etc/cvsup
# cp /usr/share/examples/cvsup/ports-supfile /usr/local/etc/cvsup/
設定ファイルを編集する。編集する箇所はhost名。同期するノードを限定したい場合は、ports-allをコメントアウトし同期するノードをコメントインする。

# vi /usr/local/etc/cvsup/ports-supfile
-------------------------------------
*default host=cvsup.jp.freebsd.org    ← ここ
*default base=/usr
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress

ports-all       ← ノードを限定する場合はここをコメントして、


#ports-base      ← この辺とかをコメントインする
#ports-accessibility
#ports-arabic
-------------------------------------

cvsupを実行する。

# /usr/local/bin/cvsup -g -L 2 /usr/local/etc/cvsup/ports-supfile
夜中に自動的に実行されるようにcronに仕込むのもアリです。

FreeBSDビギナーズバイブル (単行本)

FreeBSD-6.1でUSB Mass Storage Deviceを使ってみる(今回はminiSD)

FreeBSD-6.1RELEASEのカーネルはデフォルトでUSB Mass Storage Deviceに対応していました。
具体的にはこのあたり。

                                              • -

# SCSI peripherals
device scbus # SCSI bus (required)
device da # Direct Access (disks)
device pass # Passthrough device (direct SCSI access)

# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device usb # USB Bus (required)
device ugen # Generic
device uhid # "Human Interface Devices"
device umass # Disks/Mass storage - Requires scbus and da

                                              • -

なので、カーネル再構築等は必要ないです。
次にデバイス名を特定します。

$ tail -f /var/log/messages
しながら、USBデバイスを指してみます。すると、

                                              • -

Oct 1 01:11:16 freebsd kernel: umass0: Alcor Micro Mass Storage Device, rev 1.10/1.00, addr 2
Oct 1 01:11:16 freebsd kernel: umass0: Get Max Lun not supported (STALLED)
Oct 1 01:11:16 freebsd kernel: da0 at umass-sim0 bus 0 target 0 lun 0
Oct 1 01:11:16 freebsd kernel: da0: Removable Direct Access SCSI-0 device
Oct 1 01:11:16 freebsd kernel: da0: 1.000MB/s transfers
Oct 1 01:11:16 freebsd kernel: da0: 122MB (250880 512 byte sectors: 64H 32S/T 122C)

                                              • -

また、USBデバイスの状況も見てみます。

$ usbdevs -v

                                              • -

addr 1: UHCI root hub, Intel
addr 2: USB WLAN Device, Atheros Communications Inc
addr 3: Basic Optical Mouse, Microsoft
addr 1: UHCI root hub, Intel
addr 2: Mass Storage Device, Alcor Micro

                                              • -

$ camcontrol devlist -v

                                              • -

scbus0 on umass-sim0 bus 0:
at scbus0 target 0 lun 0 (da0,pass0)
scbus-1 on xpt0 bus 0:< > at scbus-1 target -1 lun -1 (xpt0)

                                              • -

と表示されるのでda0とわかりました。
詳しくは分かりませんが、SCSIのDirect Access(disks)に割り当てられるんですかね?
後はmountして似るなり焼くなり。

mount_msdosfs /dev/da0s1 /miniSD

FreeBSDビギナーズバイブル (単行本)

FreeBSD-6.1でXDMやKDMでグラフィカルログインする。

XDMやKDMはインストール済みの仮定で進めます。
ちなみに、ログインだけでなくシャットダウンなど細かいことができるKDMのほうがXDMよりオススメです。

まずはttysの編集です。


# vi /etc/ttys

                                                        • -

ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure

                                                        • -

の部分を

                                                        • -

ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm on secure

                                                        • -

offをonにします。
KDMにしたい場合は、

                                                        • -

ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure

                                                        • -

とします。

次にXDM、あるいはKDMの設定です。
先ずはXDMから。
xdm-configとXaccessを編集します。


# vi /usr/X11R6/lib/X11/xdm/xdm-config

                                                        • -

DisplayManager.requestPort: 177

                                                        • -

最終行のポート番号を0から177に変更する。
次にXaccess。

# vi /etc/X11/xdm/Xaccess
49行目あたり。

                                                        • -

* #any host can get a login window

                                                        • -

この行の先頭の「#」を削除し、コメントアウトから復帰させます。

次にKDMの場合。
kdmrcの編集です。


# vi /usr/local/share/config/kdm/kdmrc
113行目あたりの[Xdmcp]セクション

                                                        • -

Enable=false

                                                        • -

                                                        • -

Enable=true

                                                        • -

とします。
そしてもう1つ、XDMの場合と同じく、KDE用のXaccessです。
これは編集する必要がない場合もあります(私もそうでした)。

# vi /usr/local/share/config/kdm/Xaccess
38行目あたり

                                                        • -

* #any host can get a login window

                                                        • -

この行の先頭の「#」を削除し、コメントアウトから復帰させます。

以上で設定は終わりです。
自分の場合はここでサーバーを再起動しました。
もしくは


# kill -HUP 1
でttysを読み込みなおさせてもOKっぽいです。

では次にWindowsマシンから接続して正しく動作するか確認してみます。
Windows上で動かすXサーバーはXmingを用いています。

XLaunchを起動

Select Display Setting は[Multiple windows]以外で。

Select how to start xming は [Open session via XDMCP]で。

Configure a remote XDMCP connection で接続先サーバーを入力します。

Xサーバーが立ち上がりグラフィカルログイン画面が表示されるはずです。

おー、やっぱりカッコイイですね!
ちなみに、puttyやtera termなどでのCLIログインも問題なく動作しました。

実践 X Window System―実践で拓くUNIXウィンドウシステムの世界 (単行本)