2009/04/20

KY

今更 `KY' とか言われちゃいそうですが… 本日は KY 記念日です

1989年4月20日、沖縄の珊瑚礁に彫られた`KY' の文字を 朝日新聞が夕刊の第一面で大々的に報じたのですが、 なんとこれが朝日新聞の記者による自作自演だったという事件。

しかも最初は『もともとあった傷をなぞっただけ』などと嘘の釈明をし、 地元ダイバーの綿密な調査などでやっと記者みずからストロボの柄で 傷をつけた事が判明したというお粗末この上ない事件です。

2009/04/18

眠り猫

暖かい日差しの中、満足しきった顔で寝ている猫を見かける。

Image: R0010244.JPG


いにしえより寝ている猫は平和の象徴だった事を考えると、 幸せなんだなと改めて実感する。

2009/04/14

Windows Xp のメインストリーム・サポートが終了

Windows Xp のメインストリームサポートが本日(4/14)で終了し、 以後は延長サポートになるとの事です。
使用している Windows 環境が数台の Windows 2000 を除いて 殆どが Windows Xp なので若干気になっていたのですが、 延長サポート扱いでもセキュリティパッチは提供されるとの事なので、 当面安心していても大丈夫なんでしょうかね。

Windows Xp が発表された 2001 年当時といえば、 FreeBSD では 4.4-RELEASE、RedHat Linux では 7.3 の頃なので、 非常に長生きしている OS ですね。

2009/04/09

POSIX.2 標準仕様のシェルによる変数展開

シェルスクリプトを作成する際に シェル変数に値を代入したり参照したりする事は頻繁に発生するが、 シェル変数の展開にも便利な使い方がある。
basename (1) や dirname (1) と同様な動作が シェルの組込みとして利用できるので資源の節約にもつながり、 上手に利用すると可読性の高いスクリプトが作成できる。

機能一覧

