移転しました。
2013年2月〜
http://kanonji.info/blog/

2008年11月〜2013年1月
http://d.hatena.ne.jp/kanonji/

はてなダイアリーに移転してたけど、そっからさらにWordPressでのブログに移転しました。
 
201302061607
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
別窓 | スポンサー広告
----------
contigでexeとdllだけをデフラグする
デフラグツール JkDefragとPower Defragmenter - プログラマのチラシの裏に書いたPower Defragmenterは、コマンドラインのデフラグツールContig v1.54のフロントエンド。
せっかくなのでcontigそのものを使う方法を調べてみた。

contigは特定のファイル・特定のフォルダ・特定のフォルダ内の特定の拡張子を持つファイルといった対象を選んでデフラグが出来る。
その特性を活かした某掲示板で紹介されていた使い方が、exeやだけをデフラグするということ。
毎回フルでデフラグするとその間は作業が出来ないし結構時間が掛かる。
でもexeだけでもデフラグしておけば、断片化によるアプリケーションの起動がもたつくのを防げるはず。

下記を実行すると、Cドライブ内のexeファイルだけをデフラグすることが出来る。
start /lowで実行することでプロセスの優先度を下げ、デフラグ中に他の作業をしやすくする。

start /b /low Contig.exe -s c:\*.exe

ついでにDLLもアプリケーションの起動にかかわるのでデフラグしたい。
下記などをやってみたが、こういった書き方は出来ない様子。

start /b /low Contig.exe -s c:\*.exe c:\*.dll
start /b /low Contig.exe -s c:\*.(exe|dll)

仕方が無いのでバッチファイルを作って下記のようにした。
/waitを入れないと、両方同時に開始してしまう。
contigの同時起動がだめかどうかは分からないが、やはりデフラグなので順番にやったほうがいいと思う。
多分効率もこの方がいいはず。
/waitを使えば、順番に処理してくれる。

start /b /low /wait Contig.exe -s c:\*.exe
start /b /low /wait Contig.exe -s c:\*.dll

このバッチファイルをプログラムのインストール後とか、もしくはスケジュール組んで定期的に実行しておけば、断片化の影響も少なく抑えられそう。

ちなみに/bを使わないと、Contig.exeを呼ぶ数だけDOS窓が開いてしまう。
地味に邪魔なので/bを使って新しくDOS窓を開かないようにする。

startコマンドの詳細は以下を参照。
start:ITpro

ついでにcontigのオプションを簡単に説明。

contig [-v] [-a] [-q] [-s] <ファイル名>
-v:詳細な進行状況を表示する。
-a:断片化の分析だけを行い、デフラグは実行しない。どのくらい断片化があるか確認するために使う。
-q:「quiet」モードで実行する。途中経過を表示せず結果のみ表示するようになる。-vスイッチより優先される。
-s:ディレクトリを指定する際、サブディレクトリも対象にする。ワイルドカードを使って特定の拡張子を持つファイルを指定する場合も必要。

最適化された状態の新しいファイルを作るといった事も出来るみたいだけど、あまり使わなさそうなので省略。
一応以下の様になるらしい。

contig [-v] -n <ファイル名> <ファイル容量>
スポンサーサイト
別窓 | ツール | コメント:0 | トラックバック:0
200704162107
デフラグツール JkDefragとPower Defragmenter
起動するだけで全自動デフラグ可能なフリーソフト「JkDefrag」 - GIGAZINE

Windows標準のデフラグよりも高速に動作するデフラグツール。
使い方もシンプルで、起動したら自動でドライブを検出しドライブレター順にデフラグを実行していく。
デフラグ終了まで実行ファイルをダブルクリックする以外、何もすることは無い。
WindowsのAPIを使っていて信頼性は標準搭載のデフラグと同等とみなせるとの事。
デフラグ途中のいつでも安全に終了することが出来るとある。
多分プロセスをKillしたらだめだろうけど、右上の×ボタンやALT+F4、タスクマネージャ > アプリケーション > タスクの終了など、正常の終了なら問題ないとある。

普通の実行ファイルのほかに色々オプションも備わっているコマンドラインと、スクリーンセーバーとして実行する方法も提供される。
スクリーンセーバーなんかは、ちょっとマウスを触っただけで終了するので、いつでも安全に終了できるというのは間違いなさそう。
通常の実行ではドライブを指定してデフラグをするとかは出来ないが、多分コマンドライン版なら出来るんじゃないだろうか。試してないけど。
コマンドラインはスケジュール組んで自動処理をさせるのに役に立つだろう。

