Submit Search
Upload
いつもどおりのテンションでしゃべるEightの怪談
•
0 likes
•
470 views
悠滋 山本
Follow
私の所属する、Eightチームで本当にあった割と怖い話をします。 - 見えない500 - 逆さ仕様 - ありえへんキー - 突然の0.truncate の話をします。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 42
Download now
Download to read offline
Recommended
もちょブログ解析入門
もちょブログ解析入門
sudosan
アイマスハッカソン2018 in 京都 進行スライド
アイマスハッカソン2018 in 京都 進行スライド
crssnky
KLabインターンシップ成果報告会
KLabインターンシップ成果報告会
Hiroaki Murayama
シンデレラガールズ声優の増え方まとめ
シンデレラガールズ声優の増え方まとめ
Hiro H.
超業火2本立て!スタンドアロンはいいぞスペシャル
超業火2本立て!スタンドアロンはいいぞスペシャル
陸弥 福田
Unity初心者LT
Unity初心者LT
Masaki Yamamoto
うえぽんでこれーしょん!製作報告
うえぽんでこれーしょん!製作報告
mabo207
Katawa shoujo player_guide_ja
Katawa shoujo player_guide_ja
Quirkyjoe
Recommended
もちょブログ解析入門
もちょブログ解析入門
sudosan
アイマスハッカソン2018 in 京都 進行スライド
アイマスハッカソン2018 in 京都 進行スライド
crssnky
KLabインターンシップ成果報告会
KLabインターンシップ成果報告会
Hiroaki Murayama
シンデレラガールズ声優の増え方まとめ
シンデレラガールズ声優の増え方まとめ
Hiro H.
超業火2本立て!スタンドアロンはいいぞスペシャル
超業火2本立て!スタンドアロンはいいぞスペシャル
陸弥 福田
Unity初心者LT
Unity初心者LT
Masaki Yamamoto
うえぽんでこれーしょん!製作報告
うえぽんでこれーしょん!製作報告
mabo207
Katawa shoujo player_guide_ja
Katawa shoujo player_guide_ja
Quirkyjoe
090912二次元と三次元の境界
090912二次元と三次元の境界
IGDA Japan
『アナザーエデン 時空を超える猫』スマートフォンでのRPG体験の実現のためにしてきたこと
『アナザーエデン 時空を超える猫』スマートフォンでのRPG体験の実現のためにしてきたこと
gree_tech
かわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライド
tuna cook
2020_0501_Charming Chen Agi study LT01 "History of Tomino Yoshiyuki and Fan b...
2020_0501_Charming Chen Agi study LT01 "History of Tomino Yoshiyuki and Fan b...
Shinichiro Kawano
かわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライド
tuna cook
110122 ぜろじげん講演会資料 配布用
110122 ぜろじげん講演会資料 配布用
IGDA Japan
フォントの選び方・使い方
フォントの選び方・使い方
k maztani
えほんニンジャスレイヤー
えほんニンジャスレイヤー
rnatori
名刺アプリEightの紙の名刺をなくす技術
名刺アプリEightの紙の名刺をなくす技術
Yotaro Fujii
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
sairoutine
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話
sairoutine
OSS についてあれこれ
OSS についてあれこれ
Takuto Wada
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
Yotaro Fujii
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
Drift
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
悠滋 山本
Introduction to stack's docker integration (1)
Introduction to stack's docker integration (1)
悠滋 山本
Whom to Recommend Elm to?
Whom to Recommend Elm to?
悠滋 山本
Predefを使ったsqlのトレース
Predefを使ったsqlのトレース
悠滋 山本
Monad as things to do
Monad as things to do
悠滋 山本
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
悠滋 山本
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
悠滋 山本
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
More Related Content
What's hot
090912二次元と三次元の境界
090912二次元と三次元の境界
IGDA Japan
『アナザーエデン 時空を超える猫』スマートフォンでのRPG体験の実現のためにしてきたこと
『アナザーエデン 時空を超える猫』スマートフォンでのRPG体験の実現のためにしてきたこと
gree_tech
かわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライド
tuna cook
2020_0501_Charming Chen Agi study LT01 "History of Tomino Yoshiyuki and Fan b...
2020_0501_Charming Chen Agi study LT01 "History of Tomino Yoshiyuki and Fan b...
Shinichiro Kawano
かわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライド
tuna cook
110122 ぜろじげん講演会資料 配布用
110122 ぜろじげん講演会資料 配布用
IGDA Japan
フォントの選び方・使い方
フォントの選び方・使い方
k maztani
えほんニンジャスレイヤー
えほんニンジャスレイヤー
rnatori
What's hot
(8)
090912二次元と三次元の境界
090912二次元と三次元の境界
『アナザーエデン 時空を超える猫』スマートフォンでのRPG体験の実現のためにしてきたこと
『アナザーエデン 時空を超える猫』スマートフォンでのRPG体験の実現のためにしてきたこと
かわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライド
2020_0501_Charming Chen Agi study LT01 "History of Tomino Yoshiyuki and Fan b...
2020_0501_Charming Chen Agi study LT01 "History of Tomino Yoshiyuki and Fan b...
かわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライド
110122 ぜろじげん講演会資料 配布用
110122 ぜろじげん講演会資料 配布用
フォントの選び方・使い方
フォントの選び方・使い方
えほんニンジャスレイヤー
えほんニンジャスレイヤー
Viewers also liked
名刺アプリEightの紙の名刺をなくす技術
名刺アプリEightの紙の名刺をなくす技術
Yotaro Fujii
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
sairoutine
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話
sairoutine
OSS についてあれこれ
OSS についてあれこれ
Takuto Wada
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
Yotaro Fujii
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
Drift
Viewers also liked
(6)
名刺アプリEightの紙の名刺をなくす技術
名刺アプリEightの紙の名刺をなくす技術
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話
OSS についてあれこれ
OSS についてあれこれ
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
More from 悠滋 山本
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
悠滋 山本
Introduction to stack's docker integration (1)
Introduction to stack's docker integration (1)
悠滋 山本
Whom to Recommend Elm to?
Whom to Recommend Elm to?
悠滋 山本
Predefを使ったsqlのトレース
Predefを使ったsqlのトレース
悠滋 山本
Monad as things to do
Monad as things to do
悠滋 山本
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
悠滋 山本
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
悠滋 山本
More from 悠滋 山本
(7)
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Introduction to stack's docker integration (1)
Introduction to stack's docker integration (1)
Whom to Recommend Elm to?
Whom to Recommend Elm to?
Predefを使ったsqlのトレース
Predefを使ったsqlのトレース
Monad as things to do
Monad as things to do
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
Recently uploaded
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
Recently uploaded
(9)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
いつもどおりのテンションでしゃべるEightの怪談
1.
いつもどおりのテンションでしゃべる Eightの怪談 山本悠滋 2015-09-03 表参道.rb #4
2.
こんにちは! 山本悠滋(@igrep) 26歳♂ 前回から続けて失礼。 Eightのサーバーサイド担当です。
3.
こんにちは! マイブーム: レス画像にプリキュアの画像を使う。
4.
きょうのおはなし! 前回と同じぐらい軽いノリでEightチームに「本当にあっ た怖い話」をしますよ! ちなみにこのスライドの見出しまで前回といっしょです ね! パワポとかじゃないからスライドのテーマを変えるのが面倒 臭かったのはないしょだ!
5.
Disclaimer! (周りの出方を見て入れるか検討) このスライドはEightチームにあった出来事を淡々と描く ものです。 意外と意識が高いため、実はあまり怖くないかもしれませ ん。 過度な期待はしないでください。
6.
その1: 見えない500 それは、私がjoinして間もない2013年の春頃でした...。
7.
その1: 見えない500 なぜか通らないControlerのテスト デバッグコードを仕込んでも辿り着くことなく、何事もな かったかのように500が返る。 Response bodyも空っぽ...
8.
その1: 見えない500 標準出力が意味不明なので log/test.log
とにらめっこして いると... なんかスタックトレースらしき文字列の配列をinspectし た跡が。
9.
その1: 見えない500 イメージ
10.
その1: 見えない500 ( ^o^)<(Iさん(元自衛官)に聞いてみよう!) (
◠‿◠ )☛ (ApplicationControllerでrescue_from Exception) ▂▅▇█▓▒░('ω')░▒▓█▇▅▂うわあああああ
11.
その1: 見えない500 「ApplicationControllerでrescue_from Exception」 と言えば。 (Controllerでの)すべて(の例外)を無に帰す最強の ラスボス 黒幕 ただのNoMethodErrorも、 TypeErrorも、 ActiveRecord::ValidationErrorも、 すべては闇に葬られるという...。
12.
その1: 見えない500 僕「...で、これ何してるんですか?」 Iさん「起きた例外をDBに保存しています。開発中なにか おかしかったらこのページを見ます」 (保存した例外の一覧が見えるページを開く) 僕「...はぁ。(さっきのスタックトレースはこれにINSERT する時のか...)」
13.
その1: 見えない500 僕「でも、テストだとdatabase_cleanerがあるから消えち ゃうじゃないっすか。今まで例外が見えなくて困ったこと はないんですか?」 Iさん「σ(゚・゚*) うーん...」 Iさん「そういえばすぐ気づいてコメントアウトしてます ね...」 _人人人人人人人人人人人人人人人人人人人人_ >
すぐ気づいてコメントアウトしてますね <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
14.
その1: 見えない500 教訓: rescue_from Exception
に限らず、 rescue Exceptionはマジで真剣に頼むから 慎重に使おう。 怖いのはコードだけじゃない、怖くなったコードを受け入 れてしまった人も(僕も含め)怖い。 (^_^;) ちなみに、その後Rails.envがtestの時 はrescue_from Exceptionしないよう変えて解決。
15.
その2: 逆さ仕様 要件: iPhone版で、Passbookを応用した名刺交換機能を作 りたい。 名刺を送信するユーザーの、プロフィール名刺の画像を Passbookの仕様に合わせたサイズに変換したい。 ただし、縦横比は保ったまま。 Passbookが指定するアスペクト比に合わない画像の場合、余 った部分を透明にする。
16.
その2: 逆さ仕様 ググったら出てきたGihyo.jpに載っていたコードを参考に 即実装・即確認・即PR・即マージ ステージングで確認!ところが...
17.
その2: 逆さ仕様 なんか妙に左上にずれた画像に... (;_;)
18.
その2: 逆さ仕様 どうもステージングと開発環境とでImageMagickのバージ ョンが大きく離れているのが原因らしい。 (ステージングのほうが新しい) どっかでエンバグしたのか、と思いいろいろなバージョン でやってみるも、どうも開発環境のバージョン以外うまく 行かない...。
19.
その2: 逆さ仕様 バグレポを送るべく再現コードを小さくするよういじって いたところ、 「(・-・)...ん?もしかして?」 使用していたMagick::Image#extentメソッドに渡す引数 x, y
の正負を逆転させると、 元の通り普通に動いた!!!!!!1
20.
その2: 逆さ仕様 この不思議ビヘイビアに挑むべくImageMagickの ChangeLog探検すると... 2010-09-13 6.6.4-2
Cristy quetzlzacatenango@image... * Don't negate the geometry offset for the -extent option. なんかそれっぽい記録が。
21.
その2: 逆さ仕様 何言ってんだよ逆に反転してんじゃねぇかよ... (#^ω^) ピキピキ と思うも、どうやらこれはImageMagickのCLI版、convert コマンドの-extentオプションの話らしい。
22.
その2: 逆さ仕様 と、言うことは、 convertコマンド-extentオプションがバグっていたのを直 した結果、 RMagick始め数多存在するImageMagickのバインディング のextentメソッドの仕様も反転してしまった模様...。
23.
その2: 逆さ仕様 ちなみに RMagickのドキュメントでは、 The upper-left
corner of the new image is positioned at -x, -y. と、すでに負の数で指定することが仕様であるかのように 書かれているという現実...。
24.
その2: 逆さ仕様 教訓: これに限らず、ImageMagickは結構アレらしいので気をつ けよう! ImageMagick has
a ridiculous development workflow 当たり前だけどちゃんと影響範囲を考えてバグ修正や仕様 変更をしよう! ちなみに、関連するコードは私のブログ記事に詳しくある よ!
25.
その3: ありえへんキー 1 ある日。 わけあってSさん(イケメン)が書いたspecを実行する と... 大量の外部キーエラー!
26.
その3: ありえへんキー 1 僕「ちょっと〜!Sさんちゃんとspec通してください よ〜!」 Sさん「えっ、こっちでは通るんですけど...」 僕「えっ」 (ちなみに、当時CIをこれから導入する、というところで した...)
27.
その3: ありえへんキー 1 確かに、お互いのSHOW
CREATE TABLEを見ると食い違って いる。 ?(ο´・д・)?? Nさん(後の出戻り) 「ああー、それeight.ymlが食い違っているからです ね...。」 僕「えぇっ、そんなまさかそれって...」
28.
その3: ありえへんキー 1 _人人人人人人人人人人人人人人人人人人_ >
設定によって異なる外部キーの有無 <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
29.
その3: ありえへんキー 1 詳しい事情はわかりませんが、外部キーの扱いにあぐねて たどり着いた手段の模様...。 もちろん現在は廃止済み。
30.
その3: ありえへんキー 1 教訓: データベースのスキーマはみんなちゃんと合わせよう。 外部キー制約の追加は計画的に。
31.
その4: ありえへんキー 2 とある新機能をテストしていた時のこと...。 僕「さぁ、ステージングでも確認するよ〜」 _人人人人人人人人人人人人人人人人人人人_ >
突然のActiveRecord::RecordNotUnique <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
32.
その4: ありえへんキー 2 なぜかステージング環境のみに存在するユニークキー が...。 対象のテーブルのマイグレーションファイルを逆上ると、 コメントアウトされた「:unique
=> true」がwww ボスに確認の上、手動で削除...。
33.
その4: ありえへんキー 2 教訓: お願いだからデータベースのスキーマはみんなちゃんと合 わせてくださいマジで
(;_;)。
34.
その5: >>突然の 0.truncate<< ※原因不明、未解決の問題です。
35.
その5: >>突然の 0.truncate<< ついに先月! わーい!
ヽ(=´▽`=)ノ 弊社もRails 4系に上げたよ!(4.2とは言ってない)
36.
その5: >>突然の 0.truncate<< ところがやっぱり... varchar(255)に設定していたカラムに上限以上の長さの文 字列が書き込まれ、エラーが出るケースが多発。
37.
その5: >>突然の 0.truncate<< 補足: Rails
4以降、MySQLの接続設定 SQL_MODE=STRICT_ALL_TABLES というのがデフォルトで有効 になりました。 例えば文字列がカラムによって決まった長さを超えてしま った場合、 これまでは長さが超えた分を切り捨てていたのを、 エラーを出すようになりました。
38.
その5: >>突然の 0.truncate<< そこで。 実際にエラーが起きたカラムの多くは本当に切り捨てても よいカラムだったので、 参照しているActiveRecordクラスのbefore_saveで適当 にtruncateすることに。
39.
その5: >>突然の 0.truncate<< ところが... 突如大量に落ちるspec 問題のtruncateメソッドを呼ぶところで wrong
number of arguments (1 for 0) なる謎のエラーが。
40.
その5: >>突然の 0.truncate<< どうやら、どこかでStringではなく0(Fixnum)のtruncateが 呼ばれてしまうらしい...。 同様の修正をした箇所で必ず発生する模様...。 (^_^;)
「同様の修正」をした時点で抽象化しろよ、というツ ッコミに対しては前向きに検討します。
41.
その5: >>突然の 0.truncate<< こちらのコードの問題なのかなのかActiveRecord側の問題 なのかさえわからず、 真相は闇の中...。 (調べる気がない)
42.
その5: >>突然の 0.truncate<< 教訓: (^_^;)
スライドを書いているうちに改善点が見つかること もある。 みんな積極的に自チームの闇を発表して、己のコードと向き あおう! お後がよろしいようで。
Download now