アーカイブ
地震のデータを取得する
最近地震の悪夢を見たので地震のデータを取ってみることにした。
気象庁のページで日付をURLで指定してデータが取れるので、Rubyの配列で震源地名、緯度経度、時刻、震源の深さ、マグニチュードを返すやつを作った
quake.rb
require 'rubygems'
require 'open-uri'
require 'kconv'
require 'date'
class Quake
def self.get(date=Date.today-1)
url = "http://www.seisvol.kishou.go.jp/eq/daily_map/japan/#{date.to_s.gsub('-','')}_list.shtml"
page = open(url).read.toutf8
page.scan(/<pre>(.+)<\/pre>/im).first.first.split(/[\r\n]/).map{|i|
i.strip
}.delete_if{|i|!(i =~ /^\d+/)}.map{|i|
tmp = i.split(/[^\d\.]+/)
{
:place => i.split(/\s+/).last,
:time => Time.mktime(tmp.shift.to_i, tmp.shift.to_i, tmp.shift.to_i, tmp.shift.to_i, tmp.shift.to_i, tmp.shift.to_i),
:lat => tmp.shift.to_i+tmp.shift.to_f/60,
:lon => tmp.shift.to_i+tmp.shift.to_f/60,
:depth => tmp.shift.to_i,
:magnitude => tmp.shift.to_f
}
}
end
end
if $0 == __FILE__
## ruby -Ku quake.rb
## ruby -Ku quake.rb 20120102
date = ARGV.empty? ? Date.today-1 : Date.parse(ARGV.shift)
p Quake.get(date)
end
結果
とりあえず毎日、地震データを蓄積してみよう。そのうち解析する。
動画からアニメgifを作る
動画からアニメgifを作るツールを去年作った。https://github.com/shokai/video2gif
元動画を何fpsで切り出すか、それを何fpsで結合するかを指定できるのでコマ送り的なgifも簡単に作れる。
上は、動画を1fpsで切り出して20fpsでつないだ。
video2gif -i input.mov -o output.gif -size 150x100 -vfps 1 -gfps 12
元の動画はこれ
ニコニコ学会とSFC-LTで発表した
最近作ったものを、去年の先月ニコニコ学会で発表した。緊張した。
http://live.nicovideo.jp/watch/lv72478844#6:27:05
スライドはこれ。動画がけっこう使われているので↑のニコ生から見たほうが良い。
あとSFC-LTで増井研について発表した。はじめてLTというものをした。がんばった。
すごいウケてたんだけど、動画がなかなか公開されないので俺が「すごいウケてた」って研究室で言うたびにハイハイみたいな目で見られるので早く公開してほしい。
http://www.ustream.tv/channel/sfc-lt
githubのリポジトリ数が100超えた
去年のゴールデンウィークの増井研合宿でgithubの使い方を山プルギス氏に教えてもらってから18ヶ月、ついに公開リポジトリ数が100個に達した。
ぜんぜんgithub上で他人のプロジェクトに首を突っ込んだりしていなかったので、100個のうちほぼ全てが自分で開始したプロジェクトという事になる。だいたい週1つのペースでリポジトリが増えていったわけか
100個目のプロジェクトは、notify-lightだった。
これは家の電灯が点いているかどうかを明るさのセンサーで監視して、Skypeのshokai_botというアカウントが俺に通知してくれるシステム。便利である。防犯的な意味で。
60行ぐらいのRubyスクリプト1ファイルだけで実装されている。
botからSkypeのグループチャットでこういうのが来る。
センサーを使うのもSkypeへの通知も、すでに便利なツールが作ってあって全部HTTPでできる。
ruby notify-light.rb -light http://localhost:8783/ -skype http://localhost:8787/という風に実行すればセンサーを定期的に監視してSkypeに送信できる。
■しくみ
CdSという明るさが検出できるセンサーをArduino等に適当に接続し、シリアル通信してMacやLinuxに送る。
serial-http-gatewayというプロジェクトを以前作ってあるので、これを使うとシリアルポートから受信したデータを溜めてjson形式で吐き出すHTTPサーバーが作れる。
読んだjsonにはタイムスタンプとセンサーの値(明るさが)入っているので、一定時間内の平均値を計算してノイズを消し、Skypeに通知する。
Skypeへの通知は先日作ったskype-chat-gatewayというのを使っている。
1年ぐらい前にskype-socket-gatewayというのを作ったけどwindows用だったのでもう使わなくなったし、socketよりもhttpから使えたほうが便利なのと、chat_idという概念がわかりにくいので1チャット1プロセス1portが対応するように作りなおした。
また、MacとLinuxでSkype APIを使う仕組みが違うので、それぞれ別々に実装した。
Linux版はまだちょっと微妙なんだけど、Mac版は出来がよくてWebブラウザからSkype Chatができるサーバーとかも付いているので便利です。
chrome拡張の開発
1年ぶりぐらいにchrome拡張を作っているのだが、開発しやすくなっていた。ymrlとmyatsumotoに教わった。
chrome://extensions か chrome://settings/extensionSettingsを開く。

右上の「デベロッパーモード」を押して、「パッケージ化されていない拡張機能を読み込む」ボタンを押す。フォルダを拡張として読み込める。
拡張の名前に(開発中)とつく。再読み込みを押すとリロードできる。
アイコンの左側の三角をクリックすると、background.htmlへのリンクがでる。ここでjsコンソールが出せるので、console.logを使ったりしてdebugできる。

最近のコメント