Ruby(MRI),Rails2.3.5,Java1.6はインストール済みからスタート (Java1.5な場合は1.5でもOKかもしれないのでそのままやってみて上手く出来たら教えてください。) % java -version java version "1.6.0_03-p3" Java(TM) SE Runtime Environment (build 1.6.0_03-p3-landonf_19_aug_2008_14_55-b00) Java HotSpot(TM) Server VM (build 1.6.0_03-p3-landonf_19_aug_2008_14_55-b00, mixed mode) % ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin8] % rails -v Rails 2.3.5 go
http://highscalability.com/blog/2010/1/22/how-buddypoke-scales-on-facebook-using-google-app-engine.html エンティティを2つに分けます:メインモデルとサブモデル。 Datastoreのputはもっとも大きなコスト要因なので削減するためにできることはなんでもやりましょう。 メインモデルにはkeyだけでアクセスします。 インデックスは一切作らないし、余計なフィールドも一切保存しないようにします。 getのスピードは速くなり、putにかかる料金は安くなります。 余計なフィールドは時間もお金も無駄にすることになります。 だからUserモデルの「入会日時」フィールドはメインモデルには含めません。 このような頻繁に使わないフィールドはサブモデルに入れておきます。 サブモデルに対してインデックスを作り、
2010/1/12現在、最新のRails on GAEはこれです。 TinyDS版(おすすめ): http://gist.github.com/269075 DataMapper版: http://gist.github.com/268192 デモも更新しました。 http://railsongae.appspot.com/ 開発はこのあたりを中心に行われています。 http://code.google.com/p/appengine-jruby/ http://jruby-appengine.blogspot.com/ 最新情報はこのグループ:http://groups.google.com/group/appengine-jruby コミットログ:http://code.google.com/p/appengine-jruby/source/list あるいは、http://twitt
先日のGAE/JRubyのdatastoreライブラリをgemにしました。(thanks, woodie) http://gemcutter.org/gems/tiny_ds あとGAE/JRuby+TinyDSののデモサイトを作りました http://rubyist-sg.appspot.com/ twitterでフォローしてもらうサイトなのでよろしくお願いします。 希望があればこのアプリのソースもgithubに置きます。 README * TinyDS -- tiny datastore library for GAE/JRuby github: http://github.com/takeru/tiny_ds - CRUD like a ActiveRecord or DataMapepr - set parent, key, id, name, and find by these,
http://github.com/takeru/tiny_ds ActiveRecordとかDataMapperの様なAPIのDatastore Low-level APIの薄いラッパです。 parentとかkeyとかid/nameを生々しくごにょごにょしたい人向け。 中身の雰囲気はこんな感じ↓ # app.rb require 'sinatra' require 'lib/tiny_ds' # Create your model class class Shout < TinyDS::Base property :message, :text property :created_at, :time property :updated_at, :time end # Make sure our template can use <%=h helpers do include Rack::
** I found need to call 'body.close'. @lock.unlock called in ActionController::Reloader::BodyWrapper#close http://github.com/nicksieger/jruby-rack/commit/61e44e49d11d44c19c75e55d67e0ae6214626b8e JRUBY_RACK-22: Ensure we call #close on the body per the Rack spec http://groups.google.com/group/appengine-jruby-commits/browse_thread/thread/6e6a18cc3289871f/4a6e41dc27035c26?show_docid=4a6e41dc27035c26
datastoreでは別々のEntityGroupに属するEntity間でトランザクションを実行できないので http://songofcloud.gluegent.com/2009/11/blog-post_24.html で書かれているような「BASEトランザクション」ってのが必要らしいです。 汎用的に使えるフレームワークはいずれ出来てくるのでしょうが、勉強のためにJRubyで書いてみました。 2エンティティの整合性を保った更新に使えます。 作成、削除、3エンティティ以上は考えていません。 あしたJMeter猛烈アクセスさせてちゃんと出来てるか確認するアプリを作る。 =begin 使い方 class TxMoveUserPoint < BaseTx def src_phase(src, args) src[:point] -= args[:amount] end def dest_ph
日によって大きく変わるとかあるのかな? それとも1.3.0のOptimizations for many reflection operationsのおかげか。 http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes Rails載せてもでもこないだのより速いので良い傾向です。 前回の「jruby-hello 68017」が「jruby-hello-new 333333」なのでおよそ5倍。 http://googleappengine.blogspot.com/2009/12/app-engine-sdk-130-released-including.html This release also includes some performance tweaks to the Java runtime. For
JMeterで連続アクセスさせつつ、Quotaページのの数字を見る方法で計測。 bbsのやつ以外は「hello!!」と1行出すだけのもの。 bbsの2つはjruby-sinatra+低レベルAPIでのdatastore読み書き。 結果はこちら。"CPU Time"だけ。単位はreq/CPUh。 jruby-sinatra 59171java + jruby + rack + sinatra python-webapp 373000 python-hello 318058 java-hello 3167700 jruby-hello 68017java + jruby + rack bbs/write 14895java + jruby + rack + sinatra + datastoreWrite bbs/show 16376java + jruby + rack + sinatra
New!⇒ GAE/JRubyグループを作ってみました WEB-INF/spec/spec_helper.rb ENV["GEM_HOME"] = File.expand_path(File.join('..', 'gems'), File.dirname(__FILE__)) require "rubygems" require 'test/unit' require "spec" $LOAD_PATH << File.expand_path(File.join('..', 'lib'), File.dirname(__FILE__)) $LOAD_PATH << File.expand_path(File.join('..', 'models'), File.dirname(__FILE__)) $LOAD_PATH << File.expand_path(File.join('..'
New!⇒ GAE/JRubyグループを作ってみました dev_appserver.shを使わずにGAEのローカル環境を作り出して、 irbからDataStoreの中身を見たり、RSpecでユニットテスト書いたりできるようになりました。 WEB-INF/lib/local_gae.rb # jruby -J-cp $GAEJ_HOME/lib/impl/appengine-api-stubs.jar:$GAEJ_HOME/lib/impl/appengine-local-runtime.jar:$GAEJ_HOME/lib/impl/appengine-api.jar local_gae.rb # http://www.okisoft.co.jp/esc/ruby/tut-08.html # http://code.google.com/intl/ja/appengine/docs/jav
http://dl.getdropbox.com/u/76825/dropbox_status.rb #!/usr/bin/ruby # dropbox status in console. # http://dl.getdropbox.com/u/76825/dropbox_status.rb # http://d.hatena.ne.jp/urekat/20081124/1227498262 # http://forums.getdropbox.com/tags.php?tag=cli require "socket" require "pathname" #command_sock_path = File.expand_path("~/.dropbox/command_socket") iface_sock_path = File.expand_path("~/.dropbox/if
http://jpmobile-rails.org/ticket/27 http://jpmobile-rails.org/tickets/attachment/68/ce6aa4c940585e7c0203f68ba365bdb3830559948/jpmobile_pc_emoji_diff_r138.txt jpmobile_pc_emoji_diff_r138.txt Processing 'jpmobile'... Fetching remote repository's latest revision and UUID Checking out repository at revision 138 diff -urN --exclude=.svn jpmobile.tmp/lib/jpmobile/emoticon/au.rb jpmobile/lib/jpmobile/emo
http://doruby.kbmj.com/nakahira_on_rails/20080215/Rails_ActionMailer_Tmail_RFC_ http://leaveanotemessagebehind.blogspot.com/2008/01/railsmailertmail.html これにした。 http://d.hatena.ne.jp/urekat/20071030/1193728474 こうゆうのは意味無いからやめた方がいい。 受信時の話、ログをみるとクオートされてないみたい。 昔は確かにダブルクォートされてた。 http://www.google.co.jp/search?q=receive2+ActionMailer (POPで持ってきているから?) postfixのバージョン aptitude show postfix Version: 2.3.8-2+
active scaffoldが盛り上がっているらしいので。 http://wota.jp/ac/?date=20071110#p01 http://rubyist.g.hatena.ne.jp/yamaz/20071109 http://dev.rakusui.jp/diary/?date=20071109#p01 GetTextを使わないでUIを日本語化してます。 #{RAILS_ROOT}/lib/active_scaffold_localization.rb に置きます。 environment.rbの最後の方に require "active_scaffold_localization" # require "#{RAILS_ROOT}/lib/active_scaffold_localization.rb" と書きます。 サーバ再起動します。 # http://activesc
tkrmb:~% svn log -r 3329 http://i.loveruby.net/svn/public/tmail/trunk/ ------------------------------------------------------------------------ r3329 | aamine | 2006-10-29 13:05:44 +0900 (日, 29 10 2006) | 3 lines * lib/tmail/parser.y (dots): allow many dots for mobile phone addresses. * test/testaddress.rb: test it. ------------------------------------------------------------------------ tkrmb:~%
/etc/logrotate.d/PROJECT /home/app/rails/production/PROJECT/shared/log/production.log { daily missingok rotate 1000 compress delaycompress notifempty copytruncate create 0666 app app dateext } これでうまくいってる。 Loggerの設定でやるとおかしくなったのでlogrotateにしたんだけど、 Loggerをいじってなんとかしちゃう方法発見。 http://d.hatena.ne.jp/elm200/20071008/1191812760 Fileをロックしたりしなくていいのかな。2プロセス同時にローテトしちゃったりしない? http://techno.hippy.jp/rorwiki/?Deplo
actionの分け方のセオリーってあるの?とずっと思っていたので整理してみる。 前提条件 確認画面があるかもしれない 完了画面もあるかもしれない Ajaxはつかえない そうです携帯用です 入力画面とDB書き込みを1つのactionにまとめるパターン(Railsレシピ33のpostbackみたいやつ) GETできたら入力フォームを出す。action先は同じaction==自分自身。 POSTがきたら(if request.post?)書き込み処理をする。 成功したらredirectで次の画面へ(GET). 失敗したら再度(GET時と同じように)入力フォームを出すと同時にerror_messages_forでエラー箇所を表示。 いいところ 入力フォームの生成用のaction/view,書き込み実行のactionが1つにまとまっているのでソースがきれい。 1画面と1actionを対応させやすい。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く