2008年11月20日

rails環境を呼び出す(drbで使う)

rails環境を持ったdrbサーバの作り方メモ
この場合は、各自処理を実行する@managerインスタンスを排他制御
以下rubyのスクリプト(RAILS_ROOTで実行する)


#!/usr/local/bin/ruby

#RAILS_ROOT/config/boot.rbを読み込む(環境に応じて適当に編集)
require File.dirname(__FILE__) + '/../config/boot'
require RAILS_ROOT + '/config/environment'

#サーバ処理オブジェクトの呼び出しWrapper
class WrapperBidsManager
#ActiveRecord環境の読み込み
@@config = YAML::load(File.open(File.dirname(__FILE__) + '/../config/database.yml'))
ActiveRecord::Base.establish_connection(
#@@config['production']
@@config['development']
)

def initialize
@manager = M.new
@m = Mutex.new
end

def check_and_bid

#if @m.locked?
# #TODO エラーはいて終了
# puts "locked"
#end

@m.synchronize do
#何か処理させる
@manager.doing
end
return true
end
end

class Daemon
def start(wrapper)
DRb.start_service("druby://localhost:9111", wrapper)
puts "listen on " + DRb.uri
end
end

#以下の#はforkが使える環境用

#fork{
# Process::setsid
# fork{
# STDIN.reopen("/dev/null", "r+")
# STDOUT.reopen("/dev/null", "w")
# STDERR.reopen("/dev/null", "w")
#
wrapper = WrapperBidsManager.new
daemon = Daemon.new
daemon.start(wrapper)
# DRb.thread.join
sleep
# }
#}



参考
http://rubyist.g.hatena.ne.jp/yamaz/20070217
ラベル:Rails drb
posted by sistailsnow at 11:52| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

ログにパスワードを表示させない