ピンポイントでデフラグできる高機能フリーソフト「Power Defragmenter」 - GIGAZINE

Contig v1.54

製造元がマイクロソフトに買収されたコマンドラインのデフラグツールcontigと、そのGUIフロントエンド。
contigは特定のファイルやフォルダ、特定の拡張子を持つファイルだけをデフラグするといった、高度なデフラグが可能。
ただ、GUIは提供されていないためPower Defragmenterというフロントエンドが役に立つ。
Power Defragmenterでは、特定のファイル、特定のフォルダ、特定のドライブの3つのパターンが実行できる。
特定のファイル、特定のフォルダは、一度に4つまで指定が可能。
さらにPowerMode(TM) Disk Defragmentationという、デフラグを2回実行して高いデフラグ効果を得る2passモードもあるようだ。
また直ぐに断片化は出ちゃうだろうから、そこまでしなくてもいいと思うけど。

JkDefragでざっくりやって、不十分なファイル・フォルダをPower Defragmenterでデフラグするのがいいかな。

そういえば知人がだけどWindows標準のデフラグを実行中に、スタンバイだか休止モードに入ってしまい、そのままシステムが破損してしまうトラブルが合った。
そのときはノートPCのバッテリ不足でスタンバイだか休止モードに移行したからそのせいかもしれないけど、ちょっと怖いので電源オプションをスタンバイにも休止モードにもならないようにしてからじゃないと、デフラグを実行できない。
ちょっと実験してみるというのも出来ないしね。

予断として、そういえばLinuxにはデフラグが無いなとたまに思っていたけど、そこんとこを解説しているエントリがあった。

Geekなぺーじ:Linuxにデフラグが無い理由

Linuxにはデフラグが必要なくてすごいというより、Windowsにはデフラグが必要で余計って感じだ。
別窓 | ツール | コメント:1 | トラックバック:0
200704161826
リムーバルメディアの自動再生をオフにする方法
USBメモリもCD-ROMもあらゆるドライブの自動再生をオフにする方法 - GIGAZINE

GIGAZINEにまとまっているので何も書くことは無いんだけど、自分用のメモとしてあえて1エントリ作成。

CDや外付けHDD、USBフラッシュメモリ等リムーバルメディアを接続したときに毎回中身を読み込んで、エクスプローラで開くとかプレーヤで再生するとかを聞いてくるあれを出なくすることが出来る。
利便性のための機能としてつけたのかもしれないけど、ほぼ毎回キャンセルを押すことになるのでとても邪魔。

ソースはマイクロソフトのサポートオンラインCD-ROMの自動起動をOFFにする方法のようだ。
kbは879671

ファイル名を指定して実行 > gpedit.msc で呼び出せるグループポリシー ウィンドウで設定する。
グループポリシー ってコントロールパネルにあるかと思ったらなかった。
ちなみにこれはWindows XP Professional用でHomeはちょっとめんどくさいらしい。
詳しくは上記GIGAZINEで。

あと、上記GIGAZINEのページへのトラックバックにPowerToys for Windows XPのTweak UIを使うという選択肢も紹介されていた。
PowerToysはマイクロソフト謹製のWindowsを便利にするツールセット。
全部で10個のツールがあって、Tweak UIはそのうちのひとつ。
WindowsXPのインターフェイスの詳細設定が出来るようになるらしく、その設定に上記自動再生のOn/Offもあるそうな。
PowerToysは前から興味はあったけどなんとなくめんどくさくて使うことは無かった。
今回もまぁめんどくさいしいいかな。
日本語化して使うというのにまず抵抗もあるし。
別窓 | PC拡張 | コメント:2 | トラックバック:0
200704161627
Windows用ポータブルwebサーバ Apache Mobile
Blackdot.be :: Run Apache From USB

USBに入れて持ち歩けるApache。
スペックは以下の通り。

Features:

* Management Application
* Apache 2.2.x
o mod_deflate
o mod_ssl
* mod_security
* mod_perl
* PHP 5.1.2
* Perl 5.8

Requirements:

* Windows 2000, Windows XP or Windows 2003
* 256mb USB-key



PHPやPerlが組み込まれている上に、サイトには書いてないがSSLとwebDAVも組み込まれている。
256MBの容量があるUSBフラッシュメモリ等に入れておけば、Windows2000以上のPCがあれば直ぐにwebサーバが立ち上がる。
webアプリのデモやプレゼン、簡易の開発環境として使えそうという紹介をちらほら見かける。