${parameter:-word} デフォルト値への置換
${parameter:=word} デフォルト値の代入
${parameter:?[word]} 値の検査とエラー
${parameter:+word} 代替値の使用
${#parameter} 文字列長の取得
${parameter%word} 最短後置パターンの削除
${parameter%%word} 最長後置パターンの削除
${parameter#word} 最短前置パターンの削除
${parameter##word} 最長前置パターンの削除

デフォルト値への置換

  • ${parameter:-word}
  • ${parameter} が NULL の場合 word に置換される。

    $ echo ${foo}
    
    $ echo ${foo:-FOO}
    FOO
    $ echo ${foo}
    
    $ foo=BAR
    $ echo ${foo:-FOO}
    BAR
    

デフォルト値の代入

  • ${parameter:=word}
  • ${parameter} が NULL の場合 word に置換され、 かつ parameter に代入される。

    $ echo ${foo}
    
    $ echo ${foo:=FOO}
    FOO
    $ echo ${foo}
    FOO
    $ echo ${foo:=BAR}
    FOO
    

値の検査とエラー

  • ${parameter:?[word]}
  • ${parameter} が NULL の場合 word が指定されていればその値を、 指定されていない場合はデフォルトの値を表示し、 非対話実行されているシェルをエラー終了させる。

    $ echo ${foo}
    
    $ echo ${foo:?value not set}
    value not set
    

代替値の使用

  • ${parameter:+word}
  • ${parameter} が NULL 以外の場合 word に置換される

    $ echo ${foo:+FOO}
    
    $ echo ${foo}
    
    $ foo=BAR
    $ echo ${foo}
    BAR
    $ echo ${foo:+FOO}
    FOO
    

文字列長の取得

  • ${#parameter}
  • ${parameter} の文字列としての長さに置換される

    $ echo ${foo}
    
    $ echo ${#foo}
    0
    $ foo=FOO
    $ echo ${foo}
    FOO
    $ echo ${#foo}
    3
    

最短後置パターンの削除

  • ${parameter%word}
  • ${parameter} の右から word で示されるパターンの最短部分を削除する

    $ foo=/foo/bar/baz
    $ echo ${foo%/*}
    /foo/bar
    $ foo=foo.c
    $ echo ${foo%.*}
    foo
    $ foo=foo
    $ echo ${foo%.*}
    foo
    

最長後置パターンの削除

  • ${parameter%%word}
  • ${parameter} の右から word で示されるパターンの最長部分を削除する

    $ foo=foo.example.com
    $ echo ${foo%%.*}
    foo
    $ foo=http://www.example.com:8888/
    $ echo ${foo%%:*}
    http
    $ foo=foo
    $ echo ${foo%%.*}
    foo
    

最短前置パターンの削除

  • ${parameter#word}
  • ${parameter} の左から word で示されるパターンの最短部分を削除する

    $ foo=foo.c
    $ echo ${foo#*.}
    c
    $ foo=foo.example.com
    $ echo ${foo#*.}
    example.com
    $ foo=foo
    $ echo ${foo#*.}
    foo
    

最長前置パターンの削除

  • ${parameter##word}
  • ${parameter} の左から word で示されるパターンの最長部分を削除する

    $ foo=foo.example.com
    $ echo ${foo##*.}
    com
    $ foo=/foo/bar/baz
    $ echo ${foo##*/}
    baz
    $ foo=foo
    $ echo ${foo##*.}
    foo
    

2009/04/08

HP ProLiant ML110 G5 で FreeBSD 7.0-RELEASE を稼働させる

PCクラスの筐体でサーバとして稼働できる Hewlett-Packard 社の ProLiant ML110 G5 に FreeBSD 7.0-RELEASE をインストールしてみた。

ML110 G5 はマザーボードから IDE やパラレルポートといった 旧いインタフェイスが省略されている 所謂『レガシーフリー』なサーバなので、 当然光学ドライブも SATA 接続となる。
FreeBSD 7.0 では(一部の) SATA 接続光学ドライブとは相性が悪いので、 起動時のメニューで boot prompt を表示し、 "hw.ata.atapi_dma='0'" を指定すると、 スムーズにインストールできる様になる。 インストールした後は /boot/loader.conf に 以下の記述を追加しておくと自動で設定されて便利だ。

hw.ata.atapi_dma="0"

ML110 のマザーボードに搭載されている NIC は Broadcom 社の GbE だが、 型番が "NetXtreme BCM5722 Gigabit Ethernet PCIe" となっていて 標準のカーネルでは利用できないので、 インストールの際は CD からのインストールや USB 接続の NIC などを利用してインストールを済ませる。
インストール完了後、pciconf (8) を実行してみると チップセット ID が 0x165a となっているのが確認できた。
# pciconf -lv
 :
 :
bge0@pci0:14:0:0:   class=0x020000 card=0x7051103c chip=0x165a14e4 rev=0x00 hdr=0x00
vendor     = 'Broadcom Corporation'
device     = 'NetXtreme BCM5722 Gigabit Ethernet PCIe'
class      = network
subclass   = ethernet

そこで以下のパッチを適用してカーネルの再構築を行ってみると 無事にギガビットイーサが利用できるようになる。
diff -cr /usr/src/sys.orig /usr/src/sys
*** /usr/src/sys.orig/dev/bge/if_bge.c	2009-04-03 12:05:39.000000000 +0900
--- /usr/src.sys/dev/bge/if_bge.c	2009-04-02 12:51:46.000000000 +0900
***************
*** 169,174 ****
--- 169,175 ----
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5715S },
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5720 },
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5721 },
+ 	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5722 },
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5750 },
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5750M },
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5751 },
diff -cr bge.orig/if_bgereg.h bge/if_bgereg.h
*** /usr/src/sys.orig/dev/bge/if_bgereg.h	2009-04-03 12:05:39.000000000 +0900
--- /usr/src/sys/dev/bge/if_bgereg.h	2009-04-02 12:51:13.000000000 +0900
***************
*** 2011,2016 ****
--- 2011,2017 ----
  #define	BCOM_DEVICEID_BCM5715S		0x1679
  #define	BCOM_DEVICEID_BCM5720		0x1658
  #define	BCOM_DEVICEID_BCM5721		0x1659
+ #define	BCOM_DEVICEID_BCM5722		0x165A
  #define	BCOM_DEVICEID_BCM5750		0x1676
  #define	BCOM_DEVICEID_BCM5750M		0x167C
  #define	BCOM_DEVICEID_BCM5751		0x1677

