ASIHTTPRequestをXcodeで使用した際にハマった。

ASIHTTPRequest
https://github.com/pokeb/asi-http-request/

ASIHTTPRequestはObjective-Cで書かれたCFNetwork APIのラッパーです。

Objective-Cで書かれたライブラリの非同期通信部分で採用されています。
WaterflowViewとか。
https://github.com/aceisScope/WaterflowView

ハマった部分

http://allseeing-i.com/ASIHTTPRequest/Setup-instructions
上記のリンクに書いてあるマニュアル通りに進めていたのですが、

"_CATransform3DMakeRotation", referenced from:~

といったエラーが出たので、検索すると下記の記事に行き着いた。

http://stackoverflow.com/questions/7957324/nswindowflipper-build-error


ASIHTTPRequestのマニュアルに書かれていない、”QuartzCore”を追加してコンパイルすると、問題なくコンパイル出来ました。


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/

RailsでZepto.jsを使う方法。

RailsでZepto.jsを使う方法。

Gemfileに下記を追加

gem "zepto-rails"
gem 'rails-behaviors'

app/assets/javascripts/application.jsに下記を追加
(スマホ等でjsを切り分けるのであれば、新たにmobile.js等を作成して)

//= require zepto
//= require rails

これでok。

gem rails-behaviorsがjquery-ujsの仕事をしてくれます。

