ばあちゃんからもらった上等の牛肉があったのでカセットコンロを買ってきてすき焼きした。鍋がないので鉄のフライパンでやったけどちゃんと文明開化の味がした。
すき焼き、最初に長ネギを斜めに切ったやつを焼いて香りづけしてから肉を投入して軽く焼き、酒、砂糖、醤油を入れてから白菜とか春菊とかを投入したら幸福が実現するという知見が得られた。
関わっているサイトの Rails のバージョンが 3.2.20 から 4.1.8 に上がった。自分は割と傍観していて他の人が主にバージョンアップしてたんだけど、いくつかはまりポイントがあって自分も Pull Request 送ったりしたのでやったことを書いときます。
Rails 4 から Flash メッセージ(ログインしましたとか)を格納する session のオブジェクトが普通の Hash になってる。 Rails 3 ではこれは FlashHash とかいうやつ。
Rails 3 から Rails 4 へのアップグレードで一旦 Rails 4 を出してやっぱりやめて Rails 3 に戻したりとか、ロードバランサーに Rails 3 と Rails 4 で動くサーバーを混ぜてリクエスト捌いたりするとまずいことになる。
Rails 4 のサーバーで session 出来た人が次にリクエストしたときに Rails 3 に当たるとログイン後とかに session に残っているメッセージを消そうとする処理とかで NoMethodError が発生して落ちてしまう。しかもたちが悪いことに Rack 層で死んでしまったりするから皆さんよく使ってると思われる ExceptionNotification とかで気づくことが出来ない。これはつらい。
対処法としては Hash クラスをオープンしてモンキーパッチするというのがある。こういうの。
↑のだと #alert
とか #notice
が呼ばれたときにエラーになるので自分は以下のようにした。
# NOTE Rails 4 と Rails 3 を混ぜて使うと Hash#sweep が見つからなくてエラーに
# なるようなのでモンキーパッチします。
# 参照: http://jasonneylon.wordpress.com/2014/08/27/rails-4-flashhash-upgrade-gotcha/
class Hash
def now
Rails.logger.warn "Stubbing now during upgrade"
{}
end
def keep
# stub keep for upgrade purposes
Rails.logger.warn "Stubbing keep during upgrade"
end
def sweep
# stub sweep for upgrade purposes
Rails.logger.warn "Stubbing sweep during upgrade"
end
def alert
Rails.logger.warn "Stubbing alert during upgrade"
self[:alert]
end
def notice
Rails.logger.warn "Stubbing notice during upgrade"
self[:notice]
end
end
ただこれもパーフェクトではなくて、何もしないように上書きしているだけなのでログイン後のメッセージとか削除後のメッセージが消せなくなったりする。それでも 500 エラーになるよりかはましなのでどうしても Rails 3 と Rails 4 を混ぜて投入したいみたいときなんかは有効。
Rails 3 の頃は ActiveRecord が絵文字を DB に保存することが基本的になかった。ユーザーが POST してきたフォームの中に絵文字が含まれてたら絵文字のところでテキストをぶった切って DB に保存するような挙動だった。しかし Rails 4 からは ActiveRecord は絵文字を素通りさせるようになってしまったので困ったことになる。
絵文字を DB に保存するためには、 MySQL の場合は DB のテキストエンコーディングを utf8mb4 というやつにしてないといけない。ただの utf8 だと保存時に Mysql2::Error: Incorrect string value
というエラーが出て DB に保存できない。emojimmy のような gem を使えば utf8mb4 でない DB でも使えるけど、 stores_emoji_characters :column_name
を忘れずにモデルに定義しないといけない。たとえば購入時に購入した製品のスナップショットを注文テーブルに取るような DB 設計だと、製品テーブルのカラムは stores_emoji_characters
してたとしても注文テーブルのカラムを stores_emoji_characters
し忘れていて死亡、というような悲劇が起こり得る。
いまはスマートフォンの時代で、ユーザーが入力してくるフィールドには必ず絵文字が含まれると思っておいた方がいい。スマートフォンをメインで使ってる人たちは開発者が想定しないようなフィールド(名前の敬称とか)に平気で絵文字を使ってくる。下手すりゃ住所や名前にも絵文字を入れて送ってくるかも知れない。アスキー文字しか受け付けないようなフィールドは JavaScript やサーバーサイドでバリデーション行ってると思うけど、マルチバイト文字列を受け付けるフィールドの場合はせいぜい長さくらいしかチェックしてないと思う。チェックを入れて絵文字を弾くことも可能だけど、スマートフォンの時代の流れに反しているしユーザーを失うことになりそう。これから新規でサービスを作ってデータベースに MySQL を使う場合はエンコーディングは utf8mb4 にしておいた方がいい。
他にも script/rails が bin/rails に変わってること忘れてて rails runner なバッチ処理が動いてなかったとか、 paranoia.gem の Rails 4 対応バージョンで物理削除のときに呼び出すメソッド名が変わっててはまったとかいろいろあったけど大きなところは上の session と絵文字だった。開発環境で使ってるときには気がつかず本番に出すまで気がつきにくいという意味で非常にやっかいな現象だと思う。
これから Rails 4 に上げる皆さんは頑張ってください。応援しています。
セルフホストの個人のウェブログでも Twitter カード出てるサイトあることに気がついて個人でもできるぽかったのでやってみた。メジャーサイト感出る。
Lokka 用のプラグイン作っといた。
MacBook の内蔵キーボードを有効にしたり無効にしたりするやつ、よく使うけど毎回 Terminal でコマンドうつの面倒くさいので Alfred の Workflow にした。
Alfred の Workflow でシェルコマンド実行できるけど sudo しないといけないのは実行できない。調べたら AppleScript 経由だと実行できることが分かった。
こんな感じ
do script “実行したいシェルスクリプト” with administrator privileges
MacBook の内蔵キーボードの有効無効の切り替えは以下のような感じになる。
on alfred_script(q)
set script_to_run to "sudo kext" & q & " /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext"
do shell script script_to_run with administrator privileges
end alfred_script
これ打つと認証プロンプト出るのでそこでパスワード入力すればよい。便利。
workflow にして公開しといたので使ってみたい人いたら使ってください。
2014年、つらいこといろいろあったけど、肉体的に一番つらかったのは痔ろうの再発だった。精神的なつらみもつらいといえばつらいけど、肉体的なつらみは肌身にしみて感覚となって残るのでなかなか記憶が薄れない。
痔の病院の様子です。 #様子ですJP pic.twitter.com/jQR6so4YX5
— ゴニーモンザレス (@morygonzalez) August 22, 2013
2012年に痔ろうになった(そのときの様子)。一旦治ったと思ってたんだけど完治してなくて、2013年の8月に病院に行ったら治ってないからもういっぺん手術した方がいいと言われた。仕事が忙しい&病院の予約がいっぱいでなかなか手術しに行けず、年が明けた2014年の1月に手術しに行った。
肛門括約筋ゆるめる薬と精神安定剤同時に飲んだら面白い感じになってきた。
— ゴニーモンザレス (@morygonzalez) January 23, 2014
痔ろうの治療といえばケツの穴と痔ろうの穴にゴム紐を通すシートン法が定石なんだけど、再手術ではそれはやらずに済んだ。しかし過去の手術痕があるところを切開して排膿するという痛いやつで、また生理用ナプキンをつけて暮らす日々が始まった。
=͟͟͞͞ケ=͟͟͞͞ツ=͟͟͞͞が=͟͟͞͞痛=͟͟͞͞い
— ゴニーモンザレス (@morygonzalez) January 26, 2014
ちょうどその頃、息子殿を託児所に預けることがあったんだけど、見事にウイルスかなんかをもらってきて嘔吐・発熱した。小さい子どもはしゃべれないので何の前触れもなくいきなりゲロ吐いたりするから、もろにゲロを全身で受け止めたりしてた。そしたら当然のごとく自分と嫁さんにもうつった。
親二人への感染は時差があった。子どもは治ってけろっとしてるのに俺と嫁さんだけ38℃以上の熱が出て激しい下痢に見舞われた。
体調やばい (@ 福岡市救急治療センター) http://t.co/DyTpP14mcc
— ゴニーモンザレス (@morygonzalez) January 26, 2014
がたがた震えながら車を運転して夜中に市の急患センターに行き点滴をしてもらった。点滴してる間もお腹は痛いのでトイレに行きたくなる。点滴台を抱えて急患センターのベッドとトイレを行き来するような状態だった。自分は具合悪くないのに夜中に急患センターにつれてこられ両親がそろって注射針刺されて点滴されてるの見て子どもはパニック状態に陥って泣く。さらにケツは切開したままの状態で膿や血が出続けている。自宅では用を足した後はポータブルウォシュレット的なやつでケツを洗ってたんだけど急患センターのトイレはウォシュレットなくて泣く泣くトイレットペーパーでおしりを拭いてた。これはやばいのではと思っていたけど案の定やばかった。
ケツから面白いように血が出てくる
— ゴニーモンザレス (@morygonzalez) January 29, 2014
胃腸炎が治り出社した日、会社から帰ってきたらケツから血が止まらないことに気がついた。生理用ナプキンでは吸収し切れてなくて、パンツが血まみれになっていた。トイレに入ってトイレットペーパー当てると一瞬で真っ赤になった。これはやばいと思って夜だったけど病院の院長の携帯に電話して事情を説明した。急遽見てもらえることになったので半ケツを浮かせた状態で車に乗って病院に行った。
ヤブ医院のあとにかかった肛門科名医すぎてやばい。夜に血が出てると院長の携帯に電話したらいまから来てくださいと言われてさっきまで縫合されてた。
— ゴニーモンザレス (@morygonzalez) January 29, 2014
パンツとズボンは血まみれで穿いて帰れなかったので病院の手術着をもらってノーパン状態で帰宅した。車なかったら異様な格好で地下鉄に乗車する羽目になるところだった。
こうして思い返しても急患センターに行ったときやケツから血が止まらなかったときは阿鼻叫喚の地獄絵図状態だったと思う。自分的にはかなりつらいのに世間的には大して重傷じゃないというのもつらい。
痔ろう、最近はオモコロとかデイリーポータルゼットとかで馬鹿がかかる愉快な病気みたいな扱いで紹介されてるけどマジでなるとつらいので世の中の人はもっと痔ろうへの理解を深めるべきだと思う。
電車ががらがらに空いてるのに座らず立ってる人を見かけたら好奇の目で見たりせず事情を斟酌してやって下さい。
僕からは以上です。
この記事は今年つらかった事 Advent Calendar 2014 13 日目の記事でした。来週は tktym2t さんです。
この記事はTKG Advent Calendar 2014 11 日目の記事です。昨日は you_sakai さんでした。
たまごかけご飯、子どもの頃から好きだったけど、家族の中で大人は母親しか食べなかった。ばあちゃんは顔をしかめてた。
ばあちゃんが顔をしかめるので、たまごかけご飯ははしたない食べ方なのかと思ってたけど、むかしはたまご高級品だったみたいだし、たまごかけご飯にして食べる習慣があるのはむしろ金持ちな気がする、と最近思いはじめた。
実際、母親の実家は金持ちで、母が嫁いだ先の我が家は裕福ではなかったっぽい。ばあちゃんが顔をしかめてたのははしたないからではなくたまごをそういう風にぞんざいな感じで食べることへの違和感があったからかもしれない。
他の人のたまごかけご飯アドベントカレンダー見てたらみんな白米少なめだけど自分は馬鹿だからいっぱいご飯盛ってしまう。たまごが足りなくて味が薄くなり醤油をいっぱいかけてしまって結局醤油かけご飯みたいになってしまう。
醤油は大分県日田の原次郎左右衛門の「あやめ」という銘柄を使っている。九州風の甘い醤油だけど減塩で上品な味だと思う。おいしい。
はやく少なめのご飯でたまごかけご飯できるようになりたい。
この記事はTKG Advent Calendar 2014 11 日目の記事でした。明日はhalfliteさんです。
5月末に家を建てて半年ほど住んで得られた知見を共有します。
子どもが生まれた
不動産資産 = 土地の値段
(家は無価値と考えた方がよい)中心街まで何分とか駅から徒歩何分とかばかりに目が行きがちだけど、車の出し入れのしやすさが土地の価値になる。土地のかたちがいびつだったり、道路と変な角度で接していたり、接している長さが短かったり、接している道路の道幅が狭かったりすると車の出し入れがしにくい。また面している道路は公道であることが望ましい。接している道路が 私道や持ち分共有の私道だと権利関係が複雑で揉める ことがある(揉めた)。
いつかはかっこいい家を建てたいと思ってる人には上にも書いたけど建築家の中村好文さんの本をおすすめします。