2011年10月29日土曜日

ブクログ



最近、嫁がやってるのを真似て、ブクログというサービスを使い始めました。

これで読んだ本と、観た映画をどんどん入れていこうかなと思います。

本とは読んだ感想なんかも入れていきたいけど、ハードル高いと続かないので(^^;




2011年8月16日火曜日

ひさびさのアップ



ここのところ忙しく、また、システム開発からも離れてしまっていたので、ずっと更新できていませんでした。


昨日、嫁が私のイラストを描いてくれたので、プロフィール画像を入れ替えてみました。


嫁は昔イラストを良く描いていたらしく、最近ペンタブレットを買って色々書いてるみたいです。


それにしても絵がきれいに出来ていたのでビックリ。


やるな!嫁!





2011年6月13日月曜日

i18nで、キーワード(”{{model}}”とか)の自動変換がされない



環境:rails2.3.8


開発してると、どうもエラーメッセージがちゃんと変換されていない問題にぶち当たりました。



{{model}}に{{count}}つのエラーが発生しました。


config/locales/ja.ymlには普通に定義しているのですが。



activerecord:
errors:
template:
header:
one: "{{model}}にエラーが発生しました。"
other: "{{model}}に{{count}}つのエラーが発生しました。"
body: "次の項目を確認してください。"


調べたところ、"{{model}}"の記述が変った?ようで、"%{model}"としたら、


ちゃんと変換されました。。。


まえは同じ環境で、ちゃんと変換されてた気がするんだけど(^^;





2011年6月10日金曜日

rake db:seed を複数回実行するときのidについて



環境:rails 2.3.8


rake db:seedを使って以下のレコードを作っていたのですが



User.delete_all

record = Facility.create( :name => "テスト管理者1", :login_id => "k1", :password => "k1",
record.id = 1
record.save!


2回実行するとid=1がうまく機能しないようでエラーになります。


調べた結果



User.delete_all
User.connection.execute("delete from sqlite_sequence where name='users'")

record = Facility.create( :name => "テスト管理者1", :login_id => "k1", :password => "k1",
record.id = 1
record.save!


こんな感じで、sqlite_sequenceテーブルにあるカウンターを削除する事で回避できました。





2011年6月9日木曜日

paperclipでつまった事のメモ



環境:rails2.3.8


画像アップロードのpaperclipを試していたところ、いくつかつまずいたのでメモしときます。


①最初、paperclipをプラグインに入れてやっていたのですが、


script/plugin install git://github.com/thoughtbot/paperclip


エラーが発生して何も出来なくなってしまいました。


調べたところ、gem install paperclip でうまく行きました。


出来たらプラグインでやりたかったのですが、原因がわからないので諦めました(^^;





ここの手順通りにソースを修正して、


やってみましたが、どうもアップロード時にvlidationエラーになって進まない。


ログを見ると、こんな感じのメッセージが一杯出てました。



[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: /tmp/stream20110608-6437-qh9ojk-0.jpg is not recognized by the 'identify' command.>


調べてみたら、/config/development.rbの記述で、


Paperclip.options[:command_path] = "/usr/local/bin/"


と書いていたのを、


Paperclip.options[:command_path] = "/usr/bin/"


に変えるとうまく行きました。。。


なんか、私の環境のパスがおかしいんですかね(^^;





2011年5月23日月曜日

itunesでフィーチャリングのアーティストが別れて困る件



タイトルの通り、itunesにCDをインポートすると、ご丁寧にそのアーティストだけでまとまらず、フィーチャリングの曲は分かれてしまって、曲選択がやりずらくなります。

その場合は、とりあえずプロパティの設定を、アーティスト→フィーチャリングのついた正式なアーティスト名。

アルバムアーティスト→まとめたいアーティストの名前にする。



それから、itunesの設定を以下のようにしたらいい感じになりました。

表示→カラムブラウザー→「アルバムアーティストを使用」にチェックを入れる



ちょっと面倒くさいけど、仕方ないか。




2011年5月15日日曜日

東芝のウォシュレット



2年ほど前に買った、東芝のウォシュレット(SCS-T141)のフタが、先日割れて外れてしまいました。


嫁がネットで調べると、同様の現象があちこちで出てて、割れた場所もみんな同じ・・・


ちょっと耐久度が不十分な不良品をつかまされた気もしますが、諦めて近くの家電量販店でフタだけ取り寄せました。


1260円だったかな。まぁそのくらいならいいかな。


ちなみに取り寄せたフタは割れた部分が、強度を上げる対策をして頑丈に見えました(^^;





2011年5月7日土曜日

ActionController::SessionRestoreError が出た



環境 rails2.3.8





なんか色々変更してる最中、急に「ActionController::SessionRestoreError」と言うのが出てきました。


sessionがおかしくなったのかと思って、ソースを見直すも解らず。


調べるとドンぴしゃな記事がありました。





Session Restore Error - 適当探訪


確かに、モデルごとsessionの中に入れてました。。。


仕方ないので、idの方をsessionに入れて、都度findすることにしました。





ちなみにこのあと、ソースを修正するもエラーが消えませんでしたが、


ブラウザのキャッシュをクリアすると、元通りになりました。





2011年5月2日月曜日

excelで値を入力しても、関数がリアルに動作しない



[excel2003]


関数・マクロ、バリバリのエクセルシート触ってたら、なんか関数の自動計算が動かなくなっていた。


値を入れても全然再計算しない。保存して閉じてから開くと再計算されている感じでした。


調べると、ツール→オプション→計算方法タブ の計算方法が手動になっていました。


自動にチェックを入れると元に戻りました。


んー、こんなとこ全然触っていないのになぁ。。。





2011年4月27日水曜日

git でロールバックする方法



今、gitでソース管理をしていますが、なかなか感覚が掴めず四苦八苦。


本を読んでも書いてる事が解らない。。。





とりあえず、ロールバックのやり方が解ったのでメモ


まず git log コマンドで、戻したいコミットの「191cdfd49e19544971f8931700f818564c0e47d4」


みたいなIDを取ります。


続いて、下記のコマンドを打つと、そのコミットまで戻ります。


git reset --hard 191cdfd49e19544971f8931700f818564c0e47d4


※上記「191cdfd49e1954...」が直近のコミットになります。


※途中のコミットも完全に消えてしまうので注意!





2011年4月26日火曜日

数値タイプの項目を、前ゼロを付けて文字列型にする



自分用のメモ


hogeに2桁までの数値が入ってるとして、


2桁の文字列をとりたい場合、


sprintf('%02d', hoge)


とすれば良い。


さらに簡単に書くと


"%02d"%hoge


でもOK。


細かい書き方のルールは解ってないので、暇なときにでも調べようっと。





コントローラーによって、layoutのソースを分けたいとき



環境 rails 2.3.8


viewを書くとき、<html>や<body>タグなどは、views/layouts/application.html.erb に書かれていますが、


controllerによって、上位のタグを分けたいこともあります。


そのときは、views/admin/index.html.erb だったら、application.html.erb をコピって


views/layouts/admin.html.erb を作れば良いです。


以降、adminコントローラーには、admin.html.erbが適用されます。





2011年4月20日水曜日

iPod touch が同期の時にバックアップのエラー発生



iPod touch の同期中に、いつものごとくPCがフリーズ。


再起動して、また同期したが、バックアップが壊れていると言われてエラーが出るようになりました。


調べると、iTunesの「編集」→「設定」→デバイスタブ でバックアップの削除が出来ました。


エラーメッセージを読んでも、どうしていいか解らなかったヨ!





2011年4月12日火曜日

ローカルの変数名を動的に指定する



以下のような変数があったとして、


str1,str2,str3


処理によって変数名の数値の部分を動的に設定できないかと調べてみたら



eval( "strGet = str" + i.to_s)


で、出来ました。"eval"を使うといいんですね。


ちなみに、こんなやり方でも取れるようです。



hoge = "strGet"
eval( "#{hoge} = str" + i.to_s)





2011年4月6日水曜日

今週のお題 笑顔のもと



今週のお題笑顔のもと


笑顔のもとは、家族が元気で楽しくあるとき。


家族と言っても嫁と二人だけだけど。


もし子供が出来たら、アホで真面目な家族でありたい。


それが僕の笑顔のもと。





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を入れる必要があります。





2011年1月28日金曜日

text_fieldをdisabledにすると、その項目は保存されなかった。



環境:rails2.3.8


表題の通り。



<%= p.text_field field_cd, :disabled => true %>


この場合、readonlyに変えてやるとちゃんと保存してくれる。



<%= p.text_field field_cd, :readonly => true %>





2011年1月18日火曜日

クライアントがFireFoxでアクセスしたときのみInternal Server Errorが発生



環境:rails 2.3.8


windows2003serverでのrailsデプロイの際、クライアントがFireFoxでアクセスしたときのみInternal Server Errorが発生しました。


といっても必ずInternal Server Errorが出るのでは無く、正しく表示されたり、CSSが適用されていないような、おかしな表示をしていました。



Internal Server Error
Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.


仕方ないので地道にどのソースが影響しているのか、切り分けながら探していきました。


そうしたらどうも、<%= javascript_include_tag :defaults, :cache => true %>が引っかかります。


:defaults指定なので、prototype.jsなどの構成ファイルを調べたところ、application.jsを外すとうまく動きました!



でもapplication.jsって・・・



\public\javascripts\application.js

// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults



コメントしかない(^^;


まぁ、仕方ないので、application.jsを読み込ませないように修正して進めてみます。





2011年1月11日火曜日

windows環境(Instantrails)で、文字コードをShift-jisに切り替える



環境:rails2.3.8


今、既存DBを元にrails開発出来るかテストしているのですが、テーブル名と項目名が日本語で定義されており、文字コードに絡んだエラーがでるのでその対策です。


まずはデータベースの定義を修正


database.yml



development:
adapter: oracle_enhanced
database: XE
username: system
password: *******
encoding: sjis


次に環境設定


environment.rb



Rails::Initializer.run do |config|
config.action_controller.default_charset='Shift_JIS'
end
$KCODE = "s"


最後にHTML側の修正



<head>
<meta http-equiv="content-type" content="text/html;charset=Shift_JIS" />
<title>test: <%= controller.action_name %></title>
<%= stylesheet_link_tag 'scaffold' %>
</head>


また、確認中はブラウザのキャッシュが残ったままで、ソースを変更しても反映されない場合があるので、あれ?変わらないな?と思ったら、一度キャッシュをクリアした方がいいです。





2011年1月7日金曜日

rubyでexcelするためのspreadsheetを試すもうまく行かず。



railsで、エクセルテンプレートを読込み、値を貼付けて、エクセルを返す処理を行うことになりました。


調べたところ、windowsでもlinuxでもoffice無しで動く、spreadsheetを試してみました。


しかし、出力したファイルが破損しているのか、開くときにエラーが出てしまいます。


小さな表くらいだと大丈夫だけど、大きめの表などファイルサイズが大きくなると破損するように見えました。


かなり調べてみたけど解らず。


あきらめてwin32oleというのを使おうかなぁ。


追記:


 一旦はあきらめましたが、どうにもあきらめきれずに追加調査してみました。


 地道にうまく行くパターンと行かないパターンを切り分けて調べたんです。


 そしたら少し解ったことが。


 値の設定を行うときにどうも破損するのは解ってたのですが、100%では無い。


 例えば、これを1行だけ設定した場合、破損しますが、



sheet1[8,5] = "125"



 これは破損しません



sheet1[0,0] = ""



 書式とかセル結合の問題かと思いましたが、最初の設定でもこう書けば通りました!



sheet1[0,0] = ""


sheet1[1,0] = ""


sheet1[2,0] = ""


sheet1[3,0] = ""


sheet1[4,0] = ""


sheet1[5,0] = ""


sheet1[6,0] = ""


sheet1[7,0] = ""


sheet1[8,5] = "125"



 どうも、1行目から順に値を設定しないといけないみたいですね(^^;


 いきなり8行目に値を入れようとすると、ファイルが破損します。


 解って良かったのかどうなのか。


 ほんとにこのツール使って良いのか悩みますね><;





2011年1月5日水曜日

Railsでエクセルファイルを出力する



環境:rails2.3.8、spreadsheet0.6.5.0


今回は、Ruby用のspreadsheetというのを使って、エクセルを出力したいと思います。


イメージとしては、エクセルのテンプレートファイルを作っておき、


出力ボタン押下時に、そのテンプレートを読込み、値を設定し、そのまま「ファイルを開く」ダイアログを出す感じで。





まずは、


gem install spreadsheet


現在のバージョンは0.6.5.0でした。


次に出力機能を付けるcontrollerに以下のソースを記述する。



def print
require 'spreadsheet'

#テンプレートファイルの取得
book = Spreadsheet.open("テンプレート.xls")

#最初のワークシートを設定
sheet1 = book.worksheet(0)

#ここで値をゴリゴリ設定する
sheet1[8,5] = "125"
sheet1[9,5] = "9"

#ダウンロードする為にtempファイルを作成
tmpfile = Tempfile.new ["テスト", ".xls"]
book.write tmpfile

tmpfile.open # reopen

send_data(
tmpfile.read,
)

tmpfile.close(true)

end


あとは、view側で上記のprintアクションを呼ぶようにするだけ。





railsで、oracleXEに接続してみた(windows環境)



環境:InstantRails、rails2.3.8、oracleXE


railsからoracleの接続。簡単そうでちょっと手こずりました。


まだ、DBアクセスは試していませんが、とりあえず、接続の方法を先にアップします。


RubyForge から"ruby-oci8-2.0.4-x86-mingw32.gem"をダウンロード


>cd xxx


 で、ダウンロードしたフォルダに移動


>gem install ruby-oci8-2.0.4-x86-mingw32.gem 


 でoci8のインストール


>gem install activerecord-oracle_enhanced-adapter


で、activerecordの接続用アダプタをインストール(1.3.1)


detabase.ymlを編集(とりあえず開発環境だけ)



development:
adapter: oracle_enhanced
database: XE
username: system
password: ******


あ、oracleXEは既にインストールされている前提で書いています。