Unlocker がアンチウィルスソフトにブロックされる件

最近新しいPCを組んだので、ぼちぼちと環境構築中です。OS は Windows7 Professional (64bit)ですが、たいていのソフトは対応済み、もしくはなにもしなくてもそのまま使えるみたいですね。

ところが! 一つ些細ながらも気になったのが、UnlockerAVGでブロックされてしまうことです。

Unlockerは、あるファイルがロックされていて削除やリネームができないときに、ロックしているプロセスを見つけ出し、終了させたりロック解除させたりできるユーティリティーです。
なかなか便利なソフトですし、64bit版も存在するので、先ほどインストールしようとしたのですが、AVGがスパイウェアであるとして警告を出してきました。
調べてみると、一緒にインストールされるeBayのツールバーが一部アンチウィルスベンダにスパイウェアとして認識されているようです。
しかし、インストーラーではツールバーが一緒にインストールされることを明示していますし、チェックボックスを外してインストールしないこともできるのに、問答無用でUnlockerごとスパイウェア扱いというのは少し乱暴な気がします。
この件については、作者の方のブログにも記述があります。

いちユーザーとしては、スパイウェアの判定が厳格であることは頼もしくもありますが、このUnlockerに関しては誤検出とは言わないまでも、過剰反応であることは間違いありません。
そこで、とりあえず今回はAVGを一時的に無効にし、eBayのツールバー及びアップデートチェックを外してからインストールしました。

私はUnlocker自体には問題はないことをほぼ確信していますが、もし、同じようにアンチウィルスソフトを一時停止してインストールしてみようかという方がいらっしゃったら、自己責任にて行ってください。

それにしても、このような優秀なソフトが(優秀だからこそeBayツールバーの食指が伸びたとも言える)、アンチウィルスベンダの胸先三寸でスパイウェアとしてレッテルを貼られ、葬り去られていくのは残念なことです。

なんたらツールバーをインストールしようとする、うざったいアプリは他にもたくさんあります。まぁこのUnlockerもその一つと言えばその通りですが、スパイウェアとそうでないものとの線引きはどの辺でなされるのでしょうね。

Windows XP Home Editionにはtaskkillがない

自分用メモです。

あるスクリプトで極稀(5万回以上走らせているが初めて遭遇した現象)に(恐らくはインタプリタのバグによって)エラー処理されずにプロセスが残ってしまうことがあったので、予防的に毎回 taskkill するようにしました。

メインマシン(Professional Edition)上ではうまく機能しているように見えましたが、実際に稼働させる予定のサブマシンでは、”ファイルが見つかりません”というエラーになってしまいます。

原因は、Home Edition には taskkill が入ってないことでした。

今まで意識したことありませんでしたが、Home Edition の制約って思わぬところで影響しますね。

[Ruby]readlines のナゾ

IOクラスのメソッドである readlines は、その名の通りストリームを改行文字で区切って読み出し、配列に格納してくれますが、期待した動作と少し違っていたので戸惑ってしまいました。
例えば test.txt が

banana
apple
orange

となっているとします。

fruits = IO.readlines( 'test.txt' )

if fruits.include? 'banana' then
  p 'The monkeys will be delighted.'
else
  p 'Sorry, monkeys.'
end

darwin_ape.jpg配列 fruits に文字列 banana が含まれていると The monkeys will be delighted. とプリントされるはずですが、結果は Sorry, monkeys. となります。

なぜかというと、fruit[0] は’banana’ではなく’banana\n‘だからです。

改行文字を取り除いて配列に格納するには、

fruits = IO.read( "test.txt" ).split("\n")

などとしなければなりません。

ちなみに、Python の readlines() も同じように改行文字を含めるようです。

RubyでFTP

このご時世にスクリプトから平文でFTPというのも暢気すぎという気もしますが、試しにやってみました。

require 'net/ftp'

ftp = Net::FTP.new( host, user, password, nil )

ftp.chdir "/"
Dir['ftp_test/*.txt'].each{|file|
	ftp.put file
}

ftp.quit

ftp_testディレクトリ以下のテキストファイルを全てアップロードしています。
どうやら、mput に相当するメソッドはないようなので、Dir[] で特定のパターンにマッチするファイル名の配列を取得し、イタレータを使って一個ずつ put しています。Ruby は面白い機能がいっぱいありますね~。

注意点としては、ファイアーウォールが設定されている場合、Ruby インタープリタを例外として登録しておかなければならないことです。

