2013年 2月 の投稿一覧

黙々

朝から病院に行ったり図書館行ったりしていた。図書館ではこの本を借りた。

午後からREMPの開発。REMP自体に幾つか機能を追加しようとしていて黙々とAPI開発など。
結構面白い機能になりそうなので、ささやかにご期待ください。

朝、軽く外が白くなっていましたが、すぐに素敵な青空。*1

*1:久しぶりにものすごくどうでもいいことを書いた

ImpasというAPIサービスを作った

個人でささやかにWebサービスを運営されている方向けにImpasというAPIサービスを作りました。

このサービスは「twitter上でのツイート数、facebook上でのいいね数、はてなブックマークでのブックマーク数で簡単にランキングを生成する」ことができるAPIサービスです。
以下、概要図。

About of Impas

Webアプリケーション開発者はImpasのAPIを使ってImpasにランキング対象にしたい(各種ソーシャルパラメータを計測したいURL)を登録することで定期的にImpasがURLをクロールしてパラメータを取得して記録します。その記録を利用してImpasはランキングを生成するので、再びWebアプリケーション開発者はAPIを通じてランキングを取得することができます。
RubyクライアントをGem(impas-client)で用意していますので、以下の様な形で利用することができます。

URLの登録例

# クライアントの設定
require 'impas-client'
client = Impas::Client.new()
# URLを集計対象へ追加
IMPAS_GRP_KEY = ******
client.add_url(
IMPAS_GRP_KEY,
"http://www.youtube.com/watch?v=2HQkugdXyHY"
)
# ランキング取得
fbRank = client.ranking IMPAS_GRP_KEY, "fb"
twRank = client.ranking IMPAS_GRP_KEY, "twitter"
hatenaRank = client.ranking IMPAS_GRP_KEY, "hatena"

あるいは、以下の様に直接POSTやGETリクエストでURLの登録やランキング情報の取得もできます。以下ははてなブックマークのトップ10ランキングを取得する場合。

http://impas-hideack.sqale.jp/api/ranking/IMPAS_GRP_KEY/hatena/10

ランキングはJSONで取得されます。

