2011年3月26日土曜日

必要な時にパソコンの電源を遠隔操作で入れる


震災の影響で電力不足がかなり深刻になってきています。


業務上の都合や個人の都合でパソコンの電源も切りたいけど切れないなど問題もあると思います。


そこで、今回は少しでも節電に協力できるようにパソコンの電源を必要な時に入れて、不要な時には切る操作をインターネットを通じて遠隔操作で行う方法を紹介します。



Wake On LAN


ネットワークを通じて電源の操作をするWake On LAN(WOL)という仕組みがあります。


WOLはサーバなどには標準で備わっている事が多く、最近のパソコンでも設定さえすればWOLを有効にすることができます。



仕組み


WOLはゲストマシンからMagicPacketと言われる特殊なパケットをUDPを利用して送信します。


MagicPacketを受け取ったホストマシンは電源を入れます。


そのため、MagicPacketを受け取るホストマシンはMagicPacketに対応したハードウェア構成である必要があります。


主なハードウェア要件


  1. 電源とマザーボードがACPIに対応している

  2. NICがMagicPacketを解釈できる


これらの主なハードウェア要件は、最近のパソコンであれば殆ど利用できます。



手順



  1. BIOSの設定

  2. NICの設定

  3. MagicPacketを送信するフリーソフトをインストール



BIOSの設定


BIOSを起動します。


通常、電源管理などの画面でWOLを有効にします。


私の端末では「Remote Wake Up」とありました。


さらに私の場合は「Low Power Mode」を無効にしないと電源切断時にNICの電源も切れてしまうのでこちらの設定は無効にします。



NICの設定


デバイスマネージャから利用しているNICの「プロパティ」→「詳細設定タブ」でWOLを有効にします。


私の場合は「Wake on Link」を「強制」に変更し「Wake On Magic Packet」をオンにします。


最後に「PEM」を「オン」にしますがこちらはNICによって無い場合があります。無い場合はドライバーをアップデートし、PEMを「オン」にしないと起動できない可能性があります。


f:id:koujirou6218:20110325164355p:image


f:id:koujirou6218:20110325164356p:image


f:id:koujirou6218:20110325164357p:image



ゲストマシンにMagicBootをインストール


MagicPacketを送信できるソフトはいくつかあるのですが今回はMagicBootを利用します。MagicBootはフリーソフトでVectorからダウンロードできます。


http://www.vector.co.jp/soft/dl/win95/net/se282263.html


MagicBootの利用にはIPアドレスとMACアドレスが必要になります。


コマンドプロンプトで次のコマンドを実行します。



ipconfig /all



IPv4アドレスと物理アドレスをMagicBootに入力します。


ファイアーウォール


MagicBootはデフォルトでUDP 3708番ポートを利用するのでファイアーウォールで防いでいる場合は開放する必要があります。


注意点


個人の家庭で利用する場合はISPから1つIPアドレスを付与されますが、このIPアドレスは定期的に変わるので固定IPを申込むかDDNSなどを利用する必要があります。


2011年3月17日木曜日

無料で使えるクラウドDB Cleardb


クラウドデータベースとしてリリースされたCleardbを紹介したいと思います。


PHP Java Objectiv-C Javascript Ruby .NETなどですぐに利用できるソースコードが公開されているので簡単に利用できます。


ClearDB API Documentation


ClearDBとは


100Mまで無料で利用できるRDBで、高いセキュリティと保守性や高速な動作をウリにしているようです。


DBの操作は提供されるAPIを利用して行います。


APIの制限は月4万回まで無料で利用できます。


http://www.cleardb.com/whatis.html


DBは負荷分散やバックアップなどがボトルネックになりがちなので、DBを異なるサーバで持てるのは大きなメリットです。



テーブルを作る


ユーザ登録が完了したらテーブルを作ります。


上部のメニュー【My Database】⇒【New】⇒【Talbe】


f:id:koujirou6218:20110316153615p:image


テーブルが作成できればブラウザ上から【QueryAnalyzer】を利用してSQLを実行することができます。



APIを利用する


APIとして利用できるパラメータはドキュメントで公開されています。


ClearDB API Documentation


この手順は最も簡単に利用できる方法ですがユーザ登録した時のユーザ名とパスワードを利用します。


次のような手順でSQLを実行します。



  1. ユーザ名とパスワードをGET/POSTメソッドで実行しセッションIDを取得する

  2. セッションIDとSQLをGET/POSTメソッドで実行する

  3. ログアウトする



実行するURLは全てURLエンコードしてください



これがAPIのベースとなるURLです



https://www.cleardb.com/v1/api.php



ログインしてセッションIDを取得する



https://www.cleardb.com/v1/api.php?action=login&username=hogeuser&password=himitu




JSON形式でレスポンスが返ってきます



{"result":"success","response":"398fe198203322b072e0745edfb2fd5f"}




SQLを実行する



https://www.cleardb.com/v1/api.php?action=sqlQuery&session_id=398fe198203322b072e0745edfb2fd5f&query=select * from user




このような手順でCleardbを操作します。



APIキーでアクセスする


前述の方法では、ユーザ名とパスワードをそのまま利用します。


この方法では多人数での利用においてリスクが高いのでAPIキーを利用します。


f:id:koujirou6218:20110316153614p:image


APIキーを利用するには、先ほど作成したテーブルと新たに【My Apps】でAppsを作り関連づけさせます。


My AppsはMySQLでいうユーザ管理にあたります。異なるAPIキーをユーザに配布しユーザごとに権限を変える事が可能になります。



上部メニューの【My Apps】をクリックし【New Apps】でAppsを作ります。(全て入力してください)



Appsを作るとそのAppsに対するApp IDが作成されます。


【Create Key】よりAPIキーを作成します。作成したAPIキーはデフォルトで【DENY READ】になっているので【Show Rules】より権限を適宜変更してください。



キーの作成が完了すれば、Cleardbで公開されているPHPコードを利用してアクセスしてみます。


https://www.cleardb.com/v1/doc/home




// Set your own API Key here.


define('CDB_API_KEY', 'ここにユーザごとのAPIキー');


// Set your own App ID here.


define('CDB_APP_ID', 'ここにApp ID');


// Include the ClearDB PHP API Client for Apps into our code.


require_once('cleardb_app_client.php');


// Create a new instance of the ClearDB class.


$cleardb = new ClearDB_App_Client();


// Retrieve an object array as results from ClearDB.


$users = $cleardb->query("INSERT INTO user (name,age) value('koujirou','24')");


?>




このような感じで普通のDBのように利用できます.