Oct 032008
 

SysinternalsのSDeleteというツールを使うと、ファイルシステムの空き領域をクリアすることができます(-zオプション)。

Usage: sdelete [-p passes] [-s] [-q] 
sdelete [-p passes] [-z|-c] [drive letter]
-c	Zero free space (good for virtual disk optimization).
-p passes	Specifies number of overwrite passes.
-s	Recurse subdirectories.
-q	Don't print errors (quiet).
-z	Cleanse free space.

Download SDelete (47 KB)

Linuxでも似たようなものがないかと思ってたら、Debian sidにはzerofreeというパッケージがありました(Ubuntuにもあるようです)。
Debian — sid の zerofree パッケージに関する詳細

ext3-usersというメーリングリストでも話題に上がってるようなのですが、もともと配布元はどちらなのでしょう?
ext3 zerofree option and RedHat back port?

ZoneIdとかNTFS Streamとか

 article  Comments Off on ZoneIdとかNTFS Streamとか
Sep 212008
 

ダウンロードしたファイルの「ブロックの解除」で出てくる情報はどこに記録されてるんだっけか、といつも忘れるのでメモ。

XP SP2以降でダウンロードしたファイルにはZoneIdという仕組みを使って情報が付与される。
@IT:Windows TIPS — Knowledge:XP SP2のZoneIdとは?
ちなみにFirefoxでダウンロードしても同じ情報は付与される。

このときの情報はNTFSのAlternate Streamを使って記録されており、ダウンロードしたファイル本体には記録されないので、ブロックの解除をおこなってもファイルサイズとかチェックサムは変わらない。

NTFSのStreamに関してはこちらの説明が一番わかりやすいかも。
8-3. NTFS のセキュリティ機能と落とし穴

Sysinternalsで配布しているStreamsを使うとコマンドラインで読み取ったり削除することができる。

2000とXPでは縮小表示の仕組みにNTFS Streamを使うかThumbs.dbを使うか、といった違いもあるらしい。
縮小表示を行うと NTFS で暗号化されたファイルが表示される

CATALINA_BASEを分けてTomcatを複数サービス化

 article  Comments Off on CATALINA_BASEを分けてTomcatを複数サービス化
Sep 202008
 

Tomcatのバイナリ1個で、複数のインスタンスをサービス登録してみました。
インスタンス別にCATALINA_BASE配下ディレクトリ(conf,logs,temp,webapps,work)を分けて、Tomcatが使うポート番号も変えてあげれば、バイナリは共通のまま複数インスタンス化することができます。

設定項目 デフォルト インスタンス1 インスタンス2
サービス名 Tomcat6 Tomcat6Instance1 Tomcat6Instance2
JAVA_HOME C:\Program Files\Java\jdk1.6.0_07
CATALINA_HOME C:\apache\tomcat-6.0.18
CATALINA_BASE C:\apache\tomcat-6.0.18 C:\apache\tomcat-instance1 C:\apache\tomcat-instance2
Server Componentの
port番号
8005 18005 28005
HTTP Connectorの
port番号
8080 18080 28080
AJP Connectorの
port番号
8009 18009 28009

まずは以下の手順で各種ディレクトリと設定ファイルを準備。

  • apache-tomcat-6.0.18.zipを入手し、C:\apache\tomcat-6.0.18に展開
  • C:\apache\tomcat-instance1を作成し、C:\apache\tomcat-6.0.18からconf,logs,temp,webapps,workディレクトリをコピー
  • C:\apache\tomcat-instance1\conf\server.xmlのポート番号を変更
  • C:\apache\tomcat-instance2も同様に作成

デイレクトリと設定ファイルが準備できたら、service.batコマンドで登録。

C:\apache\tomcat-6.0.18\bin>set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_07"
C:\apache\tomcat-6.0.18\bin>set CATALINA_BASE=C:\apache\tomcat-instance1
C:\apache\tomcat-6.0.18\bin>service.bat install Tomcat6Instance1
Installing the service 'Tomcat6Instance1' ...
Using CATALINA_HOME:    C:\apache\tomcat-6.0.18
Using CATALINA_BASE:    C:\apache\tomcat-instance1
Using JAVA_HOME:        "C:\Program Files\Java\jdk1.6.0_07"
Using JVM:              auto
The service 'Tomcat6Instance1' has been installed.