ハードウェア構成にもよるがデュアルコアの Xeon は早くてなかなか快適だ。

2009/04/02

地デジカ

公式サイトが乗っ取られてるみたいですね。

Image: chidejika.jpg


素でやっているとしたら…まぁ、それはそれで(苦笑)

2009/04/30 追記

どうやら chidejika.jp は公式サイトではない様です。
第三者が取得したドメインの様ですが… まぁ、本家の脇が甘すぎだという事には変わらないですが。
現在はトップの画像にぼかしが入ってる様ですね。

2009/03/31

Dual Head + KVM Switch + Synergy その3

ATEN の CS-1734A を入手したのでデスクトップ環境を変更してみた。

メインの生活環境となる FreeBSD マシンはビデオカードに nVidia の GeForce 7300 を使用しているので、 Dual Head を活用して画面を VGA と DVI に出力している。
VGA 出力は CS-1734A 経由で正面の BENQ 24 インチメインディスプレイに繋がり、

  • 生活環境としての FreeBSD
  • あまり使う機会は少ないが何となく必要な Windows Xp Professional
  • 使いやすさと美しさが最高な Mac OS X 10.5 Leopard
  • 検証や Linux 独自の作業に必要な ubuntu
の4台を接続し切替ながら使用している。

DVI 出力は メインディスプレイの右隣に設置してある 19 インチのサブディスプレイに直接接続しており、 常時 FreeBSD の画面を表示している。
コンソール使用時は双方に同じ内容が出力されているが、 X Window を起動するとそれぞれ独立した別のスクリーンとして動作できるので、 メインディスプレイに FreeBSD の画面以外が表示されている場合でも サブディスプレイには FreeBSD の画面が表示されていて便利である。
勿論キーボードとマウスはそれぞれのスクリーンを透過的にアクセスできるので、 メインディスプレイにも FreeBSD の X Window が表示されている場合、 マウスカーソルはメインディスプレイの右側からサブディスプレイの左側にかけて 連続して移動する。

CS-1734A 経由で接続されているメインキーボード/マウス以外に、 FreeBSD マシンには BlueTooth 経由でサブキーボード/マウスも接続されているので、 メインディスプレイに FreeBSD が表示されていない (メインのキーボード/マウスが他の OS で利用されている)場合でも、 サブキーボード/マウスを利用してサブディスプレイ上に表示されている FreeBSD を操作する事が可能である。

更にサブディスプレイ上に表示されている X Window のスクリーンでは synergy サーバが動作しており、 Windows Xp、Mac OS X、ubuntu がそれぞれ synergy クライアントとなっているので 各 OS 上でのコピー & ペーストが可能になっている。
ちなみにサブディスプレイ側でマウスカーソルを画面上部に移動すると Mac OS X、 画面下部に移動すると Windows Xp、画面右に移動すると ubuntu に キーボードとマウスの対話権が移動する。
例えばメインディスプレイに Mac OS X が表示されている場合、 メインキーボード/マウスを操作するとメインディスプレイ上で Mac OS X の操作ができ、 サブキーボード/マウスを操作するとサブディスプレイ上で FreeBSD の操作ができるのだが、 サブディスプレイ上でサブマウスのカーソルを画面上部に移動すると、 メインディスプレイ上の Mac OS X の操作を synergy 経由のサブキーボード/マウスでできてしまう。

文章で説明するのが困難な程複雑な仕組みになってしまった気がする。


複雑な仕組みになってしまったのでたまに混乱してしまう…

2009/03/30

ATEN CS-1734A + Logicool V450 Nano

職場で利用しているマウスが 10 年以上前に購入した有線マウスなので、 ワイヤレスで快適な環境を目指し Logicool の V450 Nano を購入した。
本日届いたので早速 CS-1734A の CONSOLE ポートに接続してみると… マウスカーソルが縦方向にしか移動しない。
それぞれの OS が動作するハードウェアの USB ポートに V450 Nano の レシーバを直接差し込むと当然ながら正常に動作しており、 CS-1734A につながっている FreBSD、Windows Xp、Leopard、Linux の 全てで同じ動作なので OS の問題ではなく KVM Switch の問題らしい。
USB マウスは CS-1734A(というか KVM Switch)との相性があるんですね…がっかり。

