2008年8月12日火曜日
viでエラーが発生して保存できない(追記あり)

えーっと、cygwinなんだけど、viで保存(:wq)時にエラーが出た。



"ファイル名" E513: write error, conversion failed (make 'fenc' empty to override)
Press ENTER or type command to continue



なんだ?

っつーか、fencってなんだよ。
:set fenc

としてみる。
fileencoding=sjis

まぁ、cygwinだからね、Shift-jisだね。

…で?

検索してみよう。

http://vim.cybermirror.org/messages/ja.po
msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
msgstr "E513: 書込みエラー, 変換失敗 (上書するには 'fenc' を空にしてください)"


あぁ、そうか。

ってことで、こうしてみる。
:set fenc=


:wq

無事終了。

再度viで開いてみる。
勿論fencを確認しても空っぽなんだけど、sjisに再設定してみると、やっぱりE513のエラーがでる。
また空にすればいいだけの話なんだけどさ。
このfenc/fileencodingって、なんのためにあるのだろう??

情報は少なそうだなぁ。
何故このファイルだけ…

ちょっと調べてみた。
エンコードを指定して開き直す方法があった。
:e ++enc=sjis

実行してみると…(sjisでなくてもshift_jisでもOKみたい)
"ファイル名" [converted][CONVERSION ERROR in line 94] 170L, 2914C


なぁにぃぃぃ!

で、94行目を見ると、"\"が"?"に置き換わっている(括弧をエスケープする目的の"\")。
ここがいけないのかと思って、"?"を"\"に置き換えるが、やはりsjisでは保存できないようだった。
(追記:当然だわな、sjisにバックスラッシュってないもんね)

エンコードを変更することで"\"が"?"に置き換えられるのと、同じ原因なのかな?
(追記:sjisでバックスラッシュを表示させようというのがそもそもの誤りに気づかない僕って…)

stupidGeek
エラーコード:E513を克服する

ここを読むと、同じくE513のエラーに苦戦した経緯と解決に至った内容が書かれている。
でも、ちょっとこのケースは違うな。



やっぱり、"\"の部分で、他の文字コードと誤認されているのかな?
(追記:だからそろそろ気づけ、俺!)

vi abc

で、テキトーに「aaaaa」と書いて保存(:w)。
正常、正常。
:set fenc

でファイルエンコードを確認する。
 fileencoding=

空っぽ。
一旦閉じて(:q)、再度開く。
vi abc

ファイルエンコードを確認する。
:set fenc

 fileencoding=sjis

よく考えたら~/.vimrcでfileencodingをsjisに設定してるわ。
で上書き保存・終了(:wq)すると、正常に終われる。
再度開いて(vi)、問題の"\"を書いて、保存(:w)すると…
"abc" E513: write error, conversion failed (make 'fenc' empty to override)
Press ENTER or type command to continue

そういうことですか。
エンコードがshift_jisの場合には"\"がエラーになるのね。
"\"を使うなら、fencは削除しないといけないか…
(追記:というかutf-8とかeucなら大丈夫なんだろうな)

根本的な解決にはなってないな。


ちなみに、これらの作業ってPoderosaから実行してたんだけど、これをDOS(インストール時に作成されるショートカット)から実行すると
"ファイル名" E513: 書込みエラー, 変換失敗 (上書するには 'fenc' を空にしてください)
続けるにはENTERを押すかコマンドを入力してください

と、日本語でエラーが表示される。


(追記 - 2010/03/02)
久しぶりにコマンドプロンプトでvimを使ったが、エラーにならなかった。
「何故だ!」と思って、TeraTermのcyglaunchとPoderosaで試したけど、問題なく…

ふと.vimrcを見てみたら、こう設定されてた。
set encoding=japan
set fileencodings=sjis,utf-8,iso-2022-jp,euc-jp
set nu
set tabstop=4

fileencodingsの設定が変わってる!?

やべ、全然記憶にないわ。
とりあえずこうやって複数指定すれば回避できるんだな。
修正したときに、ここにも追記すべきだったな。



