ミニベロを分解して組み上げた

ミニベロを買って乗っていたのだが、後輩からSensah empire使って11Sにしないのか?という話を聞いてみて11Sかしてみた。

乗っていたのはa.n.design worksのcdr214 alというミニベロだった。

ホイールとタイヤが重いせいかスポーツ自転車としては、ずいぶんもっさりとした自転車だなという印象を持っていた。

とはいえ、ママチャリとかと比べると乗ってると楽しいと感じるくらいには違うといった具合だった。

フレームととフォークとブレーキ以外は全部取り替えたのだが、ここまでするならフレーム買って取り付けたほうがまだ楽だった感想。

特にBBが固着していてどうにもならなかったのでお店にもっていって外してもらったりとかもした。

また変速がおかしくなっているので調整が必要なのだが、それもまたそれで楽しかったりする。

ホイールもタイヤも良いのに変えたせいか非常に走りもよくなった。

それにしても初めからついているブレーキが一切止まらないのでどうにかしたいところでもある。

2016年12月31日の奇跡

 ブログあったことを忘れるぐらい書いてなかったんだけど、ちょっと嬉しいことがあったので久しぶりに書く。

 

 実は2015年の6月くらいから睡眠が不安定になって2016年の9月ぐらいに睡眠不足だけではなくて最早色々と限界な状態になったのでお休みを戴きました。 というわけで現在進行形で休職しています。

 

 そんなわけで色々と疲れてしまった時に先輩にRENTってミュージカルを紹介してもらった。

レント ライヴ・オン・ブロードウェイ コレクターズ・エディション [DVD]

 これを家で一人でゴロゴロしてた時に見て、ボロ泣きしてしまいました。 こう今の自分に結構刺さるものがあったりして、サントラを購入して永遠と聞いてる日々があったりした。

 というわけで、このRENTミュージカルと映画を見てすっかりとハマってしまっていました。

 会社に復帰しようとしてやっぱりダメでと言うのを繰り返して叩きのめされた時に支えにもなったのも事実で結構刺さる歌が多いです。

 借りただけじゃなくてDVDも買って時々(と言っても買ってからまだ2回しか見返してないけど…)見返してた。

という感じな一年で最早ボロボロな感じで生きてたんですが、コミケ3日目(2016/12/31)に行こうかなぁと思って行ってみた。

一番見たかったのは @takahashi365さんの新卒退職本でした。

 こちら残念ながら伺ったときには売り切れてしまっていたのですが、見本誌を拝読させていただきました。お疲れ様でしたという感想でした。またKindleで再販を検討しているそうなのでそちらを待つ事にします。

 それ以外にも凄く魅力的な薄い本が色々とあってお金がすごい勢いで飛んでいって実に良い年末だという気分になりました。そんなこんなで長居するつもりも無くサクッと帰りました。

 行きはりんかい線使ったんですけど、帰りはゆりかもめで帰りました。ゆりかもめで帰ると私の住んでる家の方には新橋に出るんですよ。

 映画でも見て帰るかな〜と思って検索したら、有楽町に沢山劇場があるので、もう頭のなかがフランク永井でいっぱいになってしまいました。というわけで、有楽町に移動して角川のシアターから順に見てこうかな?と思い、見事に迷いました。

 地図持ってうろついてたはずなんですけどねぇ…(こういうことよくあるんですよ…)

 

 そしたら、国際フォーラムの前で何やら、おにいさんが「エンジェルシートの抽選クジ配ってます!」とか呼び込みを行ってるわけですよ。

 で、エンジェルシートって聞いてDVD貸してもらった先輩が並んだこともあるって言ってたのを聞いたのを思い出してピーン!と来たんですよ。

 これRENTじゃね?ってで聞いてみたらやっぱりRENTだったわけなんですが、もう並ぶしか無いなって思いました。時間的にはちょうど昼の部のエンジェルシート抽選クジの締め切り間際な時間帯だったわけですが、チケットをゲットしたわけです。

 エンジェルシートについてRENT20周年公演のページから引用させていただくと

