muttでattachmentの画面で、ファイル名のサフィックス部分にスペース文字を含んでしまって、
I 2 ホゲホゲ定例_080130.p df [applica/pdf, base64, 32K]
とか、
I 2 ホゲホゲ定例_080130. p df [applica/pdf, base64, 32K]
こんな感じになる場合がありますねぇ~これって送り先が変なファイル名で送ってきているのか、mutt側の問題なのか、私には判定できませんがぁ。この場合添付ファイルを保存してWindowsにfview.tclで転送・表示させようとしても、サフィックスがこの有様だとうまく行きません。
付け焼刃ではありますが、fview.tclを修正して対応!
こんな感じのprocをつけたして、
proc validate_suffix {euc} {
regexp {\.([\w\s]+)$} $euc all sfx
regsub -all {\s+} $sfx {} sfx2
regsub $sfx $euc $sfx2 euc
return $euc
}
転送する直前にファイル名のサフィックスを訂正しておきます。
file rename -force $path [set path $path_valid]
こうしておくと、
ホゲホゲ定例_080130.p df
こんなのや、
ホゲホゲ定例_080130. p df
なのも↓
ホゲホゲ定例_080130.pdf
にファイル名を変更してからWindowsに転送できますので、対策完っとなりますねぇ。
2008年1月30日水曜日
2008年1月29日火曜日
mutt bindとmacro
.muttrcに下記のように書き込んでみますと、
動作は簡単ですね。CTRL-Dでページのハーフダウン、CTRL-Uでページのハーフアップ。
+ でインデックス・ウィンドウの拡大、-や=で縮小。
.muttrcのここでのポイントは<space>って記法。ホントにスペースを打ち込むと,<enter-command>は1引数なので、そこで引数が切れたと判断されてしまいます。これを防いでいます。
bind pager \cd half-down
bind pager \cu half-up
macro pager + <enter-command>^aset<space>pager_index_lines=20^e\n
macro pager - <enter-command>^aset<space>pager_index_lines=6^e\n
macro pager = <enter-command>^aset<space>pager_index_lines=6^e\n
動作は簡単ですね。CTRL-Dでページのハーフダウン、CTRL-Uでページのハーフアップ。
+ でインデックス・ウィンドウの拡大、-や=で縮小。
.muttrcのここでのポイントは<space>って記法。ホントにスペースを打ち込むと,<enter-command>は1引数なので、そこで引数が切れたと判断されてしまいます。これを防いでいます。
2008年1月24日木曜日
screen bell_msgでバナー表示
screenのbell_msgって、結構色々と利用方法のアイディアが思いつきます。
「新着メールが届いたときbell_msgを鳴らす」の他にも、
「新着メールの確認スクリプトを作って、screenのbindに割り当て、bell_msgで表示」
「長時間JOBの終了をbell_msgで知らせる」
など考えちゃいますぅ。デフォルト5秒間しか表示されないbell_msgですが、screenのlastmsgコマンドで再表示できますから、bell_msgは端末の利用者になにかを知らせるには良い方法です。
さらにbell_msgの表示時間も自由に設定できますから(但し秒単位)、bell_msgだけで凝った"お知らせバナー"だって考えられますねぇ~:-)
やりすぎだとは思いますが、
#!/bin/csh -f
set msg=""
screen -X msgwait 1
screen -X msgminwait 0
foreach n (N e w " " M a i l)
set msg="${msg}${n}"
screen -X bell_msg " $msg"
screen -X bell
sleep 1
end
screen -X msgwait 5
screen -X msgminwait 1
screen -X bell_msg "$msg Comes!"
screen -X bell
これで、"New Mail" のメッセージを一文字ずつ、8秒間かかって表示していきます。それから"New Mail Comes!"と5秒間表示して消えます。ちょっとバナーっぽい表示にはできるんですが、不連続な表示と、CPUの状況で動作がぎこちないぃ~:-<
まあ、ホントに利用しようは思っていませんしぃ、こんなことも出来るのねぇ的サンプルです。もちろんbell_msgでは日本語表示できません。
「新着メールが届いたときbell_msgを鳴らす」の他にも、
「新着メールの確認スクリプトを作って、screenのbindに割り当て、bell_msgで表示」
「長時間JOBの終了をbell_msgで知らせる」
など考えちゃいますぅ。デフォルト5秒間しか表示されないbell_msgですが、screenのlastmsgコマンドで再表示できますから、bell_msgは端末の利用者になにかを知らせるには良い方法です。
さらにbell_msgの表示時間も自由に設定できますから(但し秒単位)、bell_msgだけで凝った"お知らせバナー"だって考えられますねぇ~:-)
やりすぎだとは思いますが、
#!/bin/csh -f
set msg=""
screen -X msgwait 1
screen -X msgminwait 0
foreach n (N e w " " M a i l)
set msg="${msg}${n}"
screen -X bell_msg " $msg"
screen -X bell
sleep 1
end
screen -X msgwait 5
screen -X msgminwait 1
screen -X bell_msg "$msg Comes!"
screen -X bell
これで、"New Mail" のメッセージを一文字ずつ、8秒間かかって表示していきます。それから"New Mail Comes!"と5秒間表示して消えます。ちょっとバナーっぽい表示にはできるんですが、不連続な表示と、CPUの状況で動作がぎこちないぃ~:-<
まあ、ホントに利用しようは思っていませんしぃ、こんなことも出来るのねぇ的サンプルです。もちろんbell_msgでは日本語表示できません。
2008年1月22日火曜日
日本語エディタ ng
ここで開発されている軽量版emacs風日本語エディタ。
「Ngとは、Nihongo micro Gnu emacsの略であり、決してNo Goodの略ではありません。一言でいうと、NgはGNU Emacsライクな小型日本語エディタです。 Ngは、吉田さんによって、1990年ごろ、 mg(micro GNU Emacs/これもmicro Emacsの改良版です)を改造する形で作られました。その後、多くの人達の協力によって、 Ng 1.3.1(最後の公式版)/1.3L(最も多く使われている版)まで改良、バージョンアップされました。その後、マシンパワーの増大、Demacsの登場、MS-DOS/Human68kの衰退等によって、 Ngが使われる機会は少なくなり、開発も下火になりました。
しかし、中にはNgを使い続ける輩(私もその一人です)もおり、そのような人達によって、便利な非公式パッチや、新しいOSへの移植などが作られました。
私もこれらのパッチを当てたり、自分でソースをいじったりしていました。
自分のためにNgに手をいれていく内に、Ng 1.3Lより便利になって(自画自賛)、新たな機種にも対応したので(私の力ではありませんが)、 Ngの新たなバージョンとして公開する事にしました。」とあります。
Emacs嫌いの私、その理由は「なんせ重いのよぉ」なのとCRTL押し続けたくない、のと、lispが嫌い、なことですぅ。で、軽量Emacsモドキのngです。日本語エディタとして目に付くのは、Emacsやvim、ne、そしてこのngなど、このくらいでしょうかぁ。vimを日本語エディタとして使わないのは、viは英語圏に最適化されている、つまり単語の区切りはスペースだっつーことを最大限利用したキーマップやコマンド体系になっているように感じられるから。これを日本語みたいに単語の区切りがハッキリしない言語へ適用してもメリットはあんまり無いっと思うぅ。「日本語」を扱う観点から考えるとなにもviでなくても良い。neを長らく使ってきたが、なにせ最大の欠点が「コピペで段落が乱れてしまう」ってことです。これは辛い。で、ngなワケです。
私C-xをscreenのプレフィックスに使っちゃってます:-P
で、コマンド・プレフィックスをC-rへ変更。C-zは「Ng をサスペンドするには、C-z をタイプします」なのですが、screenの元ではサスペンドはまず使いませんし、私はよくUndoと勘違いします。
makeは至って簡単で、linux用は、ln -s sys/sysv/Makefile .;make で完成し設定ファイルを cp dot.ng ~/.ng で置いておきます。
プレフィックス文字をCTRL-x から CTRL-rに変更するため、~/.ngへ下記を追加します。
(global-set-key "\^r" "c-x prefix")
ふぅ~、Emacsのlispとちょっと似ていますが、マニュアルが見当たらないので一苦労です。起動すると、おっ、コピペもバッチリ:-)
ne同様、ngって名前、短すぎますねぇ、ググるとノイズがひどい。
「Ngとは、Nihongo micro Gnu emacsの略であり、決してNo Goodの略ではありません。一言でいうと、NgはGNU Emacsライクな小型日本語エディタです。 Ngは、吉田さんによって、1990年ごろ、 mg(micro GNU Emacs/これもmicro Emacsの改良版です)を改造する形で作られました。その後、多くの人達の協力によって、 Ng 1.3.1(最後の公式版)/1.3L(最も多く使われている版)まで改良、バージョンアップされました。その後、マシンパワーの増大、Demacsの登場、MS-DOS/Human68kの衰退等によって、 Ngが使われる機会は少なくなり、開発も下火になりました。
しかし、中にはNgを使い続ける輩(私もその一人です)もおり、そのような人達によって、便利な非公式パッチや、新しいOSへの移植などが作られました。
私もこれらのパッチを当てたり、自分でソースをいじったりしていました。
自分のためにNgに手をいれていく内に、Ng 1.3Lより便利になって(自画自賛)、新たな機種にも対応したので(私の力ではありませんが)、 Ngの新たなバージョンとして公開する事にしました。」とあります。
Emacs嫌いの私、その理由は「なんせ重いのよぉ」なのとCRTL押し続けたくない、のと、lispが嫌い、なことですぅ。で、軽量Emacsモドキのngです。日本語エディタとして目に付くのは、Emacsやvim、ne、そしてこのngなど、このくらいでしょうかぁ。vimを日本語エディタとして使わないのは、viは英語圏に最適化されている、つまり単語の区切りはスペースだっつーことを最大限利用したキーマップやコマンド体系になっているように感じられるから。これを日本語みたいに単語の区切りがハッキリしない言語へ適用してもメリットはあんまり無いっと思うぅ。「日本語」を扱う観点から考えるとなにもviでなくても良い。neを長らく使ってきたが、なにせ最大の欠点が「コピペで段落が乱れてしまう」ってことです。これは辛い。で、ngなワケです。
私C-xをscreenのプレフィックスに使っちゃってます:-P
で、コマンド・プレフィックスをC-rへ変更。C-zは「Ng をサスペンドするには、C-z をタイプします」なのですが、screenの元ではサスペンドはまず使いませんし、私はよくUndoと勘違いします。
makeは至って簡単で、linux用は、ln -s sys/sysv/Makefile .;make で完成し設定ファイルを cp dot.ng ~/.ng で置いておきます。
プレフィックス文字をCTRL-x から CTRL-rに変更するため、~/.ngへ下記を追加します。
(global-set-key "\^r" "c-x prefix")
ふぅ~、Emacsのlispとちょっと似ていますが、マニュアルが見当たらないので一苦労です。起動すると、おっ、コピペもバッチリ:-)
ne同様、ngって名前、短すぎますねぇ、ググるとノイズがひどい。
ターミナル(2) kterm
お仕事でログインしているマシーンにktermが無いっ。まぁ私はあまり困りませんが。
ktermっとは一体誰が開発しているのでしょう。ググるとpatchが沢山ありますねぇ、Cygwin用やらlinux用やら。特にフォント関係ではFAQとしてここが詳しいようです。
xset q でフォントパスを調べて使えそうなフォントを探すっ。きっと名前は kなんとか、kanji*とかねっ。で、その名前で、
$kterm -km euc -fk k14 -fn 7x14
こんな感じでktermを起動します。因みに-fk(漢字) -fn(英字) -km(漢字モードeuc/sjis)。
これでファイルの中身なんかはちゃんと見えますが、日本語ファイル名なんかをlsしても化けます。これは/bin/lsが日本語を通さないためでしょう。fdcloneなら表示してしまいます。
ktermっとは一体誰が開発しているのでしょう。ググるとpatchが沢山ありますねぇ、Cygwin用やらlinux用やら。特にフォント関係ではFAQとしてここが詳しいようです。
xset q でフォントパスを調べて使えそうなフォントを探すっ。きっと名前は kなんとか、kanji*とかねっ。で、その名前で、
$kterm -km euc -fk k14 -fn 7x14
こんな感じでktermを起動します。因みに-fk(漢字) -fn(英字) -km(漢字モードeuc/sjis)。
これでファイルの中身なんかはちゃんと見えますが、日本語ファイル名なんかをlsしても化けます。これは/bin/lsが日本語を通さないためでしょう。fdcloneなら表示してしまいます。
2008年1月20日日曜日
X Window 上でUSBキーボードから/や_を入力できない?
X Window 上でUSBキーボードから/や_を入力できないことがあります。.xmodmapを修正すれば良いのですが、日本語キーボード用の.xmodmapなんて大概どっかのWebで公開されているものを引っ張ってきたものを使ってたりして内容なんて見てませんでしたぁ:-)
いざ使えないとなると、とっても困るので、.xmodmapの内容についてちょっとだけっ。中身は、
keycode 数字 = キー
みたいになっていますので、例えば`_`が入力できなければ、そのキーコードが.xmodmapに書かれていないと思われます。
まずは、キーボードを打った時にX Window Systemへ伝わるキーコードをxevで調べます。xevを立ち上げて、`シフト+_`を打つと、
KeyPress event, ....
...... , keycode 211 (keysym 0x5c, backslash), ....
......
分け解らんメッセージですが、`シフト+_`はどうやら
「keycodeが211でbackslash付き」
と想像できます。これを.xmodmapへ書き込んでやりましょう。
keycode 211 = backslash underscore
Xをリスタートすると、`_`が打てるようになります。他のキーでも同様になっていますので、.xmodmapを自前で全て作成することができます(フツーやりませんけどねぇ、公開してくださっている方、ありがとう:-)
いざ使えないとなると、とっても困るので、.xmodmapの内容についてちょっとだけっ。中身は、
keycode 数字 = キー
みたいになっていますので、例えば`_`が入力できなければ、そのキーコードが.xmodmapに書かれていないと思われます。
まずは、キーボードを打った時にX Window Systemへ伝わるキーコードをxevで調べます。xevを立ち上げて、`シフト+_`を打つと、
KeyPress event, ....
...... , keycode 211 (keysym 0x5c, backslash), ....
......
分け解らんメッセージですが、`シフト+_`はどうやら
「keycodeが211でbackslash付き」
と想像できます。これを.xmodmapへ書き込んでやりましょう。
keycode 211 = backslash underscore
Xをリスタートすると、`_`が打てるようになります。他のキーでも同様になっていますので、.xmodmapを自前で全て作成することができます(フツーやりませんけどねぇ、公開してくださっている方、ありがとう:-)
新着メールが届いたらscreenに知らせる -Xオプション
screen上で作業中に新着メールが届いたら、screenに知らせるっ、便利ですぅ。
動作中のscreenでコマンドを実行するには、screenの-Xオプションを使えば簡単に実現できますね。
screen -X bell_msg "New Mail New Mail!"
screen -X bell
これで現在起動しているscreen のWindowの右隅、ちぃっちゃくメッセージが5秒間出て消えます。
screenのセッションが現在のホスト上に複数立ち上がっていると-Xオプションがエラーを返します。
screenは、セッション名(sessionname)、WindowID(番号またはタイトル)で状態を管理しています。セッション名は、pid.tty.hostです(pidは省略可)。現在のホスト上にあるscreenのセッションリストは、screen -lsで表示されます(存在しない場合1を返します)。特定のセッションを選択してコマンドを送信するためには-Sオプションでセッション名を指定します。
screen -S pid.tty.host -X bell_msg "New Mail New Mail!"
sceen -S pid.tty.host -X bell
すべてのセッションにメッセージを送るには、
[hogemailyo]
#!/bin/csh -f
foreach s (`screen -ls|awk '{print $1;}'|grep "\.")
screen -S $s -X bell_msg "$*"
screen -S $s -X bell
end
こんな感じになります。
私はfetchmailが新着メールを受け取ったとき、procmailへ振り分けたりしていますので、
[procmail_with_screen_bell.shスクリプト]
#!/bin/csh -f
cat | procmail
foreach sss (`screen -ls | egrep '[0-9]+\..+\..+' | awk '{print $1}'`)
screen -S $sss -X bell_msg "New Mail Comes!"
screen -S $sss -X bell_msg
end
のようなprocmailのラッパ・スクリプトを作っておいて、fetchmailから新着メールを渡すように、.fetchmailrcのmdaの部分を
[.fetchmailrc内]
mda "procmail_with_screen_bell.sh"
としてしまいます。
これで、
fetchmailが新着メールを受け取り、procmail_with_screen_bell.shスクリプトへ渡す
procmail_with_screen_bell.shがprocmailへメールを渡す
procmail_with_screen_bell.shがscreenへメッセージを表示する

メールが届くと、左下にちぃッちゃく、"New Mail Comes!"と表示されますねぇ。
動作中のscreenでコマンドを実行するには、screenの-Xオプションを使えば簡単に実現できますね。
screen -X bell_msg "New Mail New Mail!"
screen -X bell
これで現在起動しているscreen のWindowの右隅、ちぃっちゃくメッセージが5秒間出て消えます。
screenのセッションが現在のホスト上に複数立ち上がっていると-Xオプションがエラーを返します。
screenは、セッション名(sessionname)、WindowID(番号またはタイトル)で状態を管理しています。セッション名は、pid.tty.hostです(pidは省略可)。現在のホスト上にあるscreenのセッションリストは、screen -lsで表示されます(存在しない場合1を返します)。特定のセッションを選択してコマンドを送信するためには-Sオプションでセッション名を指定します。
screen -S pid.tty.host -X bell_msg "New Mail New Mail!"
sceen -S pid.tty.host -X bell
すべてのセッションにメッセージを送るには、
[hogemailyo]
#!/bin/csh -f
foreach s (`screen -ls|awk '{print $1;}'|grep "\.")
screen -S $s -X bell_msg "$*"
screen -S $s -X bell
end
こんな感じになります。
私はfetchmailが新着メールを受け取ったとき、procmailへ振り分けたりしていますので、
[procmail_with_screen_bell.shスクリプト]
#!/bin/csh -f
cat | procmail
foreach sss (`screen -ls | egrep '[0-9]+\..+\..+' | awk '{print $1}'`)
screen -S $sss -X bell_msg "New Mail Comes!"
screen -S $sss -X bell_msg
end
のようなprocmailのラッパ・スクリプトを作っておいて、fetchmailから新着メールを渡すように、.fetchmailrcのmdaの部分を
[.fetchmailrc内]
mda "procmail_with_screen_bell.sh"
としてしまいます。
これで、
fetchmailが新着メールを受け取り、procmail_with_screen_bell.shスクリプトへ渡す
procmail_with_screen_bell.shがprocmailへメールを渡す
procmail_with_screen_bell.shがscreenへメッセージを表示する

