トレタで一緒に働いてくれるRails/iOSエンジニアを探しています

Posted filed under Ruby on Rails, Toreta.

(おだんみつは付いてきません 提供:geechs)  昨年末にトレタをリリースして以来、ユーザが順調に伸び、エンジニアが二人ではどうにも困ってきたので、サーバサイドのRails、クライアントのiOSエンジニア、それぞれ1名ずつ一緒に働いてくれる人を探しています。  業務内容としては、トレタの開発、運用全般になります。iOS側はプロダクトオーナーの中村やUXデザイナーと一緒にクライアントアプリの設計・開発、Rails側はサービス全体の設計・開発から運用までを行います。  Railsは私とAutoPagerize作者の沢田がいるので、教えながらもできるのですが、現在iOSエンジニアは社内にはいないので、結構一人でがんばれる人にお願いをしたいです。  いきなり面接!っていうのも堅苦しいので、軽くでも興味のある方は、豚カツか豚しゃぶでも一緒に食べませんか?  勤務地は目黒で、各種条件や開始時期などは結構柔軟に相談に乗ります。  masuidrive@toreta.inにメールか、FBで友達申請してメッセージで、「豚が食べたい」とメッセージをください。GitHubやソーシャルアカウント、自分で作った何かも一緒に貰えるとうれしいです。  とりあえず、「腹減ったから豚でも食べよう」と思っているRails/iOSエンジニアからの気軽な応募をお待ちしています。

新会社で一緒に働いてくれるエンジニアを探しています

Posted filed under Ruby on Rails.

 7月に設立した株式会社トレタでは、フルタイムのRuby on Railsエンジニアを募集しています。株式会社トレタの設立趣旨は、代表の中村の書いたブログを読んでいただけるとご理解いただけるかと思います。 私はそのトレタで、CTOという立場でバリバリとコードを書いています。(ミイルを運営するFrogAppsとは兼任となっています) トレタでは、iPadを用いたB2Bのサービスを構築中です。このサービスのサーバサイドのコードを一緒に書いてくれるノリの合うメンバーを募集しています。

DataMapper 0.10.1をmerbで使う為のパッチ

Posted filed under Ruby on Rails.

先日、DataMapper 0.10.1がリリースされました。 DataMapperを使う上で致命的だった、count問題も直っているようです。 しかし、そのままだとmerb 1.0.12ではエラーが出て動きません。 そのときは、下記のコードを適当な所で実行してください。 class Merb::Orms::DataMapper::Associations < Merb::BootLoader def self.run DataMapper::Model.descendants.each do |model| include DataMapper::Resource touch_child_keys(model) end end def self.touch_child_keys(model) model.relationships.each_value { |relationship| relationship.child_key } end end 引用元

Webでの非同期処理を考えてみる [長い記事だけどコメント求む!]

Posted filed under iPhone, PhotoShare, Ruby on Rails.

Photo by harry harris  いまPhotoShareのサーバの実装を大きく変えようとして悩んでいます。 (参考: Life is beautiful: マルチスレッド・プログラミングの落とし穴、その2)  Rails 2.2でThread safeになるとか、NeverBlockで12倍速くなるっていう話もあるんだけど、負荷が上がればレスポンスが悪くなるのは、どうしようもない。マシンを増やせば解決できる部分もあるけど、マシンを増やせばコストは上がる。  Life is beautifulで書かれていますが、確かに全部の処理を同期的に行う必要はないんですよね。  PhotoShareでも、既にいくつかのページは非同期にerbを生成して、それをRailsとerubisで読み込んで実行しています。  しかし、Railsだけではこういった非同期の処理やviewの一部を事前に生成するという処理ができないので、この処理は別途プラグインを作って実現しています。 高速化の為にはキャッシュを使おう  Railsで高速化を考えていくと、特にキャッシュが重要になります。たとえばブログエンジンで、RSS Feedを生成するアクションがあったとします。

EventMachineを使ったクローラの書き方の足がかり

Posted filed under Ruby on Rails.

Photo by pnoeric  いま、PhotoShareで使うために、高速なEvent Driven方式のネットワークライブラリ、EventMachineを調べています。  このEventMachine、ほとんどの場合はサーバを作るときに使われていますが、HTTPクライアントの機能も実装されており、実はクローラの様な物を作るときにも利用することができます。  今回はこっちを使いたかったのですが、ググってもほとんど情報が出てこなかったので、Seattle.rbで相談したところ、Aaronさん(RubyKaigi 2008でプレゼンしているのをustで見てコンタクトしました)からサンプルが貰えたので、それを元に、同時接続する様にしてみました。  このコードだけだと役には立ちませんが、情報が少なかったので参考に上げておきます。

RailsでMemcachedが落ちていてもエラーにならない方法

Posted filed under Ruby on Rails.

