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
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
32bit OSは、今すぐ捨てろ! 六本木心中編
sapi_kawahara
June 11, 2018
More Decks by sapi_kawahara
See All by sapi_kawahara
氷川神社の話
sapi_kawahara
0
75
EzSignという 電子ペーパー
sapi_kawahara
2
93
Gitがない時代 インターネットがない時代の 開発話
sapi_kawahara
0
390
プログラミング言語において文字列を複数行にわたって だらだらと記載するアレ
sapi_kawahara
0
220
コマンドラインを見直そう(1995年からタイムリープ)
sapi_kawahara
0
780
今から始める8bits CPU アセンブラ言語
sapi_kawahara
0
1.9k
執筆テーマの決め方
sapi_kawahara
2
450
LTの禁じ手
sapi_kawahara
2
1.3k
||とorの違いは登壇して解決した
sapi_kawahara
0
430
Other Decks in Business
See All in Business
CMB.TECH Q2 2026 earnings release
cmbtech
PRO
1
1.5k
Bet AI Day 2026丨LayerXの採用を支える組織AIの現在地と、Agentに任せる未来
layerx
PRO
9
13k
2026.9_中途採用資料.pdf
superstudio
PRO
5
120k
ゲームにおけるメディアミックス展開との向き合い方 -ヘブンバーンズレッドのメディアミックス企画の立て方-
gree_tech
PRO
0
850
なんとかする力 〜 Android エンジニアからマネージャー、さらにその先へ? 〜
m_coder
2
450
顧客理解レースでAIの一歩先を行く / Know customers better than AI
hirokiyamamoto14
PRO
1
450
株式会社ナビタイムジャパン 会社紹介資料2026
navitimejapan
PRO
1
2.4k
依頼する技術 #tachikawaany
77web
0
470
20年続く長寿タイトルが、15年目にして売上を伸ばせた理由
gree_tech
PRO
0
1.3k
より使われるサービスに。行政プロダクトのグロース戦略
middleokada
2
1.3k
10年、同じドメインに 浸かる覚悟 / Decade-deep in one domain.
hirokiyamamoto14
PRO
0
220
キャンバスエッジ株式会社 会社説明資料
canvasedge
0
19k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
510
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Writing Fast Ruby
sferik
630
63k
Site-Speed That Sticks
csswizardry
13
1.5k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
Leo the Paperboy
mayatellez
8
2.2k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Designing Experiences People Love
moore
143
24k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
590
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