※エンジェルシートとは...
RENTクリエイターのジョナサン・ラーソンは、お金に余裕のない学生やブロードウェイに縁遠い若い世代などすべての人にこの作品を愛してもらいたいと願っていました。彼の意思をついだものがこのエンジェルシートです。
エンジェルシートは1公演につき、最前列の10席を6,500円にて販売いたします。(※12/24(土)21:00公演・12/31(土)22:15公演は7,500円にて販売いたします。)
お一人様1枚まで現金購入のみとなり、公演当日に抽選を行い、当選された方のみお買い求め頂けます。
抽選方法詳細は、こちらをご確認ください→ http://rent2016.jp/angelseat.html

 

となっており、本当に舞台のど真ん前の席が割り当てられているみたいです。

 

 

 1時間ドキドキで待ち続けた結果は…

 

 

 というわけで外れてしまった感じでした。

 

 

 このドキドキ感を抱えて家に帰ろうと思ったのですが、フッと魔が差したんです。

 

 

 馬鹿ですね。最終公演前で何時間待つ気だよと思ったのですが、もう何が何でも見たろうという気持ちでした。とはいえ、まだ並んでる人もいないし今の時間から並んでたら流石に死んじゃうと思ったので、時間つぶしをすることにしました。

 

 

そんなわけでメルー見てきました。メルー良いですよ。メルー。

 

meru-movie.jp

 

いや、もう狂ってるとしか思えないです。見終わった直後の感想は↓

 

 

映像もきれいでした。

 

そんな感じで並び始めたわけです。

 

18:09分エンジェルシート抽選券配布まで何時間あると思って並んでたんでしょうね?

実際のところこんなオチだったりするけど、待つのも悪くないなと思えた時間でした。

 

というわけで得た番号は14番、一時間あるので三田製麺所でご飯食べてました。

当たってからはこんな感じでした。

14番っていきなり読み上げられたのですが、当たった時は信じられなくて凄く喜んでしまいました。

席につくまでがこんな感じで堪能してきました。

 

 何度かこのまま生きててもしょうが無いしとっとと死ぬべきか悩んでたこともありましたが、こんな良いことが起こるなら生きてて本当に良かったと思える最高の年末年始を送れました。手がおかしくなるくらい拍手したのは初めてでした。

 

 初めてのRENTのミュージカルの20周年記念公演の千秋楽でエンジェルシートを飛び込みで引くなんて経験なんて最早出来ないと思いますが、また見に行きたいなと思いました。

CarrierWaveを使った時にundefined method `validate_integrity'が出て困った話

TL;DR

アプリケーション名とCarrierWaveで生成されるuploaderが同じ名前になるとundefined method `validate_integrity'のエラーが出て困る。

とった解決策

多分何らかのオプションがあってずらせる気がするが、今回はアプリケーション名とuploaderが変わるように変更した。

まとめ

名前空間が衝突すると変なことになるので注意

前提

多分こんなマヌケなことをやらかすのは僕だけだと思ってるのですが、

Rails+CarrierWaveを使った時にうまく動かなくてちょっと諦めかけてたのですが、問題自体がかなり間抜けっぽかったので多分皆引っかからないと思うのですが解決策もよくわかってないのでメモだけは残しておく。

CarrierWaveのせいでもRailsのせいでも無くて使い手の問題な気がします。

つまり俺が悪い。一応バージョンだけ記載しておきます。

使用したソフトウェア バージョン
ruby 2.2.3
rails 4.2.4
carrierwave 0.10.0

他はまぁ適当に使ってます。databaseとかはなんでもいい気がするので書いてません。

何をしたか?

手慰みに画像のアップロード機能をRailsでためしてみることにしたかった。

というわけで安直に名前をImageUploaderとしてrails newをした。(ココが原因)

振り返り

プロジェクト生成

Rails new ImageUploader

生成したプロジェクトにCarrierWaveのGemを追加する。

source 'https://rubygems.org'

gem 'carrierwave'
#~~~~長いんで省略~~~~

で、Gemfileに書き加えたのでいつものごとくbundle installを叩く。

