2012年4月25日水曜日

GoogleDriveが高い

今使用しているPicasaの追加容量は20GBで年間 $5 なので、これを単純に変換すると25GBで月額 $0.52 になる。約5倍の値上がりである。
Googleさん困っちゃうな~
旧プラン新プラン
(年額)(月額)(年額)
20 GB$5--
25 GB-$2.49$29.88
80 G$20--
100 GB-$4.99$59.88
200 GB$50$9.99$119.88
400 GB$100$19.99$239.88
1 TB$256$49.99$599.88
2 TB$512$99.99$1199.88
4 TB$1024$199.99$2399.88
8 TB$2048$399.99$4799.88
16 TB$4096$799.99$9599.88


2012年4月23日月曜日

Toshiba Bluetooth StackでContinua

Toshiba Bluetooth StackでContinua対応機器との通信するソフト開発について調べて見た。どうやらContinua対応機器とBluetoothで通信するにはHDP (Health Device Profile)に対応している必要があるようだ。

Toshiba Bluetooth StackのVersionについて

Toshiba Bluetooth PortalのNewsページによるとVer.7.00.10でHDPに対応し、Ver.7.10.10 でCountinuaのロゴを取得している。

2010-03-19:First Continua Health Alliance certified Toshiba Bluetooth Stack version 7.10.10 released

2009-10-22:New Toshiba Bluetooth Stack v7.00.10 with Windows 7 and HDP profile support released
まずはToshiba Bluetooth StackのVer.7.10.10以降が必要そうなので、手持ちのPLANEX:BT-MicroEDR2Xについて調べてみた。Toshiba Bluetooth Stackを採用しているが、2009/09/04以降にドライバのアップデートがされていないし、マニュアルを見てもHDPに対応していないようなので、Countinuaのロゴを取得する前のバージョンのようだ。

いろいろ探したところ、Toshiba Bloutooth PortalのDownloadsページからVer.8.00.12をダウンロードできそうだが、「For TOSHIBA notebooks」となっているのでライセンス的に使用できない。(たぶんPLANEX:BT-MicroEDR2Xでも動くと思うが、大人なので我慢)

Bluetoothドングルについて

Toshiba Bluetooth Stackが付属していてVer.7.10.10以降のアップデータを公開しているドングルを購入する必要がある。最近のBluetoothドングル(特にBluetooth3.0対応)はToshiba以外のStackを採用していることが多いようだ。
「コンティニュア対応のBluetoothアダプター用最新ドライバー公開」という記事を発見したがToshibaスタックとは書かれていない。対応商品として以下の2つが紹介されていた。

  • Bluetooth2.1+EDR対応 USBアダプター(class1)BSHSBD02BK
  • Bluetooth2.1+EDR対応 USBアダプター(class2)BSHSBD03シリーズ
それぞれのダウンロードページ(BSHSBD02BKBSHSBD03)を確認したところContinua対応と書かれている。Stack更新日以降マニュアルが更新されていないので、最新のStackがToshiba製かどうか不明だが、古いマニュアル(BSHSBD02BKBSHSBD03)ではToshiba製Stackの画面を用いて説明をしているので、Toshiba製Stackが付属していると考えて問題がないだろう。市場在庫が少なくなってきているようなので今のうちに入手したほうがよい、いそいで探さないと!!
ついでにBluetooth3.0や4.0に対応しているBSHSBD04BK/BSHSBD05BK/BSHSBD08BKのマニュアルを確認したらToshiba製Stackではないようだ。

Toshiba Bluetooth Stack Software Development Kit(SDK)について

SDKの入手方法についてはToshiba Bloutooth PortalのKnowledgeページ「How to obtain the TOSHIBA Bluetooth stack SDK」に書かれている。SDKは無料だが"License Agreement for using SDK"に同意が必要、"License Agreement for using SDK"はhttps://aps2.toshiba-tro.de/bluetooth_sdk/Bluetooth.aspxからの申し込みが必要だとさ。めんどくさい、こんなんだからBluetoothはそれほどはやらないのか、、、、といっても東芝が得するビジネスモデルでもないからSDKをばら撒いても仕方がないのか?

とりあえず、申し込んでみたが回答待ちだ。

その他情報源

閥努 閻怒 の報われぬ日々でToshiba Bluetooth Stackについて書かれていた。


Bluetoothドングル、Ver.7.10.10以降のToshiba Bluetooth Stack、Toshiba Bluetooth Stack SDKがそろったらまたいろいろ調べよう。ところでSDKの開発環境はどうなっているのだろうか?Freeのコンパイラでも開発できるのか?

2012年4月7日土曜日

Nike+で異常なデータを探す方法

iPhoneのNike+GPSアプリやNike+ SportWatch GPSなどで記録し、Nike+でデータの管理を行っている。今年の初めに自己最高記録を確認したら0'05"/KMになっていた。1キロを5秒って、はやっ!!
Nike+ SportWatch GPSで記録した場合は精度よく記録されるが、iPhoneで記録した場合にはGPSの精度が悪いようだ。SportWatchは腕につけるのでGPSを捕らえやすいが、iPhoneはズボンのポケットに入れているのでGPSのを捕らえにくいのが原因かもしれない。
このGPSの精度が悪い異常なRUNデータを削除することで異常な自己最高記録を直せることは容易に想像できたが、異常なRUNデータを探す方法がわからなかった。Nike+のサポートフォームから問い合わせを行うと、4回程度メールをやり取りした結果、異常データの探し方を教わることができた。

(1)Nike+にログインする。
(2)RUNデータを表示する。
(3)ルート表示に切り替える。
(4)画面下方にあるSPLITSに異常なペースが無いことを確認する。
(5)ペース表示に切り替え、次の日に切り替える。
※ (3)~(5)を繰り返し異常なRUNデータを探す。


結果として、0'05"/KMと0'44"/KMというデータがあったのでRUNデータを削除することで自己最高記録を修正することができた。130個程度のRUNデータだったのですべてを確認できたが、もう少し多かったらさすがあきらめていたかもしれない。もう少し操作性を改善してほしいところだ。

問い合わせのやり取りの中で、サポートの方からNike+のアカウント名とパスワードを聞かれた、、、新鮮!?というかメールでアカウントとパスワードを同時に送信するという初体験だった。


2012年4月6日金曜日

勤務時間をGoogleカレンダーにメモするためのスクリプト

勤務時間を簡単にメモするためのgoogle apps scriptを作成してみた。サービスとして公開し出社時、退社時に実行すればよい。実行結果の表示はもう少し工夫が必要。
function doGet(e){

var now = new Date();
var begin = new Date(now);
begin.setHours(0);
begin.setMinutes(0);
begin.setSeconds(0);

// デフォルトのカレンダーを取得
var cal = CalendarApp.getDefaultCalendar();

var events = cal.getEvents( begin, now);
for(var i=0; i<events.length; i++){
if( events[i].getTitle() == "勤務中" ){
var start = events[i].getStartTime();
events[i].setTime( start, now );
return retComment(e,"勤務時間を更新しました。",start, now);
}
}
cal.createEvent("勤務中", now, now);
return retComment(e,"出勤登録をしました。",now, now);
}


function retComment(e,comment,start,end){
var app = UiApp.createApplication();
var panel = app.createVerticalPanel();
panel.add(app.createLabel(comment));
panel.add(app.createLabel(" "+start));
panel.add(app.createLabel(" "+end));
app.add(panel);
return app;
}