2007/05/15(火) Replaceの正規表現

backup_mixiでダウンロードしたmixiのファイルをNamazuで検索する場合、IEからだと、他のドライブにジャンプすることはできないので、直接mixiへジャンプするようにnamazurcのReplaceを以下のように設定した。

Replace  (/[A-Za-z]\|.*/)(diary)/(.*)(.html)  http://mixi.jp/view_diary.pl?id=\3&owner_id=自分のmixiID
Replace  (/[A-Za-z]\|.*/)(.*)/(.*)(.html)  http://mixi.jp/view_message.pl?id=\3&box=\2

日本語プログラミング言語なでしこで検索ツールを作っているのだが、なでしこの場合、Namazuが出力したHTMLファイルを上と同じように書き換えるには以下のようにする必要があった。

「(/[A-Za-z]\|.*/)(diary)/(.*)(.html)」を「http://mixi.jp/view_diary.pl?id=$3&owner_id=自分のmixiID」に正規表現置換
「(<.*")(http.*=)(.*)(&owner_id=自分のmixiID)(</a>)」を「$1$2$3$4">$2$3$4$5」に正規表現置換
「(/[A-Za-z]\|.*/)(inbox)/(.*)(.html)」を「http://mixi.jp/view_message.pl?id=$3&box=$2」に正規表現置換
「(<.*")(http.*id=)(.*=inbox)(</a>)」を「$1$2$3">$2$3$4」に正規表現置換
「(/[A-Za-z]\|.*/)(savebox)/(.*)(.html)」を「http://mixi.jp/view_message.pl?id=$3&box=$2」に正規表現置換
「(<.*")(http.*id=)(.*=savebox)(</a>)」を「$1$2$3">$2$3$4」に正規表現置換
「(/[A-Za-z]\|.*/)(outbox)/(.*)(.html)」を「http://mixi.jp/view_message.pl?id=$3&box=$2」に正規表現置換
「(<.*")(http.*id=)(.*=outbox)(</a>)」を「$1$2$3">$2$3$4」に正規表現置換
「(/[A-Za-z]\|.*/)(thrash/)/(.*)(.html)」を「http://mixi.jp/view_message.pl?id=$3&box=$2」に正規表現置換
「(<.*")(http.*id=)(.*=thrash)(</a>)」を「$1$2$3">$2$3$4」に正規表現置換

ローカルのパスを置換するのと、HTMLファイルの中を置換する違いがある。なでしこが長くなるのは最初の変換でリンク部分(Aタグ)の変換がうまくできないため。最長マッチになるので、変換すべきでないところまで変換してしまうのだ。うまく書けば、そうならないのかもしれないが、どう考えてもnamazurcで設定した方がすっきりしているので、こちらを採用。

2007/05/08(火) 320GB内蔵ハードディスク

 取り付けた。フォーマットに1時間半ほどかかった。添付のソフトを使えば良かったか。で、壊れる寸前の250GBHDDからファイルを移動。HD Tuneを起動してみたら、温度が74度。もうこれはホントに壊れる寸前だな。急いでガワを開けたら、71度に下がった。何とか助ける方法はないかと、物理フォーマットを実行中。

 HDDAnalyszerというソフトでチェックしてみると、「不明な属性」というのがある。ファイルシステムのエラーならば、フォーマットすることで助かるかもしれない、と淡い期待を持っている。まあ、無理だろうなあ。

2007/05/03(木) コマンドプロンプトを非表示で起動

 バッチファイルをダブルクリックすると、Dos画面が表示される。それを止めたくて、いろいろやってみたが、ダメだった。検索したらVectorにそのスクリプトを公開している人がいた。HiddenCMD.JSというスクリプト。これ、便利だなあ。作者の吉岡照雄さんはこのほかにも多くのスクリプトを公開していて、マイクロソフトのMVPアワードを受賞している。佐賀市在住の人らしい。

 このスクリプトはWSHを使っている。以前、少し勉強したことがあったが、中断したまま。なかなか良い参考書がないのが残念。と思っていたが、amazonを検索したら「WSHクイックリファレンス 第2版」という本が昨年10月に出ていたので注文。

2007/04/30(月) UAC

 VISTAのユーザーアカウント制御(UAC)には戸惑うことが多い。UNIX系OSのようなアカウント制御を導入しただけなのだが、面倒なのは管理者権限を持つユーザーであってもログオンすると標準ユーザーの権限しか与えられていないという部分。Linuxならrootになれば、何でもできてしまう。VISTAの場合はシステムの改変にかかわる部分を変更しようとすると、いちいち確認ダイアログが出る。

 それだけならいいのだが、プログラムをインストールしているProgram Filesフォルダはシステムフォルダとされており、この中のファイルの改変ができない。これによって不具合の出るソフトウェアはけっこうあるだろう。自作の秀丸マクロがうまく動かなかったのもこのためだが、このフォルダの中にはインストーラーを使わないソフトウェアを手動では入れない方がいいということがようやく分かった。

 HTML編集ソフトのez-htmlの場合もそうだった。このプログラム、iniファイルで設定を保存する形式。これがProgram Filesの中にあると、エラーが出る場合がある。HTMLLINTを設定して文法チェックを行ったら、「ファイルアクセスが拒否されました」とエラー。perlスクリプトの構文検証でも同じ。何のファイルへのアクセスが拒否されたのかこれだけでは分からないので悩んだが、ユーザーディレクトリにインストール場所を変えたらうまくいった。

 分かりにくくなっているのはProgram Filesフォルダの中を書き換えたかのように見せかけて、実はユーザーディレクトリの中のC:\Users\hiro\AppData\Local\VirtualStore\Program Filesの中を書き換えていること。なんか、非常に回りくどく複雑なことをやっている感じがつきまとう。いったん、こういう仕組みを分かってしまえば、何とでもなるんですがね。

Namazu簡易検索クライアントbyなでしこ

秀丸マクロやSearch-Sを使っていたが、自分で作りたくなったので作った。ファイルメニューもない、ごくごく簡単なもの。検索して結果を標準ブラウザに表示するだけ。自分でローカルのファイルを検索するだけなら、これでも使えるか。DOS窓が一瞬開くのを何とかしたいところ。

Namazu簡易検索クライアント

ソースはこんな感じ。なでしこには久しぶりにさわった。

#Namazu簡易検索クライアント
インデックスは「C:\namazu\var\namazu\index」
resultは「{母艦のパス}result.html」
母艦の幅は500
その高さは150
ウィンドウ背景色で画面クリア
母艦のタイトルは「Namazu簡易検索クライアント」
50,20へ移動
「検索キーワードを入力してください」と表示。
50、50へ移動。
検索エディタとはエディタ。
その幅は300。
そのIMEは「IMEオン」
検索エディタに注目
検索エディタのキー押した時は~
 もし、検索エディタの押された仮想キー=13ならば
  検索ボタンのクリックした時。
360、48へ移動。
検索ボタンとはボタン。
そのクリックした時は~
 検索結果
待機。
 
*検索結果
 もし、検索エディタのテキストが「」ならば、
  「検索キーワードを入力してください」と言う。
 違えば、
  検索キーワードは検索エディタのテキスト
  namazu検索は「namazu -a -h -o {result} {検索キーワード} {インデックス} 」
  namazu検索を起動。
  0.5秒待つ。
  resultを起動。
 戻る。

ただし、これ、標準ブラウザがIEの場合は検索結果からファイルにジャンプできない。FirefoxならOKだった。

2007/04/28(土)HD Tune

外付けハードディスクが新しいノートパソコンに変えても遅いのでHD Tuneでベンチマークを取ってみた。

HD Tune: LOGITEC LHD-EDU2 Benchmark
Transfer Rate Minimum : 15.6 MB/sec
Transfer Rate Maximum : 16.4 MB/sec
Transfer Rate Average : 16.1 MB/sec
Access Time           : 14.5 ms
Burst Rate            : 16.3 MB/sec
CPU Usage             : 15.8%

確かに遅い。これだとUSB2.0の意味はない。これがロジテック固有の問題なのかどうかは分からないが、デスクトップの方はこんなに遅くはない。PCの性能にも左右されるのかもしれない。というわけで、内臓HDDもベンチ。

HD Tune: FUJITSU MHW2120BH Benchmark
Transfer Rate Minimum : 13.4 MB/sec
Transfer Rate Maximum : 41.5 MB/sec
Transfer Rate Average : 31.1 MB/sec
Access Time           : 18.5 ms
Burst Rate            : 75.9 MB/sec
CPU Usage             : 6.8%

こちらも決して速くはないなあ。ノートパソコンの性能なんてこんなものか。試しに5年前に買ったノートパソコンのベンチ結果は次の通り。

HD Tune: HITACHI_DK23DA-40 Benchmark
Transfer Rate Minimum : 6.5 MB/sec
Transfer Rate Maximum : 23.8 MB/sec
Transfer Rate Average : 18.6 MB/sec
Access Time           : 20.3 ms
Burst Rate            : 40.0 MB/sec
CPU Usage             : 3.8%

ま、これに比べれば、新しいパソコンの方が速い。当たり前か

Vista用のFTPマクロ

自作のFTP用秀丸マクロがVistaでは動かない。c:\program files\hidemaru内にFTP用の設定ファイルを書き込む段階でエラー。つまりVistaで強化されたセキュリティのためにこのフォルダ内には書き込めないのだ。しばらく悩み、コマンドプロンプトの起動ディレクトリ(C:\USERS\ユーザー名)に設定ファイルを書き込むようにしたら、うまくいった。

セキュリティが厳しくなると、マクロを書く場合にもいろんなところに気をつけないといけないなあ。

//ftp.mac ver.0.4(Windows VISTA用)
  
//接続するサーバー
$server = "foo.bar.ne.jp";
//アップロードするファイルのあるドライブ
$drive = "c:\\homepage";
//ユーザー名
$user="hoge";
//パスワード
$passwd="password";
//アップロードするサーバーのパス
$ftpdir ="/home/hoge/public_html/";
//Vistaにログオンしているユーザー名
$winuser = "hoge";
 
//------------設定終了-------------------
save;
$putfile = directory2 + "/" + basename2;
$upfile = basename2;
$ftpdir2=$ftpdir + directory2;
$file = "ftp.txt";
openfile "";
insert "user" + " " + $user + " " + $passwd ;
insert "\n";
insert "cd" + " " + $ftpdir2;
insert "\n";
insert "put" + " " + $putfile;
insert "\n";
insert "bye";
up;
replaceup $drive, "";
replaceallfast "\\", "/";
saveas "c:\\users\\" + $winuser + "\\" + $file;
up;
searchup ":";
if(result==yes){message "このファイルはアップロードできません。
\n指定フォルダ以外のファイルです。";}
else{
question " $upfile + "をアップロードしますか?";
	if(result == yes){
	runsync "ftp -n -s:ftp.txt" + " "+ $server;
		if (!result){message "FTPに失敗しました\n設定を確認してください。";}
	else{message $upfile + "をアップロードしました。";
	exit;}
}else{endmacro;}
}
exit;