0 コメント | コメントを書く | コメントの表示
2008年8月5日火曜日
インストール時のスクリーンショット - Redhat

お久しぶりの更新。
ちょっと仕事でJAVAやってたんで、とりあえず書くことが無かった。

で、久しぶりにUNIX系OSのインストールをするので、ちょっと思い出したことを書いておきます。
※実際に作業したのは1年前なので、最新バージョンでは違うかもしれません。

インストール時のスクリーンショットの撮り方(取り方?)です。
まぁ、メモすりゃいいんだけど、作業記録としてあった方が確実でしょ?
でも、この方法が他のOSでも通用するか判りません。
一応、Redhat Enterprise Linuxでの方法です(でした)。
これからちょっと他のインストールがあるので、試してみようかと思います。

インストール時のスクリーンショット
 Shift + PrtSc
 後半はPrtScのみで取得できます(どこからか忘れた)。

うまく取れるとダイアログが出るので、取れたかどうか不安になることはないかと思います。



0 コメント | コメントを書く | コメントの表示
2008年5月9日金曜日
SET

せっかくなので、バッチファイルについて、もう少し。
正直、今更な話だけど、案外探すのが面倒なので、とりあえず自分用にここへ。

対話形式でなにかやろうとすると、コマンドプロンプト/MS-DOSって、どーしてもSETコマンドに頼らざるを得ない。
そんなときは

@ECHO OFF
SET /P TESTMSG=ここに何か入力してください。:
ECHO %TESTMSG%

として、バッチファイルを実行すると…
C:\>test.bat
ここになにか入力してください。:

で入力待ちになるので、なにか入力してエンターを押すと、入力された文字列がTESTMSGに格納される。
ECHOでそのTESTMSGを表示しておしまし。
C:\>test.bat
ここになにか入力してください。:テストメッセージ
テストメッセージ
C:\>


この場合、事前にTESTMSGになにかセットしておいても、入力で上書きされる。ただし何も入力をしないで、エンターを押すと、なにも格納されない。
なので、
@ECHO OFF
SET /P ANSWER=よろしいですか?[Y/N]:
IF /I %ANSWER% EQU Y (
ECHO 了解いたしました。
)

とかやると、何も入力しない場合にはANSWERは空のまま。IF文でエラーになってしまう。
C:\>test.bat
よろしいですか?[Y/N]:
Yの使い方が誤っています
C:\>

対策するなら、「"」で括るか、
@ECHO OFF
SET /P ANSWER=よろしいですか?[Y/N]:
IF /I "%ANSWER%" EQU "Y" (
ECHO 了解いたしました。
)

あらかじめ、なにか値を入れておくしかないのかな?(ここではデフォルトでNを入れてみた)
@ECHO OFF
SET ANSWER=N
SET /P ANSWER=よろしいですか?[Y/N]:
IF /I %ANSWER% EQU Y (
ECHO 了解いたしました。
)


こうやってSET /Pだとその値を変更/更新することができるんだけど…

うーん…
こうして書いてみると、なにか忘れてることがある気がしてならん。

あぁ、そうそう、このSETコマンドはやはり環境変数の操作を行うものだから、バッチが終わっても有効なのだな。
なので、処理の最後で
SET 変数名=
で解放するか、処理の最初で初期化(解放と同じ)する必要があるね。

さっきの「よろしいですか?[Y/N]」のバッチだと、1回目にYと入力したあとすぐ2回目を実行し、空エンターで再度IF文に入るのだが、1回目に格納したYが未だ入ったままであるため、IF "入力" == "Y"が有効になってしまう。


…まぁ、とりあえずこんなカンジで書いていこうかと思ってる。
備忘録代わりってことでさ。



0 コメント | コメントを書く | コメントの表示
2008年4月16日水曜日
フォルダ(ディレクトリ)が空かどうか

客先によっては、自分なりの環境を整えるのが難しいところがある(最近は多い)。
なので、バッチファイルって意外と重宝する。

