ブログ

viで文字コードを指定してファイルを開く

vimを使ってファイル編集等を行うとき、システムの文字コードを扱う場合は問題ないですが、異なる文字コードのファイルを扱う場合は文字化けが発生してしまいます。

こんな場合vim(Ver.6以降)には文字コードを指定してファイルを開く事ができます。

EUCのファイルを開く場合
$ vim "+e ++enc=euc-jp" <ファイル名>

シフトJISのファイルを開く場合
$ vim "+e ++enc=cp932" <ファイル名>

JISコードのファイルを開く場合
$ vim "+e ++enc=iso-2022-jp" <ファイル名>

UTF-8のファイルを開く場合
$ vim "+e ++enc=utf8" <ファイル名>

wgetでユーザー認証

Linuxコンソール上でファイルのダウンロードを行うときに使うwgetですが、ユーザー認証を行うときは対話式にはならないためオプションで設定をしてあげる必要があります。

wget --http-user=<ユーザー名> --http-passwd=<パスワード>

(オプション)
 --http-user : 認証するユーザー名を入れます
 --http-passwd : 認証するユーザーのパスワードを入れます
 url : ダウンロード対象のURLを入れます

(使用例)
wget --http-user=hoge --http-passwd=hogehoge http://example.com/example.zip

(認証をしていないときの応答例)
wget http://example.com/example.zip
--2xxx-xx-xx xx:xx:xx-- http://example.com/example.zip
Resolving example.com... xxx.xx.xxx.xxx
Connecting to example.com|xxx.xx.xxx.xxx|:80... connected.
HTTP request sent, awaiting response... 401 Authorization Required
Authorization failed.

(認証が通ったときの応答例)
wget http://example.com/example.zip
--http-user=user1 --http-passwd=user1pass
--2xxx-xx-xx xx:xx:xx-- http://example.com/example.zip
Resolving example.com... xxx.xx.xxx.xxx
Connecting to example.com|xxx.xx.xxx.xxx|:80... connected.
HTTP request sent, awaiting response... 401 Authorization Required
Connecting to example.com|xxx.xx.xxx.xxx|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: xxxxxx (xxxM) [application/x-gzip]
Saving to: `example.zip'

amavisd-newとspamassassinの連携でバーチャルドメイン運用のメールのヘッダにスパム情報をつける

なにやらタイトルが長くなってしまったのですがこれ以外書きようがないのでご容赦を。。。

Centos5のpostfixのバーチャルドメイン運用環境でamavisd-newにてclamavとspamassassinを使うために各種設定を行ったのですが、spamassassinの判断結果がメールヘッダに付加されないという状況に四苦八苦したので解決方法をメモしておきます。

amavisd-newでspamassassinの処理結果をメールヘッダに付加するためには通常
$sa_tag_level_defltの値をあり得ない値(マイナス値)にしておき、$mydomainを運用ドメイン名にしておけば必ず付加されるのですが、

(設定例)
/etc/amavisd.conf
$sa_tag_level_deflt = -999;
$mydomain = example.com

マルチドメイン運用の場合はその名の通り複数のドメインを扱うことになるのでこれでは設定できません。そこで@local_domains_mapsに運用ドメインを追加することになるのですが、ドメインが増える毎に都度ここを変更するのは面倒&変更漏れがあるといけないので、何とかならないかと思ってたどり着いた結果

@local_domains_maps = ( 1 );

とすればよいという結論に。
これと先の設定を行うことですべてのメールにspamassassinの処理結果がメールヘッダに付与されるようになります。

(メールヘッダ例)
X-Spam-Flag: NO
X-Spam-Score: 5.119
X-Spam-Level: *****
X-Spam-Status: No, score=5.119 required=13 tests=[AWL=0.388,
CONTENT_TYPE_PRESENT=-0.1, DNS_FROM_OPENWHOIS=2.431,
ISO2022JP_CHARSET=-0.1, ONLY1HOPDIRECT=1, RCVD_NUMERIC_HELO2=1.5]
autolearn=no

この設定は「すべて」のメールにspamassassinの処理結果を付加するので、メール転送の場合にも処理結果が付加されてしまうと思われますので、これが嫌な場合は、粛々とドメイン名を素直に追加していくしかないでしょうね。

下記が今回の確認環境ですが、今回の例はほかのOS等でも汎用的に適用できるものと思います。

運用環境
 CentOS 5.5
 Postfix 2.3.3
 Dovecot 1.0.7
 MySQL 5.0.77
 Amavisd-new
 clamav
 spamassassin

リモートデスクトップでCTRL+ALT+DEL

Windowsのリモートデスクトップを利用する際、リモートPCにCTRL+ALT+DELを送りたいときありますよね。
こんな時素直にCTRL+ALT+DELしても残念ながらローカルPC側に反映されてしまいます。

ではどうするか?
「CTRL+ALT+END」をたたきましょう。
DELの代わりにENDキーです。

備忘録を兼ねて投稿しておきます。

EclipseのPHPデバッグでローカル変数が参照できない(xdebug)

eclipseのPHPデバッグでローカル変数が参照できなかったので備忘録としてメモ。

Eclipse 3.5.1
PHP 5.3.0
PDT
Xdubug 2.0.6(Exlipse内包)

の環境を作成しいざdebugを開始してみましたが、なぜかローカル変数の参照ができません。
グローバル変数は問題ありませんし、ブレークやステップ実行等ほかの機能は問題なく動いています。

Webで調べてみるとどうやらXdebugにバグがあるようです。
これを修正したものが公開されているのでこれを使うようにしましょう。

Xdebugダウンロード

私は現時点で最新の2.1.0rc1-devを導入してみました。

デバッグ環境によってダウンロードするファイルが異なりますので、環境にあったものをダウンロードしてください。(ちなみに私の環境では5.3 VC6 (32 bit)でした。)

apacheとeclipseを再起動して動作を確認してみましょう。
私はexlipseの再起動をしないで動作確認してしまいハマりました。。。

コンテンツの配信