メールが届くと、左下にちぃッちゃく、"New Mail Comes!"と表示されますねぇ。
mutt POP3フォルダ
mutt 1.4辺りから、POP3 フォルダ機能がサポートされ、spoolfile設定に、pop3サーバを直接指定できるようになっています。
set spoolfile=pop://pophost.com:110/
同様にimapサーバも扱えます。
set spoolfile=imap://imaphost.com:143/
フツーのpop3アクセスの場合、
set spoolfile=~/Mail
set folder=+inbox
のようにして置いて、まずpop3サーバからメールをinboxへフェッチしてから閲覧していましたが、POP3フォルダはフェッチ無しで直接pop3サーバを見に行きます。当然ローカルディスクを使用しないので、既読/未読の状態を保存することがでません。
set spoolfile=pop://pophost.com:110/
同様にimapサーバも扱えます。
set spoolfile=imap://imaphost.com:143/
フツーのpop3アクセスの場合、
set spoolfile=~/Mail
set folder=+inbox
のようにして置いて、まずpop3サーバからメールをinboxへフェッチしてから閲覧していましたが、POP3フォルダはフェッチ無しで直接pop3サーバを見に行きます。当然ローカルディスクを使用しないので、既読/未読の状態を保存することがでません。
mutt attachファイルを特定の場所へ保存する
linux上でmuttを走らせてメールを読んでいて、doc添付メールを開こうと思う。このときlinux上のmuttで何が出来るでしょう?かつては意地でもdocファイルをlinuxで見えるようにしようとがんばってましたが、完全あきらめ。
で、Windows用のファイルなのだからWindowsで見れば良いでしょう、ってことにしてます。linux上で添付ファイルを保存する場所を一箇所に決めてしまい、いつも添付ファイルはo同じ場所へセーブしています。muttでは、下記のようにmacroを使って、
macro attach s <save-entry>^a~/.Mail/attached_files/^e
macro attach <return> <save-entry>^a~/.Mail/attached_files/^e\n
これで、添付ファイルの参照モードからリターン・キーやsキーに対してデフォルトの保存先がいつも一箇所になります。このmacroの定義記述は、
attachモードで
sキーを押すと
save-entry関数が呼ばれ
ctrl-aでミニバッファの先頭へ移動し
/.Mail/attached_files/とキー入力を擬似し
ctrl-eで行末へ移動し
改行を打つ
ところまでやってくれるmacroの定義です。
添付ファイルがいつも一箇所に保存されているので、fdcloneで、
fd ~/.Maildir/attached_files/
で参照できます。またfdcloneの.fd2rcに、
# launcher definition
launch ".html" "w3m %C"
launch ".htm" "w3m %C"
launch ".exe" "fview.tcl %C"
launch ".xls" "fview.tcl %C"
launch ".csv" "fview.tcl %C"
launch ".ppt" "fview.tcl %C"
launch ".doc" "fview.tcl %C"
launch ".pdf" "fview.tcl %C"
launch ".zip" "fview.tcl %C"
launch ".lzh" "fview.tcl %C"
launch ".cab" "fview.tcl %C"
launch ".jpg" "fview.tcl %C"
launch ".tif" "fview.tcl %C"
launch ".bmp" "fview.tcl %C"
launch ".gif" "fview.tcl %C"
と記述しておくと、ftp転送スクリプトへ選んだファイルが転送されます。
また、いちいち確認せずにWindowsへ転送してしまうためには、
macro attach <return> <save-entry>^a/svhome/ogurak/.Mail/attached_files/^e\n<shell-escape>^afview.tcl<space>~/.Mail/attached_files/^e\n
とするとリターンを打つと即座にWindows上で表示できます。
これは最初の<save-entry>でファイルを所定の場所へ保存後<shell-escape>で所定の場所で最新のファイルをWindowsへ転送・表示することになります。ここでのfview.tclはファイル名ではなく、ディレクトリを引数として最新のファイルを探し出して処理しています。
で、Windows用のファイルなのだからWindowsで見れば良いでしょう、ってことにしてます。linux上で添付ファイルを保存する場所を一箇所に決めてしまい、いつも添付ファイルはo同じ場所へセーブしています。muttでは、下記のようにmacroを使って、
macro attach s <save-entry>^a~/.Mail/attached_files/^e
macro attach <return> <save-entry>^a~/.Mail/attached_files/^e\n
これで、添付ファイルの参照モードからリターン・キーやsキーに対してデフォルトの保存先がいつも一箇所になります。このmacroの定義記述は、
attachモードで
sキーを押すと
save-entry関数が呼ばれ
ctrl-aでミニバッファの先頭へ移動し
/.Mail/attached_files/とキー入力を擬似し
ctrl-eで行末へ移動し
改行を打つ
ところまでやってくれるmacroの定義です。
添付ファイルがいつも一箇所に保存されているので、fdcloneで、
fd ~/.Maildir/attached_files/
で参照できます。またfdcloneの.fd2rcに、
# launcher definition
launch ".html" "w3m %C"
launch ".htm" "w3m %C"
launch ".exe" "fview.tcl %C"
launch ".xls" "fview.tcl %C"
launch ".csv" "fview.tcl %C"
launch ".ppt" "fview.tcl %C"
launch ".doc" "fview.tcl %C"
launch ".pdf" "fview.tcl %C"
launch ".zip" "fview.tcl %C"
launch ".lzh" "fview.tcl %C"
launch ".cab" "fview.tcl %C"
launch ".jpg" "fview.tcl %C"
launch ".tif" "fview.tcl %C"
launch ".bmp" "fview.tcl %C"
launch ".gif" "fview.tcl %C"
と記述しておくと、ftp転送スクリプトへ選んだファイルが転送されます。
また、いちいち確認せずにWindowsへ転送してしまうためには、
macro attach <return> <save-entry>^a/svhome/ogurak/.Mail/attached_files/^e\n<shell-escape>^afview.tcl<space>~/.Mail/attached_files/^e\n
とするとリターンを打つと即座にWindows上で表示できます。
これは最初の<save-entry>でファイルを所定の場所へ保存後<shell-escape>で所定の場所で最新のファイルをWindowsへ転送・表示することになります。ここでのfview.tclはファイル名ではなく、ディレクトリを引数として最新のファイルを探し出して処理しています。
2008年1月18日金曜日
どこへいった? fetchmailのdaemon
linuxサーバセンタみたいな環境で数十台のlinuxを相手に仕事をしていると、使うlinuxマシーンを変えた時に「昨日Loginしていたマシーンっ、、どれだった?」状態になります。GNU Screenなんかで作業を保存していたりして、困るときがありますぅ。まあscreenの復帰はあきらめるとして、一番困るのはfetchmailのdaemonではないでしょうか。どっかで動いて、spoolにどんどんとメールが届くのは良いのですが、止めたくても止められない。
$ chmod 000 .fetchids
としてみてもダメ。勝手にchmod 700 .fetchidsに変更して使っちゃうぅ~。どこにいるのかいなぁ~私のfetchmail daemonクンは?
片っ端から知ってるlinuxマシーンへLoginして自分のfetchmail daemonを探す羽目にならないように、fetchmail daemonを起動する時はラッパを噛ませて起動したマシーンのipアドレスを保存しておきましょう。
#!/bin/csh -f
ifconfig | grep 'inet addr' > ~/.fetchmail.ip
fetchmail -U -s -d 600
こんなものを使っていますぅ、fetchmail自信、同じようなことをしているのでしょうか?
$ chmod 000 .fetchids
としてみてもダメ。勝手にchmod 700 .fetchidsに変更して使っちゃうぅ~。どこにいるのかいなぁ~私のfetchmail daemonクンは?
片っ端から知ってるlinuxマシーンへLoginして自分のfetchmail daemonを探す羽目にならないように、fetchmail daemonを起動する時はラッパを噛ませて起動したマシーンのipアドレスを保存しておきましょう。
#!/bin/csh -f
ifconfig | grep 'inet addr' > ~/.fetchmail.ip
fetchmail -U -s -d 600
こんなものを使っていますぅ、fetchmail自信、同じようなことをしているのでしょうか?
メール送信プログラム nbsmtp
sendmailを祖先とする沢山のsendmailクローン達。
ホント沢山いますよねぇ
exim
im
等使用経験があるのですが、最近はSMTP Auth対応のsmtpに出会う機会が増えています。ここでもimのimputにSMTP Authと無理やり会話させる修正など書いています。
nbsmtp
コレ簡単にSMTP Authと会話できるMTAです。
.muttrcに、
set sendmail="nbsmtp -d hogehoge.com -h smtp.hogehoge -f ogura.kenji@hogehoge.com -V"
って感じ。SMTP-Auth経由でメール送信できます。
~/.nbsmtprcにユーザ名とパスを書き込みます。
auth_user = user-hogehoge
auth_pass = pw-hogetta
chmod 600を忘れずに。
ホント沢山いますよねぇ
exim
im
等使用経験があるのですが、最近はSMTP Auth対応のsmtpに出会う機会が増えています。ここでもimのimputにSMTP Authと無理やり会話させる修正など書いています。
nbsmtp
コレ簡単にSMTP Authと会話できるMTAです。
.muttrcに、
set sendmail="nbsmtp -d hogehoge.com -h smtp.hogehoge -f ogura.kenji@hogehoge.com -V"
って感じ。SMTP-Auth経由でメール送信できます。
~/.nbsmtprcにユーザ名とパスを書き込みます。
auth_user = user-hogehoge
auth_pass = pw-hogetta
chmod 600を忘れずに。
muttの弱点と克服
muttの弱点。
思うに1つありますねぇ。
「新規メールを書きながら、他のメールからコピペすることができない」
Windowsのメーラでは送信メールを書く場合、新規Windowが伴って作成されることが多いです。なので、他のメールを参照したり、コピペしたりは簡単。対してmuttはフツーに使うと、muttがエディタの終了を待ってしまいます。
[エディタ立上げ]→編集&保存→[送信確認]→[送信]
のフローでメール処理が進みますから、他のメールからコピペできないです。
ググっても良い解答はなかなか得られませんでした。
幾つか方法があるように思われます。
①別メールの参照用にmuttをもう一つ立ち上げる
②別メールの作成用にmuttをもう一つ立ち上げる
③別メールの参照機能をmuttに付加する(mutt改造)
③は重いので考えないっ。
②は別メールの作成といっても、全員返信やら、個別返信、転送、中継など色々な状況によってmuttは動きを変えます。別メールの作成用にmuttを立ち上げる時、いろんな立ち上げ方法を実装する必要が有りそうで、実現は難しいそうぅ。
ってことで①でしょうか。。。
単純にmuttを2つ立ち上げるのは、智慧が無いように思われるので、もう少しカッコよく、参照用またはメール作成用に別プロセスでmuttを立ち上げる方法を考えてみす。mutt(1.4)のコマンドラインオプションを見てみると下記。
引数なしに muttを実行すると Mutt はスプールメールボックスを読みに行きます。しかし、コマンドラインから指定してやることで他のメールボックスを読んだりコマンドラインから直接メールを送ったりすることも可能です。
-a メールにファイルを添付する
-b BCCのアドレスを指定
-c カーボンコピー (Cc) の宛先を指定する
-e 初期化ファイルが読まれた後に実行する設定コマンドを指定
-f 読み込むメールボックスを指定
-F 指定したファイルから初期化コマンドを読み込む
-h コマンドラインオプションについてのヘルプを表示
-H ドラフトとしてヘッダと本文を読み出すファイルを指定
-i メッセージ作成時に取り込むファイルを指定
-m デフォルトのメールボックスの種類を指定
-n システムの Muttrc を読まない
-p 延期していたメールを呼び出す
-R メールボックスを読み取り専用で開く
-s subject を指定 (空白を含むときは引用符で囲む)
-v バージョンとコンパイル時の定義を表示
-x mailx(1) の作成モードを真似る
-y mailboxes コマンドで指定されたファイルを含んだメニューを表示させる
-z メールボックスにメッセージが存在しないなら直ちに終了する
-Z 新しいメッセージのある最初のフォルダを開く、無いなら直ちに終了する
ほぅ~けっこうあるんですねぇ:-)
でっ、ちょっとだけ閃きましたぁ
muttがmコマンドやgコマンドでメール作成に取り掛かるとき、一時ファイルを作成し、このファイルを引数としてエディタ(set editot=プログラム で指定したもの)を起動します。エディタが終了してファイルがセーブされると、送信/保存の選択を聞いてきます。エディタが終了しても渡したファイルの内容に変化がないと、メール閲覧モードに移行します。なので、エディタとして例えば常に1を返すだけのtrueコマンドを使用すると、メール作成モードに入り、宛先とサブジェクトを指定した後すぐにメール閲覧モードに戻ってしまいます。
この動きを利用できそうです。エディタとして例えば下のようなスクリプト(hogetto)を指定します。
[editorhogex]
#!/bin/csh -f
xterm -e mutt -H $1 -e 'set editor=ne' &
sleep 1
上のhogettoスクリプトはメール作成モードの新しいmutt(-Hオプション)をxterm上で起動して、1秒待って終了します。なので元々のmuttは渡したファイルに変化がなかったのでメール作成モードを終了してメール閲覧モードへ戻ります。
メール作成モードで立ち上げたxterm上の新しいmuttは、一時ファイルを引数に与えて、エディタとしてこの場合`ne`を立ち上げます。
元々のmuttが作った一時ファイルを消去する前に新しいmuttがそれを確実に読み込んで立ち上がるために、sleep 1を入れて元々のmuttが動き出すまでに1秒の`待て`をいれてあります。
mutt -Hオプションは、与えられた一時ファイルからヘッダと本文をインクルードしますから、ヘッダ部分に宛先とサブジェクトが書かれていれば、それを用いてメールの雛型を作ってくれます。なので一時ファイルにヘッダを含めておく必要が有ります。このために、edit_header=yesとしておきます(muttのdefaultではedit_header=no)。
これで元々のmuttはメール参照モードへ戻り、新たにメール作成・送信用のmuttがxterm上で別ウィンドウとして立ち上がります。コピペも楽になりました。ここではxtermを使用していますが、ウィンドウマネージャとしてGNU screenを使用しているのであれば、-X オプションで立ち上がっているscreenへコマンドを送ることで別のセッションが作成できますね。またscreenは起動していると環境変数TERMにscreenを設定、環境変数STYに現在のscreenセッション名を設定してますので、この場合、
[editorhogescreen]
#!/bin/csh -f
if ($TERM == "screen") then
screen -S $STY -X screen mutt -H $1 -e 'set editor=ne'
else
ne $1
endif
sleep 1
このhogeronは、screenプロセスに対して、「screenを一面追加してそこでメール作成モードのmuttを起動させる」ことができます。screen の-Xオプションは即座にリターンしてきますので、この例では、&を付けてプロセスを分ける必要はありません。
一点、メール作成モードでmuttを立ち上げたとき、一時ファイルの内容から割り出した宛先でメール作成するかどうかをmuttが聞いてきます。これは不要なのですが。まぁリターンを2度叩くだけなので気にはなりませんが。
思うに1つありますねぇ。
「新規メールを書きながら、他のメールからコピペすることができない」
Windowsのメーラでは送信メールを書く場合、新規Windowが伴って作成されることが多いです。なので、他のメールを参照したり、コピペしたりは簡単。対してmuttはフツーに使うと、muttがエディタの終了を待ってしまいます。
[エディタ立上げ]→編集&保存→[送信確認]→[送信]
のフローでメール処理が進みますから、他のメールからコピペできないです。
ググっても良い解答はなかなか得られませんでした。
幾つか方法があるように思われます。
①別メールの参照用にmuttをもう一つ立ち上げる
②別メールの作成用にmuttをもう一つ立ち上げる
③別メールの参照機能をmuttに付加する(mutt改造)
③は重いので考えないっ。
②は別メールの作成といっても、全員返信やら、個別返信、転送、中継など色々な状況によってmuttは動きを変えます。別メールの作成用にmuttを立ち上げる時、いろんな立ち上げ方法を実装する必要が有りそうで、実現は難しいそうぅ。
ってことで①でしょうか。。。
単純にmuttを2つ立ち上げるのは、智慧が無いように思われるので、もう少しカッコよく、参照用またはメール作成用に別プロセスでmuttを立ち上げる方法を考えてみす。mutt(1.4)のコマンドラインオプションを見てみると下記。
引数なしに muttを実行すると Mutt はスプールメールボックスを読みに行きます。しかし、コマンドラインから指定してやることで他のメールボックスを読んだりコマンドラインから直接メールを送ったりすることも可能です。
-a メールにファイルを添付する
-b BCCのアドレスを指定
-c カーボンコピー (Cc) の宛先を指定する
-e 初期化ファイルが読まれた後に実行する設定コマンドを指定
-f 読み込むメールボックスを指定
-F 指定したファイルから初期化コマンドを読み込む
-h コマンドラインオプションについてのヘルプを表示
-H ドラフトとしてヘッダと本文を読み出すファイルを指定
-i メッセージ作成時に取り込むファイルを指定
-m デフォルトのメールボックスの種類を指定
-n システムの Muttrc を読まない
-p 延期していたメールを呼び出す
-R メールボックスを読み取り専用で開く
-s subject を指定 (空白を含むときは引用符で囲む)
-v バージョンとコンパイル時の定義を表示
-x mailx(1) の作成モードを真似る
-y mailboxes コマンドで指定されたファイルを含んだメニューを表示させる
-z メールボックスにメッセージが存在しないなら直ちに終了する
-Z 新しいメッセージのある最初のフォルダを開く、無いなら直ちに終了する
ほぅ~けっこうあるんですねぇ:-)
でっ、ちょっとだけ閃きましたぁ
muttがmコマンドやgコマンドでメール作成に取り掛かるとき、一時ファイルを作成し、このファイルを引数としてエディタ(set editot=プログラム で指定したもの)を起動します。エディタが終了してファイルがセーブされると、送信/保存の選択を聞いてきます。エディタが終了しても渡したファイルの内容に変化がないと、メール閲覧モードに移行します。なので、エディタとして例えば常に1を返すだけのtrueコマンドを使用すると、メール作成モードに入り、宛先とサブジェクトを指定した後すぐにメール閲覧モードに戻ってしまいます。
この動きを利用できそうです。エディタとして例えば下のようなスクリプト(hogetto)を指定します。
[editorhogex]
#!/bin/csh -f
xterm -e mutt -H $1 -e 'set editor=ne' &
sleep 1
上のhogettoスクリプトはメール作成モードの新しいmutt(-Hオプション)をxterm上で起動して、1秒待って終了します。なので元々のmuttは渡したファイルに変化がなかったのでメール作成モードを終了してメール閲覧モードへ戻ります。
メール作成モードで立ち上げたxterm上の新しいmuttは、一時ファイルを引数に与えて、エディタとしてこの場合`ne`を立ち上げます。
元々のmuttが作った一時ファイルを消去する前に新しいmuttがそれを確実に読み込んで立ち上がるために、sleep 1を入れて元々のmuttが動き出すまでに1秒の`待て`をいれてあります。
mutt -Hオプションは、与えられた一時ファイルからヘッダと本文をインクルードしますから、ヘッダ部分に宛先とサブジェクトが書かれていれば、それを用いてメールの雛型を作ってくれます。なので一時ファイルにヘッダを含めておく必要が有ります。このために、edit_header=yesとしておきます(muttのdefaultではedit_header=no)。
これで元々のmuttはメール参照モードへ戻り、新たにメール作成・送信用のmuttがxterm上で別ウィンドウとして立ち上がります。コピペも楽になりました。ここではxtermを使用していますが、ウィンドウマネージャとしてGNU screenを使用しているのであれば、-X オプションで立ち上がっているscreenへコマンドを送ることで別のセッションが作成できますね。またscreenは起動していると環境変数TERMにscreenを設定、環境変数STYに現在のscreenセッション名を設定してますので、この場合、
[editorhogescreen]
#!/bin/csh -f
if ($TERM == "screen") then
screen -S $STY -X screen mutt -H $1 -e 'set editor=ne'
else
ne $1
endif
sleep 1
このhogeronは、screenプロセスに対して、「screenを一面追加してそこでメール作成モードのmuttを起動させる」ことができます。screen の-Xオプションは即座にリターンしてきますので、この例では、&を付けてプロセスを分ける必要はありません。
一点、メール作成モードでmuttを立ち上げたとき、一時ファイルの内容から割り出した宛先でメール作成するかどうかをmuttが聞いてきます。これは不要なのですが。まぁリターンを2度叩くだけなので気にはなりませんが。
透明 Window その1
すけすけウィンドウ。
Windowsの世界ではWindows2Kぐらいから、 ここにもあるように透明なウィンドウが流行った時期がありましたねぇ。私もさんざっぱら色々試してみまて、「ほぅ~(^^)こんな感 じになんるんだぁ~」と。
結局、ウィンドウが重なって下の画面がうっすら見えるんだけど、3重、4重とウィンドウが重なると、なにがなにやらわっかりにく~いデスクトップになって しまったような。2重ぐらいが限度かなぁと思いました。相当大きなディスプレイなら3重4重でもイイかもしれませんね。まあ使い方の問題なのでしょう。
すけすけウィンドウの話題は未来的なコンピュータへの想像を掻き立てた面があります。新しいユーザインタフェースを感じさせるような。iPodに代表され るような新しいUIの出現をPC上でも予感させましたが、実際、すけすけ機能だけでは、斬新ってだけで、PC環境として成熟してゆくことは無かった気が します。
アイディアも色々ありますねぇ
①「タスクトレイアイコンの右クリックメニューから、半透明表示したいウィンドウの名前を選択する」
②「ドラッグ操作で移動中のウィンドウだけを半透明表示する」
③「アクティブウィンドウ以外のウィンドウやダイアログを半透明表示にする」
④「画面の四隅にマウスポインタを動かすだけでアクティブウィンドウを半透明表示する」
⑤「ウィンド ウを広げた時に隠れてしまうデスクトップアイコンを、一時的にウィンドウの上に浮かび上がらせて表示し、クリックしやすくする」
ratpoisonなどの環境下では、④辺りが馴染むでしょうか。全画面表示の状況でマウスを四隅へ持っていくと半透明化して下のウィンドウがすけて見えるってこと。
ですが、X windowのクライアントはすけすけにはなりません。まあそうでしょうねぇ。無理があるのでしょう、きっとぉ。
telnet(PuTTY)を全画面で使用している場合は、ちゃんとすけますねっ。願わくば、
「四隅に持って行くだけでなく、何かのキーに透明化/解除を割り当てられると、ぴったり使用感になりそうです」が。rxvtでの「すける」とは単にデスクトップの背景を自分のウィンドウサイズ分切り取って自分の背景に設定しているだけみたいなのですが、この「④のすけすけ」は(っていうか、Windows2Kの透過機能は)全然違ってウィンドウの下で動作している他のアプリの様子が判ります。すばらしい。何か時間のかかる処理を待っている間、別の仕事を全画面表示で(-:やるには最適な感じですねぇ。
ところで、透明化したウィンドウをcapcapみたいな画面キャプチャソフトが無視してしまうのは困ったものですぅ、皆さんどうやってカッコいい画面をWebで公開しているのでしょうか。。。とほほぉぉ
すけすけ話しはまだまだ続きます。ToBeCotinued
Windowsの世界ではWindows2Kぐらいから、 ここにもあるように透明なウィンドウが流行った時期がありましたねぇ。私もさんざっぱら色々試してみまて、「ほぅ~(^^)こんな感 じになんるんだぁ~」と。
結局、ウィンドウが重なって下の画面がうっすら見えるんだけど、3重、4重とウィンドウが重なると、なにがなにやらわっかりにく~いデスクトップになって しまったような。2重ぐらいが限度かなぁと思いました。相当大きなディスプレイなら3重4重でもイイかもしれませんね。まあ使い方の問題なのでしょう。
すけすけウィンドウの話題は未来的なコンピュータへの想像を掻き立てた面があります。新しいユーザインタフェースを感じさせるような。iPodに代表され るような新しいUIの出現をPC上でも予感させましたが、実際、すけすけ機能だけでは、斬新ってだけで、PC環境として成熟してゆくことは無かった気が します。
アイディアも色々ありますねぇ
①「タスクトレイアイコンの右クリックメニューから、半透明表示したいウィンドウの名前を選択する」
②「ドラッグ操作で移動中のウィンドウだけを半透明表示する」
③「アクティブウィンドウ以外のウィンドウやダイアログを半透明表示にする」
④「画面の四隅にマウスポインタを動かすだけでアクティブウィンドウを半透明表示する」
⑤「ウィンド ウを広げた時に隠れてしまうデスクトップアイコンを、一時的にウィンドウの上に浮かび上がらせて表示し、クリックしやすくする」
ratpoisonなどの環境下では、④辺りが馴染むでしょうか。全画面表示の状況でマウスを四隅へ持っていくと半透明化して下のウィンドウがすけて見えるってこと。
ですが、X windowのクライアントはすけすけにはなりません。まあそうでしょうねぇ。無理があるのでしょう、きっとぉ。
telnet(PuTTY)を全画面で使用している場合は、ちゃんとすけますねっ。願わくば、
「四隅に持って行くだけでなく、何かのキーに透明化/解除を割り当てられると、ぴったり使用感になりそうです」が。rxvtでの「すける」とは単にデスクトップの背景を自分のウィンドウサイズ分切り取って自分の背景に設定しているだけみたいなのですが、この「④のすけすけ」は(っていうか、Windows2Kの透過機能は)全然違ってウィンドウの下で動作している他のアプリの様子が判ります。すばらしい。何か時間のかかる処理を待っている間、別の仕事を全画面表示で(-:やるには最適な感じですねぇ。
ところで、透明化したウィンドウをcapcapみたいな画面キャプチャソフトが無視してしまうのは困ったものですぅ、皆さんどうやってカッコいい画面をWebで公開しているのでしょうか。。。とほほぉぉ
すけすけ話しはまだまだ続きます。ToBeCotinued
2008年1月16日水曜日
ratpoison i18n: The Simplest Window Manager
こんなCUI Window Managerもあるんですねぇ。
ratpoison
「殺鼠剤」というだけあって、ひと癖もふた癖もあるウィンドウマネージャーなので万人にはおすすめできない。
* キーボードを叩くのが好きな人
* マウス操作は面倒だと思っている人
* Emacs使い
* GNU Screen大好きな人
* ウィンドウマネージャーをスクリプト言語で遠隔操縦するのが好きな人
* 変わったソフトを試すのが好きな人
っとあります。(まさに私のことではないかいなぁ、但しEmacsの部分は除く:-)
でもでも、結局X Windw上でごちゃごちゃやってるって感じですね。ratpoison以上に作者のShawn Bettsって人のほうに興味を惹かれます。だって紹介文が、
「GUI嫌い・マウス嫌いで有名なカナダ人プログラマ。マニア好みなフリーソフトウェアの作者」
ですよぉ:-o
で、インストール(on cygwin)。
ここからダウンロードして、
$ gunzip ratpoison-1.4.2.tar.gz
$ tar xvf ratpoison-1.4.2.tar
$ cd ratpoison-1.4.2
$ ./configure --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib/
$ make
$ make install
と、なんなくmakeに成功。
.xinitrcを、
xhost +
xeyes &
xterm &
exec openbox "$@"
↓
# exec openbox "$@"
exec ratpoison "$@"
としてXを起動する、、、おおぉデッカイ xeyes !続いてxterm がフルスクリーン!
巨大xeyesに睨まれてビックリしました(^|^)が、無事起動。
がっ。やっぱり下記の通り、
「ratpoisonは慣れれば十分実用的なウィンドウマネージャーなのだが、どうしても相性の悪いソフトは存在する。
これでhogehogeクンはopenboxの元、無事最大化されずにratpoisonの管理下に入れました。
ratpoison
「殺鼠剤」というだけあって、ひと癖もふた癖もあるウィンドウマネージャーなので万人にはおすすめできない。
* キーボードを叩くのが好きな人
* マウス操作は面倒だと思っている人
* Emacs使い
* GNU Screen大好きな人
* ウィンドウマネージャーをスクリプト言語で遠隔操縦するのが好きな人
* 変わったソフトを試すのが好きな人
っとあります。(まさに私のことではないかいなぁ、但しEmacsの部分は除く:-)
でもでも、結局X Windw上でごちゃごちゃやってるって感じですね。ratpoison以上に作者のShawn Bettsって人のほうに興味を惹かれます。だって紹介文が、
「GUI嫌い・マウス嫌いで有名なカナダ人プログラマ。マニア好みなフリーソフトウェアの作者」
ですよぉ:-o
で、インストール(on cygwin)。
ここからダウンロードして、
$ gunzip ratpoison-1.4.2.tar.gz
$ tar xvf ratpoison-1.4.2.tar
$ cd ratpoison-1.4.2
$ ./configure --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib/
$ make
$ make install
と、なんなくmakeに成功。
.xinitrcを、
xhost +
xeyes &
xterm &
exec openbox "$@"
↓
# exec openbox "$@"
exec ratpoison "$@"
としてXを起動する、、、おおぉデッカイ xeyes !続いてxterm がフルスクリーン!
巨大xeyesに睨まれてビックリしました(^|^)が、無事起動。
がっ。やっぱり下記の通り、
「ratpoisonは慣れれば十分実用的なウィンドウマネージャーなのだが、どうしても相性の悪いソフトは存在する。
- たくさんのウィンドウを開くソフト。主にgimp
- 最大化すると表示がゆがんでしまうソフト。主に画像ビューワ
前者の代表としてはgimpが有名である。 ratpoisonの天敵ともいえるgimpをどう対処するかについて述べる。」
とあるように、ratpoisonではつらいX プログラムもある、って、私のX プログラム(以下hogehoge)がまさにこれに当てはまってしまった。ん~っと、ここはXnestで乗り切るしかないねぇ~(だんだんツボにハマッテてきてないだろうかぁ:-o
Xnest -geometry 1024x768 -kb :1 &
DISPLAY=:1 openbox &
DISPLAY=:1 hogehoge &
(cshの場合は、
env DISPLAY=:1 openbox &
env DISPLAY=:1 hogehoge &
)
これでhogehogeクンはopenboxの元、無事最大化されずにratpoisonの管理下に入れました。
2008年1月15日火曜日
Winodwsは X Protocolを理解しない 当たり前?
WindowsはX Protocolを理解しない。
当たり前すぎるけれど、理解したとしても不思議でもない。Windows上で走れるX Serverが市販ソフトとして存在すれけれど、なにもWindowsって名のWindow管理ソフトをインストールした上に更に、X Windows Serverって名のWindow管理ソフトをインストールするのも無駄といえば無駄。
WindowsがX Protocolをサポートして販売してくれると、ユーザとしてはウレシイ。ついでに日本語入力やらフォント環境やらも共通化ってのはどうでしょう。もっとウレシイ。そんでもってX Window向けに作ったプログラムがWindowsでも走れると更にプログラムの節約にもなる。
X Serverソフトが売れなくなるなんて心配する必要は無いでしょう?だって既に売れていないからねぇ。大概はcygwinで間に合っちゃう。高速な描画が必要なlinuxソフト(レイアウトやらグラフィックス)の場合、やっぱり最適化されたX Serverが必要だろうけど、ニッチ、ニッチ。この際、WindowsにX Protocol載せてくれないんでしょうか?
当たり前すぎるけれど、理解したとしても不思議でもない。Windows上で走れるX Serverが市販ソフトとして存在すれけれど、なにもWindowsって名のWindow管理ソフトをインストールした上に更に、X Windows Serverって名のWindow管理ソフトをインストールするのも無駄といえば無駄。
WindowsがX Protocolをサポートして販売してくれると、ユーザとしてはウレシイ。ついでに日本語入力やらフォント環境やらも共通化ってのはどうでしょう。もっとウレシイ。そんでもってX Window向けに作ったプログラムがWindowsでも走れると更にプログラムの節約にもなる。
X Serverソフトが売れなくなるなんて心配する必要は無いでしょう?だって既に売れていないからねぇ。大概はcygwinで間に合っちゃう。高速な描画が必要なlinuxソフト(レイアウトやらグラフィックス)の場合、やっぱり最適化されたX Serverが必要だろうけど、ニッチ、ニッチ。この際、WindowsにX Protocol載せてくれないんでしょうか?
cygwin X の起動スクリプト.bat
cygwin Xを起動する場合、cygwin bashから、startx を起動するとcygwin bashのウィンドウが残ります。このウィンドウを終了させると Cygwin Xも終了してしまうぅ。ので最初のcygwin bashのウィンドウを残しておく必要がありそうなんですが、なんか目障りです:-<
まずは、startxスクリプト中のxinitを起動している部分を cygwin runで包みましょう。
xinit "$@"
↓
run xinit "$@"
これでcygwin bashは不要になりますので、cygwin bashを起動する.batファイルを
@echo off
C:
chdir C:\cygwin\bin
bash --login -i C:\cygwin\home\ogurak\startx
こんな風に作っておくと、Windowsからこの.batを起動することでcygwin Xが立ち上がりますねぇ:-)
runコマンドに関して、
run コマンドはコンソール・ウィンドウを隠してプログラムを実行する Cygwin 独特のコマンドです。 Cygwin プログラムのほとんどはコンソール・モード・アプリケーション *14ですから,本来ならば,標準入出力のためのコンソール・ウィンドウがまとわりつきます。 run コマンドは,このコンソール・ウィンドウを隠して,あたかも GUI モード・アプリケーションのような見かけにします。 run コマンドはもともと Cygiwn 用 X11 プログラムのひとつでした。しかし,今年 (2005年) 11月に改編され, base カテゴリの独立パッケージになりました。今は X11 を導入しなくてもデフォルトでインストールされます。などとあります。
てことで、更にこんなサンプルも・・・
@echo off
C:
chdir \cygwin\bin
run bash -l -c 'cd /usr/local/lib/pysol-4.81/src; python pysol.py --nosound'
なので、startxのように、startxを編集せんでも、start.batを
bash --login -i C:\cygwin\home\ogurak\startx
↓
run bash --login C:\cygwin\usr\X11R6\bin\startx
としておけばOKです。
まずは、startxスクリプト中のxinitを起動している部分を cygwin runで包みましょう。
xinit "$@"
↓
run xinit "$@"
これでcygwin bashは不要になりますので、cygwin bashを起動する.batファイルを
@echo off
C:
chdir C:\cygwin\bin
bash --login -i C:\cygwin\home\ogurak\startx
こんな風に作っておくと、Windowsからこの.batを起動することでcygwin Xが立ち上がりますねぇ:-)
runコマンドに関して、
run コマンドはコンソール・ウィンドウを隠してプログラムを実行する Cygwin 独特のコマンドです。 Cygwin プログラムのほとんどはコンソール・モード・アプリケーション *14ですから,本来ならば,標準入出力のためのコンソール・ウィンドウがまとわりつきます。 run コマンドは,このコンソール・ウィンドウを隠して,あたかも GUI モード・アプリケーションのような見かけにします。 run コマンドはもともと Cygiwn 用 X11 プログラムのひとつでした。しかし,今年 (2005年) 11月に改編され, base カテゴリの独立パッケージになりました。今は X11 を導入しなくてもデフォルトでインストールされます。などとあります。
てことで、更にこんなサンプルも・・・
@echo off
C:
chdir \cygwin\bin
run bash -l -c 'cd /usr/local/lib/pysol-4.81/src; python pysol.py --nosound'
なので、startxのように、startxを編集せんでも、start.batを
bash --login -i C:\cygwin\home\ogurak\startx
↓
run bash --login C:\cygwin\usr\X11R6\bin\startx
としておけばOKです。
vim の vi互換モード
最近のlinuxディストリビューションで、viを起動するとvimが立ち上がりますよね。
でもvimは嫌いです。viなんてエディタ以上のことを期待してません。
高機能な環境みたいなものが必要ならEmacsenを使えばいい。で、vimのvi互換モードですが、
~/.exrc
に、
set tag=tags
set tabstop=4
set shiftwidth=4
set compatible
set backspace=0
set noswapfile
こんな指定を入れています。特に、
set noswapfile
を入れたことで、編集中に「ファイル名~」なファイルが作成されなくなります。
バックアップファイルが無くなって困ることがあるのでしょうか?私がつかいこなしていないだけでしょうかねぇ・・・
[Tips]viで制御文字を入力する。
ここから
Cntrl-V
に続けて制御文字を入力できます。
例えば、dos2unixと同じことが、
:%s/Cntrl-VEnter//
で可能です。
でもvimは嫌いです。viなんてエディタ以上のことを期待してません。
高機能な環境みたいなものが必要ならEmacsenを使えばいい。で、vimのvi互換モードですが、
~/.exrc
に、
set tag=tags
set tabstop=4
set shiftwidth=4
set compatible
set backspace=0
set noswapfile
こんな指定を入れています。特に、
set noswapfile
を入れたことで、編集中に「ファイル名~」なファイルが作成されなくなります。
バックアップファイルが無くなって困ることがあるのでしょうか?私がつかいこなしていないだけでしょうかねぇ・・・
[Tips]viで制御文字を入力する。
ここから
Cntrl-V
に続けて制御文字を入力できます。
例えば、dos2unixと同じことが、
:%s/Cntrl-VEnter//
で可能です。
2008年1月13日日曜日
色々なプロセス構成
linux上で動くプログラムを書くことがお仕事だとして、screenやmutt、w3m、telnet、fdなどをcygwin上かlinux上か、どこで動ごかすと使い勝手は良いのだろうか?という疑問。
状況を整理してみますうぅ。
構成①として、
cygwin上で、bash→screen/mutt/w3m/telnet→linux上で、fd
また、私が推奨する構成②は、
windows上で、telnet→linux上で、screen/mutt/w3m/fd
構成①では、まず、Cygwinのターミナル(rxvtとかcygwin bashとか)を起動し、その上でscreenを起動します。screenからmuttやw3m、そしてtelnetでlinuxへ接続しfdを起動します。つまりメールやウェブはWindows上で動作させます。
対して、構成②は、まずPuTTYなどのWindowsのtelnetソフトでlinuxへ接続します。接続先のlinux上で、muttやw3mやfdを起動します。つまりtelnet以外は全てlinux上で動作させます。
構成①でも②でもあまり使い勝手に違いは無いのでしょうか?
screenはCtrl-Dでサスペンド、screen -rで復帰することができます。当たり前ですが、サスペンドしたscreenプロセスがdaemon化するなどの状態で生きていないと画面の復帰が出来ません(screenはdaemonとして行き続ける事で、対話動作のサブプロセスなどを制御しています)。例えば、cygwin bashから、rxvtを立ち上げてscreenを起動し、お仕事をして、中断のためCtrl-Dでサスペンド。もしその後でrxvtやcygwin bashを終了してしまうと、Ctrl-Dで中断しておいたはずのお仕事の続き画面がscreen -rで復帰できなくなります。cygwin bashを常に起動しておけばscreen -rで復帰できます。
linux上では、Ctrl-Dで中断したscreenプロセスがdaemon化してlinux上で生き続けている状態にありますので、telnetを切断しても、後程再接続すればscreen -rで続き画面を復帰できます。
linuxであろうがWindowsであろうが、システムの電源が落ちてしまえば、プロセステーブルは消えて無くなるので復帰できなくなることは同じなのですが、最近のlinuxサーバなど常時稼動が普通ですから、screenプロセスを生かしておくにはlinuxサーバ上が便利です。
一方、Cygwin上でmuttが走っていれば、ftpを経由した添付ファイルの転送など不要ですから便利です。
結局は、Windows用のプログラムを書くのか、linux用のプログラムを書くのか?ターゲット側でscreenを使用するのがよいようですねぇ
状況を整理してみますうぅ。
構成①として、
cygwin上で、bash→screen/mutt/w3m/telnet→linux上で、fd
また、私が推奨する構成②は、
windows上で、telnet→linux上で、screen/mutt/w3m/fd
構成①では、まず、Cygwinのターミナル(rxvtとかcygwin bashとか)を起動し、その上でscreenを起動します。screenからmuttやw3m、そしてtelnetでlinuxへ接続しfdを起動します。つまりメールやウェブはWindows上で動作させます。
対して、構成②は、まずPuTTYなどのWindowsのtelnetソフトでlinuxへ接続します。接続先のlinux上で、muttやw3mやfdを起動します。つまりtelnet以外は全てlinux上で動作させます。
構成①でも②でもあまり使い勝手に違いは無いのでしょうか?
screenはCtrl-Dでサスペンド、screen -rで復帰することができます。当たり前ですが、サスペンドしたscreenプロセスがdaemon化するなどの状態で生きていないと画面の復帰が出来ません(screenはdaemonとして行き続ける事で、対話動作のサブプロセスなどを制御しています)。例えば、cygwin bashから、rxvtを立ち上げてscreenを起動し、お仕事をして、中断のためCtrl-Dでサスペンド。もしその後でrxvtやcygwin bashを終了してしまうと、Ctrl-Dで中断しておいたはずのお仕事の続き画面がscreen -rで復帰できなくなります。cygwin bashを常に起動しておけばscreen -rで復帰できます。
linux上では、Ctrl-Dで中断したscreenプロセスがdaemon化してlinux上で生き続けている状態にありますので、telnetを切断しても、後程再接続すればscreen -rで続き画面を復帰できます。
linuxであろうがWindowsであろうが、システムの電源が落ちてしまえば、プロセステーブルは消えて無くなるので復帰できなくなることは同じなのですが、最近のlinuxサーバなど常時稼動が普通ですから、screenプロセスを生かしておくにはlinuxサーバ上が便利です。
一方、Cygwin上でmuttが走っていれば、ftpを経由した添付ファイルの転送など不要ですから便利です。
結局は、Windows用のプログラムを書くのか、linux用のプログラムを書くのか?ターゲット側でscreenを使用するのがよいようですねぇ
2008年1月12日土曜日
w3m
telnet先で動作させるページャ w3m。
w3mは「www(w3)を見る(m)」から命名されたそうです。ページャとしてhtmlを見る着想はとっても面白いです。xlsやらwordやらをhtmlへ変換して、見れるところだけw3mで見る、なんてことも出来ます。
lessがhtmlフォーマッティングをサポートした感覚です。
ここで開発されています。
ググればたくさんの情報が得られます。
ここ では、WordやExcelをw3mと絡めて表示させるヒントがあります。(って私のページですけど:0) xlHtml, pptHtml,wvHtml等など
w3mの~/.w3m/mailcapでエントリを追加することでw3mはリンク先のアドレスを判定して、対応するプログラムを呼び出すようになります。
こ れでMS-Officeが不要になるわけもありませんね、だってMS-Officeの文書には画像やらグラフやら、テキストベースではない表現が沢山入っ ていますし、第一ファイルの文字部分だけが見えるだけで編集は出来ません。だからlinux側で全てを完結するのは困難だと思えます。
しかし、大切なのはw3mがリンク先のファイルをテンポラリ場所へ保存してくれて、そのパスを外部プログラムへ渡してくれることですね。この機能を利用して、ファイルをftpでPCへ飛ばし、PC側で表示することが簡単に出来るわけです。
こ のブログにもあるような( ②linux側のftpクライアントスクリプト)ものを~/.w3m/mailcapに指定しておけば、w3mでpdfを見よ うとすると、ローカルにセーブされたファイルがPCへftp転送されて、PC上のAcrobatで表示される仕組みが簡単に作れる。たとえば、
application/* ②linux側のftpクライアントスクリプト %s
み たいなエントリを~/.w3m/mailcapに書き込めば良い。勿論PC側ではちょっと特別なftpd( ①PC側のftpdサーバスクリプト)を立ち上 げておく必要があるがぁ。上のエントリ で/*とあるのは強力だろう?だってPCで表示できそうなものは全てPCで表示するってわけだから。「だったらWebページもw3mではなく、PCで見れ ば?」とは考えないでほしいっ。PCで見る必要がないページはw3mで十分だと`私`は思っているから。。。
w3mは「www(w3)を見る(m)」から命名されたそうです。ページャとしてhtmlを見る着想はとっても面白いです。xlsやらwordやらをhtmlへ変換して、見れるところだけw3mで見る、なんてことも出来ます。
lessがhtmlフォーマッティングをサポートした感覚です。
ここで開発されています。
ググればたくさんの情報が得られます。
ここ では、WordやExcelをw3mと絡めて表示させるヒントがあります。(って私のページですけど:0) xlHtml, pptHtml,wvHtml等など
w3mの~/.w3m/mailcapでエントリを追加することでw3mはリンク先のアドレスを判定して、対応するプログラムを呼び出すようになります。
こ れでMS-Officeが不要になるわけもありませんね、だってMS-Officeの文書には画像やらグラフやら、テキストベースではない表現が沢山入っ ていますし、第一ファイルの文字部分だけが見えるだけで編集は出来ません。だからlinux側で全てを完結するのは困難だと思えます。
しかし、大切なのはw3mがリンク先のファイルをテンポラリ場所へ保存してくれて、そのパスを外部プログラムへ渡してくれることですね。この機能を利用して、ファイルをftpでPCへ飛ばし、PC側で表示することが簡単に出来るわけです。
こ のブログにもあるような( ②linux側のftpクライアントスクリプト)ものを~/.w3m/mailcapに指定しておけば、w3mでpdfを見よ うとすると、ローカルにセーブされたファイルがPCへftp転送されて、PC上のAcrobatで表示される仕組みが簡単に作れる。たとえば、
application/* ②linux側のftpクライアントスクリプト %s
み たいなエントリを~/.w3m/mailcapに書き込めば良い。勿論PC側ではちょっと特別なftpd( ①PC側のftpdサーバスクリプト)を立ち上 げておく必要があるがぁ。上のエントリ で/*とあるのは強力だろう?だってPCで表示できそうなものは全てPCで表示するってわけだから。「だったらWebページもw3mではなく、PCで見れ ば?」とは考えないでほしいっ。PCで見る必要がないページはw3mで十分だと`私`は思っているから。。。
登録:
投稿 (Atom)