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
220
32bit OSは、今すぐ捨てろ! 六本木心中編
sapi_kawahara
June 11, 2018
Tweet
Share
More Decks by sapi_kawahara
See All by sapi_kawahara
今から始める8bits CPU アセンブラ言語
sapi_kawahara
0
480
執筆テーマの決め方
sapi_kawahara
1
350
LTの禁じ手
sapi_kawahara
1
1.2k
||とorの違いは登壇して解決した
sapi_kawahara
0
340
Macintosh talk / Macintoshの話
sapi_kawahara
0
190
混合接種してみた / Mixed inoculation
sapi_kawahara
0
140
安くて美味い日本酒 / Great wholesale market
sapi_kawahara
0
390
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
440
カジュアル面談本の裏側を語る / Casual Information Book Inside story
sapi_kawahara
0
450
Other Decks in Business
See All in Business
株式会社D2C ID 会社案内 / recruit
d2cid
2
4.3k
ちゅらデータ会社紹介
churadata
0
590
AWS Summit Japan 2025 社内コミュニティによる企業文化創り ~MAWS-UGの挑戦とこれから~
yukiogawa
2
760
ChillStack会社紹介資料
chillstack
0
350
Management Workflow
dskst
2
320
M3 Career Culture Deck(セールス&コンサルティング職)
m3c
1
280k
FERMENSTATION Recruitment
fermenstation
0
270
タケウチグループRecruit
takeuchigroup
0
6.7k
フルカイテン株式会社 採用資料
fullkaiten
0
66k
メドピアグループ紹介資料
medpeer_recruit
10
130k
tokyo_dbt_meetup_#14_意志ある羅針盤たれ<データサイド>
t_yamaguchi
3
520
20250701_UPDATER_companysummary
updater_pr
0
80k
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building an army of robots
kneath
306
45k
Rails Girls Zürich Keynote
gr2m
94
14k
How STYLIGHT went responsive
nonsquared
100
5.6k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
220
The Pragmatic Product Professional
lauravandoore
35
6.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
930
Building a Scalable Design System with Sketch
lauravandoore
462
33k
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