
何ヶ月か前からMacBookのハードディスク容量が残り数GBというラインをうろうろしていて、FirefoxやSafariなどでいっぱいタブを開いたり、長時間起動していると残りが0Kbになってしまうような自体に陥っていました。
使わないプリンタドライバを消したり、聞き終わったポッドキャストをこまめに消したり、Disk Inventory Xで見ながら掃除したりといろいろしていたのですが、根本的に解決出来ません。
0Kbになると、なーんも出来なくなるし、ほっとくとすぐにメモリ不足で操作出来なくなってしまいます。
タイミングによっては、さっきまでやっていた作業が保存されていなくて、痛い目にあってしまいます。
ものすごーく不便です。
iTunesを使うのをやめてmp3はすべて外部HDDに移動させるぐらいしないと解決しなそうな問題ですが、それはそれでライフスタイルにも関わることなので難しい。
そこでとりあえず、0kb状態だけは阻止しようと、OSXのメニューバーに残り容量を表示するフリーソフトを探したのですが、見つからず。。。
仕方ないので、Growlで通知する仕組みを作ろうかなと思いました。
フローとしては、
cron -> PHP -> PEAR::Net_Growl -> Growl
という感じです。
まず、MAMPにPEARを入れ直すところからスタート。
curl http://pear.php.net/go-pear> pear.php
sudo php -q pear.php
PEARインストール中に訊かれるパス設定はこんな感じ。
1. Installation prefix ($prefix) : /Applications/MAMP/bin/php5/lib/php
2. Temporary files directory : $prefix/temp
3. Binaries directory : /usr/bin
4. PHP code directory ($php_dir) : $prefix
5. Documentation base directory : $php_dir/docs
6. Data base directory : $php_dir/data
7. Tests base directory : $php_dir/tests
Net_Growlをインストール。
sudo /Applications/MAMP/bin/php5/bin/pear install net_growl-beta
システム環境設定>Growlから、「ネットワーク」タブ内の「受信される通知を聞く」と「リモートアプリケーション登録を許可」にチェック。せっかくなのでパスワードも適当に。
<?php
require_once 'Net/Growl.php';
$hdd = new HDD(disk_free_space('/'));
$title = 'MacBook HDD';
// $body = number_format($hdd->mb,1).' MB ('.number_format($hdd->kb).' KB)';
$body = number_format($hdd->mb,1).' MB';
$growlApp = new Net_Growl_Application("HDDnotifier by taichistereo", array("NotifyA"), '設定したパスワード');
$growl = new Net_Growl($growlApp);
$growl->notify("NotifyA", $title, $body);
// echo $body;
class HDD {
var $b;
var $kb;
var $mb;
var $gb;
function HDD($p) {
$this->b = $p;
$this->kb = ($this->b)/1024;
$this->mb = ($this->kb)/1024;
$this->gb = ($this->mb)/1024;
}
}
ブラウザでこのスクリプトにアクセスすると、初回はキーチェーンアクセスからパスワードを使う許可を求められます。
「常に許可」をクリックすると、見事Growlからハードディスク残り容量が通知されました!
最後にcrontabを編集します。
定期的に容量を通知させます。
crontab -e
下記を追加。
さっきのスクリプトの場所は、MAMP配下の/Applications/MAMP/htdocs/growl/index.phpです。
*/13 * * * * /opt/local/bin/wget -q -O /Users/ユーザ名/wget_HDDnotifier.html http://localhost/growl/
ユーザーのホームディレクトリに、アクセスする都度「wget_HDDnotifier.html」というゴミファイルが落ちてきますが、気にしない方向で。
MacPortsで入れたwgetを使っていますが、curlでもいいでしょう。
ためしに、なんとなく素数である13分ごとに設定。うざいかな?
これで、うちのMacBookが定期的に残り容量をつぶやくようになりました!
しばらく様子を見てみたいと思いますが、「のこりが何MB以下になったら通知する」とかそういう仕様のほうがいいかもしれません。
あるいは思い切って毎分通知させてしまっても、逆にうざくないというか、MacBookのハートビートっぽくて慣れてくるかも知れません。
さっき「つぶやく」と書きましたが、Twitterが流行ってるイマっぽくてちょっと楽しいかも。
TwitterAPI経由でうちのMacBookに残り容量つぶやかせるっていうアホなこともおもいつきますが...アホなのでやめときましょう(^o^)
■ 参考にしたサイト
Webデザインと私: MAMPにPEARをインストールする手順
http://14ch.jp/blog/08/07/0807201752.html
ネイティブMacアプリをPHPで操作しよう - @IT
http://www.atmarkit.co.jp/fcoding/articles/macxphp/03/macxphp03c.html
Net_Growl を使ってみた - やこ〜ん SuperNova2
http://d.hatena.ne.jp/saiya_moebius/20090701/1246392377