HipChatに対応してるから楽。というよりPivotalのようにHipChatに対応してないのは少数派。CircleCIはHeroku Addonなら今のところprivate reposも無料なのでお得。

  • HipChatのAPI Auth Tokensのページでauth tokenを作成しとく。
  • HipChatのRoom API IDsのページで通知したいRoomのIDを知る。
  • https://www.pivotaltracker.com/projects/プロジェクトID/integrations

    Pivotal側がちょっと分かり辛いんだけど、上記のようなURLにあるActivity Web Hookにroom_idとauth_token付きで登録する。(v5では動かないのでv3にする必要があるので注意。)

    https://api.hipchat.com/v1/webhooks/pivotaltracker/?auth_token=トークン&room_id=ルームID

    HipChatのPivotal Tracker Integrationを参照すればignoreなどもっと細かい設定ができることがわかる。

以前はコレだったけど、

puts "-----------------------------------"
puts @posts.inspect
puts "-----------------------------------"

railsのdebugの疑問 - komagata

今はputsしてPowのログを見る方式にした。(ログを見るのはtailかConsole.app)

# app/controller/home_controller.rb:
class HomeController < ApplicationController
  def index
    puts 'foo'
  end
end

Powの標準出力と標準エラー出力はlogに向いてるのでただputsするだかけなのは楽だ。

アプリの一部では使うからjbuildrのgem入れてるけど基本的にscaffoldでjson使いたくない場合。

# config/application.rb:
module Rails
  class Application < Rails::Application
    config.generators do |g|
      g.jbuilder false
    end
  end
end

指定したIPからの接続しか受け付けない(古いタイプの)システムと連携したい場合にHerokuだと困る。

ProximoというAddonは固定IP付きのproxyを提供してくれる。rest-clientとかで接続するときにproximoの提供するproxyを設定してリクエストすればOK

require "rest-client"

RestClient.proxy = ENV["PROXIMO_URL"]
res = RestClient.get("http://api.someservice.com/endpoint")

puts "status code", res.code
puts "headers", res.headers

これで固定IP + https + 証明書が必須なシステムとかとも連携できる。httpsの通信をhttp proxy経由で可能かな?とちょっと心配だったけどproxyは中身知らんぷりでそのまま転送するので大丈夫。

proximoはリクエスト数がPlan毎に決まってるので必要なリクエストでだけproxy経由して節約する。

$ curl -x http://proxy.com:8080 http://example.com

port指定しないとデフォルトでは1080番にアクセスしに行く。知らないとハマって死ぬ。

おまけ

SSLの証明書とパスワード付きでアクセスする。cert.pemはprivate keyとclient certをconcatinateしたもの!これを知らない者は死ぬ!

$ curl -x http://proxy.com:8080 -E cert.pem:password http://example.com
% brew update
% brew upgrade ruby-build
% CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl` --with-readline-dir=`brew --prefix readline`" rbenv install 2.1.0
% rbenv global 2.1.0
% gem install bundler rbenv-rehash
% rbenv rehash

バージョンのパッチレベル表記がシンプルになったのは気持ちいいですね。

サーバー台よりS3+CloudFront代の方が高いという自体になっているので、どーせAppサーバー1台だから怖話の画像ファイルをそのままストレージにおいてみた。

capistranoでおなじみの安心構成なのでS3のファイルをscpするだけで完了。

stop and bootするぐらいでは別のストレージになってるなどはなかったけど、柔軟に構成を変えられるのが売りだとおもうのでそういう場合に「あれ、あの画像どこいった?」とならないように注意が必要。

しかし、EYC外のアプリを1台インスタンスにポコっと持ってきてもとりあえず動くのでそこからS3化考えるってのも入り方としては良さそうに思いました。

元から入ってるrubyが最新版ですがsudoとかで壊すとやっかいなので。

% brew install readline openssl
% CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl` --with-gcc=clang" rbenv install 2.0.0-p247
% rbenv global 2.0.0-p247
% rbenv rehash
% gem install bundler rbenv-rehash

会社(FJORD, LLC)で怖話というサイトを2年やってきました。

僕らは2人の会社なので月に70万の利益があれば諸々の雑費を含めて運営していけると考えました。そして開始時に今度のサービスは2年はやろう。SEOは我慢だ。と思って2013年の9月に単月で70万の利益があったらプロジェクトは成功。達しなかったら失敗と定義付けてやってきました。

そしてその2013年の9月が来て結果は失敗となってしまいました。それについてはFJORDのブログに書きました。

【失敗】怖話2年間の総括【無念】 « 合同会社フィヨルド

ブログにも書きましたが感想はとにかくお金稼ぐの難しいなぁという感じです。

あとは、これは俺がアホだということもありますが、技術面のWebサービスのマネタイズやプロモーションに及ぼす影響の余りの無さにびっくりしました。

Webサービスで技術が優れているというのは、下記のような影響を与えます。

  1. バグが少ない
  2. 新機能登場が競合に比べて早い(競合が存在したとして)
  3. 長年やった場合にコストが少ない(技術的負債をすくなくできる)
  4. 表示がちょっと速い
  5. 大規模アクセスに耐えられる

まだまだ怖話程度の規模では関係無いものばかりです。

僕がエンジニア方面の動きを頑張ってもあまり意味が無いのがしんどいですね。

いろいろな背景の人に教えを請いに出かけてみようかなと思います。