でもって、気になって調べてみると、今更ながら情報って少ないねぇ。
なんつーか、探しきれてないのだろうけど。

で、ここ数日悩みのタネだったのが、タイトルにあるとおり、フォルダの中身の調査。
何故必要かはおいといて、調査結果を…

基本、2ch情報だけど、こういうのがあった。

ユーザー必読!コマンドライン(DOS Pt.6)
http://pc11.2ch.net/test/read.cgi/win/1176558776/124-125

124 :名無し~3.EXE:2007/06/16(土) 19:02:59 ID:CXEmvWRn
DIR /B "C:\hoge" | FIND /V "" > NUL で ERRORLEVEL=1 なら空。
ってのは強引?

125 :名無し~3.EXE:2007/06/18(月) 01:45:27 ID:H6wUdAfo
読みやすさ優先ならfor /r と set /a ってなところだろうけどねぇ


124のは単純だね。DIRで取得した結果が空じゃなければERRORLEVELは0だから。
あとはIF文をどうするかってことだね。

ってことで、125のやつ。
これは、FORでフォルダ内部のファイルを列挙して、SET /Aで数を数えるってことかな?
@ECHO OFF
SET /A CNT=0
FOR /R パス %I IN (*) DO (
SET /A CNT=CNT+1
)

これでCNTがゼロでなければファイルはあることになるので、フォルダは空じゃないと…

しかし、SETで計算できるの知らなかったな。
もう少し、修行が必要かな?


2008/05/01 - 追記
バッチファイルなら、%を重ねないといかんなぁ。
ケアレスミスです。
で、ECHOしてみた。
@ECHO OFF
SET /A CNT=0
FOR /R パス %%I IN (*) DO (
SET /A CNT=CNT+1
)
ECHO %CNT%

こういうのを知ってると、結構使える場面が… ないか。



0 コメント | コメントを書く | コメントの表示
2008年4月4日金曜日
mtaサービスの変更 - alternatives コマンド

随分前に、仕事で調べたコマンド。
ふと気になったので、書いておく。


サーバセットアップの際に、MTA(メール転送エージェント)の変更が必要になった。
調査時にはRed Hatのパッケージで変更をしたようだったけど、僕が実作業に入るときには、パッケージを選別したために、そのコマンドだかなんだかが無くなってしまった。
そこで、コマンドを探し当てたという話。


まずはchkconfigでpostfixを確認する。

# chkconfig --list postfix
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off


次に、sendmailを確認してみる。

# chkconfig --list sendmail
サービスsendmailはchkconfigをサポートしますが実行レベルで参照されていません (run 'chkconfig --add sendmail')
#


で、alternativesコマンドで確認する。

# alternatives --display mta
mta - ステータスは手動です。
リンクは現在 /usr/sbin/sendmail.postfix を指しています。
/usr/sbin/sendmail.sendmail - 優先項目 90
スレーブ mta-pam: /etc/pam.d/smtp.sendmail
スレーブ mta-mailq: /usr/bin/mailq.sendmail
スレーブ mta-newaliases: /usr/bin/newaliases.sendmail
スレーブ mta-rmail: /usr/bin/rmail.sendmail
スレーブ mta-sendmail: /usr/lib/sendmail.sendmail
スレーブ mta-mailqman: /usr/share/man/man1/mailq.sendmail.1.gz
スレーブ mta-newaliasesman: /usr/share/man/man1/newaliases.sendmail.1.gz
スレーブ mta-aliasesman: /usr/share/man/man5/aliases.sendmail.5.gz
スレーブ mta-sendmailman: /usr/share/man/man8/sendmail.sendmail.8.gz
/usr/sbin/sendmail.postfix - 優先項目 30
スレーブ mta-pam: /etc/pam.d/smtp.postfix
スレーブ mta-mailq: /usr/bin/mailq.postfix
スレーブ mta-newaliases: /usr/bin/newaliases.postfix
スレーブ mta-rmail: /usr/bin/rmail.postfix
スレーブ mta-sendmail: /usr/lib/sendmail.postfix
スレーブ mta-mailqman: /usr/share/man/man1/mailq.postfix.1.gz
スレーブ mta-newaliasesman: /usr/share/man/man1/newaliases.postfix.1.gz
スレーブ mta-aliasesman: /usr/share/man/man5/aliases.postfix.5.gz
スレーブ mta-sendmailman: /usr/share/man/man1/sendmail.postfix.1.gz
現在の「最適」バージョンは /usr/sbin/sendmail.sendmail です。
#


