2011-11-05
といえば検索(べーた)
PHP |
つくってみた。
あるキーワードに関連するワードをの検索リンクを表示します。
急上昇ワードはGoogle Trend、関連ワードはYahoo関連ワードAPIより取得。
11/19追記:
提供サーバが変わりました。
2011-07-03
自動でスリープモードにならない
windows |
Windows7で一定時間操作が無いとスリープモードに入る,はずがいつの間にかディスプレイが暗くなるだけでスリープしない状態に.
色々調べると,結果としては特定のデバイスがスリープへの移行を阻害しているとのことでした.
スリープを阻害しているデバイスを調べるためには?
下記コマンドを入力することで,スリープへ移行する際に阻害する原因の一覧を,ファイルに出力します.
powercfg /energy -output %USERPROFILE%\Desktop\energy.html
powercfgはwindowsの電源管理用コマンドです.
で,上記のコマンドを実行すると1分後ぐらいにenergy.htmlに電源管理時のエラーが出力されます.
すると以下のようなエラーが表示されます(一部)
Analysis Results Errors System Availability Requests:System Required Request The device or driver has made a request to prevent the system from automatically entering sleep. Driver Name \FileSystem\srvnet USB Suspend:USB Device not Entering Suspend The USB device did not enter the Suspend state. Processor power management may be prevented if a USB device does not enter the Suspend state when not in use. Device Name USB Root Hub Host Controller ID PCI\VEN_8086&DEV_2939 Host Controller Location PCI bus 0, device 26, function 2 Device ID USB\VID_8086&PID_2939 Port Path
一つ目のエラーを見ると分かるように,srvnetなるドライバが,スリープの中止を要求している(# ゚Д゚)
電源要求の設定を優先にするには
てことで,このドライバに対して電源要求の設定を優先するように設定する.
まずはコマンド上で再度スリープを阻害するプロセスやドライバを確認(管理者で実行すること)
powercfg -requests DISPLAY: None. SYSTEM: [DRIVER] \FileSystem\srvnet An active remote client has recently sent requests to this machine. AWAYMODE: None.
powercfg -requestsでディスプレイのターンオフ(DISPLAY),スリープへの移行(SYSTEM),AWAYモードへの移行(ARAYMODE)を阻害しているプロセスやデバイスが表示されます(ここでは,「SYSTEM」に先程の「srvnet」の名前が表示される.)
で,目標の「srvnet」に対して電源要求を優先するには下記のコマンドを実行する.
powercfg -requestsoverride DRIVER srvnet SYSTEM
-requestorverrideで,電源要求の優先を設定するオプションを指定.
DRIVER srvnetには,対象がプロセスであればPROCESS,ドライバであればDRIVERといった具合に指定して,その後には対象のドライバ名等を指定.
最後にオーバーライドするモードとしてSYSTEMを指定.
これで,自動でスリープするようになりました.(*^_^*)
参考は以下のサイトから(いつものように丸写しだけどな!!)
2011-04-22
Androidを買って3週間,インストールしたアプリ
Android |
スマートフォンデビューしてから約3週間,幾多ものアプリを試して,ようやく落ち着いてきた.このへんで見事レギュラーとなったアプリをご紹介します.
| Seesmic | Facebook,Twitter用クライアント.主にTwitter用のウィジェットとして. | 無料 | ||
| Android用Facebook | Facebook.ウィジェットで利用しています. | 無料 | ||
| Foursquare | Foursquare用クライアント.迷わず公式一択. | 無料 |
音楽
| PowerAmp | Last.fmに対応している,かつ見た目が良いという点で選びました. | 無料 | ||
| Last.fm | PowerAmpでScrobbleするのに必要らしいので. | 無料 | ||
| DoridNP | 今聴いている音楽をTwitterに投稿できます. | 無料 |
| Dolphin Browser HD | 定番のブラウザ(らしい).マウスジェスチャやアドオンもあって高性能. | 無料 |
システム
| Advanced Task Manager | ステータスバーから呼び出せるというだけ.良いものはもっとあるかも. | 無料 | ||
| Battery Indicator | ステータスバーに残量が表示される.Simple is the best. | 無料 | ||
| Pre Home | 起動中のアプリケーションにアクセスできます.僕はホームボタン2回押しで起動させてます. | 無料 | ||
| ES ファイルエクスプローラ | 簡単にAndroid内のデータをエクスプローラで表示可能.さらに他機器のsamba,FTPサーバに接続可能. | 無料 | ||
| Web Sharing | Androidをサーバ化して,他端末からブラウザ経由でファイル操作が可能.しかし繋がりにくく,あまり役に立っていない... | 無料 |
ニュース
| gReader | GoogleReader用のクライアント.FaceBookやEverNoteへの保存等も可能. | 無料 | ||
| はてなブックマーク | はてなブックマークのクライアント.特に文句はありません. | 無料 | ||
| 2ch Mate | ニュースのカテゴリでは無いかもしれませんがw | 無料 |
ツール
| EverNote | 定番中の定番.利用歴は浅いですが,他のサービスと組み合わせることで色々な使い方ができると思います. | 無料 | ||
| ジョルテ | スケジュール,ToDoリストに利用中.表示形式も多数あり,ウィジェットとしても有用です. | 無料 |
生活
| マイ家計簿 | 使いやすい.様子を見て有料版の購入も検討. | 無料 |
天気
| 世界の天気 | ウィジェット用.コンパクトさが決め手. | 無料 | ||
| なまず速報β | 定番中の定番!性能もGOOD.このご時世でなければ入れていなかったかも. | 無料 |
運動
| RunKeepr | 走った距離と時間を計測市ます.自転車通勤には必須です. | 無料 |
2011-04-17
Google Spread SheetをPHP(ZendFramework)で読み込む
プログラムしたことをまとめておこう.
まず,Google Spread Sheetに関してですが,詳しいことはわかりませんw
簡単に,というか自分が把握している限りで言えば,オンラインで(ブラウザを通して)Excelのような物が使え,複数のユーザと共有できるものです.
んでもって,この情報をCSVファイル読むかのように取得したいにはどうしたらいいか.各言語でライブラリがあるようですが,PHPではZend Frameworkから,「Zend_Gdata_Spreadsheets」なるAPIが出ています.今回はこれを使って,簡単にスプレッドシートの取得を行ってみます.
【環境】Ubuntu 9.10 PHP 5.2.10-2 Zend Framework 1.9.4
(パスの設定等は省きます.)
スプレッドシートオブジェクトの準備
require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_Docs'); Zend_Loader::loadClass('Zend_Gdata_Spreadsheets'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); $user = "test@gmail.com"; $pass = "password"; $service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME; $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service); $service = new Zend_Gdata_Spreadsheets($client);
細かい仕様等は調べていませんが,こんな感じ.
$service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
ここでスプレッドシートの種類?を指定して器を生成している模様.
次の行で自分のユーザ名,パスワードを指定してクライアントの情報を取得します.
最後にこのクライアント情報を利用してスプレッドシートのオブジェクトを生成します.
ドキュメントのシート情報を取得する.
ドキュメントの情報体系は「フィード」をルート要素として,その下に複数の「エントリー」がぶら下がっている形になります.
エントリーとしては,シートであったり行データ,セルデータ等々が代表するところかと思います.それで,各エントリーのメソッドを利用してシートであればシート名,行データであればそこからセルデータへなどの情報へのアクセスを行います.
今回利用するシート.
2つのシート「profile」と「fruit」を用意しました.
このシート情報を取得するコードは次のとおり.
$ssid = 'tfBsvHbpf1iuDZaZUlKMtKQ'; $docQuery = new Zend_Gdata_Spreadsheets_DocumentQuery(); $docQuery->setSpreadsheetKey($ssid); $sheetFeed = $service->getWorksheetFeed($docQuery); foreach($sheetFeed->entries as $sheetEntry) { echo "Name:".$sheetEntry->getTitle()."<br>"; echo "ID:".$sheetEntry->getId()."<br>"; }
変数ssidには,スプレッドシートの「キー」を設定します.これはURL中のクエリ「key=」の値になります.
これをZend_Gdata_Spreadsheets_DocumentQueryのパラメータとしてセットします.
このオブジェクトにパラメータを指定することで,特定の情報(ここではssidのキー値を持つスプレッドシート)を取得します.
getWorksheetFeedによって,該当ドキュメントのシートのフィードが返されます.
後はforeachによって,シートの数分ループを繰り返し,情報を取得する.
ここではシートのタイトルと,シートのIDを取得しています.(このIDがどのように決まるかは不明.)
ここでIDの最後のスラッシュの後の文字列が,ドキュメントの各シートの固有IDとして利用することになります.
シートの行データを取得する.
シートの情報(ID)が分かったら,次はシートのデータを取得してみます.
$wid = 'od6';
$listQuery = new Zend_Gdata_Spreadsheets_ListQuery();
$listQuery->setSpreadsheetKey($ssid);
$listQuery->setWorksheetId($wid);
$listFeed = $service->getListFeed($listQuery);
foreach($listFeed as $rowData) {
$rowEntry = $rowData->getCustom();
foreach($rowEntry as $cellData) {
echo $cellData->getColumnName()."=".$cellData->getText().'<br>';
}
echo '<br>';
}
実行結果
行データの取得にはListQueryクラスを利用します.
これに先ほでのキーと,ワークシートのIDをセットして,getListFeedにて取得します.
実際の行データは一つ目の配列のループのgetCustomで取得し,2つ目のループで該当業の各カラム情報を首都良くしています.
特定の行を取得する
ここで,実用的な使い方として,条件で絞った行検索をしてみます.
といっても簡単で,上のコードでgetListFeedを行う前に以下のコードを入れてみます.
$listQuery->setSpreadSheetQuery('id > 1');
実行結果
idが1より大きい値のデータを取得してみました.
セルデータを取得してみる
セル情報は行からわざわざ取得しなくても,一気に取得することができます.
$cellQuery = new Zend_Gdata_Spreadsheets_CellQuery();
$cellQuery->setSpreadsheetKey($ssid);
$cellQuery->setWorksheetId($wid);
$cellFeed = $service->getCellFeed($cellQuery);
foreach($cellFeed as $cellEntry) {
$cellData = $cellEntry->getCell();
echo $cellData->getRow().','.$cellData->getColumn().','.$cellData->getText().'<br>';
}
先程のListQuery,ListFeedがCellQuery,CelFeedになったぐらいで,使い方は大きは変わりません.
実行結果
セルデータなので,項目カラムから取得しています.(行番号,カラム番号,値)
特定のセルデータを取得する.
行と同じように条件付きでセル情報を取得してみます.等号を使って取得することも可能ですが,今回は最大行と最大カラムを指定して取得してみます.
$cellQuery->setMinRow(2);
$cellQuery->setMaxRow(3);
$cellQuery->setMaxCol(2);
$cellFeed = $service->getCellFeed($cellQuery);
foreach($cellFeed as $cellEntry) {
$cellData = $cellEntry->getCell();
echo $cellData->getRow().','.$cellData->getColumn().','.$cellData->getText().'<br>';
}
行番号は1から始まるので,setMinRowで2行目から取得,setMaxRowで3行目まで取得,結果として2行分のデータを取得します.
カラムも2カラム目まで取得します.
実行結果
2,3行目と,2カラム目のnameまでのセルデータを取得しました.
参考サイト
Zend Framework: Documentation: Google Spreadsheets の使用法 - Zend Framework Manual
2011-03-30
linuxでSubVersionを使う
自宅のUbunt 9.10にSubversionを入れてみたのでメモ.
#apt-get install subversion
1.リポジトリの登録
リポジトリの登録にはsvnadmin createで行います.
#makedir /var/svn // リポジトリディレクトリの作成 #svnadmin create /var/svn // /var/svnをリポジトリに登録
2.モジュールの登録(インポート)
ここからはsvnを利用します.
(ここでは/var/www/projectのモジュールを登録します.)
#svn import -m "20110330" file:///var/svn/ /var/www/project/
-m "20110330"の部分はコメントです.多分無くても大丈夫?
file://の部分が,登録するリポジトリ,その後がモジュールのあるディレクトリになります.
3.チェックアウト
登録したモジュールを取り出します.
#svn checkout file:///var/svn/ /var/www/project/
インポートの時とだいたい同じです.リポジトリfile:///var/svn/から,/var/www/project/へとファイルをチェックアウトします.
4.チェックイン
チェックアウトした後に編集したファイルを,リポジトリに更新します.
#cd /var/www/project #svn commit -m "20110331" /var/www/project
チェックアウトしたディレクトリを指定するだけでチェックインが完了します.
もっと細かな使い方は必要に応じて調べてみよう.
<参考>