Photo by masuidrive76  Railsで高速化するためには、Memcachedによるキャッシュが欠かせないですが、もしmemcachedが落ちてしまうと、サービス全体でエラーが発生してしまうのが、気になるところでした。  Takiuchiさんと話をしていて、fiveruns-memcache-clientを使うことで、memcachedを再起動さえすれば自動で再接続されることはわかったのですが、やはりmemcachedが落ちている時はエラーになってしまうのが問題でした。  どうせ、キャッシュはキャッシュなのだから、memcachedが落ちている間はキャッシュを使わない様にするパッチをmemcache-clientに組み込もうと思って作業をしていたら、実はcache_fuにその機能があるのを発見しました。  config/memcached.ymlで、「raise_errors: false」を指定するだけで、memcachedでエラーが起こった場合には、キャッシュを無視するようになるようです。  ちょっと気になるのは、memcachedが落ちたのではなく、ネットワークなどの障害で一時的に接続されなかった場合、キャッシュの不整合が起こることです。これは、自動再接続したときにflush_allするなどのパッチを別に作る必要があるかもしれません。

RailsアプリをチューニングするならNew Relic RPM

Posted filed under Ruby on Rails.

Photo by Riverman72  あとで自分メモを書こうと思うけど、先に一言。  37signalsも使っているといううたい文句に惹かれて試してみた、Railsのパフォーマンス記録ツール/サービスNew Relic RPM(Rails Performance Management)が、すばらしい。  RPMは開発時用のDeveloperと、実機用のProductionのが二つあり、まだ開発時用のDeveloperモードしか試してはいないんだけど、専用の管理画面で、アクションを実行時のメソッド単位の実行時間、生成されるSQL、SQLの実行時間やインデックスの利用状況などが非常に簡単に把握できます。  Railsで開発している人なら、下のムービーを見れば、そのすごさが分かるはず。  RPM developerのデモ動画 | RPM production のデモ動画  いまこれを使って、PhotoShareのチューニングをしていますが、非常に快適。これは超おすすめです。  ひととおりチューニングが終わったら、RPM Productionのagentをインストールして実際に稼働しているRailsのデータを元にさらにチューニングを進められるって言うところがまたすごいなぁ。いい連携だ。  しかしこのソフトもすごいけど、Railsもこういった周辺マーケットが育ってきている事実も見逃せないなぁ。  同種のサービスでは、FiveRunsもあるし、単なるホスティングではないサービスを提供する会社が増えてきていることは、Railsが本格的にビジネスに結びついているって事なんだろうな。

近況報告&アイディア募集

Posted filed under Idea, iPhone, Ruby on Rails.

 アメリカに来て約3か月がたち、やっと生活も落ち着いてきました。  現在、BigCanvasでは、7月のAppStoreオープンに向けてiPhone向けのアプリを中島さんと作っています。  本当は、私もCocoaで遊ぶつもりだったのですが、このプロジェクトを始めたのが4月で時間が無いため、アメリカでも引きこもりの様にRailsのコードを書いています。早くもっとCocoaでアプリを書けるようになりたいなぁ。  ネットへの依存度が高いので、日本に居てもアメリカに居ても生活全般、あまり違いがない気がします。  ただ、デザイナやPR会社との打ち合わせなどが英語なので、そこが違うかな。  これが一段落したら、自分でも書きたいiPhoneアプリがあるので、自分でも色々書いてみようと思っています。  自分のアイディア以外でも色々作ってみたいと思っていますので、ぜひ「こんなiPhoneアプリ欲しい!」とかありましたら、メール: masuiあっとmasuidrive.jp、チャットでは、MSN:masui@hisec.co.jp、skype:masuidrive76まで呼びかけていただけると、うれしく思います。

Capistranoでmigrationsする前に自動でバックアップ

Posted filed under Ruby on Rails.

Photo by mondopiccolo  Capistranoではdeployしても、前のソースが残っているために、すぐに前のバージョンに戻せますが、データベースはそうはいきません。  そこで、deploy:migrationsを実行する前に自動でDBのバックアップを取るようなタスクを探してみました。 MySQL専用ですが、これでローカルのbackupsというディレクトリに、migration実行前のダンプがダウンロードされます。

[メモ] AmazonS3とEC2を使う時にはX-REPROXY-URL

Posted filed under Ruby on Rails, ServerSide.

 S3+EC2を使っていると、S3に保存したムービーや画像と言った大きなデータを、クライアントに返したい場合があります。 そのときにリバースプロキシを使う方法もあるけど、権限やユーザによって振り分けたい場合などは、単純なリバースプロキシではうまくいきません。  Rails側でNet::HTTPなどを使ってS3からデータを取ってくる方法もあるのですが、それだとパフォーマンスが悪すぎです。  負荷分散することを考えると、これはApacheモジュールか、リバースプロキシ側でやって欲しい作業です。自分で書こうと思ったけど、調べてみたらやっぱり同じようなのがありました。  リバースプロキシなどの中には、X-REPROXY-URLというヘッダをサポートしているものがあり、これを戻すとリバースプロキシが代わりにこのURLにアクセスしてデータを返してくれます。  Perlbalが始めにサポートしたらしいですが、lightlyやapacheもパッチが出ているようです。Perlbalはリバースプロキシとしても、性能が高いらしいので、これを評価してみようと思います。 メモリンク X-SendFile, X-REPROXY-FILE, X-REPROXY-URLを試してみる – Yet Another Hackadelic X-REPROXY-CACHE-CLEAR もあわせて使いたい人向けショート BK