ここでpostfixからsendmailに変更してみる。

# alternatives --config mta

2 プログラムがあり 'mta'を提供します。

選択 コマンド
-----------------------------------------------
* 1 /usr/sbin/sendmail.sendmail
+ 2 /usr/sbin/sendmail.postfix

Enterを押して現在の選択[+]を保持するか、選択番号を入力します:
と出るので、sendmailにするなら、「1」を入力してENTERすればいい。


再度、確認する。

# chkconfig --list postfix
サービスpostfixはchkconfigをサポートしますが実行レベルで参照されていません (run 'chkconfig --add postfix')
# chkconfig --list sendmail
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# alternatives --display mta
mta - ステータスは手動です。
リンクは現在 /usr/sbin/sendmail.sendmail を指しています。
(以下省略)



…おっと、サービスを起動させないと。


# /etc/init.d/postfix stop
Shutting down postfix: [ OK ]
# /etc/init.d/sendmail start
sendmail を起動中: [ OK ]
sm-client を起動中: [ OK ]
#


こんなもんですか。



0 コメント | コメントを書く | コメントの表示
Webメールクライアント - Windows Live メール

常駐先より、帰還してまいりました。
ぼちぼち再開ってことで。

久しぶりに、新しいソフトを入れてみた(Lunchyの記事も書こうかな?)。

WebメールとしてはHotmailとGmailを使ってるんだけど、メインのメールクライアントはBecky!なんで、ちょっとWebメールとは連携がイマイチ。
プラグインもあるんだけど、Hotmailは受信のみだったりして、ちょっと使い勝手が悪い。
そこで、色々と探した挙句、Windows Live メールというのを使ってみることにした。

ダウンロードはここから↓
Windows Live メール - 概要

さて、システム要件ですが、XP(SP2)にVistaってことで、自宅PCからは利用不可(Windows 2000ですから)。
仕方ないね。

でもって、インストールしてみた。


起動してみると、Becky!に登録してあった2つのアカウントのうちひとつだけがインポートされてた。
Becky!もあるし、とりあえずこれは削除。

でもって、右上に「サインイン」が。

クリックしてサインインすると、そのアカウントのHotmail(今はWindows Live Mailか)が登録されるみたいなんだけど、複数のアカウントを登録するには、このアイコンから

「すべてのメニューを表示する」にチェックを入れて、通常の「ファイル」「編集」「表示」などのメニューバーを表示させる必要がある。
で、その「ツール」からOutlookと同じようにアカウントを追加できる。
勿論、Hotmailだけじゃなく、Gmailも(GmailはGmail側でPOP許可設定に変更する必要がある)。
最初からHotmail、Gmailに対応してるだけに、アカウントを入れるだけで、きちんと設定できるので、便利。

基本的には、一旦ダウンロードする必要があるので、サーバ側との連携がどうなのかちょっと気になるところだけど、しばらく使ってみよう。

ソフトとしての使い心地は、Outlookと同じかな?
細かい動作なんかは、Hotmailのサイトと同じなので、受信拒否の送信なんかもできるみたい。

常駐先じゃ、Webメール禁止なところが多いから、使用頻度が減ってるので、あまり複雑なことしないからね。
単純に一括管理用だから。いちいちブラウザひらいてログインしてっていうのをいくつも繰り返すよりははるかにマシです。
ま、基本Becky!だし、出社時と退社時にチェックする用ってことで。



0 コメント | コメントを書く | コメントの表示
Template Design: © 2007 Envy Inc.