Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
32bit OSは、今すぐ捨てろ! 六本木心中編
Search
sapi_kawahara
June 11, 2018
Business
0
200
32bit OSは、今すぐ捨てろ! 六本木心中編
sapi_kawahara
June 11, 2018
Tweet
Share
More Decks by sapi_kawahara
See All by sapi_kawahara
執筆テーマの決め方
sapi_kawahara
1
230
LTの禁じ手
sapi_kawahara
1
920
||とorの違いは登壇して解決した
sapi_kawahara
0
280
Macintosh talk / Macintoshの話
sapi_kawahara
0
140
混合接種してみた / Mixed inoculation
sapi_kawahara
0
93
安くて美味い日本酒 / Great wholesale market
sapi_kawahara
0
310
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
350
カジュアル面談本の裏側を語る / Casual Information Book Inside story
sapi_kawahara
0
360
推し技術の紹介 / Introduction of pushing technology
sapi_kawahara
0
140
Other Decks in Business
See All in Business
LGBTQ__support_WOMEN_女性として働くということ_DEI
freee
1
270
(3枚)人材価値を測る5つのスキルと欠落的欠点とは?
nyattx
PRO
2
230
やめるという決断がもたらした変化
izumii19
2
610
VISASQ: ABOUT DEV TEAM
eikohashiba
1
17k
Ampersand Company Profile
cuebicventures
PRO
2
4.2k
株式会社gecogeco 会社紹介資料
gecogeco
1
1.8k
株式会社トラストバンク_採用ピッチ資料
trustbank
0
210
(3枚)営業のためのマーケティングマネジメントの全体像(コスト検証)
nyattx
PRO
2
1.2k
CC採用候補者向けピッチ資料
crosscommunication
2
38k
インキュデータ会社紹介資料
okitsu
1
25k
devsumi-2024-summer
onigra
2
510
リーダーシップについて-20240704.pdf
fshin2000
1
230
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
23
1.9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
52k
Automating Front-end Workflow
addyosmani
1362
200k
Music & Morning Musume
bryan
43
5.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
78
15k
StorybookのUI Testing Handbookを読んだ
zakiyama
15
4.9k
Embracing the Ebb and Flow
colly
81
4.3k
Rails Girls Zürich Keynote
gr2m
93
13k
Designing Experiences People Love
moore
136
23k
Making the Leap to Tech Lead
cromwellryan
127
8.7k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.3k
Transcript
余談:本日は天気が悪いですね️ • 本日、雨の中、ご参加くださり、ありがとうございます。 • だけど・・・こころなんて お天気で変わるのさ♪ • 六本木心中 アン・ルイス
32ビットOSは今すぐ捨て ろ! The second 六本木心中編 2018/06/11 Gotanda.pm #18(六本木編) 川原 英明
Twitter: @sapi_kawahara Facebook: kawahara.hideaki.0204
自己紹介 • 川原 英明 • 埼玉県川越市在中の2児のパパです。 • 派遣会社に所属し、****的な大手企業などで開発を行っており ます。 •
スキルは • Perlちょっと出来ます。 • PHPちょっとで出来ます。 • Javaちょっと出来ます。 • C言語ちょっと出来ます。(元ゲーム屋なので) • フロントサイド(JavaScriptなど)ちょっと出来ます。 • サーバーサイド(Shell,AWKなど)ちょっと出来ます。 • 最近は、RubyやPythonにも手を出しています。
前回話したこと • 32ビットOSで動いているPerlで、会員情報が、 「4,294,967,296」を超えた。(実際は超える前に警告を出す よう出すようにしてあり、それが発動し、対応を行った話) • 32ビットOSのPerlではprintf "%d",$num;では 「4,294,967,295」でカウンターストップするので、use Math::BigInt;で対応した。
• それ以外ではuse bigint; プラグマで逃げた。 • しかし、XML::Simple に、use bigint; プラグマを有効して XMLoutすると、数値項目がMath::BigIntオブジェクトになっ て落ちるので、XML::Simpleをつか使うところだけ、use bigint;を使わないようにした。
この騒動には、 続きがあります。
六本木心中 32ビットOSと心中したくな い!!
ターゲットはMySQL • 色々なシステムが動いているので、言語問いませんが、Perl以外は、 64ビットOSで動いているので、とりあえずセーフでした。 • 色々と大丈夫だったので、ついでに32ビットOSで動いている MySQLのバージョンが古いので、MySQL 5.1 の最終版から、64 ビットOSで動くMySQL
5.7 の安定版に移行することになりました。 • 設定は、今のスタンダードにしてもらいましたが、10年以上動いて いるシステムなので、日付関連のデフォルトは、ダメ設定「0000- 00-00 00:00:00」のままにしました、ごめんなさい。 • MySQLの0000-00-00 00:00:00は使ってはならない • https://soudai.hatenablog.com/entry/2018/05/12/191050
データベースが用意出来たの でテストを行う。
ぽとん
ポトン
ポトポトポトポト!
あ゛あ゛あ゛、ア゛プ゛リ゛ が落゛ち゛る゛!
一部、アプリが落ちる(PHP含む) • 落ちるところは、INSERTです。 • 数値項目に、数値以外を入れようとしていますと言うエラーが 発生していた。 • MySQL設定のスタンダード、「STRICT_ALL_TABLES」が原 因です。 •
この設定を辞めることも検討したが、この設定で動かないアプ リが悪い!と言う結論になりました。 • そして、先人が作成したレガシーなソースコードを確認すると、 2つ問題点が発見されました。
秘伝のタレ その1 • データベースに渡すQueryにプレースホルダを使ってない。
秘伝のタレは害悪 その1 • Queryの組み立ては、文字連結やら、正規表現まで駆使して、 作り上げているタレであった。 • そのくせ、入力値は正しい物として、処理を行うようになって おり、その結果、数値項目に空文字が入っていることに気づか ないまま実装されいる。 •
MySQLでSTRICT_ALL_TABLESが有効で無い時は、無効な値 はスキーマーでのデフォルト値が入るので、今の今まで問題無 しとして動作しておりました。 • プレースホルダを使い修正しました。
秘伝のタレ その2 • バリデーションが間違っている。
秘伝のタレは害悪 その2 • 秘伝のタレ その1に行く前に、バリデーションを行っている ところに問題は無いか確認すると、もう一つの問題がありまし た。 • それは、自分の目を疑うコードがありました。 •
ご覧ください。
my $num = $input ? $input : '';
秘伝のタレは駆逐するべき! • my $num = $input ? $input : '';
• それはバリデーションじゃない。 • 作った人は、数値がきたらtrueだと思ったんだろうけど、0は falseだ! • 同一人物が実装したと思われるPHPにも似たコードがあました。 • empty($input)とかしている。 • 速やかに、正しいバリデーションに変更しました。
この騒動からの反省点 • やっぱり、32ビットOSを使い続けるのが悪い。 • サポート切れのデータベースサーバーを使い続けるのが悪い。 • データベースの設定は、今のスタンダードにし、エラーがでた らアプリが悪いと思うべき! • Queryは文字連結じゃなく、プレースホルダを使いましょう。
• バリデーションは正しくやりましょう。 • 秘伝のタレは害悪と思い駆逐する。
これらを乗り越えて • 騒動を乗り越えて、やっとのことで、システムのマイグレー ションが終わりました。 • 六本木心中32ビットOSと心中は避けられそうです。 • Who are you...
• 遊び馴れた32ビットOS六本木 • エラーに震えるのよ純情ゆらすのよ Boogie Woogie