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
230
32bit OSは、今すぐ捨てろ! 六本木心中編
sapi_kawahara
June 11, 2018
Tweet
Share
More Decks by sapi_kawahara
See All by sapi_kawahara
今から始める8bits CPU アセンブラ言語
sapi_kawahara
0
720
執筆テーマの決め方
sapi_kawahara
1
360
LTの禁じ手
sapi_kawahara
1
1.2k
||とorの違いは登壇して解決した
sapi_kawahara
0
350
Macintosh talk / Macintoshの話
sapi_kawahara
0
200
混合接種してみた / Mixed inoculation
sapi_kawahara
0
150
安くて美味い日本酒 / Great wholesale market
sapi_kawahara
0
410
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
450
カジュアル面談本の裏側を語る / Casual Information Book Inside story
sapi_kawahara
0
470
Other Decks in Business
See All in Business
ユーザー数10万人規模のアプリで挑んだトップ画面のUI刷新
tochi86
0
450
freeeを軸に変えていく記帳代行の概念
yuki_yano
PRO
0
120
プラスディーアンドシー合同会社 FACTBOOK _ver1.51_20250801
plusdc
PRO
1
230
【会社紹介資料】25年7月度
creativeinfinity
0
790
会社紹介資料
gatechnologies
2
110k
ビジネス職中途採用向け会社説明資料_2025.2.pdf
zozobusiness
0
400
株式会社LANY / Company Deck
lany
2
83k
【UMed】Company Deck_250923
ryushu
0
120
新規投資家向け資料
digitalgrid
0
1.2k
Team Topologies Second Edition - launch events - 25 September 2025
matthewskelton
PRO
0
540
2025年10月副業制度運用者の実態調査
fkske
0
110
CREFIL Inc. / Company Profile
crefil
0
180
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
For a Future-Friendly Web
brad_frost
180
9.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
19
1.2k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Designing for humans not robots
tammielis
254
26k
Speed Design
sergeychernyshev
32
1.2k
It's Worth the Effort
3n
187
28k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.9k
Leading Effective Engineering Teams in the AI Era
addyosmani
1
130
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