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
April 16, 2018
Programming
0
350
32bit OSは、今すぐ捨てろ!
Gotanda.pm Perl Technology Conference #17
LT資料です。
https://gotanda-pm.connpass.com/event/84014/
sapi_kawahara
April 16, 2018
Tweet
Share
More Decks by sapi_kawahara
See All by sapi_kawahara
今から始める8bits CPU アセンブラ言語
sapi_kawahara
0
620
執筆テーマの決め方
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
400
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
450
カジュアル面談本の裏側を語る / Casual Information Book Inside story
sapi_kawahara
0
460
Other Decks in Programming
See All in Programming
Jakarta EE Core Profile and Helidon - Speed, Simplicity, and AI Integration
ivargrimstad
0
110
AHC051解法紹介
eijirou
0
610
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
180
学習を成果に繋げるための個人開発の考え方 〜 「学習のための個人開発」のすすめ / personal project for leaning
panda_program
1
110
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
210
管你要 trace 什麼、bpftrace 用下去就對了 — COSCUP 2025
shunghsiyu
0
450
GitHub Copilotの全体像と活用のヒント AI駆動開発の最初の一歩
74th
8
3.1k
AI時代のドメイン駆動設計-DDD実践におけるAI活用のあり方 / ddd-in-ai-era
minodriven
22
8.8k
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
380
あまり知られていない MCP 仕様たち / MCP specifications that aren’t widely known
ktr_0731
0
290
サイトを作ったらNFCタグキーホルダーを爆速で作れ!
yuukis
0
420
サーバーサイドのビルド時間87倍高速化
plaidtech
PRO
0
350
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
How GitHub (no longer) Works
holman
315
140k
The World Runs on Bad Software
bkeepers
PRO
70
11k
How STYLIGHT went responsive
nonsquared
100
5.7k
KATA
mclloyd
32
14k
Rails Girls Zürich Keynote
gr2m
95
14k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
890
Fireside Chat
paigeccino
39
3.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Transcript
32bit OSは、 今すぐ捨てろ! 川原 英明
自己紹介 • 川原 英明 • Twitter @sapi_kawahara • Facebook kawahara.hideaki.0204
• 川越市在住、2児のパパ • 派遣会社に所属して、色々なところに常駐してます。 • スキルとしては、Perl,PHP,Java,Python,シェル,C,アセンブラ で、元コンシューマーゲームプログラマー、現在はWebアプリ のエンジニアです。
まずは、明日でもいいから! • Perlが動いている所にログインして uname -a と入力だ! • 結果表示に64の文字が出てくる方!
これから話す内容を一切聞く 必要が無いので寝てくださ い!
64の表示が無かった方! • そのOS、恐らくですが、サポート切れですよ。 • そのまま、動かしてもメリットは有りません。 • 2038年問題も、恐らく発生するOSです。 • 今すぐ、OSの交換をしましょう!
そう言っても予算が!
交換は無理?なんで? 工数取れない?
本当にやばくなったら対応す る?
それで大丈夫?
駄目でした! • printf "%d¥n", $num; • このコードが炎上しました。 • ここにくる数値が「4,294,967,296」を超えました。 •
32bit OSで、Perlのprintf では、カウンターストップをします。
しょうがないので • ちゃんと対応しました。 • use Math::BigInt; • my $value =
Math::BigInt->new( 4294967296 ); • print $value->bstr(), "¥n"; • 結果:4294967296 • これで、なんとか、なりました。 • https://qiita.com/sapi_kawahara/items/7f8668186474d 851a802
それ以外の対応 • printf を使っていないところは、use bigint プラグマで対応で きそうなので、とりあえず、プラグマ対応で逃げました。 • 恐らく、大丈夫だろうと自分は信じていました。
世の中、そんなに甘く無い!
XML出力で問題が発生 • XML::Simpleで、XMLoutを使う時に問題が発生しました。 • エラーメッセージは「Can't call method "isa" on unblessed
reference at /usr/share/perl/5.10/Math/BigInt.pm line 526.」です。 です。 • 確認しました。
サンプル use XML::Simple; use Data::Dumper; my $xs = new XML::Simple();
my $data->{'house'} = {'zip' => [350], 'name' => ['自分'], 'tel' => ['080-3726-****'], 'address' => ['埼玉県川越市'], 'twitter' => 'sapi_kawahara' }; print "Dumper¥n"; print Dumper $data; print "out:¥n"; print $xs->XMLout($data);
結果 Dumper $VAR1 = { 'house' => { 'zip' =>
[ 350 ], 'tel' => [ '080-3726-****' ], 'twitter' => 'sapi_kawahara', 'name' => [ '自分' ], 'address' => [ '埼玉県川越市' ] } }; out: <opt> <house twitter="sapi_kawahara"> <name>自分</name> <address>埼玉県川越市</address> <tel>080-3726-****</tel> <zip>350</zip> </house> </opt>
use bigintを入れた結果 Dumper $VAR1 = { 'house' => { 'zip'
=> [ bless( { 'value' => [ '350' ], 'sign' => '+' }, 'Math::BigInt' ) ], 'tel' => [ '080-3726-****' ], 'twitter' => 'sapi_kawahara', 'name' => [ '自分' ], 'address' => [ '埼玉県川越市' ] } }; out: Can't call method "isa" on unblessed reference at /usr/share/perl/5.10/Math/BigInt.pm line 526.
ああ、そうだねそうだね • 数値を、全てbigintオブジェクトにするので、当然の内容です。 • モジュールの設定を探るもの良いのですが、工数が無いので! 仕様を再確認し、XMLoutを使うところに、4,294,967,296を超 える数値がくることは無いので、XMLoutが通るところには、 use bigint プラグマが作用しないように対応しました。
• 要するに、数値を使うところだけ{ローカル化して、そこだ use bigintしました。}、物凄く逃げてます。
この騒動から反省点 • use bigint プラグマは万能じゃ無い。 • XML::Simpleは悪く無い。 • 32bit OSを使い続けるのが悪い。
• 今からでも、64bit OSに交換したい。 • {ローカルスコープ最強!}