SSブログ

Windows 7 (RC版)でユーザプロファイルをCドライブ以外に置きたい [Windows]

ユーザプロファイル(マイドキュメント・ブックマークなどの各ユーザ所有のファイルや設定)のデフォルトの位置は、Windows2000やXPはC:\Documents and Settings以下、VistaやWindows 7はC:\ユーザ(C:\Users)以下となっている。

しかしながら、システムがインストールされるCドライブにユーザプロファイルがあることで以下のような問題が起きうる。
・システムドライブの容量の圧迫
・システムとデータが同時アクセスされることでの体感パフォーマンス低下やディスク断片化、寿命への影響
・システムのリストア(再インストール)時の退避作業の煩雑さ

これを嫌って、Cドライブ以外にユーザプロファイルを置くようにする人も少なくない。
かくいう私もその一人でして、XPでの方法は様々なサイトで取り扱われていて情報も豊富。
ところが、VistaやWindows 7についてはまだまだ情報も不足気味かなという感じ。

以下、いろいろと調査や試行したものについて簡単にまとめた。

続きを読む


タグ:Windows7 Windows

Subversionリポジトリ引越しでエラー [Tips]

認証関係を別のスキームで扱えるのもSubversionの便利なところ。
Subversionのリポジトリはディレクトリ毎コピーすれば別のサーバでもそのまま使えるようになる。

…はずなんだけど、Internal Server Error発生。
Webサーバのログを見ると

引越し先のSubversionが古い場合などに起きるようだ。
この場合、一度dumpして新環境でloadすれば移行することができる。

いちいちバージョン気にするくらいなら、dump→loadしてしまったほうが楽だね。
タグ:Subversion

CVSからSubversionへの移行 [Tips]

かなりありふれたトピックですが。


とあるCVSが動いてる機器が無くなるらしく、いい機会なので現在運用中のSubversionへ移行することに。

CVSリポジトリをSubversionへ移行させるにはcvs2svnを使ってリポジトリの変換を行ってやればよい。
変換対象のCVSサーバには大量のリポジトリがあるので、CVSリポジトリ1つにつきSVNリポジトリ1つにすることにした。
移行先はLinux+Apacheという環境。

リポジトリのディレクトリをそのままCVSサーバからSubversionサーバへコピー。
cvs2svnにパスを通して実行。
元のCVSのコメントはシフトJISで書かれていたのでこんな書式。
cvs2svn --encoding=Shift_JIS --fallback-encoding=Shift_JIS -v -s [SVNリポジトリのパス] [コピーしたCVSリポジトリのパス]
※[SVNリポジトリのパス]は新規に作成されるため、存在するディレクトリ名はNG

変換元のリポジトリの規模とマシンスペックによるけど結構かかる。

変換されたリポジトリをSVNParentPathの下に置いてやって、ファイルの所有者を他と同じものにしてやればこれで完了。
・・・と思ったらCVSROOTが入っちゃってた。
別に入ってても支障はないけど、激しく邪魔なのでやりなおし。
オプション指定とかで除外できそうな気もするけど、よくわからなかったのでCVSROOTディレクトリを削除してもう一度変換。
これでOKっぽい。

タグ:CVS SVN Subversion

Googleウェブマスターツール認証の「システムに一時的な問題」 [Web]

Googleのクローラやインデックスの状況確認や設定を行うためのGoogleウェブマスターツールがある。(Yahooではサイトエクスプローラーがこれに相当する)

このツールでクローリングの設定を行うためには、まず自分がサイト管理者であるということを証明(認証)しなければならない。
認証方法は、ツールが指定してくるURLに対してアクセス可能にすること。
要求どおりファイルを置けるということは管理者なんだろう、という判断だ。

たとえば、http://www.example.com/ というサイトに関してクローリングの設定を行いたいという場合は、
http://www.example.com/google*************.html
というURLがレスポンスコード200(リクエスト成功)を返すように要求される。
(*************はランダムな半角英数字)

