らいふログ

VPSにて運用中

Twitter-OAuth-iPhone


■ Twitterクライアント作ってた

Twitterクライアントを作る為に、利用したライブラリ。

簡単にOAuthに対応できたので便利に使わせてもらってた。

■ 罠にはまった…

Twitter APIを叩く部分が別ライブラリ(MGTwitterEngine)だったお陰ではまった…。

■ 何が起きた!?

どうはまったかというと

リプライ時にin_reply_toを設定しているのに反映されない

という現象。

■ 何がまずい?

これが反映されないと、どのツイートに対する返信なのかわからない…。

■ 試行錯誤

色々調べてみるとunsigned long(32bit)なのがマズイらしい。

Twitter自体のツイート数がすでに32bitの範囲を超えていてオーバーフローしてた…。

本家のMGTwitterEngineだと修正されているんだけど、こちらのライブラリには未反映…。

■ というわけで

githubに公開されているソースだったから、フォークして反映した。

・idがオーバーフローしていない事
・in_reply_toが設定できる事

は確認済み。

■ 公開

http://github.com/taka0125/Twitter-OAuth-iPhone
にあるので、同じ問題でお困りの人は使ってみて下さい。

※libxmlを使う場合は上手く行くことは確認してます。


nginx+passenger+rvm+ruby 1.9.2+rails 3.0


タイトル通りの環境をMac上に作りました。
手順は以下の通り。(portsはインストール済みとして)

1. ruby・gemのインストール

$ sudo port install ruby rb-rubygems
$ sudo gem update --system

2. rvmインストール

$ sudo gem install rvm
$ rvm-install

.bashrcに以下の記述追加

if [[ -s $HOME/.rvm/scripts/rvm ]] ; then source $HOME/.rvm/scripts/rvm ; fi

3. ruby 1.9.2インストール

$ rvm install 1.9.2
$ rvm use 1.9.2 --default

4. rails 3インストール

$ gem install rails

sqlite3を使う場合は、

$ gem install sqlite3-ruby

も実行しておく。

5. passenger+nginxインストール

$ rvm 1.9.2 --passenger
$ rvm 1.9.2
$ gem install passenger
$ rvmsudo passenger-install-nginx-module

6. アプリ作成

$ mkdir /tmp/rails
$ cd /tmp/rails
$ rails new sample
$ cd sample
$ bundle install ./vendor/bundle
$ rails generate controller test index

7. nginxの設定ファイル修正

$ sudo vim /opt/nginx/conf/nginx.conf
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    passenger_root /Users/ユーザ名/.rvm/gems/ruby-1.9.2-p0/gems/passenger-2.2.15;
#    passenger_ruby /Users/ユーザ名/.rvm/rubies/ruby-1.9.2-p0/bin/ruby;
    passenger_ruby /Users/ユーザ名/.rvm/bin/passenger_ruby;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        root /tmp/rails/sample/public;
        rails_env development;
        rails_env development; # 必要に応じて
    }
}

8. nginx起動&動作確認

$ sudo /opt/nginx/sbin/nginx

ブラウザから

http://localhost/test/index

にアクセスしてエラーがでなければ完了!

no such file to load -- bundler

って、出る人はpassenger_rubyが間違っていませんか?

参考にした情報は、
RVM環境でRackとPassengerを動かす
passenger公式


1時間でツイッターサービスを作ろう!をその通りに作ったら動かなかったので…


1時間でツイッターサービスを作ろう!

を見て作ってみよう!と思った。
で、色々と試行錯誤して
http://gozaru.heroku.com/
を作ってみた。

で、何箇所か修正が必要だったのでメモとしてのエントリー。

railsとかgemのパッケージのバージョンで違うのかもしれないけど、
つまずいた人は試してみるといいかも?

1. messages_controller.rbのcreateメソッド内
current_user.twitter.postの第一引数が違う。

'statuses/update.json'

から

'/statuses/update.json'

にした。

2. index.html.erb内のform_tag

<% form_tag %>

から

<% form_tag do %>

にした。

3. public/index.htmlの削除
これを削除しないと、

http://xxx.heroku.com/

にアクセスした時に、

/messages

が表示されない。

こんな感じで修正したら動いた!!


nginx


nginx(エンジンエックス)を導入してみました。

大したアクセスがないのに、リバースプロキシとして利用しています。

apacheでリバースするより圧倒的にメモリ効率良さそう。

経過を見守って行こうと思います。


Web開発者のための大規模サービス技術入門


今、読んでいる本です。とても読み易いです。

細かい技術的なものは専門書に譲り、
勘所の説明などが充実しています。

実際、大規模サービスを運用しているエンジニアから見ると
物足りない感じもありますが、
基礎をしっかりと勉強するにはよさそう。

新人の人が入ったら読ませてあげたい本です。


Capistranoの実行がやたら遅い…。


最初はsshかな?と思ったので

/etc/ssh/sshd_config

UseDNS no

とかやったんだけど効果なし。

で、色々とググッてみたらRuby自体が悪いのでは?という記事を発見。
http://arika.org/diary/2009/07/31/ruby-1-8-7-pxx-vs-capistrano-2-5-x

バージョンを調べてみると

ruby-1.8.7-p174

見事に、この記事で現象が出ると言っているバージョンだ…。

というわけで、アップグレード(ruby-1.8.7-p299)したら治った!!


WiMAX


埼玉の実家でよく使ってるんだけど
先月くらいは、0.5Mbpsくらいだったのが1.3Mbpsくらいになった。

ちょっとずつ改善されてきてる?

個人的には、イーモバイルより期待しているので頑張って欲しい!

ちなみに、伊香保温泉に行った時はイーモバイルの圧倒的勝利…。


VPSへの移行


終わったよー。

PostfixAdminとか色々弄る予定。

さくらはもう解約を勧めました。


VPS


月額490円のVPSがあったので、さくらから移行します。

色々と弄りたいので、VPSの方が都合いいかなと。


iOS4


明日にはダウンロードできる状態になるんですね。
って、GM版使ってるからあまり差はないんだけど…。

明日には、対応アプリも続々と公開されるのかな??