Home > Ruby on Rails Archive
Ruby on Rails Archive
WordPressアップデートしました
- 2008-04-12 (Sat)
- Ruby on Rails
先ほど、WordPressのセキュリティホールを突かれてSpamを挿入されたので、WordPressを最新版にアップデートしました。
幸い、文字を書き込まれただけで、ウイルスなどが埋め込まれた形跡はありませんでした。
私のバージョンはME 2.1.5でした。ほかにも古いWP使ってる方がいましたら、最新版へのアップデートをお勧めします。
Google App Engineは罠じゃないか?
- 2008-04-08 (Tue)
- Ruby on Rails
「Google版EC2欲しいよねー」と昨日チャットで話していたら、いきなりGoogle App Engineがリリース。夢かとオモタ。
Google App Engineは、Googleが一般ユーザに提供するGoogle製サーバ環境。Googleが検索やgmailに使っている環境と同じ環境が使えるらしい。
Googleの舞台裏とも言える、GoogleのファイルシステムGFSや、超大容量データベースのBigtableが自由に使えるのは、非常に楽しそう。クロール用APIまで標準で提供されているのが、Googleらしい。
ただし、Amazon EC2とは違い、LinuxなどのOSを解放するのではなく、言語環境だけが提供されている。
いま公開されているのは、Pythonだけ。なので、Pythonで書かれたアプリケーションしか対応しない。
ほかの言語も対応する予定らしい。
MySQLとかPostgreSQLも用意されていないので、データベースはBigtableだけ。Bigtableはリレーショナルデータベースではないので、ほとんどのアプリケーションは、この辺を書き直す必要がありそう。
そのため、ほかで動いているPythonのアプリを、そのままApp Engineで動かすのは難しそう。
という訳で、Google App Engineでアプリを動かすには、データベースをBigtableにする必要があり、それはほかの環境では動かないわけで、Googleでしか動かせないアプリケーションになってしまう。
さすがにGoogle以外で動かせない環境で、プログラムを作ってサービスを立ち上げるのは、あまりにGoogleに依存していて怖いなぁ。
Googleとしては、これで面白いアプリが出れば、その作者をスカウトしたり、会社を買収したりするだろうし、そもそも、これによって多様なアプリケーションが出る事は、ユーザがネットに滞在する時間が増え、Googleにはメリットがあるんだろうなとは思うけど。
これ専用にガリガリとアプリを書いて、サービスするのは罠だと思うけど、自分用WikiEngineをインストールしたり、Plaggerを常駐させておくのには便利そう。
Plaggerを簡単にインストール出来て、ついでにBigtableにデータ突っ込んでRSS検索できるようなパッケージでないかなぁw
p.s
乗り遅れたので、サインアップは出来ませんでした。ただいま順番待ち。
EC2の固定IPを使ってみる
- 2008-04-06 (Sun)
- Ruby on Rails
初期状態では、一つのインスタンスに、EC2の中だけで使えるPrivate IPと、外部からアクセスするためのPublic IP(グローバルアドレス)が割当たってます。
インスタンス自体への割当IPはPrivate IPですが、上位のルータに1:1のNATがあり、これによって外部からPublic IPでアクセスできる様になっています。
今までの、Private IPとPublic IPに加えて、今度は固定IPのグローバルアドレスが割り当てられるElastic IPを選択出来るようになりました。
これは、Public IPと同じ様に、外部からアクセスするためのグローバルアドレスですが、AWSアカウント毎に発行されるので、インスタンスの再起動などによって代わる事はありません。
これを使えば、EC2で最大の問題点であった、「インスタンスを再起動するとIPアドレスが代わる」という問題から解放されます。
Elastic IPを使うために、EC2 Toolsのアップデート。Amazon EC2 Command-Line ToolsからEC2 API toolをダウンロードしてインストール。
自分のアカウントに割り当てられたElastic IP(EC2の固定IP)を確認。
$ ec2-allocate-address ADDRESS 75.101.xxx.xxx
現在のアカウントで起動しているインスタンスを確認。
$ ec2-describe-instances RESERVATION r-e729dbxx 036701054xxx default INSTANCE i-876892xx ami-7034d119 ec2-67-202-xxx-xxxcompute-1.amazonaws.com domU-12-31-38-00-xx-xx.compute-1.internal running nobody 0 m1.small 2008-03-24T04:17:43+0000 us-east-1b
Elastic IPのアドレスと、割り当てたいインスタンス番号(i-から始まる番号)を指定して、ec2-associate-addressを実行します。
これを実行すると、今までのPublic IPではアクセス出来なくなります。インスタンスに割り当てられるグローバルアドレスはPublic IPかElastic IPのどちらかになります。
$ ec2-associate-address -i i-876892xx 75.101.xxx.xxx ADDRESS 75.101.xxx.xxx i-876892xx
これで、Public IPの代わりに先ほど指定したElastic IPのアドレスが割り当てられます。
Private IPに変更はないので、インスタンスの再起動などは行われません。
このElastic IPは剥がす事もできるので、別のインスタンスを上げておいて、そちらに振り直す事もできます。
サービスを止めずに、デプロイしたいときにも使えるかも。
p.s
あと、グローバルIP要らないから、少し安いインスタンスってのも出してくれないかな?
reverse proxyにしているfront server以外、グローバルアドレス要らないんだよね。
Adobe AIR for Linuxの日本語対応度
- 2008-04-02 (Wed)
- Ruby on Rails
Adobe AIR for Linux アルファ版がリリースされたので、早速インストール。
やっぱり気になるのは、日本語の対応度。Linux版にコードが近いであろう、OSX版は表示は出来るけど入力がだめだったので、入力はあまり期待できない。でもせめて表示だけは出来てほしいなと思いつつ、適当なアプリを実行してみる。
サンプルで配布されているFreshというExtJSを使ったフィードリーダを実行して、日本語のフィードを入れてみると、無事表示。
で、問題は入力。これは他のアプリで試したけど、案の定ダメ。他のアプリで入力した後、コピペしても2バイト文字以降がペーストされない。これはWindowsなどで日本語版が出ないと解決されないようだ。残念。
あと気になるのは、フォント処理。同じ処理で表示しているはずの文字でフォントサイズが違う場合がある。
このスクリーンショットの下の本文のフォントが、さっきのスクリーンショットに比べて大きい。
もしかしたら、文字表示にも問題あるかも。これは要検証だな。
でも、ちょっと試した範囲では、WindowsやOSXと同じように動くようだ。公衆端末みたいな特定用途のPCにはとてもいい環境だと思うなぁ。最近、EeePCとかで安いミニノートも出てるし。
詳しくは、日経LinuxでAIRの連載をしているので、そっちでよろしく!
Amazon EC2で固定IPが使えるようになった
- 2008-03-27 (Thu)
- Ruby on Rails
Amazon Web Services Developer Connection : Feature Guide: Amazon EC2 Elastic IP Addressesによると、Amazon EC2で固定IPが使えるようになったとのこと。
Elastic IPってのは固定IPの事らしい。
詳しくは起きてから書く。
【実は】マクドナルドの100円コーヒーはお代わり無料【有名なの?】
- 2008-02-18 (Mon)
- Ruby on Rails
店舗によってですが、mobilepointで無線LANが使えたり、コンセントまで使えちゃうので、よく仕事の気分転換に行くマクドナルドですが、今日、妻と一緒に行ったところ、驚愕の事実を知りました。
マクドナルドのコーヒーってお代わり自由なんですね。
どこにも書いてないけど。
最近、コーヒーおいしくなったし、電源も使えるし、無線もOK。すばらしすぎるマクドナルド。
今日、一緒に行ったマクドで「隣のレジでコーヒーのカップを持って、『お代わりください』って言っている人がいた」というので「次頼むときに聞いてきて」と言って聞いてきて貰いました。ありがとうw
もうすぐだけど、デブサミで発表します
- 2008-02-11 (Mon)
- Ruby on Rails
デブサミ2008のデブサミライブ 2/13 14:20-の枠で、BlazeDSをRubyから扱う話をします。
BlazeDS(Java), Ruby, AIR(ActionScript)と扱う言語だけは多いですが、マニアックな話ので、誰もこないんじゃないかと心配です。
内容的には、BlazeDS+AIR+Rubyを使って企業向けインスタンスメッセンジャーを作る話をします。
殆ど時間をPCに向かっているこの業界では、内線電話よりもメッセンジャーの方が便利な事も多々あると思います。
しかし、GTalkやMSNメッセンジャーはセキュリティの問題があり使えない、、、
そんな企業の為に、簡単に作れるメッセンジャーをご紹介します。
多分、同時に100人以上が接続しても大丈夫。はなず。クラスタリングもできるっぽいし。
そして、いまそのサンプルを間違って消してしまって、作り直しちゅう。。。。。
サンプルだから、svnに突っ込んでなかったんだよなぁ。
渡米します
- 2008-02-04 (Mon)
- Ruby on Rails
自分でもびっくりな話なのですが、Life is beautifulの中島さんのサポートをいただき、今年3月に渡米&起業をする事になりました。
場所はシアトル近郊の予定ですが、MS関係じゃーありませんw
元々、昨年4月に渡米を前提としてワイズノットに入社したのですが、夏ぐらいから実現が困難な事に気がつき、別の方法を探していました。
そんな中、中島さんと知り合う事ができ、自分で起業して渡米するという、予想外の道を辿る事になりました。
この辺はいろいろは話があるので、そのうちどっかに書きます。
渡米で起業と言っても「アメリカで一山当てるぜ!」とか、「今までやってきた事を世界展開」いうテンションはなく、特にはじめのうちは、現在日本で行っているRailsでの開発や、新サービス立ち上げのお手伝いなどを、そのまま行っていこうと思っています。
生活に慣れたら、独自サービスの構築などを考えて行こうかなと、まったり考えたりしています。
なので、オンラインでも出来る仕事があるから、発注してやってもいいよ、という方がいましたら、masui(あっと)masuidrive.jpまでメールをいただけると助かります。
2/13のデブサミが、最後の講演になりますが、ちょっと飯でも食べてみようかなという方も、ご連絡お待ちしています。
スケジュール的には、2月末で千葉を離れ、一度北海道に戻り、3月中旬に渡米の予定です。
まだなにかあるのか自分でもよくわかっていませんが、がんばります。
p.s
ワイズノットには、民事再生の話を聞く前に年末での退職願を出してありました。
なので、ほんとにびっくりしました。
Rails 2.0リリース! でもActiveModelが….
- 2007-12-07 (Fri)
- Ruby on Rails
http://dev.rubyonrails.org/browser/tags/rel_2-0-0
Rails2.0でました!
rubyforgeではパッケージが公開されているので、数時間でgemでもインストールできるようになるでしょう。
ActiveModelを楽しみにしてたんだけど、やっぱり空っぽ・・・。
http://dev.rubyonrails.org/browser/tags/rel_2-0-0/activemodel/lib/active_model
これが正式版でいいのか?
つうかこんだけ広範囲に影響するものをRC1で入れるあたりが怖いなぁ。
HyperEstraierで個人データを検索する[まだ調べ中]
- 2007-12-04 (Tue)
- Ruby on Rails
mixiでも使われているって言う全文検索エンジンHyperEstraier。mixiの膨大な件数を処理するぐらいだから相当スケーラビリティもあるだろなーとおもいつつ、SQLだけで全文検索できちゃうMySQL+Sennaが便利なんで、そっちばっかり使ってました。
MySQL+Senna(Triton)も、PostgreSQL+Senna(Ludia)も、属性付きで検索した場合、Sennaで全文検索してから、その答えをSQLで絞り込みを行っているようで、たとえば、個人のメッセージを保存しているテーブルを検索した場合など、属性の値が多い場合には、かなり効率が悪くなる事が見えてました。
本当は、メッセージみたいなものは、個人ごとにインデックスをもって処理するべきなんだろうなと思っていて、SennaでやるかHyperEstraierでやるか迷いつつ、ぐぐっていたところ、HyperEstraierがどんぴしゃりな機能を持っているのを発見しました。
疑似ノードマスタという機能で、大量のインデックスを保持することが容易にできるようです。
この疑似ノードマスターの話は、おいおい調べるとして、まずはRailsからHyperEstraierを触ってみます。
というほどのものではなく、acts_as_searchableというプラグインを使えば、ほぼ意識することなく、HyperEstraierを扱えるようです。
このプラグインは単純な全文検索だけでなく、属性検索などもサポートしており、通常の用途であれば、これで事が足りそうです。
# estcmd create -tr -attr @user_id num messages class Message < ActiveRecord::Base acts_as_searchable :searchable_fields => [:subject, :body], :attributes => {:user_id => :user_id} end
と指定する事で、下記の様に特定ユーザのメッセージだけ検索するという事ができます。
Message.fulltext_search("masuidrive", :attributes => "user_id NUMEQ %d" % User.find_by_name('guest'))
このプラグインで、注意が必要なのは、検索対象として指定したカラムのsetterメソッドが定義されている点です。
この場合は、subject=, body=, user_id=が上書きされます。
プラグインの実行タイミングなどから、define_method_chainは使えないようなので、これらのメソッドを上書きするときは、そのメソッドの中から値を更新するときに、write_attributeの代わりに、write_changed_attributeを呼ぶ様にしてください。
以上、バットノウハウでした。
属性検索の演算子は、ユーザーズガイドの検索条件式を見てください。通常の=演算子などは使えません。
Home > Ruby on Rails Archive