とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

レンズ購入

デジイチを持って7年も経っているのにそんなに使っていないので未だに初心者ということで、レンズがほしいなとおもって2ちゃんの初心者スレを覗いて勉強。


スレの初心者へのおすすめだった撒き餌(50m)かパンケーキ(40mm)があったけど、パンケーキがCanonのレンズがキャッシュバックの対象だということでいい機会だから買ってみた。


キヤノン:ゴールドラッシュ[プレミアム]キャンペーン

Canon EF40mm F2.8 STM [EF4028STM]
キヤノン (2012-06-22)
売り上げランキング: 240


ついでにプロテクタも購入。


レンズフードは売り切れでなかったので取り寄せるぐらいなら通販だなと思ったので購入は見送り。
家に帰ってレンズフード見たけどこれならいらないかな?


Canon レンズフード ES-52 [L-HOODES52]
キヤノン (2012-06-22)
売り上げランキング: 2,889


ちなみにキャッシュバックは今日までなので買うなら急げ!
そして郵便局に急いで速達だ!

釣りに行って

昨日は久しぶりに釣りに行ってきた。

友達に車を出してもらって長浦沖堤に行ってきた。


渡船から帰ってきた人がシーバスを5〜6匹挙げてたのでかなり期待できる気がした。
まぁ、気のせいなんだが。


最初の1投目でシロギス釣れて、投げれば釣れたので3匹目でシロギスは友達に任せてルアーに浮気。


3回ぐらいバイトはあったけど合わせられなかったのでそのまま1匹も釣れずに終了。


釣れたシロギスは友達が全部くれたのでそのままさばいて唐揚げに。


美味かった。





本日の教訓

ActiveRecordを継承したモデルで#saveでも#save!でもデータが保存できなくなる自体に陥った。


で、1時間ぐらい格闘した結果、原因判明。


ActiveRecord継承したモデルを作った際に、モデルの内部でcreateとかupdateのメソッドを実装すると、
既存のcreateやupdateのメソッドがオーバーライドされてDBにデータが保存できなくなるらしい。

  1 # coding: utf-8
  2 
  3 class Book < ActiveRecord::Base
  4   attr_accessible :price, :title
  5   
  6   def create
  7     # 宣言をするとデータが保存できなくなる
  8   end
  9   
 10   def update
 11     # 宣言をするとデータが保存できなくなる
 12   end
 13 end

みんな気をつけろよ!


ちなみにsuper()でオーバライドするメソッドが呼び出せるので、次のようにすれば解決できる気がしなくもない(未検証)

  1 # coding: utf-8
  2 
  3 class Book < ActiveRecord::Base
  4   attr_accessible :price, :title
  5   
  6   def create
  7     # super()を呼ぶとオーバーライドしたメソッドが呼び出される
  8     super()
  9   end
 10   
 11   def update
 12     # super()を呼ぶとオーバーライドしたメソッドが呼び出される
 13     super()
 14   end
 15 end

まぁ、おとなしくメソッド名を変えるのが吉かな。。。

東京Ruby会議10で当日スタッフしてきました

Ruby会議2011に引き続き、東京Ruby会議10で当日スタッフをさせて頂きました。


セッションの内容は見れたものもあり、見れなかったものもあるので詳細は参加者の方々にレポートはお任せして、スタッフ業をさせていただいた感想を終わって1週間経つけど書いてみる。


実はRuby会議2011の時の参加レポートをブログに書いていないはずなので、そのへんのところから振り返っておく。(Ruby会議2011のレポートはとあるSNSには上げたものの、ブログに書くのを忘れてたので、今度拾ってきて書くつもり)


事の発端をたどると、Android Bazar and Conference 2011 winterのボランティアスタッフに参加したことから始まる。
その頃は「OSSのコミュニティに貢献したい」という今考えると自分でもよくわからないモチベーションがあって、当時興味のあったAndroidのイベントでボランティアスタッフの募集があったので申し込んだら当選した。


