Hatena::ブログ(Diary)

小さな星がほらひとつ

2011-11-05

といえば検索(べーた)

| 15:22

つくってみた。

あるキーワードに関連するワードをの検索リンクを表示します。

急上昇ワードはGoogle Trend、関連ワードはYahoo関連ワードAPIより取得。

といえば検索

11/19追記:

提供サーバが変わりました。

2011-07-03

自動でスリープモードにならない

| 22:03

Windows7で一定時間操作が無いとスリープモードに入る,はずがいつの間にかディスプレイが暗くなるだけでスリープしない状態に.

色々調べると,結果としては特定のデバイススリープへの移行を阻害しているとのことでした.


スリープを阻害しているデバイスを調べるためには?

下記コマンドを入力することで,スリープへ移行する際に阻害する原因の一覧を,ファイルに出力します.

powercfg /energy -output %USERPROFILE%\Desktop\energy.html

powercfgwindowsの電源管理用コマンドです.

で,上記のコマンドを実行すると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を指定.

これで,自動でスリープするようになりました.(*^_^*)


参考は以下のサイトから(いつものように丸写しだけどな!!)

【ハウツー】レッツ! Windows 7 - 電源管理編(4) | パソコン | マイナビニュース

2011-04-22

Androidを買って3週間,インストールしたアプリ

| 20:04

スマートフォンデビューしてから約3週間,幾多ものアプリを試して,ようやく落ち着いてきた.このへんで見事レギュラーとなったアプリをご紹介します.

SNS

FacebookTwitter用クライアント.主にTwitter用のウィジェットとして. 無料
Facebookウィジェットで利用しています. 無料
Foursquareクライアント.迷わず公式一択. 無料

音楽

Last.fmに対応している,かつ見た目が良いという点で選びました. 無料
PowerAmpでScrobbleするのに必要らしいので. 無料
今聴いている音楽をTwitterに投稿できます. 無料

ブラウザ

定番のブラウザ(らしい).マウスジェスチャアドオンもあって高性能. 無料

システム

ステータスバーから呼び出せるというだけ.良いものはもっとあるかも. 無料
ステータスバーに残量が表示される.Simple is the best. 無料
起動中のアプリケーションアクセスできます.僕はホームボタン2回押しで起動させてます. 無料
簡単にAndroid内のデータをエクスプローラで表示可能.さらに他機器のsambaFTPサーバに接続可能. 無料
Androidサーバ化して,他端末からブラウザ経由でファイル操作が可能.しかし繋がりにくく,あまり役に立っていない... 無料

ニュース

GoogleReader用のクライアントFaceBookEverNoteへの保存等も可能. 無料
はてなブックマーククライアント.特に文句はありません. 無料
ニュースのカテゴリでは無いかもしれませんがw 無料

ツール

定番中の定番.利用歴は浅いですが,他のサービスと組み合わせることで色々な使い方ができると思います. 無料
スケジュール,ToDoリストに利用中.表示形式も多数あり,ウィジェットとしても有用です. 無料

生活

使いやすい.様子を見て有料版の購入も検討. 無料

天気

ウィジェット用.コンパクトさが決め手. 無料
定番中の定番!性能もGOOD.このご時世でなければ入れていなかったかも. 無料

運動

走った距離と時間を計測市ます.自転車通勤には必須です. 無料

2011-04-17

Google Spread SheetをPHP(ZendFramework)で読み込む

| 12:21

プログラムしたことをまとめておこう.

まず,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;

ここでスプレッドシートの種類?を指定して器を生成している模様.

次の行で自分のユーザ名,パスワードを指定してクライアントの情報を取得します.

最後にこのクライアント情報を利用してスプレッドシートオブジェクトを生成します.

ドキュメントのシート情報を取得する.

ドキュメントの情報体系は「フィード」をルート要素として,その下に複数の「エントリー」がぶら下がっている形になります.

エントリーとしては,シートであったり行データ,セルデータ等々が代表するところかと思います.それで,各エントリーのメソッドを利用してシートであればシート名,行データであればそこからセルデータへなどの情報へのアクセスを行います.

今回利用するシート.

f:id:WorldWorldWorld:20110414211221p:image

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>';
      }

実行結果

f:id:WorldWorldWorld:20110417093636p:image

行データの取得にはListQueryクラスを利用します.

これに先ほでのキーと,ワークシートのIDをセットして,getListFeedにて取得します.

実際の行データは一つ目の配列のループのgetCustomで取得し,2つ目のループで該当業の各カラム情報を首都良くしています.

特定の行を取得する

ここで,実用的な使い方として,条件で絞った行検索をしてみます.

といっても簡単で,上のコードでgetListFeedを行う前に以下のコードを入れてみます.

$listQuery->setSpreadSheetQuery('id > 1');

実行結果

f:id:WorldWorldWorld:20110417093637p:image

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になったぐらいで,使い方は大きは変わりません.

実行結果

f:id:WorldWorldWorld:20110417093638p:image

セルデータなので,項目カラムから取得しています.(行番号,カラム番号,値)

特定のセルデータを取得する.

行と同じように条件付きでセル情報を取得してみます.等号を使って取得することも可能ですが,今回は最大行と最大カラムを指定して取得してみます.

      $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カラム目まで取得します.

実行結果

f:id:WorldWorldWorld:20110417093639p:image

2,3行目と,2カラム目のnameまでのセルデータを取得しました.


参考サイト

Zend Framework: Documentation: Google Spreadsheets の使用法 - Zend Framework Manual

2011-03-30

linuxでSubVersionを使う

| 00:57

自宅のUbunt 9.10にSubversionを入れてみたのでメモ.

インストールapt-get使いました.

#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

チェックアウトしたディレクトリを指定するだけでチェックインが完了します.

もっと細かな使い方は必要に応じて調べてみよう.

<参考>

Linux関連メモ - (linux) subversion

[ThinkIT] 第2回:Subversionによるバージョン管理(前編) (1/3)