なんか、セキュリティ的にいろいろアレなので、実験目的以外ではあまり使わない方がいいかもですね(^^;

ルータのログに"Alarm signal caught – connection timeout"というメッセージが溜まる場合。

自宅でコレガのCG-WLBARGNMという無線ルータを使っているのですが、以前から稀にハングしてしまうことがありました。
そして、ハングするときには決まって

Alarm signal caught - connection timeout

というメッセージがルータのシステムログに大量に記録されていました。

ルータを再起動すると直るものの、再現条件がつかみにくいことから原因究明は難航していた、というか殆ど諦めていました。

ところが、つい最近、対処法を発見しましたので、ここにメモしておきます。

ルータのLAN設定でTCP856をブロックする。

以上です。

↓みたいな感じです。
tcp856.png

856は少なくともwell-knownポートではなく、これに関する記述はWeb上にもあまりないのですが、どうやらStarOSのstarutilというサービスが使うポートのようです。StarOSは無線LANなどの組み込みによく使われています。

他の機種でも、似たようなメッセージ(Alarm signal caught)がログに残っているのであれば、同様の設定で改善すると思われます。

Ruby1.9.1

自分用メモです。

Ruby1.9は1.8までと異なり、ソースがUTF-8N(UTF-8だと不具合あり)であることを期待しているらしい。

とりあえず、RDE の Option -> Debug Command で、
Debug Mode -r -Ku debug2
Normal Mode -Ku
のように、-Kuを加えておくと、実行には問題がない。

ただし、RDEでUTF-8Nで保存するように設定しても、何かの拍子にDefault(即ち、WindowsではSJIS)に戻ってしまうことがある。不可解なり。

この辺が落ち着くまで、1.8に戻すのも一つの策かも知れない。

Charu3用プラグイン3種

Windows用入力支援ソフト、Charu3
作者さんのサイトが404(上でリンクしているのはVectorのミラー)になっているなど、将来性には若干疑問符が付くものの、使い勝手から言えば、今なお最高峰のソフトだと思います。
実は、このソフトのプラグインを自分用にいくつか作って、日々使っているのですが、人様にお見せするほどのものではない、と思っていました。が、もしかしたら誰かのお役に立つこともあるかも知れませんので、公開してみます。

increment.dll

選択文字列の中で、10進数と見なせる部分を1増加させます。例えば”file_001.txt”は、”file_002.txt”となります。数字の部分が複数ある場合は最後の部分だけを増加させます。 (例:”date_20091221_no_30″ → “date_20091221_no_31″)
download: increment.zip (50.9KB)

URLEncode_UTF8.dll

Charu3に最初から付属しているURLEncode.dllのUTF8版です。つまり、選択文字列を一旦UTF8に変換してから、さらにURLエンコードします。
download: URLencode_UTF8.zip (43.7KB)

escapeMetaChara.dll

選択文字列の中の、正規表現のメタ文字をエスケープします。 (例:”C:\files\file[001].dat” → “C:\\files\\file\[001\]\.dat”)
download: escapeMetaChara.zip (56.6KB)

何れのプラグインも、選択文字列を置き換えるタイプです。Charu3を使いこなしている方には釈迦に説法ですが、

<charuMACRO>
$PLUG-IN<.\plugin\escapeMetaChara.dll,$SEL>$PLUG-IN
</charuMACRO>

のようにして使います。
尚、三つともShift_JIS版専用です。残念ながらUnicode版ではお使い頂けません。

Firefox 3.5

Firefox 3.5、詳しいロードマップは把握していませんが、印象からすると意外に早く出ましたね。

早速インストールしてみました。スピード等、特に変化は感じませんが、例によっていくつかの拡張がこのバージョンに対応していない、ということで無効になってしまいました。
安定性を確保するために必要な措置だということは分かりますが、アップグレードのたびにちょこちょこと手を入れなければならないのは、やはり少し面倒ですね。この点、見習うべきは Microsoft の Windows Update ではないかと思います。たまに不具合を起こしながらも、ほとんどユーザーの手を煩わせることなく常に最新の環境が保たれるのはさすがです。

もちろん、OSとブラウザとでは条件が異なるし、Firefoxで面倒なのはサードパーティー製の拡張であって、本体はほぼ自動的に更新されるわけで、一概には言えません。
が、一ユーザーの主観としては、あの拡張はどこだとか、この拡張はいつになったらこのバージョンに対応するんだとか、アップグレードに付随する作業がとにかく煩雑です。
いえ、「主要な拡張の機能を本体に取り込め」と言っているのではないのです。Firefoxが、個々の拡張を自身のバージョンに対応しているかどうかの判断を、もっとインテリジェントに行うようにして欲しいのです。実際、ほとんどの場合、未対応と判断されても、xpiファイルを解凍してソースを数バイト書き換えるだけで動きますからね。ただ、この書き換えも何度もやっていると面倒になってきます。

仕方がないので、拡張のバージョン確認を無効にしています。同じようにされている方も多いのではないでしょうか。

一応、このブログは音楽関連ということで、PCにあまり詳しくない方もご覧になっていると思いますので、上記のFirefoxによる拡張のバージョンチェックを無効にして、未対応の拡張を強制的に有効にする方法を、自分用のメモも兼ねて書いておきます。

about:config で、extensions.checkCompatibility という値(真偽値)を作り(デフォルトではこの値は存在しない)、false にする。

以上です。

Catalyst AGPHotFixのありか

お探しの方も多いと思います、Catalyst AGPHotFixの今現在(1/26/2011)の”在処”はこちらです。
注意が必要なのは、IE以外のブラウザだとUnauthorized Downloadというページに飛ばされてしまって正常にダウンロードできないことです。

2011年2月1日追記
現在は解消されたようです。

それにしても、このAGPHotFix、ダウンロード場所といい名称といい、本当に分かりづらいですね。
事情に詳しくない方に説明致しますと、Catalyst というのは最近AMDに買収されたATI社のグラフィックカードのドライバの名称です。ご存じの通り現在のPCのグラフィックのインターフェースはPCIeが主流となっており、AMDの通常のダウンロードページにはPCIe用しか置いてありません。
さらに分かりにくいのがHotFixという名称です。例えば4Gamer.netの記者さんも勘違いしておられますが、これは”AGP版で起こる不具合を解消する”ものではないのです。AGP版に通常のCatalyst(つまりPCIe版)のドライバを入れることはできず、常にAGPHotFixを入れる必要があるのです。AGPHotFixでなくfor AGPとでもしたほうが適切な気がします。

おそらく、PCIe使用の方が間違ってAGP版をダウンロードしてしまうのを防ぐためにわざと分かりにくくしてあるのでしょうが、本当に分かりにくいですorz.

IEでないとダウンロードできないことといい、この「気のきかなさ」こそが、ATIがその優れたプロダクツにもかかわらずNvidiaに敗れてしまった理由、と言うと言い過ぎでしょうか。