Posted filed under Ruby on Rails.

先ほど、WordPressのセキュリティホールを突かれてSpamを挿入されたので、WordPressを最新版にアップデートしました。

幸い、文字を書き込まれただけで、ウイルスなどが埋め込まれた形跡はありませんでした。
私のバージョンはME 2.1.5でした。ほかにも古いWP使ってる方がいましたら、最新版へのアップデートをお勧めします。

Posted filed under ServerSide.

 「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
 乗り遅れたので、サインアップは出来ませんでした。ただいま順番待ち。

Posted filed under ServerSide.

 初期状態では、一つのインスタンスに、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以外、グローバルアドレス要らないんだよね。

Posted filed under Ruby on Rails.

Adobe AIR on Linux alphaで日本語表示

 Adobe AIR for Linux アルファ版がリリースされたので、早速インストール。
やっぱり気になるのは、日本語の対応度。Linux版にコードが近いであろう、OSX版は表示は出来るけど入力がだめだったので、入力はあまり期待できない。でもせめて表示だけは出来てほしいなと思いつつ、適当なアプリを実行してみる。

 サンプルで配布されているFreshというExtJSを使ったフィードリーダを実行して、日本語のフィードを入れてみると、無事表示

 で、問題は入力。これは他のアプリで試したけど、案の定ダメ。他のアプリで入力した後、コピペしても2バイト文字以降がペーストされない。これはWindowsなどで日本語版が出ないと解決されないようだ。残念。

 あと気になるのは、フォント処理。同じ処理で表示しているはずの文字でフォントサイズが違う場合がある。
このスクリーンショットの下の本文のフォントが、さっきのスクリーンショットに比べて大きい。

 もしかしたら、文字表示にも問題あるかも。これは要検証だな。

 でも、ちょっと試した範囲では、WindowsやOSXと同じように動くようだ。公衆端末みたいな特定用途のPCにはとてもいい環境だと思うなぁ。最近、EeePCとかで安いミニノートも出てるし。

 詳しくは、日経LinuxでAIRの連載をしているので、そっちでよろしく!

Posted filed under Life.

風呂 in USA

3/17にやっとアメリカに上陸しましたー。入国審査で待たされてちょっと焦ったけど、無事passできました。

3/19にはアパートにも無事入居できて、やっと一息と言った所です。
実はまだネットは来てないけど、野良無線で使えちゃってるので、これでネットをしてます。

うちの風呂はバスタブが深かったので、フログラミングも全然OK
板はIKEAで$3だったものに、足をつけて落ちないように加工してみました。これで日本にいる時より安全かも。

さて、これからベタな渡米日記みたいなのを書こうか迷うなぁ。

Posted filed under Ruby on Rails.

友達のブログで探してるって書いてたので、自分で使ってるソースを晒してみる。

# 指定したカラムのみでvalid?を実行
#
# ActiveRecord#valid_columns?(:login, :password)
#

class ActiveRecord::Errors
  # 指定したカラムのエラーを削除
  def delete(column)
    @errors.delete(column.to_s)
  end
end

module ActiveRecord::Validations
  # 指定したカラムのみをvalid?
  def valid_columns?(*columns)
    valid?
    cols = columns.flatten.collect(&:to_s)
    errors.delete_if do |column, error|
      !cols.include?(column)
    end
    errors.empty?
  end
end

* 変更 02/24 06:58*
 eachの中でdeleteやめて、delete_ifを使う様にした。

Posted filed under Ruby on Rails.

 店舗によってですが、mobilepointで無線LANが使えたり、コンセントまで使えちゃうので、よく仕事の気分転換に行くマクドナルドですが、今日、妻と一緒に行ったところ、驚愕の事実を知りました。

 マクドナルドのコーヒーってお代わり自由なんですね。
どこにも書いてないけど。

 最近、コーヒーおいしくなったし、電源も使えるし、無線もOK。すばらしすぎるマクドナルド。

 今日、一緒に行ったマクドで「隣のレジでコーヒーのカップを持って、『お代わりください』って言っている人がいた」というので「次頼むときに聞いてきて」と言って聞いてきて貰いました。ありがとうw

Posted filed under Ruby on Rails.

今日デブサミライブで話をしてきた資料を公開します。

Adobe AIRとBlazeDS、JRubyを合わせて企業内向けメッセンジャーを作ろうという話です。

時間が30分と短いのでざっくりとした内容ですが、BlazeDSとAIRの連携を中心に、JRubyからメッセージを送信するまでを解説しています。

この話は、まだ途中で、続きは3月に入ってからAdobe Developer Connectionで公開する予定です。

実装してほしい機能などありましたら、コメントください。よろしくお願いします。

PDFダウンロード