2014年9月24日水曜日

Rails update時に値を変更して更新したい。

たとえば、保存時10円単位で四捨五入して保存したい場合。
ついでに登録日を1日ずらす。

日付型の項目は、年、月、日、時、分、秒と別れてパラメタに入ってくるので、
扱いづらい。
ので、一旦モデルに突っ込んで処理し、その後ハッシュに変換する。

def update
#パラメタを一旦モデルに突っ込む
tmp = Syohin.new(syohin_params)
#金額を10円単位で丸める
tmp.kingaku = tmp.kingaku.round(-1)
#日付型の登録日を1日ずらす。
tmp.record_datetime = tmp.record_datetime + (60 * 60 * 24)
#モデルをハッシュに変換する。
tmp2 = tmp.attributes
#不要なキーを削除
["id","created_at","updated_at"].each do |key|
tmp2.delete(key)
end
#updateに突っ込む
respond_to do |format|
if @syohin.update(tmp2)
format.html { redirect_to @syohin, notice: '更新完了' }
else
format.html { render :edit }
end
end
end

2014年9月23日火曜日

CloudStack勉強会、オープンソースカンファレンス、中国DB勉強会に参加してきました。

9/19:第22回 CloudStackユーザー会 in 広島
9/20:オープンソースカンファレンス広島&WebTouchMeeting
9/21:中国地方DB勉強会

っと、勉強会3連チャン参加してきました。

CloudStackユーザ会in広島

広島では初開催というCloudStackユーザ会の勉強会でした。
私自身CloudStackは何度も個人的に構築しており、またかなり苦労した経験があるので、
楽しく参加することが出来ました。

参加者がそんなにいなかったのですが、その分色々質問できました。
Citrixから来られていたのもあるのでしょうが、CloudStackとXenServerが一番相性が良い。との事。
ただ、XenServer有料だし、無料版も年一回WindowsなPCでアクティベーションしないといけないし・・・と質問したところ、今は無料版(オープンソース版)XenServerがあり、アクティベーションしなくても使用できると教えてもらいました。

また、今回Citrix様のご好意により、Citrix CloudPlatformラボ環境にて、CloudStack構築を体験できました。
スクリプトで早回しとかどうなっているんだろうと覗いてみたり・・・・
こういう検証環境が用意できると、勉強会でもかなり魅力的だなと感じました。
懇親会ではお好み焼きを食べながら、楽しくすごせました。


オープンソースカンファレンス広島

今年も多数のセミナーや展示がありました。
自分は今年はスタッフではなく、サーバーユーザ友の会(仮)として、自宅クラウドやOpenStackライブ構築などを行いました。

今年もラズパイクラスタの展示やX68kとかハードウエア系展示、CloudStackやさくらのクラウドなど、仮想技術関連、UnityやCocos2dなどゲーム関連と幅広い展示やセミナーで大盛況でした。

展示ブースでVyOSってどうなの?と質問をされたり、いろんな方と交流が出来るのがいいですね。

WebTouchMeeting

オープンソースカンファレンス広島の懇親会終了後、その足でWebTouchMeetingへ。
ひむらさんが電子書籍に挑戦されたことについて話をされました。

自分はてっきり表紙だけのネタ企画だと思っていたのですが、ガチで作ってありました。
なんでも、このために2週間集中して執筆したのだとか。
この方のバイタリティというか、なんか、凄いとしか言い様が無いです。

槌本さんによる、Webサービスの立ち上げと長期運営という内容で、学生時代に自分用に立ち上げたWebサービスが、どのような変遷を経て、今に至ったのかを丁寧に話されました。
本業は高エネルギー物理学で、100本以上の論文を共著されたというすごい経歴の方でした。
問題に直面した際の状況分析能力や、省力化のための分散コンピューティングシステム構築などは流石学者さんだなと思いました。
本業が忙しくなると、サービスを放置や畳んでしまうところが多い中、継続させつづけたのは凄いことだと思います。
産休などの制度も充実させているが、1日30分でも、働ける時間に働くというスタイルから、仕事へのブランク期間が短い点が評価されているなど、従業員を大切にしているなぁと感じました。


中国地方DB勉強会

すでにフラフラになりながら、朝からリアルゴールドと牛丼大盛りで挑みました(笑)

Oracleデータベースのトラブルシューティングでは、特に新しいことはありませんでしたが、
逆に言うと、見るところは変わらないということ。
普段から正常値を把握しないと、異常値の検出ができない。
スナップショットを取るのに負荷が掛かる。最初の見積もり時にはバックアップやスナップショットなどの負荷も入れておく。負荷がかかるから取らないのではなく、取る前提でシステムを構築する。
アプリケーション側でもエラーログ出力しておくほうが良い。
など。
昨今の情報漏洩などから、Oracleもセキュリティ周りは充実してきている感じでした。

MySQLトラブル解析入門では、入門と言いながら全然入門じゃない(笑)
クラッシュやデータ破壊については、なかなか解説しているところがないので、参考になりました。

他にもPostgreSQLやSQL Server、MongoDBと非常に内容の濃い盛り沢山な内容でした。

懇親会ではDBあるあるな話で各自盛り上がりました。









・・・・・・・・疲れた・・・

2014年9月17日水曜日

Rails4+DeviseでActiveDirectory(LDAP)認証を試してみた。

Rails4+Deviseで、ActiveDirectory認証を試してみました。

ActiveDirectoryはユーザ名がcnではなくてsAMAccountNameなんて項目に入っていたり、
標準でうっかり日本語でユーザつくろうものなら嵌ること間違いなしな罠が地味にあります。

幸いRubyは日本製なので、日本語でも問題ありませんでしたが・・・


詳細はWiKiにまとめておきます。