当選してボランティアスタッフをしたものの、なんか自分の考えていたコミュニティと違うなーと思っているところに、懇親会でRuby関西でお世話になっていた@kanasan とお会いし、話してみたところコミュニティの雰囲気が違うんじゃないかという話になった。
そしてRuby会議が今年で最後なのでそちらの当日スタッフをしてみてはどうかという話を受けて考えていた所に、Chiba.rbで@bash0C7さんからもRuby会議の当日スタッフのお誘いがあり、Ruby会議2011の当日スタッフにも申し込んで参加させてもらった。


Ruby会議2011の当日スタッフをさせていただいて改めて思ったのは、Rubyのコミュニティが自分にとって楽しい場所だということだった。


イベントを盛り上げようとするスタッフと、そこに来てくれるスピーカーと参加者、イベントには来れないけどTLで反応する人たち。
そういう人たちが集まる場所が自分にとってとても楽しい場所なんだという実感が持てたので、また機会があればスタッフ業がしたいなと思っていた所、運良く千葉で東京Ruby会議10が開かれるということになり、当日スタッフとして申し込んで参加させていただいた。


会期前日から前日設営と蟹工船(ノベリティのセッティング)を行い、1日目を終え、2日目を雪で中断し、最後までやりきれなかったなーと思っていたところへの3日目の開催。


今回は前日設営+会期3日間の計4日を当日スタッフとして参加させていただいて、やっぱりRubyのコミュニティがいいな―と思った。


スタッフ、スピーカー、参加者がみんな会議を楽しもうという感じがあり、2日目を雪で中断したことはすごく残念だったが、それに対してスタッフへの感謝の言葉がTLに流れていたり、都内の有志で会議を続けたりとみんなで会議を作ってるんだと思うとすごくワクワクした。


きっと他にもこういうコミュニティはあるのかもしれないけれど、自分にとってはRubyのコミュニティが一番楽しくてワクワクする場所なんだと思う。なので、機会があり続ける限りイベントにはスタッフなり一般の参加者、もしくはスピーカーとして参加していこうと改めて思った。


東京Ruby会議10は自分がRubyのコミュニティが好きで、これからもそこにいる人達と楽しくRubyを通して交流して行きたいと再度思わせてくれる楽しい会議でした。


東京Ruby会議10に参加されたスピーカーの皆さん、参加者の皆さん、そしてスタッフの皆さん、3日間+事前事後懇親会+準公式懇親会といろいろお疲れ様でした。


また、どこかの会議で皆様にお会いできるのを楽しみにしております!


※会期2日目の入り口に作った置いておいたお迎えの方

Ruby 2.0の機能解説メモ(Itoplevel)

  * toplevel
    * added method:
      * added main.define_method which defines a global function.
      * added main.using, which imports refinements into the current file or
        eval string. [experimental]
  • 追加されたメソッド
    • main.define_method

グローバルな関数を定義する

pry(main)> define_method "hoge", ->{puts "hoge"}
=> #<Proc:0x007fe47c1bac48@(pry):8 (lambda)>
pry(main)> hoge
hoge
=> nil
    • main.using

リファインメントを現在のファイルもしくはeval stringの中にインポートする

Ruby 2.0の機能解説メモ(Mutex)

  * Mutex
    * added method:
      * added Mutex#owned? which returns the mutex is held by current
        thread or not. [experimental]
    * incompatible changes:
      * Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize
        and Mutex#sleep are no longer allowed to be used from trap handler
        and raise a ThreadError in such case.
      * Mutex#sleep may spurious wakeup. Check after wakeup.
  • 追加されたメソッド
    • Mutex#owned?

現在のスレッドによって開かれたミューテックスを返す。または何も返さない。

pry(main)> mutex = Mutex.new
=> #<Mutex:0x007fe47c1a97b8>
pry(main)> mutex.owned?
=> false

よくわからん。

  • 後方互換のない変更
    • Mutex#lock
    • Mutex#unlock
    • Mutex#try_lock
    • Mutex#synchronize
    • Mutex#sleep

これらのメソッドはトラップハンドラーやスレッドエラーの際に利用されることがなくなった。

    • Mutex#sleep

wakeup確認後に間違ってwakeupするかもしれない。