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/02/18
wget でファイル送信
wget (1) でファイルを送信する必要が生じたので、 ブラウザでファイルを送信する際のパケットをキャプチャして 通信内容を調べてみる。
想定しているのは input type='file'、
enctype='multipart/form-data' を指定した
フォームによるファイル送信処理。
通常の http ヘッダ以外に "Content-Type" と
"boundary" を wget (1) の
--header オプションで指定し、
multipart/form-data 形式に整形した送信するファイルの内容を
--post-data オプションで指定するだけで送信できる。
Content-Type は 'multipart/form-data'、
boundary は送信するデータの中に含まれない
任意の文字列を指定すれば問題ない。
multipart/form-data 形式は以下の形式に整形する。
--任意の文字列 Content-Disposition: form-data; name="フォーム名"; filename="ファイル名" Content-Type: text/plain (空行) ファイルの中身 (空行) --任意の文字列
実際にコマンドライン形式に記述するとこの様になる。
wget --header="Content-Type: multipart/form-data; boundary=バウンダリ" \ --post-data=' --バウンダリ Content-Disposition: form-data; name="フォーム名"; filename="ファイル名" Content-Type: text/plain ファイルの中身 : --バウンダリ ' 送信先URL
スクリプトの場合などはシェル変数などを利用すると、 もう少し見やすいスクリプトになるだろう。
: : # バウンダリ文字列は世界標準時基準時点からの秒数とする boundary="boundary-`date '+%s'`" # 受信する cgi の <input type="file" name="..."> で指定されるフォーム名 formname="フォーム名" # 送信するファイル filename="ファイル名" # 送信するファイルのデータ contents="`cat ${filename}`" # multipart/form-data 形式のデータ生成 data=" --${boundary} Content-Disposition: form-data; name='${formname}'; filename='${filename}' Content-Type: text/plain ${contents} --${boundary} " # ファイルの送信処理 wget --header="Content-Type: multipart/form-data; boundary=${boundary}" \ --post-data="$data" 送信先 URL : :
2009/02/01
DNS DDoS
詐称された IP address から `. IN NS' という query を投げる
DNS DDoS 攻撃が最近流行っているらしい。
この query に対して root servers のリストを応答すると、
わずか数バイトの問い合わせに対して数百バイトの応答が発生してしまうので、
詐称された IP address に膨大なトラヒックが集中してしまい、
結果として DDoS攻撃
分散型サービス拒否攻撃 Distributed Denial of Service attack
となってしまうらしい。
bind は既に対策が実施されており、 `. IN NS' query に `refused' と応答する様になったので、 対策されていない DNS の管理者は早急に対策するした方が良いと思う。
2008/12/10
GNU Bourne-Again Shell を便利に使う
対話シェルとして使用する bash (1) の
コマンドライン履歴機能の便利な使い方。
bash (1) のコマンドライン履歴機能のうち
イベント指示子、単語指示子、修飾指示子は
オンラインマニュアルにも情報が少ないが、
慣れると非常に便利でキータイプ量も減るので是非マスターしておきたい。
以下の文中で n、m は任意の整数、
foo、bar、baz などは任意の文字列を示す。
機能一覧
イベント指示子 | |
---|---|
!! | 直前に実行したコマンドを実行する |
!-n | n 回前に実行したコマンドを実行する |
^foo^bar !:s/foo/bar |
直前に実行したコマンドの foo を bar に変更して実行する |
!:gs/foo/bar | 直前に実行したコマンドの全ての foo を bar に変更して実行する |
!foo | foo で開始されるコマンドを実行する |
!n |
n 番目に実行されたコマンドを実行する |
単語指示子 | |
!:n | 直前に実行したコマンドの n 番目の引数を取得する |
!^ | 直前に実行したコマンドの 1 番目の引数を取得する |
!$ | 直前に実行したコマンドの最後の引数を取得する |
!* | 直前に実行したコマンドの全ての引数を取得する |
!:n* | 直前に実行したコマンドの n 番目から最後までの引数を取得する |
!:n-m | 直前に実行したコマンドの n 番目から m 番目までの引数を取得する |
!:-n | 直前に実行したコマンドの最初から n 番目までの引数を取得する |
!:n- | 直前に実行したコマンドの n 番目から最後の 1 個前までの引数を取得する |
修飾指示子 | |
:p | コマンドを表示のみして実行しない |
:h | パスのファイル名部分を取り除きディレクトリ名を取得する |
:t | パスのディレクトリ名部分を取り除きファイル名を取得する |
:r | ファイル名の拡張子を取り除き "." の前を取得する |
:e | ファイル名の拡張子を "." 付きで取得する |
イベント指示子
- !! 直前に実行したコマンドを実行する
$ echo foo bar baz foo bar baz $ !! echo foo bar baz foo bar baz
$ echo foo bar baz foo bar baz $ echo FOO BAR BAZ FOO BAR BAZ $ !-2 echo foo bar baz foo bar baz $ !-2 echo FOO BAR BAZ FOO BAR BAZ
!:s/foo/bar
$ echo foo foo foo foo foo foo $ ^foo^bar echo bar foo foo bar foo foo $ echo foo foo foo foo foo foo $ !:s/foo/bar echo bar foo foo bar foo foo
$ echo foo foo foo foo foo foo $ !:gs/foo/bar echo bar bar bar bar bar bar
$ echo foo bar baz foo bar baz $ touch foo bar baz $ !ec echo foo bar baz foo bar baz
$ echo foo bar baz foo bar baz $ echo FOO BAR BAZ FOO BAR BAZ $ !1 echo foo bar baz foo bar baz
単語指示子
- !:n 直前に実行したコマンドの n 番目の引数を取得する
$ echo foo bar baz foo bar baz $ echo !:0 echo echo echo $ echo foo bar baz foo bar baz $ echo !:2 echo bar bar
$ echo foo bar baz foo bar baz $ echo !^ echo foo foo
$ echo foo bar baz foo bar baz $ echo !$ echo baz foo
$ echo foo bar baz foo bar baz $ echo !* echo foo bar baz foo bar baz
$ echo foo bar baz foo bar baz $ echo !:2* echo bar baz bar baz
$ echo foo bar baz FOO BAR BAZ foo bar baz FOO BAR BAZ $ echo !:3-5 echo baz FOO BAR baz FOO BAR
$ echo foo bar baz FOO BAR BAZ foo bar baz FOO BAR BAZ $ echo !:-4 echo foo bar baz FOO foo bar baz FOO
$ echo foo bar baz foo bar baz $ echo !:1- echo foo bar foo bar
修飾指示子
- :p コマンドを表示のみして実行しない
$ echo foo bar baz foo bar baz $ touch foo bar baz $ !e:p echo foo bar baz
$ echo /foo/bar/baz /foo/bar/baz $ echo !$:h echo /foo/bar /foo/bar
$ echo /foo/bar/baz /foo/bar/baz $ echo !$:t echo baz baz
$ echo foo.c foo.c $ echo !$:r echo foo foo
$ echo foo.c foo.c $ echo !$:e echo .c .c
2008/11/25
Catalyst
ひかりoneではCISCOは使えないらしいこれはネタですか?ネタですよね?ネタって言ってください…
Catalyst が良いハードか悪いハードかはともかく、 KDDI のサポセンならせめて CISCO Catalyst 位は知っていて欲しい気がする。
2008/10/22
Dual Head + KVM Switch + Synergy その2
BENQ の 24インチワイド液晶が届いたのでそのまま目の前でメイン液晶となり、 今までメインだった 19インチ液晶がサブになり右隣に移動した。1920x1200 の大画面には相変わらず FreeBSD の画面が表示されているのだが、 入力が DVI、D-Sub、HDMI と3系統に対応しているので、 D-Sub 端子に FreeBSD マシン、DVI 端子に MacMini を接続している。
右隣のサブ液晶には FreeBSD、WindowsXp、仕事用の評価機が接続される事になり、 Plat'Home の PShare で切替ながらの作業は相変わらずである。
メインの液晶は今まで FreeBSD の画面だけを表示していたのだが、
最近は MacMini の画面を表示している事が非常に多くなり、
MacMini 用の BlueTooth キーボード/マウスが
デスクトップにある機会が多くなっている。
更には 13インチの MacBook もデスクトップ上に置かれる事が多くなり、
synergy でキーボード/マウスを共用しているとはいえ
デスクトップは非常に手狭になってしまった。
何とかしなくちゃ
2008/09/12
Dual Head + KVM Switch + Synergy
目の前の19インチ液晶(メイン)には FreeBSD の画面が常時表示されているその右隣の17インチ液晶(サブ)は KVM Switch 経由で FreeBSD の画面(Dual Head)、 Windows Xp、Mac mini、仕事用の評価機が接続されていて、 必要に応じて切り替えながら使用している。
FreeBSD、Windows Xp、Mac mini には Synergy がインストールされているので、 サブ画面を Windows Xp、Mac mini に切り替えた時でも、 画面を切り替えながら1組のキーボード/マウスで透過的に操作可能。
(勿論 KVM Swith に接続されたキーボード/マウスでも操作可能。
職場の作業環境が非常に快適になりました。
2008/08/26
2008/08/09
HDD交換
製造が中止になってしまった様で巷からめっきり姿を消してしまった HTS721010G9AT00(2.5インチ、Ultra ATA、7200rpm)の未使用新品を、 某大手オークションで落札できたので T43 の内蔵 HDD を交換した。
交換直後は BIOS が ERROR 2010 となってしまったが、 ネットで検索した内容を参考に アメリカのLenovoのサイトから firemware の更新プログラムを取得して HDD のファームウェアを アップデート(?)したら表示されなくなった。