My Daily Programming Life...

Asus P5Q-Eが異常に遅い

Asus P5Q-Eを使ってPCを組み立てた。
とりあえず問題なく動いたのだけれど、とにかく起動が長い。
使っているOSはWindows XP。
以前より早いCPU、早いHDDなのに遅い。

最初に思いついた原因はドライバのロード時間。前とは構成が全然違うからWindowsがドライバを読み込む時間が長くなっている可能性がある。
しかし、それにしても長い。

いろいろ調べてみると海外サイトとかでも同じようなことが話題になっていて、どうやらIDEデバイスが問題らしい。
とりあえずBIOSにIDE Detectのタイムアウトみたいな設定が35秒とかなっていたのでこれを5秒に変更。
起動してみた。あんまり変わらず・・・。
今度は、Onboardデバイスの設定でIDEをDisableに。
起動してみた。早い!
なんなんだこの違いは。なんだかよくわからん。つないでいるのはDVD-Rドライブ。これに時間がかかるのか・・・。
短くなったのはWindowsのロゴが表示されている時間。これはこれで劇的に短くなった(ただし、DVD-Rドライブは使えず。SATAドライブを購入しろということらしい)
もう一つ遅いと感じているのはその後の「Windowsを起動しています」というダイアログボックスの表示されている時間。ここではスタートアップのドライバやサービスが起動されているはず。ここら辺はソフトウェアの設定でもう少し何とかなるだろうか。不必要サービスはほとんど切ったけど、ドライバもちゃんと調べる必要があるかな。

Documents and Settingsの位置を変える方法

データの保存用に別ディスクを使っている人は多いと思う。
僕はRAIDでミラーリングしているディスクをデータ保存用に使っていて、それをD:ドライブに割り当てて使っていた。
Dの中にフォルダを作ってそこをMy Documentにする。通常のC:\Documents And Settings\UserName\My Documentsからそちらにマイドキュメントフォルダを移動するのは簡単で、マイドキュメントフォルダのプロパティを開いて、移動ボタンで移動先を指定すればいい。

でも、これだとUserName下のApplication DataとかLocal SettingsとかがいまだにC:\に残ってしまう。LinuxでいうホームフォルダがこのUserName下になるわけだけど、できればここから下をD:\に持って行きたい。そうすれば、システムを入れ替えた後でも簡単に自分のデータや環境を移行できる。

というわけで調べてみると
レジストリでHKLM\Software\Microsoft\WindowsNT\CurrentVersion\ProfileListのなかに各ユーザーのホームディレクトリの位置が書いてあるらしく、それを変えればいいらしい。
ただし簡単には移動できない。(ここで紹介する方法は何の保証もしないので、自己責任でやってください。)

ProfileListの中の数字の羅列のキーを一つずつ調べていき自分のユーザー名のものを見つける。(各キーの中の値のProfileImagePathが自分のものになっているものを見つければいい。)これを自分の好きなディレクトリに変える。たとえばD:\homeにする。
このままだともとのデータがなくなってしまうので、もとのC:\Documents And Settings\Usernameの中身をすべてD:\homeにコピーする。・・・がファイルのいくつかはロックされていてコピーできない。
というわけで、セーフモード(コマンドライン)で起動しなして、Administratorでログインする。その状態で"xcopy /S /E /H "を使ってファイルをすべてコピーする。そして再起動する。

これで新しい環境に移行できているはず。もともとC:\Documents And Settings\UserName内に保存されていた環境はそのまま移行しているはず。

PHPのリモートデバッグ(ZendDebugger)

まだ環境構築途中だけど、メモ。
環境は
CentOS5 + PHP5.1 + Apache/2.2.3

とりあえずPHPをApacheモジュールとして動かすところまではできるという前提で。

必要なのはPHPのZendDebuggerモジュール
http://downloads.zend.com/pdt/
のserver-debuggerのなかから自分の環境のものを持ってくる。