パスワードを log/*.log に表示させないためには、
ApplicationControllerでコメントアウトされている(2系?)
filter_parameter_logging を有効にしてください。

引数にはparamsで使われるkeyを指定すればいい。

password以外でもまずい情報はlogに残さないようにできる。


class ApplicationController < ActionController::Base

# See ActionController::Base for details
# Uncomment this to filter the contents of submitted sensitive data parameters
# from your application log (in this case, all fields with names like "password").

filter_parameter_logging :password


 
ラベル:Rails
posted by sistailsnow at 09:13| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2008年11月19日

attachment_fu

http://rubyforge.org/frs/?group_id=12&release_id=19196

RMagick-1.15.12-ImageMagick-6.3.7-8-Q8.zip ダウンロード

解凍ディレクト中の imagemagickインストール
>cd 解凍ディレクトリ
>gem update --system # RubyGems 0.9.5より前だったら
>gem install rmagick --local
ラベル:Rails
posted by sistailsnow at 18:05| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2008年11月09日

あるフォーラムに参加

ノートにメモをとってみたので自分流におこしておく

11:00- ? 大規模データについて

WebあぷりってほとんどIO負荷。 

1.なにはともあれメモリ!

メモリとディスク:150倍くらいちがう
メモリコモディティ 8GB〜16GBくらい?

2.キャッシュしきれなくなったら

局所性にあわせてアクセスをわける

 例:-通常のユーザリクエストとボットリクエスト、その他といったぐあいで、それぞれを振り分ける。
 (ユーザリクエストは最新のデータに、ボットは過去も満遍なくだけどレスポンスはちょっと悪くてもかまわないetc)

3.更新だけマスタDB、参照系はスレーブDBへロードバランサで振り分ける

Webアプリの90%以上が参照なんでOK!?

4.テーブル分割(パーティショニング)はどうする?

データが別々のサーバにあったらJOIN難しいよね?

=>JOINしなきゃいい!

where .. in ..を使ってつなげ!

Perlのオリジナル O/Rマッパーを使っているそうな。

質問?RDBMSに手をいれては? => 考えたけどやめた

5.全文検索なんかはどうするの?

A.RDBMSは使わない。

データを定期的にdumpして、必要なデータ構造を作る

検索に関しては、転置インデックス、ベクトル空間モデルを使うって話がちらほら。


13:00- Ruby ライトなお話(使えそうなKeywordだけ

Mextractrってので日付、場所の抽出ができるそうな

ATOK APIが出ている。

Wiiリモコン

LazyList gem lazylist

地方SIでRuby
cgi.rbで274団体のシステム


14:00- Chromeについて
なんで作ったか?や特徴なんかを解説

ネット記事で知ってたこもあったが、

Chromium という形でオープンソースで製作されていたのは知らなかった。

従来の使える技術は取り込み、そして将来のブラウザのありかたを探っていくのが目的だと。


16:00 dRuby/Rindaについて

17:00 Ruby 1.9

話を聞くかぎり、機能としては面白いけど、Railsは今のままじゃぜんぜん使えないし、実験的な雰囲気があったんで、当分様子見でしょう。
 
1.8からの移行ポイントとしては
magic comment(コード内のASCII以外の文字
ブロック文の文法が変わった
encoding(扱っている文字列が違うと結合できずエラーになる

posted by sistailsnow at 12:14| Comment(0) | TrackBack(0) | やってみた | このブログの読者になる | 更新情報をチェックする

2008年11月07日

おもむろにCakePHP

ちょっとPHPの勉強がてら?CakePHPを触ってみようと思うので備忘録に…
(忘備録って言葉はあんまり正確な言葉ではないらしぃ
http://www.tt.rim.or.jp/~rudyard/kaego003.html )

本屋さんでも大きなところだと、CakePHPの本が数冊置いてあったので
ちゃんと流行るかも?くらいな印象のRailsチックなフレームワークです。

とりあえず本家のチュートリアルをやってみました。
http://book.cakephp.org/ja/

印象としてはRailsのほうがやりやすそーな印象ですが、
PHPで動くってのはレンタルサーバの対応とか考えると魅力かな?

ラベル:cakephp
posted by sistailsnow at 14:47| Comment(0) | TrackBack(0) | Cakeを食べてみた | このブログの読者になる | 更新情報をチェックする

Rails 国際化対応

Ruby-GetTextで割と簡単に国際化対応

http://www.yotabanana.com/hiki/ja/ruby-gettext-howto-ror.html

基本的には上のサイトを参考に。

引っかかったのは、

>rake updatepo

を2回目以降にやるとき。


(Windowsでは) GNUのgettext(msgmerge が必要):rmsgmergeでもかまわないと書いてあるが動かない

GNU gettext
http://sourceforge.net/project/showfiles.php?group_id=23617&package_id=17255

からexeファイルをダウンロード

インストールして、そのbinディレクトリにPath通す。

Update(2回目以降)の様子
-xxx.pot ,xxx.po 両方上書きしてくれる(翻訳済みの poファイルはそのままで)
- _("xxx") で生成した項目がviewなどからなくなった場合は翻訳部分はコメントアウトされて残る。
ラベル:Rails gettext
posted by sistailsnow at 14:19| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2008年10月07日

とらば

posted by sistailsnow at 11:04| Comment(0) | TrackBack(0) | やってみた | このブログの読者になる | 更新情報をチェックする

2008年02月06日

tabキー フォーカス

タブキーでボタンやリンクにフォーカスがあたる順序を変えるには

tabindex属性をタグにつてやればよい。属性値が小さいものから順にフォーカスがあたる。

<a href="second.html" tabindex="2">seconde</a>

<a href="first.html" tabindex="1">first</a>



参考 http://www.tohoho-web.com/html/attr/tabindex.htm
posted by sistailsnow at 15:21| Comment(0) | TrackBack(0) | やってみた | このブログの読者になる | 更新情報をチェックする

2008年01月31日

Activation

Activation
メーラの用意
http://technoweenie.stikipad.com/plugins/show/Mailer+Setup
 アクティベーション
http://technoweenie.stikipad.com/plugins/show/User+Activation

>script/generate authenticated_mailer user


# config/environment.rb

Rails::Initializer.run do |config|
config.active_record.observers = :user_observer #追加

end


>メールの設定、日本語対応
/lib/iso2022jp_mailer.rb 作成

require 'nkf'
class Iso2022jpMailer < ActionMailer::Base
def base64(text)
if default_charset == 'iso-2022-jp'
text = NKF.nkf('-j -m0',text)
end
text = [text].pack('m').delete("\r\n")
"=?#{default_charset}?B?#{text}?="
end
def create!(*)
super
@mail.body = NKF::nkf('-j',@mail.body)
@mail
end
end


#environment.rb

#メールサーバーの設定
ActionMailer::Base.smtp_settings = {
:address => "localhost",
:port =>25,
:domain => "localhost",
}

# デフォルトの文字コード
ActionMailer::Base.default_charset = 'iso-2022-jp'


#models/user_notifier.rb #ドメイン、メールアドレスなど各パラメータを設定

 class UserNotifier < Iso2022jpMailer
 
protected
def setup_email(user)
@recipients = "#{user.email}"
@from = "ADMINEMAIL"
@subject = base64("[ユアサイト] ")
@sent_on = Time.now
@body[:user] = user
end


# Userテーブル(マイグレーションファイル)にカラムを追加

def self.up
create_table "users", :force => true do |t|
t.column :login, :string
t.column :email, :string
t.column :crypted_password, :string, :limit => 40
t.column :salt, :string, :limit => 40
t.column :created_at, :timestamp#:datetime
t.column :updated_at, :timestamp
t.column :remember_token, :string
t.column :remember_token_expires_at, :datetime
t.column :activation_code, :string, :limit => 40
t.column :activated_at, :datetime
end
end


# Userモデル(次のコードを追加)

class User < ActiveRecord::Base
attr_protected :activated_at
before_create :make_activation_code

# Activates the user in the database.
def activate
@activated = true
self.activated_at = Time.now.utc
self.activation_code = nil
self.save!

end

# Returns true if the user has just been activated.
def recently_activated?
@activated
end

protected
# If you're going to use activation, uncomment this too
def make_activation_code
self.activation_code = Digest::SHA1.hexdigest( Time.now.to_s.split(//).sort_by {rand}.join )
end

end


#Accountコントローラ

def activate
@user = User.find_by_activation_code(params[:id])
if @user and @user.activate
self.current_user = @user
#飛ばしたいところへ変更
redirect_back_or_default(:controller => '/account', :action => 'index')
flash[:notice] = "Your account has been activated."
end
end
posted by sistailsnow at 09:37| Comment(1) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2007年11月12日

宅配便送料計算【Webサービス】

宅配便送料計算【Webサービス】

http://s.ebeta.jp/

日本国内の宅配便である

ヤマト運輸 宅急便
佐川急便 飛脚便
日本郵政 ゆうパック
日本郵政 定形外郵便

の価格をサイズと重さと地域を入力することにより、それぞれの送料を計算し、表示されるサービス。

Railsによって作成されており、APIも公開しているため、他アプリ(
特にRails)での利用も簡単に行える。

今後は、オープンソースのネットショップへのモジュールやライブラリ提供、HTML張り付けコードの公開、ブログパーツ化などを進めていく計画。

ラベル:Rails 送料計算
posted by sistailsnow at 11:55| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。