[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/

coderwallのアクティビティが更新されずバッジが増えない場合の対応

最近coderwallにハマっています。
githubの活動が"バッジ"という形で視覚化されるだけで、もの凄くモチベーションが上がりますねこれ…。

僕のアカウント
http://coderwall.com/camelmasa

Team kamado
http://coderwall.com/teams/4f45ecc8158f28000d000001


タイトルにある通り昨夜まで、アクティビティが更新されずバッジが増えない状態でした。
一部のユーザーで発生している様です。

その旨をメールしたのですが、数日返事が無かったので、
最近になってolarkを利用したサポートをしているのに気づいたので、チャットで

Hi!

My coderwall account is "camelmasa".
http://coderwall.com/camelmasa

The information of the badge is not updated.
Do any my account have a problem?

と書いたら、”何か問題発生してるみたいだから、対応するよ。終わったらメールするからメールアドレス教えてくれ"と言われたので返事まっていました。

すると1時間もしないうちに返事が返ってきて、coderwallにアクセスするとバッジが更新されていました。

同じ症状でお悩みの方がいれば、olarkで話しかけてみると対応してくれますよ。

Matt++

補足

Mattさんとやりとりした後、下記のブログにたどり着いてスター押してたのだった。
http://ptech.g.hatena.ne.jp/noromanba/20120525/1337964509


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/

gem jewelerについてメモ。

gem jewelerについての詳細は割愛。

2012年6月現在、gem install jewelerでインストールしたjewelerはGemfileが古いため、インストール出来ませんでした。

2ヶ月前に修正したjewelerのインストール方法を忘れてしまったのでメモしておきます。
https://github.com/camelmasa/jeweler

1 git clone git@github.com:camelmasa/jeweler.git
2 cd jeweler
3 bundle install
4 rake build
5 gem install -l pkg/jeweler.gem


Gemfileの差分は下記。
https://github.com/camelmasa/jeweler/commit/8f12543354953a9477eec9a168ebb83629d4e855


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/

gem heroku_sanでundefined method 'y' for main:Objectと表示される場合の対策(その2)

ISSUES 90
https://github.com/fastestforward/heroku_san/issues/90



これで修正出来ます。

https://github.com/camelmasa/heroku_san/commit/cf592840619928a4a972381fc64e4770ceb8bf40

tast removeが追加されてますが、def yの部分を追加すると出力がYamlになります。
(id:mat_akiさんありがとう御座います! https://twitter.com/mat_aki/status/208123078063046657)


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/

gem heroku_sanでundefined method 'y' for main:Objectと表示される場合の対策

ISSUES 90
https://github.com/fastestforward/heroku_san/issues/90



これで修正出来ます。

https://github.com/camelmasa/heroku_san/commit/7719967bb1b1dee5592caad68f86cc33e4c0df3d


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/

gem heroku_sanでHerokuをもっと便利に扱う方法。

セコンさん (id:secondlife)がcookpadの開発部長になられましたね。おめでとうございます!
並々ならぬ努力の賜物なのですよね。負けてられません!

さてさて、去年の暮れ頃からPHPからRubyを書く様になって、様々なTipsが溜まってきたので、コンスタントに記事書きたいなと思っています。
では本題。

gem heroku_san って何?

現在弊社サービスClipieはHerokuで運用されています。

Clipie
http://clipie.it/

Heroku
http://www.heroku.com/

そこで、日々clipieを改善、運用している訳ですが、もっと便利にherokuを使いこなせる様な物がないのかなと調べていまして、今回の記事のタイトルであるheroku_sanというgemを発見しました。

gem heroku_sanについて調べましたので、説明します。

gem heroku_sanについて

gem heroku_sanはHerokuとのやりとりを支援するgemになります。
公式のgem herokuがありますが、サービスの運用面での支援に向いたgemになります。

RubyGems
http://rubygems.org/gems/heroku_san

Github
https://github.com/fastestforward/heroku_san

下記インストール方法、使用方法について (Github のREADMEにも書いてあります)

インストール方法

Rails 3の場合はGemFileに下記を追加

group :development do
  gem 'heroku_san'
end

その後bundle installを行います。

下記コマンドを行い、config/heroku.ymlを作成

rails generate heroku_san

heroku.ymlで各アプリのstackや環境変数を定義する事が出来ます。

作成されるheroku.ymlは下記

#
# Format:
# 
# <stage name>:
#   app: <Heroku app name>
#   stack: <Heroku stack, optional>
#   tag: <git tag pattern, optional>
#   repo: <git repository, optional>
#   config:
#     - <Heroku config:var name>: <Heroku config:var value>
#
production: 
  app: awesomeapp
  stack: bamboo-ree-1.8.7
  tag: production/*
  config:
    BUNDLE_WITHOUT: "development:test"
    GOOGLE_ANALYTICS: "UA-12345678-1"

staging:
  stack: cedar
  app: awesomeapp-staging
  config: &default
    BUNDLE_WITHOUT: "development:test"

demo: 
  app: awesomeapp-demo
  config: *default

(Rails2, SInatraの方法は割愛)

これでインストールは完了です。
次に使用方法を説明します。

使用方法

Github上のUsageのコピーですが、heroku.ymlに記述されるアプリに対して下記の様な事が可能になります。

rake heroku:addons                # Install addons for the application.
rake heroku:addons:local          # List configured addons, without installing them
rake heroku:apps                  # Lists configured apps
rake heroku:apps:local            # Lists configured apps without hitting heroku
rake heroku:config                # Add config:vars to each application.
rake heroku:config:list           # Lists config variables as set on Heroku
rake heroku:config:list:local     # Lists local config variables without setting them
rake heroku:config:rack_env       # Add proper RACK_ENV to each application
rake heroku:console               # Opens a remote console
rake heroku:create                # Creates the Heroku app
rake heroku:create_config         # Creates an example configuration file
rake heroku:db:migrate            # Migrates and restarts remote servers
rake heroku:db:pull               # Pull database from stage to local dev database
rake heroku:deploy[commit]        # Pushes the given commit, migrates and restarts (default: HEAD)
rake heroku:deploy:after          # Callback after deploys
rake heroku:deploy:before         # Callback before deploys
rake heroku:deploy:force[commit]  # Force-pushes the given commit, migrates and restarts (default: HEAD)
rake heroku:logs                  # Shows the Heroku logs
rake heroku:logs:tail             # Tail the Heroku logs (requires logging:expanded)
rake heroku:maintenance           # Enable maintenance mode
rake heroku:maintenance_off       # Disable maintenance mode
rake heroku:maintenance_on        # Enable maintenance mode
rake heroku:push[commit]          # Pushes the given commit (default: HEAD)
rake heroku:push:force[commit]    # Force-pushes the given commit (default: HEAD)
rake heroku:rake[task]            # Runs a rake task remotely
rake heroku:remotes               # Add git remotes for all apps in this project
rake heroku:restart               # Restarts remote servers
rake heroku:share                 # Adds a collaborator (asks for email)
rake heroku:unshare               # Removes a collaborator (asks for email)
rake heroku:stage:all             # Select all Heroku apps for later command

環境変数がheroku.ymlで管理出来、heroku.ymlで実質アプリ名のエイリアスが設定出来る等、運用面をサポート出来る点は便利です。
(個人的には環境変数の設定をyamlで管理出来るの嬉しい!)

なので、下記の様に扱う事が出来ます。

rake staging deploy # => ステージングにアプリをデプロイ(git push heroku master)を行い、マイグレーションを行う。(heroku run rake db:migrate)
rake all heroku:config # => heroku.ymlに記述されている全てのアプリの環境変数を設定


これだけでも便利なのですが、(個人的にやってみたい事があり)1つのアプリを複数のHeorkuアプリにデプロイしたい場面が発生しました。
その際、各アプリに対して直列で通信を行う為、何十というアプリに対してデプロイを行っていては日が暮れてしまいます。

なので、マルチプロセスでheroku_sanが扱える様にしてみました。
(これが言いたかったが為に記事書いたんだろって突っ込んだらダメですよ。)

gem heroku_sanの並列化

gem heroku_sanのcontributor Elijah Millerさんからアイディアを頂きながら、parallelオプションを作成しました。
(Rubyでマルチプロセス、マルチスレッドプログラミングはgem parallelが超便利!セコンさんの記事が分かり易いです。http://subtech.g.hatena.ne.jp/secondlife/20110927/1317123109 )

gem heroku_san (parallelオプションサポート)
https://github.com/camelmasa/heroku_san

コードの変更点
https://github.com/camelmasa/heroku_san/commit/4dbb83c204af3b7d3058869bc8fc8c4ae5d418ec


下記の様にコマンドを実行出来ます。

rake parallel heroku:create # => heroku.ymlに記述されているアプリを全て作成
rake parallel heroku:deploy # => heroku.ymlに記述されているアプリを全てデプロイ
rake parallel heorku:remove # => heroku.ymlに記述されているアプリを全て削除

30アプリ位を一瞬で作成 -> デプロイ出来るのは感動です!
Heroku使いの人に是非触って欲しい。

まとめ

gem heroku_san便利なので、Heroku使われてる方は1度試されてはと思います。
heroku_sanの並列化について、嬉しい人は少数派だと思われますが ;)

並列で思い当たるのは、何か時間がかかる処理を何十というHeorkuアプリで動かしたり出来ますよね。
Dos攻撃や、簡易的な集計処理等も無料で出来ますね。


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/