
iOSアプリ、Androidアプリのダウンロード数などの情報を集約してくれてメール通知などもしてくれるDISTIMOがAPIを提供してたのでmixpanelの時と同じようにTeam Dashboardに出してみました。

アプリ版ももっと頑張ろうというモチベーションが湧いて来ました。
iOSアプリ、Androidアプリのダウンロード数などの情報を集約してくれてメール通知などもしてくれるDISTIMOがAPIを提供してたのでmixpanelの時と同じようにTeam Dashboardに出してみました。
アプリ版ももっと頑張ろうというモチベーションが湧いて来ました。
Team DashboardはHTTP Proxyという機能があって、ブラウザ上からJSONのデータを引っ張ってきてパスを指定すればそれだけでウィジェットに表示できるので、合計数は怖話本体にJSON APIを作り、PVのGoogle Analyticsと収益のnendはそれぞれ引っ張ってきて(nendはmechanizeでスクレイプ)、heroku上のsinatraで自作のJSONを返しています。
グラフだけはganglia互換みたいなDatapointsを自分で用意する必要があります。でもdemoコードがついてるので実装はパクれば簡単。レンジ指定などは端折ってとりあえずMixpanelから日別の怖い話投稿数・サインアップ数・シェア数を取ってきて出すようにしてみました。
# app/models/sources/datapoints/mixpanel.rb:
module Sources
module Datapoints
class Mixpanel < Sources::Datapoints::Base
def get(targets, from, to, options = {})
client = ::Mixpanel::Client.new(
api_key: 'xxxxxxxxxxxxxxxxxxxxxxx',
api_secret: 'xxxxxxxxxxxxxxxxxxxxxxxx'
)
data = client.request('events', {
event: '["Share","Signed up","Posted story"]',
type: 'general',
unit: 'day',
interval: 30,
})
results = []
targets.each do |target|
datapoints = []
data["data"]["series"].each do |date|
datapoints << [data["data"]["values"][target][date], Time.parse(date).to_i]
end
results << {'target' => target, 'datapoints' => datapoints}
end
results
end
def available_targets(options = {})
["Share", "Posted story", "Signed up"]
end
def supports_target_browsing?
true
end
end
end
end
SNSログイン(Twitterでログインとか)をリリースしてから明らかにサインアップ数が増えてることが分かって嬉しい。
あとはWebとiPhone版とAndroid版の比率とか出したいので円グラフを出したいところです。
昨日Team Dashboardを設定して今日見てみたら…
もう、オマエら勝手に弄るなよなぁw
そもそもイントラ向けっぽいのでデータ変更系メソッドだけにBASIC認証かけときました。
# app/controllers/api/base_controller.rb:
module Api
class BaseController < ApplicationController
http_basic_authenticate_with name: 'admin', password: 'foo', only: [:create, :update, :destroy]
# some codes
end
end
これでよし。
追記:
弊社オフィスのダッシュボードは現Engine Yardの@yandoさんから貰ったEeePCで動かしています。@yandoさんとても助かっています。ありがとうございます。みんなEngine Yard使おう!(東京リージョンもあるよ!)
オフィスでGoogle AnalyticsとかMixpanelとかlogentriesとかディスプレイに表示させてたんですが、適当じゃなくてそろそろちゃんとした指標(ユーザー増加率とか)を出して共有したいなと思いました。自分で作るのは面倒なので探していたらTeam Dashboardがrails + backborne.jsで出来てて手頃そう。(qnypさんのブログで知りました)
$ git clone git://github.com/fdietz/team_dashboard.git
$ bundle
$ cp config/database.example.yml config/database.yml
$ rake db:create && rake db:migrate
$ rake populate
$ rails s
デフォルトはmysqlなのでherokuで動かしたい場合はpostgresql-adapterを追加。
# Gemfile:
group :production do
gem "activerecord-postgresql-adapter"
end
ajaxで投稿してその結果を調べるみたいなテストでテストが通ったり通らなかったりする。投稿が反映される前に見に行くことがあるから。
feature "Posting a comment", js: true do
scenario "as signed user" do
comment_id = Comment.last.id + 1
within("#new_comment") do
fill_in 'comment[body]', with: 'コメントのテスト'
end
click_button '規約に同意してコメントする'
sleep 1 # PLZ WAIT!! FIXME!!
find("#comment_#{comment_id}").should have_content('コメントのテスト')
end
end
CapybaraのREADMEにも書いてあるけどデフォルトは2秒待つようだけど5に変えたら行けた。(sleep 1は取りましたw)
# spec/spec_helper.rb:
RSpec.configure do |config|
Capybara.default_wait_time = 5
end
Facebook OAuthとかで証明書ちゃんと設定しないとSSLのエラーが出る。
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
certifiedがgemの中に証明書持ってるので使うと楽。
$ gem install certified
ceder stackバージョン。
ほぼ下記のまんまです。
Creating Static Sites in Ruby with Rack | Heroku Dev Center
$ mkdir -p public/{images,js,css}
$ touch site/{config.ru,public/index.html}
# Gemfile:
source :rubygems
gem 'rack'
# config.ru:
use Rack::Static,
urls: ['/images', '/js', '/css'],
root: 'public'
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
}
komagata.orgはまんまコレなのでソースへのリンクも置いておきます。heroku便利ですね。
debian(wheezy)でお手軽なiptablesのフロントエンドはないかなと、Debian WikiのFirewallのページを探していたらufw(Uncomplecated Firewal)が便利そうだったので使ってみました。(これ絶対元々はUbuntu Firewallとかそういう名前だっただろう。汚い、流石Ubuntu汚い)
$ sudo apt-get install ufw
ufwは単なるiptablesのフロントエンドでufw show raw
でiptablesの生ruleも表示できるそうです。良さそうな予感。
$ sudo ufw default deny
$ sudo ufw allow 10022
$ sudo ufw allow 80/tcp
$ sudo ufw enable
あら簡単。(sshは10022ポートに変更してるので)
何回来たらrejectとか細かい設定もできるみたいですが、インフラ弱者の俺にはこれでも十分過ぎる程です。
その昔あったMojavi Japan(mojavi.net)というサイトがDreamhostから発掘されたので移行しようと思ったんですが、XOOPSが古過ぎて動かん・・・。
移行先は素敵なさくらVPSにDebian Wheezyを入れてるのでPHPが5.4.4と眩いばかりのバージョンで動きやしない。その点WordPressはかなり古いバージョンだったのに上書きするだけでバージョンアップが走った。すげえ。
どなたか移行方法ご存知の方がいらっしゃったら教えていただけると嬉しいです・・・。わからなかった場合はAmazon Glacier行きの予定です。