Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
32bit OSは、今すぐ捨てろ!
Search
sapi_kawahara
April 16, 2018
Programming
0
360
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
コマンドラインを見直そう(1995年からタイムリープ)
sapi_kawahara
0
590
今から始める8bits CPU アセンブラ言語
sapi_kawahara
0
910
執筆テーマの決め方
sapi_kawahara
1
380
LTの禁じ手
sapi_kawahara
1
1.2k
||とorの違いは登壇して解決した
sapi_kawahara
0
360
Macintosh talk / Macintoshの話
sapi_kawahara
0
210
混合接種してみた / Mixed inoculation
sapi_kawahara
0
160
安くて美味い日本酒 / Great wholesale market
sapi_kawahara
0
420
オフラインもし逢えたなら素敵だね / It would be nice to meet you offline.
sapi_kawahara
0
470
Other Decks in Programming
See All in Programming
俺流レスポンシブコーディング 2025
tak_dcxi
14
8.9k
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
300
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
110
ハイパーメディア駆動アプリケーションとIslandアーキテクチャ: htmxによるWebアプリケーション開発と動的UIの局所的適用
nowaki28
0
430
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
2.7k
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
2
220
AIコーディングエージェント(skywork)
kondai24
0
180
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
250
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
150
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
130
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
400
認証・認可の基本を学ぼう後編
kouyuume
0
240
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
85
9.3k
Rails Girls Zürich Keynote
gr2m
95
14k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
4 Signs Your Business is Dying
shpigford
186
22k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Side Projects
sachag
455
43k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
47k
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に交換したい。 • {ローカルスコープ最強!}