{
"result": "ok",
"explain": "",
"description": {
"ranking": [
{
"callcount": 16,
"fb": 0,
"hatena": 809,
"tw": 17643,
"url": "http://www.youtube.com/watch?v=MGt25mv4-2Q"
},
{
"callcount": 12,
"fb": 0,
"hatena": 368,
"tw": 10591,
"url": "http://www.youtube.com/watch?v=cfpX8lkaSdk"
},

ドキュメント等々不足している感はありますが、もし興味がある方が居られたら是非ご利用くださいませ。

ロゴ

REMPチームでお馴染み(?)の@があっという間にロゴ画像を作ってくれましたが、何故か大王イカなのかは昨今の話題からお察しください。*1
あと、サービス名の"Impas"はドラゴンクエストの魔法のインパスから拝借しました。

Impas

*1:あっという間に作ってくれたのですが、それでこのクオリティというのがすごい…

PadrinoアプリでNewrelic

New relic

New relicはパフォーマンス監視サービスでRackアプリケーションの場合、用意されたnewrelic_rpmというGemをインストールするのみでNew relicが用意するダッシュボードでページが表示されるまでのパフォーマンスの詳細な内訳(Ruby自体の処理時間、DBが要した処理時間やスロークエリ等)を知ることができます。
アカウント作成は無償でもできて、無償の場合、1アプリケーションの直近30分のパフォーマンスを知ることができます。
今回はSqaleで動かしているPadrinoアプリのパフォーマンス監視を行うまでの手順を整理します。

アカウントを作成する

Newrelicを開くとトップページに "Create Your Free Account!" のリンクがあるのでここからアカウントを作成します。

newrelic.yml をダウンロードする

アカウントを作成してログインするとnewrelic用の設定ファイル newrelic.yml をダウンロードできるのでダウンロードしてPadrinoプロジェクト下のconfigディレクトリに配置します。

Gemfileにnewrelic用のライブラリ追加

Padrinoアプリで利用しているGemfileにnewrelic用のクライアントをインストールするための2行を追加。

# Padrino Stable Gem
gem 'padrino', '0.10.7'
# for newrelic
gem 'padrino-rpm', :git => "https://github.com/Asquera/padrino-rpm.git"
gem 'newrelic_rpm'

2013.2.24追記

  • ここでポイントは gem 'padrino'〜 の下にnewrelic用のgemを追加することです
  • padrino読む前に追加するとエラーになります。

Unicorn用の設定追記

Sqaleでは標準でアプリケーションサーバunicornなのでこちらを参考にして起動時の設定ファイルに追記します。

# config/boot.rb
::NewRelic::Agent.after_fork(:force_reconnect => true)  # Unicorn用に追加
Padrino.load!

実行結果

以上の設定を行ってSqaleへデプロイします。
そうすると正常に稼働すれば、数分後にnew relicのダッシュボードにパフォーマンス情報が表示されます。

また、組み込んだPadrinoアプリ上の log/newrelic_agent.log からも確認できます。

sqale@impas-hideack-1:~$ tail -f current/log/newrelic_agent.log
[02/10/13 17:13:15 +0900 impas-hideack-1 (24017)] INFO : Connected to NewRelic Service at collector-5.newrelic.com:80
[02/10/13 17:13:15 +0900 impas-hideack-1 (24017)] INFO : Reporting performance data every 60 seconds.
[02/10/13 18:13:03 +0900 impas-hideack-1 (24175)] INFO : Dispatcher: sinatra
[02/10/13 18:13:03 +0900 impas-hideack-1 (24175)] INFO : Application: Impas
[02/10/13 18:13:03 +0900 impas-hideack-1 (24175)] INFO : New Relic Ruby Agent 3.3.5 Initialized: pid = 24175
[02/10/13 18:13:03 +0900 impas-hideack-1 (24175)] INFO : Agent Log at /home/sqale/current/log/newrelic_agent.log
[02/10/13 18:13:13 +0900 impas-hideack-1 (24175)] INFO : Resolved collector.newrelic.com to 204.93.223.153
[02/10/13 18:13:14 +0900 impas-hideack-1 (24175)] INFO : Resolved collector-5.newrelic.com to 204.93.223.139
[02/10/13 18:13:14 +0900 impas-hideack-1 (24175)] INFO : Connected to NewRelic Service at collector-5.newrelic.com:80
[02/10/13 18:13:14 +0900 impas-hideack-1 (24175)] INFO : Reporting performance data every 60 seconds.

機能を追加した際等々の折にアプリケーション側のパフォーマンス変化を気にしたい場合などに気楽に確認できるため便利です。

twitter botに機能追加 – REMPその後(その3)

REMPには@ というtwitterbotがあって定期的に今までもREMP上で直近再生されたYoutube動画をツイートさせていたのですが、最近昨日を足して以下の様な内容をツイートさせる様にしました。

内容的には直近再生された動画ではてなブックマーク数が大きいものでソートしてランキングとしてツイートさせています。例えば2月6日だと以下の様な具合。


眺めていると最近注目されている曲が上がって面白かったりします。 興味がある方は是非、@のフォローを!
あと単純な様ですが、ランキングを作るためのパラメータ収集をする仕組みは別途作ったので紹介はまた今度。。。

1月に読んだ本

新しく読んだ本は計7冊。 (しかもレシピ本も入っているので少ないですね)
お休みの間は以前読んだ本を改めて読むことが多かった感。


hideackの本棚 - 2013年01月 (7作品)


powered by booklog

REMPのドメイン変更

今日の定時後に @ とREMPのサービスドメインを http://www.remp.jp/ に変更する作業を一緒に行いました。
今までは、アプリケーションサーバ(Sqale)にremp.rockf.esという独自ドメインを充てて動いており、remp.jpドメインからはリダイレクトされていましたが、今度からは逆でremp.jpが主ドメインになります!

f:id:hideack:20130201235232j:plain

実はステッカーは以前から www.remp.jp だったのでステッカーに揃いました。