ファイルを設置するなりしてGoogleに読み込ませると認証は完了し、そのサイトに関するクローリング設定やインデックス操作を行うことができるようになる。


ここからが本題。

あるサイトにBASIC認証を掛けたんだけど、すでにGoogleのインデックスに登録されてしまっているのでこれを削除したい。
そんなわけでウェブマスターツールを使うためにrobots.txtやGoogle指定のファイルへのアクセスを許可するためにapacheの設定変更。

SetEnvIf Request_URI "robots\.txt$" nopass
SetEnvIf Request_URI "google****************\.html$" nopass
<Location>
AuthType Basic
AuthName **********
AuthUserFile ***************
Require valid-user
Order allow,deny
Satisfy any
Allow from env=nopass
</Location>


http://xxxxxxxx/google****************.htmlにアクセスできることを確認してGoogleに読み込ませる。
しかし「システムに一時的な問題が発生しました。」と表示されて認証が成功しない。

アクセスログを確認すると、/google****************.htmlへのアクセス(レスポンスコード=200)の他になぜか/noexist_***************.htmlというファイルへのアクセスがあった。
後者はBASIC認証が聞いているのでレスポンスコードは401(未認証)。

Googleグループによると、「指定したURL以外のページのレスポンスコードが404(存在しない)になっていることを確認するため(意訳)」とのこと。
確かにどんなリクエストでもとりあえず200を返しちゃうようなサーバがあったらこんな認証は全く意味がないわけだけど、なんか不親切だなぁ。

というわけで以下の設定を追加することで認証成功。
SetEnvIf Request_URI "noexist_****************\.html$" nopass


タグ:Google SEO

何もしてないのにCPU使用率が高い [Windows]

Vistaを使ってるとたまに何もしていない状態でCPU使用率が高い状態に陥ることがある。
タスクマネージャの「プロセス」を見るとCPUを食ってるプロセスがない。(もちろん「すべてのユーザのプロセス」で。)

まったくもって謎だったが、Process Explorerで確認すると、Hardware InterruptsがCPUを食っていることが判明。
当たり前だがHardware Interruptsというのは便宜上こういう名前で表示されているだけでプロセスじゃない。
よってタスクマネージャのプロセス欄には表示されない。

さて、状況はわかったが原因がはっきりしない。
可能性のひとつとしていわゆるPIO病(ドライブ類の転送モードがDMAではなくPIOになってしまっている状態)が挙げられるが、特にそういった状況ではなかった。

で、こうなった場合は再起動するしかないかと思っていたが、一旦スリープさせてやると復帰時にはHardware InterruptsのCPU使用率は下がることがわかった。
対症療法になってしまうけど、特に副作用もないので当面これで対処しようと思う。

あくまで感覚的な話だが、どうも長時間(丸一日とか)起動させっぱなしだと起きる気がする。

crontabの記述でdateコマンドを使う場合の注意 [UN*X]

軽くハマったのでメモ。

crontabで定期的にコマンドを実行したときに出力されたものをログとして書き出すときに、ファイル名のサフィックスとして日時をつけることで簡易ログローテーションさせたいというケースがある。

だが、以下の記述はうまくいかない。
0 0 * * * /usr/local/bin/hogehoge > /var/log/hoge/log.`date +%Y%m%d` 2>&1

これは%がcrontabでは特別な意味を持つ文字だからだ。
詳しくはman 5 crontabで。

%はバックスラッシュでエスケープすることで記述することができる。
0 0 * * * /usr/local/bin/hogehoge > /var/log/hoge/log.`date +\%Y\%m\%d` 2>&1



設定ファイル上でのURLエンコードされたリクエストの取り扱い [Apache]