んで解凍してその中から、PHPバージョンにあったものを取り出す。
それをPHPの拡張モジュールディレクトリにコピー。
僕の場合は/usr/lib/php/modules/ZendDebugger.so
とコピーした。

次にphp.iniの書き換え
[Zend]
zend_extension=/usr/lib/php/modules/ZendDebugger.so
zend_debugger.allow_hosts=192.168.110.1
zend_debugger.expose_remotely=always
のようにした。

注意:僕の環境では allow_hostsには"all"とか"*"とか指定できなかった。コンマ区切りでIPアドレス指定らしいけど、とりあえずひとつしか指定できなかった。

あとはApacheを再起動。phpinfo()を見ればデバッガーのロゴが出ているはず・・・。

その他の環境の設定は
http://www.thierryb.net/pdtwiki/index.php?title=Using_PDT_:_Installation_:_Installing_the_Zend_Debugger

これからEclipseでデバッグをしてみるところ。
それは後ほど

Adminはすべて許可される

http://japan.zdnet.com/sp/feature/07microsoft/story/0,3800083079,20387740,00.htm?ref=rss

Windows7のセキュリティが問題だとか、UACの機能がどうたらこうたら、そんな話。

詳しくどこが問題なのか調べていないけど、僕はどちらかというとMicrosoft側を支持するかもしれない。
現在のWindowsの利用上、セキュリティや使い勝手を悪くしているのはOSではなくて、その上で動いているアプリケーションだと思う。これらを作っている人たちがルールを守らない、または守れない状況にあるのが問題だと思う。
一言で言えば、「管理者権限下でないと正常に動作しない通常アプリケーション」が問題。Windowsはきちんとした処理を加えれば、通常ユーザー権限下で十分な機能を提供できるAPIを用意しているはずだと思う。
問題は、管理者権限でWindowsを使っている人が多すぎる、というか使わざるを得ない状況だと思う。
この状況で、さらにマルウェアからPCを守ろうとしてUACなんてものがでてきて、あのやたらと面倒なポップアップが表示されるようになったのだと思う。

ただ、確かに通常ユーザー下で動作するアプリケーションを開発するのがちょっと面倒というのはある。僕もプログラムを書いていて、管理者権限でデバッグして、通常ユーザーで動かすと、動かないことがよくある。まあ、Windows APIのセキュリティに関するパラメータが結構面倒だったり、権限管理が面倒だったりするため、時間との問題でどうしてもそうなる。

やっぱりこの辺をうまく変えないと、この問題は解決しないんじゃないだろうか。

Unixとかはrootで動かすことは特別なことという認識が強くあるので、この辺の問題はプログラマの共通意識のなかである程度解決されているのだと思う。まあ、だからUnixプログラミングはちょっと面倒だったりするわけだけど。
だから、WindowsもUnix同様、Adminはデフォルトすべて許可されるでいいんじゃないだろうかと思う。

Windowsがあまりにも一般化して、よくわかっていないプログラマでもアプリケーションが作れる状況になっているのは、よい面も悪い面もあるように思う。

おすすめソフト

エクスプローラで右クリックメニューを簡単に改造できるソフト。
http://www.lopesoft.com/en/
かなり便利です。
自分でレジストリとかいじらなきゃいけなかったり、もしかしたらシェルエクステンションとか自分で書かないといけないようなことが簡単にできます。

僕はただ右クリックメニューにそのディレクトリでコマンドラインを開くというメニューが欲しかっただけなのでしたが、いろいろ使えそうです。

一緒のところにある、LopeEditは使いやすいんだろうか。

Fedora9の日本語入力

Anthyっていう変換サーバーを使いたいと思ったのだけれど、うまくいかずしばらくほったらかしにして再度チャレンジ。
そもそものLinuxの日本語入力の仕組みとか、調べていたんだけれど
yum groupinstall japanese-support
って一発やれば「システム」→「設定」→「ユーザー向け」→「入力メソッド」から設定できるようになりました。これでいいらしいです。理由は知りません。
feedSubscribe to my feed