これで準備は完了。

Scaffold

そして画像をアップロードした時のモデルとコントローラーをscaffoldでどかっと作ってしまう。 名前(name)と画像管理用のカラム(image)をもつImageモデルを作る。

管理に使うカラムのクラスはCarrierWaveのREADEMEにかかれている通り、stringを指定している。

bundle exec rails g scaffold Image name:string image:string

で、生成されたmigrationファイルを実行しておく。

bundle exec rake db:create
bundle exec rake db:migrate
== 20151012181358 CreateImages: migrating =====================================
-- create_table(:images)
   -> 0.0016s
== 20151012181358 CreateImages: migrated (0.0017s) ============================

この時点でrailsを起動すると、したのようにいつもの画面が出てくる

f:id:k2170:20151013032341p:plain

uploaderを作る

そして本題のuploaderを作る。この辺りもちゃんとREADMEにかかれているので参照されると良いと思う。

bundle exec rails g uploader Image

これを叩くと app/uploaders/ の配下に image_uploader.rb が生成される。

特に変換とかしたいわけではないので、デフォルトをそのまま使う。

モデルと結びつける

class Image < ActiveRecord::Base
  mount_uploader :image, ImageUploader
end

railsを起動する

f:id:k2170:20151013032643p:plain エラーが出る…

はてさてこの原因は何だろうということでエラーをじっと見てみるとModuleとか出てるわけで、

というわけでconfig/application.rbを見てみると

require File.expand_path('../boot', __FILE__)

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module ImageUploader
  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de

    # Do not swallow errors in after_commit/after_rollback callbacks.
    config.active_record.raise_in_transactional_callbacks = true
  end
end

うん、多分これだ。

名前空間が衝突しちゃったみたいだ。

というわけで、別の名前でmigrationからやり直してみる。

%s/Image/Gazo/

bundle exec rails g scaffold Gazo name:string gazo:string
bundle exec rails g uploader Gazo

bundle exec rake db:migrate
class Gazo < ActiveRecord::Base
  mount_uploader :gazo, GazoUploader
end

で実行してみるとちゃんと実行される f:id:k2170:20151013034353p:plain

まとめ

めったに無いとは思いますが、application名とuploaderが一緒になるような場合問題になるようです。 ご注意ください。

言語化することの脅威

2年間ぐだぐだと個人的に続けてきたことを、一回自分でもまとめてみようかな?と思ってスライドとかに簡単にまとめてみたりして準備したりしてたのですが、

結果として急にモチベーションが下がってしまって、2年間続けてきたことを続けていくことに対してものすごく辛くなって自分でもわけがわからない状態になってしまっていた。

その時はなんで急にモチベーションが下がったのか、なんで急にいつもやってたことが煩わしくなってしまったのかが解らなくてもやもやしてこんな状態じゃ続けられないしどうしようと思っていたのだが、phaさんの下の記事
何かを終わらせるために書いてる - phaの日記

を見た時にハッとした。

なんとなくで言語化してしまったことによって自分の中で終わらせてしまっていた事に気がついた。

でも、本当にそれって終わってるの?勝手に答えを全部出したつもりになっているけど本当に終わったの?やりのことしたことは無いの?

って思うと全然道半ばだしやりたいこともまだまだあるし、やってみたいこともある。

だから、もうちっとだけ続けてみよう。

と、思えたのだが恐ろしいことに何が原因でモヤモヤしていたのか答えを得られなかったら本当にやめてしまっていたに違いない。

言語化することで自分としての答えを出すという事は非常に大事になことだと思います。

人間の時間は有限なので何かを終わらせる事でしか、次に進めないというのもあわかります。

しかし、その時点で出した答えで満足できるか?もっとやることは無いか?今後は同様に辞めたくなった時に思い返して見ることが出来るようになったのでいい経験になったと思う。

でも、言語化したことでこんな副作用があるとは正直思わなくてびっくりした。

YAPC::Asia2015に行ってきた