PHPのちょっとしたツールの開発に使ってみたが、自分のWindowsマシンにApache入れてPHP入れてとしなくても良かったので確かに便利だった。
ただ、WindowsのPHPだからなのか、それともApache Mobileという特殊環境だからなのか、PHPの挙動が少しおかしい点があった。

変な挙動1:exec, system, shell_exec等を使う場合のファイルパスのあたり

Windowsサーバでexecコマンドなどを使う場合、シェルはDOSコマンドになる。
DOSコマンドでスペースを含むファイルパスを記述する場合、以下のように「"」で囲む必要がある。

"C:\Document and Settings"

逆に半角スペースを含まないファイルパスの場合「"」で囲っても囲まなくても問題は無い。

"C:\Windows"
C:\Windows

execコマンドで実行したいexeや引数としてファイルパスを渡す場合に半角スペースを含むならば、上記のように「"」で囲まなければならない。

おかしい挙動はここからだが、なぜか「"」で囲む必要が無い場合に囲むとうまくコマンドが実行されないといった動きがある。
具体例を挙げると以下のようになる。

下記からexec($cmd), system($cmd), shell_exec($cmd)などを実行する。

NGな例
$cmd = '"C:\example.exe" -a';
$cmd = 'C:\example.exe -a "D:\folder\example.txt"';
$cmd = 'C:\Program files\example.exe -a';
$cmd = 'C:\example.exe -a D:\My folder\example.txt';

OKな例
$cmd = 'C:\example.exe -a';
$cmd = 'C:\example.exe -a D:\folder\example.txt';
$cmd = '"C:\Program files\example.exe" -a';
$cmd = 'C:\example.exe -a "D:\My folder\example.txt"';

ファイルパスに半角スペースが必ず含まれる・含まれないと分かっている場合は回避できるが、実行毎に変わる場合に非常に困ることになる。

変な挙動2:\3を消すpreg_replace

これもファイルパスだが、文字列としてファイルパスをpreg_replaceしたときに起こった。
例えば以下のような文字列を置換対象(subject)としてpreg_replaceすると、\3が消えてしまう。
もちろん、\3の部分は置換とは無関係でも。

"c:\example\3test.jpg"

具体例で説明すると以下のようになる。

$pattern = '/\.jpg/';
$replacement = '.gif';
$sucject = 'c:\example\3test.jpg';
$result = preg_relace($pattern, $replacement, $sucject);
echo $sucject;
echo $result;

"c:\example\3test.jpg"
"c:\exampletest.gif"


とりあえずは上記2つの挙動を除けば、一応普通に使えている。
上記2つの挙動がApache Mobile固有なのか、Windows上のApache+PHPだからなのかは、あまり検証していないので分からない。
別窓 | 開発環境 | コメント:0 | トラックバック:0
200704140851
好きなフォルダを仮想ドライブとして設定する方法「SUBSTコマンド」
Windowsコマンド集:(subst)

SUBSTコマンドを使うと、好きなフォルダに好きなドライブレターを割り当てることが出来る。
例えば以下のように設定すると、マイコンピュータに「P」ドライブが新しく作られる。
DOSコマンドなので、コマンドプロンプトから設定する。

SUBST P: "C:\Program Files"

PドライブはProgram Filesなので、以下のようにファイルパスを短縮して使えるので、もっとパスが長くなる場所にドライブレターを付ければ便利。

C:\Program Files\tool\tool.exe
P:\tool\tool.exe

マイドキュメントやデスクトップなどC:\Documents and Settings配下にあるフォルダに設定する場合は一工夫必要。
C:\Documents and Settingsの配下にはWindowsログインユーザ毎にフォルダが作られている。
1人で使っているPCの場合は、自分のユーザ名を決めうちで書いても良いが、環境変数を使うことも出来る。
例えばマイドキュメントの場合は以下のように%username%を使うことで、そのときのユーザのマイドキュメントへのパスを入力可能。

SUBST M: "C:\Documents and Settings\%username%\My Documents"

ちなみに、SUBSTコマンドによる設定は、一度Windowsをシャットダウンすると消えてしまう。
いつも設定しておきたい場合は、SUBSTコマンドを実行するバッチファイルを作って、スタートアップに登録が必要。
別窓 | 未分類 | コメント:0 | トラックバック:0
200704140816
| プログラマのチラシの裏 |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。