2008/05/31

MacユーザーのためのVista チューニング

やっとVistaをsp1にアップデートしました。(2時間ほどかかったのでちょっと苦痛でした)

ネット上の記事を読むとsp1でかなりパフォーマンスが改善されているよなのですが、やはりParallelsでのVistaの動作はもっさりしています。
ちなみに私の環境はこんな感じ。
MacBookPro2.33 メモリー 3G / Parallels Vista割当メモリー512M 他のアプリも起動して使うのでVistaにはこれ以上メモりは割り振りたくない)

今回作業にあたり参考にしたサイト
Windows Vista チューニング+高速化
Vista簡易チューニング

ディスクのクリーンアップ等の事は省略し(基本ソフトは何もいれてません。入ってるのはFFFTPくらいなので)いきなりレジストリの修正から。

<レジストリ修正の方法>
1.[スタート]メニューを開く
2.[ファイル名を指定して実行...]
3.[regedit]とタイプし、[OK]

<修正したレジストリ>
メニューの表示の速度
「コンピュータ\HKEY_CURRENT_USER\Control Panel\Desktop」
「MenuShowDelay」の数値を150に。初期値は300でした。

カーネルを物理メモリに置く
「コンピュータ\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management」
「DisablePagingExecutive」の数値を1(16進法、初期値:0)

メモリへの出力、入力のパフォーマンス
「コンピュータ\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management」
「IoPageLockLimit」という項目がなかったので作成。数値はとりあえず「6000000」
1.空白の部分を右クリック
2.[新規]>[DWORD(32 ビット)値]をクリック。
3.名前を変更すれば、完了です。

システムキャッシュを確保
「コンピュータ\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management」
「LargeSystemCache」の数値を1。(16進法、初期値:0)

DLL をメモリから解放
「コンピュータ\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer」
「AlwaysUnloadDLL」この項目もなかったので作成。数値を1(16進法)

アクティブなプログラムのCPUの占有率を下げる
「コンピュータ\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl」
「Win32PrioritySeparation」数値を1。

他にサービスも随分と停止にしました。これはまた今度書きます。

2008/05/15

MySQL 最適化

900,000レコードもあるサイトを制作する事になり、改めてMySQL構築時にできる最適化ってどうよ!事でまとめてみました。

1.最小の型を使用 INT より、MEDIUMINT。
2.できるだけカラムに NOT NULL を宣言する。
3.プライマリインデックスを短く設定する。
4.インデックスは必要なものだけ作成する。
5.必要ならカラムインデックス、複合インデックスを使用する。

参考
MySQL の最適化
MySQLのクエリを最適化する10のTips

2008/05/09

PHPタグクラウド

参考サイト

//このSQL文が分かれば簡単
$query = "SELECT thing AS tag, COUNT(id) AS quantity
FROM my_table
GROUP BY thing
ORDER BY thing ASC";

$result = mysql_query($query);

//タグをkeyにして 数をvalueにしてarrayにする
while ($row = mysql_fetch_array($result)) {
$tags[$row['tag']] = $row['quantity'];
}

$max_size = 250;//フォントサイズの最大
$min_size = 100;//フォントサイズの最小

//quantityの最小値と最大値を取得
$max_qty = max(array_values($tags));
$min_qty = min(array_values($tags));

//最大値と最小値の差がない時の処理
$spread = $max_qty - $min_qty;
if (0 == $spread) {
$spread = 1;
}

//変化のステップを決める
$step = ($max_size - $min_size)/($spread);

//出力
foreach ($tags as $key => $value) {

$size = $min_size + (($value - $min_qty) * $step);

echo '<a href="#" style="font-size: '.$size.'%"';
echo ' title="'.$value.' things tagged with '.$key.'"';
echo '>'.$key.'</a> ';

}

2008/05/06

heteml でPATH_INFO

それぞれレンタルサーバには癖があります。
PHPでPATH_INFOを使う場合もこんな違いがあります。

ヘテムル
.htaccessに以下を追加

Options MultiViews
AddType text/html .php

sakura
PHP.iniに以下を追加

cgi.fix_pathinfo=1
※php.iniはコンパネから設定できます。