去年のYAPCからブログ書いてないとかどんだけだよという気分もしますが、YAPCはブログを書くまでがYAPCなのでしょうがないですね。生存確認のためです。仕方ないですね。

例によって朝寝坊してしまったので、ラリー・ウォールさんの講演は聞けなかった。

その場にいた同期によるとホビットの冒険を見れば大丈夫らしい(なんじゃそりゃ)

他にも懇親会予約しそこねていてかなり(´・ω・`)

後輩と出くわしたり色々と盛りだくさんで、楽しかったです。

話を聞いた中で面白かったものを3個だけとりあげて以下にまとめる。

個人的に超知見が得られたという話であれば、「ISUCONの勝ち方」これに尽きます。
現在色々と隠れ蓑にしてチューニングして回っているのですが、これは本当に知見のかたまりでした。
すごく役に立ってます。この発表を聞いて方針が綺麗に定まったおかげか、一部のAPIのレスポンスタイムが1/3にすることが出来ました。この話は聞けてよかった。
http://yapcasia.org/2015/talk/show/86ebd212-fab3-11e4-8f5a-8ab37d574c3a

羨ましくなった話としては「esa.io - 趣味から育てたWebサービスで生きていく」です。
僕も自分が自分で使えるようなサービスをいずれ作りたくなりました。
http://yapcasia.org/2015/talk/show/c191c08a-0a98-11e5-be34-67dc7d574c3a

発表が面白かったといえば「WebAudio で入門する信号処理 」です。
すごく面白かった。ビデオが公開されたら見るのをおすすめしたいです。
発表も内容も発想も面白かったです。こんなことができるようになりたいです!
http://yapcasia.org/2015/talk/show/c61a32a4-f797-11e4-bcef-8ab37d574c3a

ビデオが公開されたら他の聞けなかった講演も見てみたいなぁ〜

YAPC::Asia2014に行ってきた(2日目)

         ,. -‐'''''""¨¨¨ヽ
         (.___,,,... -ァァフ|          あ…ありのまま 昨日 起こった事を話すぜ!
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|       『おれはいつの間にか寝ていたと
        i|:!ヾ、_ノ/ u {:}//ヘ              思ったらYAPCが始まっていた』
        |リ u' }  ,ノ _,!V,ハ |
       /´fト、_{ル{,ィ'eラ , タ人      な… 何を言ってるのか わからねーと思うが
     /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ       おれも何をされたのかわからなかった…
    ,゙  / )ヽ iLレ  u' | | ヾlトハ〉
     |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった…
    // 二二二7'T'' /u' __ /:::::::/`ヽ
   /'´r -―一ァ‐゙T´ '"´ /::::/-‐  \     目覚ましを無意識に止めていたとか
   / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ  そんなチャチなもんじゃあ 断じてねえ
  ノ ' /  ノ:::::`ー-、___/::::://       ヽ  }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::...       イ もっと恐ろしいものの片鱗を味わったぜ…

というわけで、寝坊しました!あれだけ楽しみにしてたのに!

朝の2セッション聞けませんでした!でも、気になるのでビデオ公開されたら必ずみる!
他の参加してないセッションも気になるのあるから是非とも速く見たい!

というわけで、お昼のご飯に滑り込んだところから、YAPC二日目が始まりました。

ご飯美味しかったです。かき氷は火照った体に気持ちよかったです。



YAPC::Asia感想ですが、いや本当にすごかった。

どのセッションも凄かったし、技術に関してみんなキラキラしながら楽しそうに語ってたのが何よりもうワクワクした。

こんなワクワクしたのは本当に久しぶりで、僕もそういう生き方をしたい…いやする!ということで色々とゴソゴソと動いてみることにしようと思いました。

いや、なんというか会社内に篭ってるとこういうのが見えないから良くないっすな!

行ってして良かった!いや、もう行ってなかった去年までの自分を殴りに行きたいレベルで楽しかった!

今年はリスナーとして楽しませて頂いたけど、来年はなにか話せるものを作って頑張りたい!

あそこに立ってキラキラしながら楽しそうに語ってみたい!と思えるイベントでした。

あぁ楽しかった。