CATALINA_BASE環境変数を変えて、2個めのインスタンスも同様に登録します。

C:\apache\tomcat-6.0.18\bin>set CATALINA_BASE=C:\apache\tomcat-instance2
C:\apache\tomcat-6.0.18\bin>service.bat install Tomcat6Instance2
Installing the service 'Tomcat6Instance2' ...
Using CATALINA_HOME:    C:\apache\tomcat-6.0.18
Using CATALINA_BASE:    C:\apache\tomcat-Instance2
Using JAVA_HOME:        "C:\Program Files\Java\jdk1.6.0_07"
Using JVM:              auto
The service 'Tomcat6Instance2' has been installed.

今回は簡単に済ませるためにservice.batコマンドを使いましたが、tomcat6w.exeを使うともっと細かいパラメータを指定して登録することができます。登録したサービスの設定変更をおこなうことも可能です。
詳しくはApache Tomcat 6.0 – Windows service HOW-TOをご覧ください。

Aug 082008
 

Windows XP用レジストリエントリの覚書。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\CmdHere]
@="CMD &Prompt Here"

[HKEY_CLASSES_ROOT\Directory\shell\CmdHere\command]
@="C:\\WINDOWS\\system32\\cmd.exe /k cd \"%1\""

[HKEY_CLASSES_ROOT\Directory\shell\ExplorerHere]
@="Explorer from Here"

[HKEY_CLASSES_ROOT\Directory\shell\ExplorerHere\command]
@="C:\\WINDOWS\\explorer.exe /e,/root,\"%1\""
Jul 292008
 

WindowsでVimを使うときのIME制御に関するオプション。

imactivatekey … Input Method(canna,tamago,xatok,etc…)を有効にするキー操作
imcmdline … コマンドラインで、日本語入力モードにする
imdisable … 日本語入力を使わない
iminsert … 入力モードで自動的に日本語入力を使う
imsearch … 検索で自動的に日本語入力を使う

私は_vimrcに以下を設定しています。

set iminsert=0
set imsearch=0

Vimのオプションリストの説明はこちらのサイトが便利です。
OptionList – VimWiki

Jul 242008
 

Explorerでマイ ピクチャやマイ ミュージックが本当のフォルダ名のまま表示されるようになってしまいました。
フォルダのアイコンも標準のものになってしまっています。

こちら調べますと、フォルダの中にあるDesktop.iniがなくなってしまったことが原因だったようです。
以下のコマンドを実行することで復元することができました。

C:\Documents and Settings\user>rundll32 mydocs.dll,PerUserInit

Desktop.iniが作成され、元どおりにカタカナで表示されるようになりました。フォルダのアイコンもそれぞれの標準?で表示されるようになります。

参考:

Apr 062008
 

PPPアダプタに割り当てられたIPアドレスを調べてルーティング設定するためのスクリプト。

' ルーティングテーブル追加

Set WshShell = CreateObject("WScript.Shell")

Set NetworkAdapters = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
	("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Description = 'WAN (PPP/SLIP) Interface'")

For Each Adapter In NetworkAdapters
	IPAddress = Adapter.IPAddress
	If IsArray(IPAddress) Then
		WshShell.Run "route add 10.0.10.0 mask 255.00.0.0 " & IPAddress(LBound(IPAddress)) & " metric 1", 0, Ture
		WshShell.Run "route add 172.16.10.0 mask 255.240.0.0 " & IPAddress(LBound(IPAddress)) & " metric 1", 0, Ture
		WshShell.Run "route add 192.168.0.0 mask 255.255.0.0 " & IPAddress(LBound(IPAddress)) & " metric 1", 0, Ture
	End If
Next
Nov 052007
 

