先日、Firefoxで位置情報を取得するnavigator.geolocationを紹介しましたが、それのChrome版です
#Chrome版というか、呼び出しているAPIはFirefoxと同等なので結果も全く同じになります
windowsのでは動きましたがLinux版では動きませんでした;
// これをロードしとく
<script type="text/javascript" src="http://code.google.com/intl/ja/apis/gears/gears_init.js"></script>
// browserに応じて使い分け
var geo;
// for firefox and mobile safari
if(navigator.geolocation)
geo = navigator.geolocation;
// for google chrome(win) and Chrome Lite(Android)
else if(window.google && google.gears)
geo = google.gears.factory.create('beta.geolocation');
if(geo)
geo.getCurrentPosition(-省略-);
else
alert('geolocation disabled...');
今までキャプチャにはgyamblr(矩形選択してtumblrにアップ)というソフトを使っていたのですが、
Vista64bitでは動きませんでした(単にtumblr側の仕様変更かもしれませんが)
最新版は2008年のものなのでこのソフトはあきらめ、別の方法を採りました
今回は矩形選択可能なキャプチャソフトとrubyスクリプトでキャプチャするだけで自動的にファイルをアップロードするようにしました
事前にflickrのAPI認証を行ってトークンキーを書き出しておきます(flickr.dat)
詳細はrflickrに同梱のサンプルを見てください
今回使用したスクリプトはこちら
説明は必要ないかと思いますが、このスクリプトのあるフォルダを監視して拡張子がjpe?gかpngのファイルがあったらアップロードし、完了したら削除します
#flickr_uploader.rb
require 'rubygems'
require 'flickr'
flickr = Flickr.new('flickr.dat',
API_KEY,
SECRET
)
while(1)
Dir.glob('*.{jpg,jpeg,png}').each do |f|
begin
flickr.photos.upload.upload_file(f, f)
puts "#{Time.now} upload success #{f}"
File.delete('./' + f)
rescue
puts "#{Time.now} error raised"
end
end
sleep 10
end
[Tips] WindowsやLinuxで標準ブラウザを開く方法 – tetralabo
ここの方法でアップロードしたらブラウザを開くようにしてもいいかもしれません
で、Linuxだと問題なくこいつを&つけてバックグラウンドで動かせばいいのですが(Linuxはキャプチャソフトのほうが問題?)、
windowsだとrubyスクリプトをバックグラウンド(ウィンドウのない状態)で動かす方法がなく(?)、
仕方なくexerb(rubyスクリプトをexeで書き出す)を使うことにしました
今回一番難しかったのはexerbでexeを書き出すことです
flickrの依存でmimeというgemも一緒に入るのですが、これのmime/types.rb.dataというファイルが拡張子がrbじゃないせいかexerbで読み込まれず、
仕方なくmime側を直接書き換えてtypes.rbの中にtypes.rb.dataを追記しました;
これで、
ActiveScriptRubyでruby環境を構築している場合、コマンドプロンプトから
mkexy flickr_uploader.rb
Ctrl+C(スクリプトを終了させる)
exerb -c gui flickr_uploader.exy <- rbじゃないので注意
でflickr_uploader.exeというファイルが出力されます
こいつはウィンドウも何も持たず、キー操作を受け付けないのでタスクマネージャから終了する必要があります
ちなみに矩形選択可能なキャプチャソフトはWinShotを使っています
十中八九復元ポイントが原因と思われます
デフォルトではHDD全容量の15%まで使うようになっているので、
1TBなら150GBまで復元ポイントが残されてしまいます
復元ポイントの最大容量は設定で変更できるので、適当に小さめの値にすることをお勧めします(ほとんど使わないし…)
ITmedia +D PC USER:サクッとおいしいVistaチップス 7枚め:「システムの復元」と「以前のバージョン」で使う領域を変更する
別になくてもいい気がするけど、無駄に余ってるのでとりあえず10GBに変更しました
コマンドプロンプト(アクセサリから管理者権限で実行)で
vssadmin Resize ShadowStorage /For=C: /On=C: /MaxSize=10GB
としました(Cドライブの場合)
#別ドライブに置いた方がバックアップとしては正しいですね…
先日、twitterが正式に位置情報に対応しましたが、自分も試してみました
rubyのtwitterというgemでやってみました
# access_token, access_token_secretはあらかじめ準備しているものとします
twitter_oauth = Twitter::OAuth.new(CONSUMER_KEY, SECRET_KEY)
twitter_oauth.authorize_from_access(
access_token, access_token_secret)
@twitter = Twitter::Base.new(twitter_oauth)
@twitter.update('hoge', {:lat => latitude, :long => longtitude})
こんな感じでoptionを渡してやるだけです
twitter_gemのドキュメントにはoptionがin_reply_to_status_idしか書いてないのですが、ちゃんと投稿してくれます
ちなみに埋め込んだ座標をtweetdeckで表示するとこんな感じ

NY maps overlay on tweetdeck