とりあえず CONSOLE ポートではなく裏面の USB HUB に接続したら動作した。
裏面の USB HUB は前面のスイッチを短くタッチした場合は ディスプレイと連動しないので前面のスイッチを長押するか ホットキーで切替える必要がある。
普段からホットキーのみで切替ているので良しとするか

追記

ディスプレイの切替のたびに USB マウスの挿抜が検出されてしまい、 FreeBSD は USB デバイスのエラーが発生してしまった。
なので当面は V450 Nano は使用できない。

2009/03/29

Mac OS X で CS-1734A 経由の HHK(PD-KB02)を利用する

ATEN の KVM Switch CS-1734A は Mac 対応をうたっているが、 PS/2 接続の Happy Hacking Keyboard(PD-KB02) を CS-1734A に付属する PS/2 -> USB 変換ケーブルを利用して Mac OS X Leopard に接続する様な使い方の場合、 キーボード手前の左右 Meta キー ('◇' )が何故か 'a' になってしまう。

市販の PS/2-USB 変換アダプタを利用して PS/2 接続の Happy Hacking Keyboard を Mac OS X で利用するための デバイスドライバ HHKPS2USBDriver をみつけたので、 リストにない変換アダプタでの動作を確認する方法を参考に CS-1734A の Vendor ID と Product ID を登録したところ、 キーボード手前の左右 Meta キー ('◇') が Command キーとして正しく動作する様になった。

ちなみに ATEN の Vendor ID は 1367(10)、 Product ID は 8723(10) なので、

  1<key>HHK via ATEN CS-1734A</key>
  2<dict>
  3    <key>CFBundleIdentifier</key>
  4    <string>org.nnip.driver.HHKPS2USBDriver</string>
  5    <key>HIDDefaultBehavior</key>
  6    <string></string>
  7    <key>IOClass</key>
  8    <string>HHKPS2USBDriver</string>
  9    <key>IOProviderClass</key>
 10    <string>IOUSBInterface</string>
 11    <key>bConfigurationValue</key>
 12    <integer>1</integer>
 13    <key>bInterfaceNumber</key>
 14    <integer>0</integer>
 15    <key>idProduct</key>
 16    <integer>8723</integer>             <!-- Product ID -->
 17    <key>idVendor</key>
 18    <integer>1367</integer>             <!-- Vendor ID -->
 19</dict>
    
の記述を追加した。

2009/03/15

FreeBSD で BlueTooth マウスとキーボードを同時使用する

Logicool の V470 BlueTooth マウスに引き続き、 Apple Wireless Keyboard も FreeBSD マシンに接続してみる。
キーボードは元々認証する設定だったので、 /etc/bluetooth/hcsecd.confファイルのキーボードの設定部分で、 PIN を利用する設定とし hcsecd (8) コマンドを再起動する。

device {
    bdaddr  XX:XX:XX:XX:XX:XX;
    name    "任意の名称";
    key     nokey;
    pin     "PIN";
}
次にキーボードの場合もマウス同様 bthidcontrol (8) コマンドの query オプションを利用してハードウェア情報を取得し、 /etc/bluetooth/bthidd.conf ファイルに出力した後で、 bthidd (8) コマンドを再起動すればキーボードは利用可能になる。
# bthidcontrol -a 名称 query > /etc/bluetooth/bthidd.conf

しかし、キーボード使える様になると なぜだかマウスが利用できなくなった。
bthidcontrol (8) コマンドで query しても Permission denied(13) と表示されてしまう。
ネットで検索してもあまり有効な情報は得られなかったが、 試行錯誤の結果、キーボードが接続された後で BlueTooth の認証を disable に設定するとマウスも接続できた。

# hccontrol -n ubt0hci write_authentication_enable 0

はたしてこの解決が正しいのだろうか?

FreeBSD 上での BlueTooth 利用はまだまだ情報が少ないので、 快適に利用するのはなかなか大変である。


Copyright © 2008-2020 Mitzyuki IMAIZUMI. All rights reserved.