2011年3月24日木曜日

オライリー本のEBookが半額キャンペーン!



O’Reilly Village/オラの村 - Deal of the Week - 被災者支援キャンペーン開催


2011年3月26日の午前0時までだそうです。


最近、オライリーの紙の本を何冊か買っているので複雑な気分ですが・・・


EBookが読みやすい端末などは持ってないので、今まで買おうとしませんでしたが、


半額ならちょっと欲しいですw





2011年3月22日火曜日

rubyの複数命令を1行で書く



しょうもないけど、自分用にメモ


@hoge1 = "1"


@hoge2 = "2"


を1行にしたいときは、「;」でつなげる。





@hoge1 = "1"; @hoge2 = "2"





今週のお題 東北地方太平洋沖地震



今週のお題東北地方太平洋沖地震


今回の地震で、原発がとても問題になっています。


だんだんと収束に向かいつつあるので少し安心してきています。


報道では東京電力が情報を隠しているとか、対応が悪い、設計が悪いと散々叩かれていますね。


私としては、過去に例がない大地震と大津波で、問題が何もないのを期待するのは虫が良すぎるのでは無いかと思ってます。


地震後の対応や、そもそもの設計で大きく反省することはあるし、東電がそれなりのペナルティを受ける必要もあると思いますが、


地震が起こって、原発に大きなダメージをおったことは東電の責任ではありません。


全ての災害に耐えれるスーパー原発なんて無いですから。


ちょっと報道やネットでの煽りが行き過ぎなんじゃないかと感じました。。。





2011年3月10日木曜日

jQueryUIが良い感じ



ネット調べてたらこんなのが!


jQuery UI - Dialog Demos & Documentation


モーダルで入力フォームが使える!


こういうの探してました(^^


ついでに日付の入力ダイアログもあったりして。


jQuery UI - Datepicker Demos & Documentation


jQuery UIってイケてるかも♪





2011年3月8日火曜日



今週のお題「iPad 2欲しいですか?」


欲しいか欲しくないかといわれたら欲しいですね。


買うかどうかとなると・・・買わないかな。


価格の元を取れるほど、使いこなせるかどうか解らないから。


明らかに使いこなせて、価格分のリターンが見込めたら買うかな。





2011年3月3日木曜日

seeds.rbで、CSVを取り込んでみる



環境:rails2.3.8


久しぶりのアップです。


胃の調子が悪かったり、家の問題があったりで。


とりあえず、胃の方はウイルス性の胃炎っぽく、現在回復に向かっております。


で、本題ですが、


初期データを投入するために、seeds.rb に都度データを打ち込んでいたのですが、


今回、大量データを入れる必要が発生しました。


でも、これをseeds.rbにだらだら書くのはちょっと・・・


とネットで探してたら見つけました!


import seed data from .csv or .yml for Rails 2.3.4+ — Gist


なんと、用意したCSVをseeds.rbで取り込んじゃうクラスです。


使い方


まずは、FasterCsvがインストールされている必要があります。


sudo gem install fastercsv


して下さい。


で、seeds.rbは以下をコピペ



############################################
# CSV YML 取込みクラス
############################################
require 'fastercsv'

class SeedImporter
def initialize
@model = nil
@with_id = false
end

def run
Dir.glob( File.dirname(__FILE__) + '/seeds/**/*.{yml,csv}' ).each { |seed|
send( "read_#{File.extname( seed )[1..seed.bytesize]}_seed", seed )
}
end

def read_csv_seed( file )
init_model( file, '.csv' )
FasterCSV.table( file,
{ :headers => true,
@with_id = csv.headers.include?( 'id' )
}
FasterCSV.open( file,
{ :headers => true,
if ( @with_id )
csv.each { |row| create_and_save_with_id( row.to_hash ) }
else
csv.each { |row| create_and_save( row.to_hash ) }
end
}
end

def read_yml_seed( file )
init_model( file, '.yml' )
YAML.load_file( file ).each_pair { |k, v|
if ( v.has_key?( 'id' ) )
create_and_save_with_id( v )
else
create_and_save( v )
end
}
end

def to_model( file, suffix )
File.basename( file, suffix ).classify
end

def init_model( file, suffix )
@model = Object.const_get( to_model( file, suffix ) )
end

def create_and_save( data )
@model.create( data )
end

def create_and_save_with_id( data )
record = @model.new( data )
record['id'] = data['id']
record.save!
end
end

############################################
# CSV取込み処理
############################################
SeedImporter.new.run



後はdbフォルダに、seedsフォルダを作り、その中にCSVを入れておきます。


CSVは例えばこんな感じ。


ファイル名:{テーブルID}.csv



id,jis_code,state_name,city_name
1,01101,北海道,札幌市中央区
2,01102,北海道,札幌市北区
3,01103,北海道,札幌市東区 


以上で準備完了!


rake db:seed を実行すれば、上記csvが取り込まれます。


ちなみに、今回は84kbくらいのcsvを取り込みましたが結構時間がかかりました。


また、このクラスにはdeleteは無いので、状況に応じてdelete_allを入れる必要があります。