MovableType 3で「エントリーの書き出し」をやろうと思ったら、FirefoxやOperaはOKだがInternet ExplorerはNG、という問題に遭遇。
どうもSSL+IEでのみ発生する問題らしい。
Internet Explorer が SSL 経由によるファイルのダウンロードで “No-Cache” ヘッダーを処理できない
こちらに掲載されているレジストリ変更をおこなったところ、IE7はOKになったがIE6は直らなかった 😕
(HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"BypassSSLNoCacheCheck"=Dword:00000001を追加)

一般ユーザにレジストリ変更してもらうのは大変なのでサーバサイドで対処したほうがよさそうだが、その場合はHTTPヘッダとして

Cache-Control: public
Pragma: public

を返すようにすればよい模様。

この問題、以下のKBに一通りまとまっていた。
Prevent caching when you download active documents over SSL
自動翻訳されたものはこちら
SSL でアクティブ ドキュメントをダウンロードすると、キャッシュを禁止します。

Nov 012007
 

すみませんが試せていないので、本当にできるのか問題ないのかわかりません。

IIS 6.0でユーザー分離モードを使うと、ユーザー別に異なるFTPホームを割り当てることができます。
このユーザー分離モードはFTPサイトを作成する際のウィザードに答える格好で構成するのが一般的ですが、これだと「既定の FTP サイト」のままでは使うことができません(Active Directoryを使うユーザ分離モードはiisftp.vbsスクリプトを使って後からでも構成できます)。
また新しく作成するサイトには”Metabase Path”というランダムな値が振られ、ログファイルディレクトリなどに使われるので、構成管理上ちょっと気持ちが悪いです。

この「ユーザー分離モード」という状態は、メタベースという情報に記録されているので、こちらを設定すれば規定のFTPサイトでもユーザー分離モードに変更することができそうです。
UserIsolationMode メタベース プロパティ (IIS 6.0)

C:\WINDOWS\System32\inetsrv\MetaBase.xmlには「既定の FTP サイト」というServerCommentの設定が含まれているので、そちらにUserIsolationMode="1"を追加してあげればいいはず。

<IIsFtpServer	Location ="/LM/MSFTPSVC/1"
		ServerAutoStart="TRUE"
		ServerBindings=":21:"
		ServerComment="既定の FTP サイト"
		ServerSize="1"
                UserIsolationMode="1"
	>

IIS 6.0からメタベースがバイナリ形式からXML形式に変わってので楽になりました。

なおメタベース編集をIIS稼働中におこなう場合は、IIS管理マネージャのプロパティで「メタベースの直接編集を有効にする」をチェックする必要があると思われます。

IE7をIE6風の見た目で起動?

 article  Comments Off on IE7をIE6風の見た目で起動?
Jan 102007
 

Internet Explorer 7を入れてみました。
ふと起動用のショートカットを作ろうと実行ファイルを探していたらC:\WINDOWS\ie7\iexplore.exeというファイルを発見。
これだろうと思って起動したら、なんと見た目がIE6風。タブもありません。
そういえば実行ファイルのアイコンもIE6風だったんですよね…

でもIE7 Standaloneを入れてIE6と共存させた覚えはありません。
落ち着いてバージョン情報を確認してみると、ちゃんとIE7と表示されます。

IE6風IE7

おぉ。もしかしたら慣れ親しんだ見た目でIE7を使えるのか? と喜んでいたら、アドレスバーにURLを入力して移動したらIE7のウィンドウが別に立ち上がってきました orz
しかも不安定、というか落ちます 🙁

素直にC:\Program Files\Internet Explorer\iexplore.exeを使いましょう…

■2007-01-11追記
IE6風に起動→URL入力→IE7起動→エラーになると、以下のようなイベントログが記録されます。

ハングしているアプリケーション iexplore.exe、バージョン 6.0.2900.2180、ハング モジュール hungapp、バージョン 0.0.0.0、ハング アドレス 0x00000000.


エラー発生アプリケーション iexplore.exe、バージョン 7.0.5730.11、エラー発生モジュール unknown、バージョン 0.0.0.0、エラー発生アドレス 0x00000000

IE6のコンポーネントも何かしら残ってるんですかね 😕

また、URL入力では「規定のWebブラウザ」が起動するようで、必ずしもIE7ってわけではないようです。