viで特定文字列を改行に置換

viでは改行へ置換する場合 Ctrl+v Enterを使用して改行を指定します。

例えばhogeを改行したい場合

:s/hoge/Ctrl+v Enter/g

となります。


リモートコマンダー SONY RM-PLZ510D

SONYの学習リモコン RM-PLZ510Dを購入してみました。学習リモコンは初めての購入です。

テレビやHDD/DVDレコーダ、エアコンなど様々なリモコンがあったのですが、邪魔に感じてきたための購入です。

同時期に発売されたVictorのRM-A815の方がボタン数が多く、東芝のVARDIAのように上下左右の周りにさらにボタンが一周配置されており、使いやすそうでしたが、RM-PLZ510Dの方が見た目がよく、シフトボタンで一ボタンに2種類の機能を記憶できるため選択しました。

所持しているSONYのVRABIAのリモコンは十分これでカバーできますが、東芝のVARDIAはボタン数が多く、ボタンが足りません。しかし、普段あまり使用しないボタンをシフト+ボタンに割り当てることで、なんとか普段は困らないように機能を割り当てることができます。

このシフトキーの挙動ですが、片手で操作できるように、PCのシフトキーのように他のボタンと同時に押す必要はなく、一度押すと一定期間有効になります。この間に他のボタンを押すことでシフトとして機能します。さらに、ボタンを一度押してもシフトはすぐには解除されず、次のボタンを押すことで、シフトキーを有効のまま何回もボタンを押すことができます。

よって、HD/DVDレコーダのモードで1~12の数字ボタンに通常は再生や停止を割り当て、シフト+数字にチャンネルを割り当てることで、ザッピングしたいときは一度シフトキーを押すことで連続してチャンネルを変えることができたりします。

エアコンの操作は少し面倒です。

温度を設定したい場合、我が家のエアコンのリモコンは、リモコンで設定温度を選んでから送信します。つまりリモコンからは「一度温度を上げろ」という命令が出ているのではなく、「20度に設定しろ」といった命令が出力されているのです。
RM-PLZ510Dを始め通常の学習リモコンは、このようにリモコン側で状態を決めて送信する機能はなく、ボタン一つで一種類の命令しか出力できません。つまり「18度に設定しろ」「19度に設定しろ」「20度に設定しろ」・・・・といった命令を一つずつボタンに割り当てるしかないのです、これは学習リモコンを使用している人にとっては常識かもしれませんが、maznにとっては盲点でした。

修正 : 「20度に設定しろ」という命令が送られているのではなく、現在のリモコンの状態全て、つまり、「暖房で設定温度は20度で、風向きは自動で、風量も自動」といった命令が毎回送られているようです。全ての状態をリモコンに割り当てるのは困難なので、残念ながらこのリモコンでエアコンの細かな制御はできないようです。どうしても学習させたいならば、「全自動」の状態を覚えさせるのがよさそうです。

最後に、リモコンと一緒にリモートコンセントという製品も一緒に購入しました。リモコンでコンセントをOn/Offできる製品です。

普段使わない電化製品をスイッチつきのたこ足でOFFにしていたのですが、手の届きにくい場所にあり結構面倒です。このリモートコンセントのリモコンをRM-PLZ510Dに学習させることで、普段使わない電化製品も集中管理できるようになりました。

ちなみにPS3は赤外線ではなくBluetooth、つまり電波ですので、これでは操作できません。SONYから発売されているBDリモコンもBluetoothなので、代替できませんが、赤外線でコントロールできる製品があるらしいです。これを購入してUSBだけPS3に繋げれば、RM-PLZ510Dで操作できそうです。


Debianの起動スクリプト編集@Debian Etch

Red Hat系ではchkconfigというコマンドで起動スクリプトのon/offが制御できますが、Debianではupdate-rc.dとうコマンドでできます。デフォルトを使用してシンボリックリンクを作成するには

# update-rc.d postgresql-8.1 defaults

これで/etc/rc?.d/に/etc/rc.d/postgresql-8.1へのシンボリックリンクが作られます。

シンボリックリンクを削除するには

# update-rc.d -f postgresql-8.1 remove

詳細にon/offを指定するには

# update-rc.d postgresql-8.1 start 20 2 3 4 5 . stop 20 0 1 6 .

上記では、 ランレベル2,3,4,5では20番目に起動し、ランレベル0,1,6では20番目に停止されるように設定しています。

なお、もっと視覚的に設定するツールsysv-rc-confというものがあります。

デフォルトではインストールされていないので、apt-getでインストールして、起動します。

# apt-get install sysv-rc-conf
# sysv-rc-conf
x service      1       2       3       4       5       0       6       S
x -----------------------------------------------------------------------
x acpid       [ ]     [ ]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x adjtimex    [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [X]
x alsa        [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x alsa-utils  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [X]
x anacron     [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x apache2     [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x atd         [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x avahi-dae$  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x bootclean   [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x bootlogd    [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [X]
~ 省略 ~

自動起動されるサービスに×がついていて、スペースキーでon/offできます。


vncviewerで特定のポートに接続する@Linux

vncのサーバにvncviwerで接続する時に、

$ vncviewer サーバ名:ディスプレイ番号

といった風にディスプレイ番号を入力します。ディスプレイ番号はvncserverを起動した際に表示されるやつです。

$ vncserver 

New 'X' desktop is hostname:1 ← これ

Starting applications specified in /etc/X11/Xsession
Log file is /home/mazn/.vnc/hostname:1.log

これでvncserverは5900+ディスプレイ番号のTCPポートで待ちます。※すでにvncserverが立ち上がっている場合などは:2のようにインクリメントされていきます。

Debian etchの例
$ netstat --tcp -lpn | grep 5901
tcp6   0   0 :::5901       :::*      LISTEN     14372/Xrealvnc

SSHやiptablesなどを使ってvncサーバへの接続をポートフォワーディングした際、任意のポートに繋ぐ必要が出てきます。このような場合コロン二つ” :: “を使用して、任意のポートに接続できます。

例えば、ルータでポート4000がvncサーバにポートフォワーディングされている場合以下のようになります。

$ vncviewer ルータIP::4000

ちなみに、Linuxに搭載されているvncやリモートデスクトップのフロントエンドのクライアントkrdcでは、”::”を認識出来ないようです。

iptablesにてポートフォワーディングする方法はこちら

参考 :VNCのインストール


findでのファイル名or検索 and検索

findは色々な条件を指定してファイルを検索できます。or検索する場合は -orまたは-o をand検索の場合は-andまたは-aを使えばOK。

hogeとfooから始まるファイルやディレクトリを検索

$ find / -name hoge* -or -name foo*