apache内部でリクエストURIを処理する過程で、そのURIに含まれるURLエンコードされている部分はデコードされてしまう。
これは、http://example1.com//%E3%83%86%E3%82%B9%E3%83%88 へのアクセスを http://example2.com/へリダイレクトさせようと
RedirectMatch \/%E3%83%86%E3%82%B9%E3%83%88 http://example2.com/
(※実ファイル上では改行しません)

という設定を追加してもうまくいかない。
この場合は、
RedirectMatch \/テスト http://example2.com/
と記述しないとならない。
ここで注意するのが、全角文字の文字コード。この場合はきちんとUTF-8の「テスト」を書いてやる必要がある。
不安な場合は、EUC,SJIS,UTF-8全部で書いてしまうのが確実。

こんな記述しなくて済む方法をご存知の方はこっそり教えていただけるとうれしいです。

関連ケースとして、mod_rewriteで以下の設定を行った場合も
RewriteRule ^/hoge/(.*)$ /cgi-bin/hoge.cgi?=$1 [L]
http://example.com/hoge/%E3%83%86%E3%82%B9%E3%83%88
でアクセスした場合に、$1の中身は"%E3%83%86%E3%82%B9%E3%83%88"ではなく"テスト"になってしまうが、この場合はNEフラグを書いてやれば解決する。
RewriteRule ^/hoge/(.*)$ /cgi-bin/hoge.cgi?=$1 [NE,L]


タグ:Apache

closeの結果も評価するのだ! [Tips]

結構前からMovableTypeを使っているのだが、最近ページ生成したときにページが途中で途切れる現象がしばしば発生している。
サーバ(レンタルサーバ)が腐ってるのかと思ってしばらくは放置していたのだが、今日は二桁回生成しなおしても改善しなかったので、調査してみたところQuotaに引っ掛かっていたっぽい。

これがUI上では正常終了してるように見えるのでタチが悪い。
(後で自分のブログを見たら真っ白だったとかザラ)
なんでコレが正常終了なのかわからなかったので調べてみた。
#人の書いたPerlスクリプトを読むことほど苦痛なことはない

原因はcloseの結果をチェックしていないからだった。
今の会社に入って初めて担当したシステムでこれが原因の障害に巻き込まれたのだが、これがまたその後の対応を含めてこんな糞(うん)コード書いた奴の人生もcloseさせたくなるくらい入社早々辞めたくなるくらいのトラウマな出来事だった。

CとかPerlとかの入門書や入門サイト見てもopenの結果は評価してもcloseの評価をしている記述は私は見たことがない。
何バイト書いたとかチェックしても実際にはライトバッファに乗っかってるだけだから、本当に成功したかどうかはflushかcloseしないとわからない。
そういう意味ではJavaみたいに強制的にcatch書かされる言語は少なくとも意識させられるからマシだよね。

Office複数起動 [Windows]

ExcelシートやPowerPointのスライドを複数開いて作業することはよくあるが、
複数起動できないと、ウィンドウレベルで並べて表示できなかったり(タイル表示は不便すぎ)、切り替えが結構面倒くさいで困る。

以下解決策。

◆Excel
普通に起動できる。
起動時に空のブックを作らないようにするには、-eオプションを付ける。
例) Excelのショートカットのリンクを編集
"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" -e


◆PowerPointとか
1) PowerPointビューワを使う
→編集できない

2) バージョン違いのOfficeを入れる。
→たぶん小細工が必要。出来上がったファイルの互換性を考えてもあまりおすすめできない。

3) IEでファイルを開く。
→Vista以降はちょっと微妙。

意図せず画面が回転してしまった [Windows]

「画面が90°回転してしまった」とパニくった親から電話が来た。
実は昔同じ経験をしてあせったことがある。

IntelのオンボードVGA(GMAのドライバソフトウェア)を使っている場合、Ctrl+Altを押しながらカーソルキーを押すと、その方向を上とした向きに画面が回転する。
ということで通常に戻したい場合は、Ctrl+Alt+↑を押しましょう。


タグ:Intel 画面 GMA

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。