Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

timeという概念

80 views

Published on

2018/08/12 インフラ勉強会資料
https://wp.infra-workshop.tech/event/what-is-time/

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

timeという概念

  1. 1. timeという概念 8/12(日) 10:00-10:30 インフラ勉強会 Kazuo KATAYAMA(@kitkatayama)
  2. 2. 2038年1月19日 何の日?
  3. 3. https://emojipedia.org/google/android-8.1/thinking-face/
  4. 4. 目次 • 茶番 • 目次←イマココ • 時間を巡る歴史 • コンピューターでの時刻表現 • 有名な問題 • 実演
  5. 5. 自己紹介 • もふもふ(@kitkatayama) • 誕生日:1月19日(ほんとです) • 無線ネットワークとかが好きな人です • 過去登壇 • 7/7 ネットワークのお気持ち 物理編 • https://wp.infra-workshop.tech/event/the-networking-01-phisical-layer/
  6. 6. 目次 • 茶番 • 目次 • 時間を巡る歴史 • コンピューターでの時刻表現 • 有名な問題 • 実演
  7. 7. 時間を巡る歴史 • ごめんなさい、まとめきれませんでした!!! • 本楽しく読み過ぎてしまいました・・・ • 色んな祭りとか、 • Wikipediaが結構すごいので、この辺りを紹介しておきます・・・ • https://ja.wikipedia.org/wiki/時間 • https://ja.wikipedia.org/wiki/時計の歴史 • https://ja.wikipedia.org/wiki/協定世界時
  8. 8. 目次 • 茶番 • 目次 • 時間を巡る歴史 • コンピューターでの時刻表現 • 有名な問題 • 実演
  9. 9. コンピューターでの時刻表現 • コンピューターは0と1でデータを表現している • 2進数 10進数 • 0000 0 • 0001 1 • 0010 2 • 0011 3 • 0100 4 • 0101 5 • 0110 6 • 0111 7 • 1000 8 • 1001 9 • 1010 10 • 1011 11 • 1100 12 • 1101 13 • 1110 14 • 1111 15 2のn乗の情報を 表現できる!! (例) 片手:2の5乗=32 両手:2の10乗=1024!!
  10. 10. コンピューターでの時刻表現 • 整数: int型 • 0000 0000 0000 0000 0000 0000 0000 0000 ・・・0 • 0000 0000 0000 0000 0000 0000 0000 0001 ・・・1 • … • 0111 1111 1111 1111 1111 1111 1111 1111 ・・・2147483647 • 1000 0000 0000 0000 0000 0000 0000 0000 ・・・-2147483648 • … • 1111 1111 1111 1111 1111 1111 1111 1110 ・・・-2 • 1111 1111 1111 1111 1111 1111 1111 1111 ・・・-1 • 境目はとりあえずやばい!って感じです。
  11. 11. 有名な問題:2000 年問題 実際の年 コンピュータ 1950 19 50 1951 19 51 1952 19 52 … … 1998 19 98 1999 19 99 2000 19 00 ここだけ変化
  12. 12. 有名な問題:2038年問題 • 実演します!!!
  13. 13. 有名な問題:2038年問題 • パソコンに64bit版とか32bit版とか聞いたことあると思います • 世界の時間は、1970年1月1日0時0分0秒から計算している • 32bit=2の32乗4294967296通りのデータを使っても、時間を 測るのに足りなくなってしまった・・・ • 0111 1111 1111 1111 1111 1111 1111 1111 = 2038年1月19日3時14分7秒 • 1000 0000 0000 0000 0000 0000 0000 0000 = ???? [root@time-32 ~]# uname -a Linux time-32 3.10.0-862.el7.centos.plus.i686 #1 SMP Mon Apr 23 18:18:27 UTC 2018 i686 i686 i386 GNU/Linux [root@time-32 ~]# date --date='@2147483647' 2038年 1月 19日 火曜日 12:14:07 JST [root@time-32 ~]# date --date='@2147483648' date: `@2147483648' は無効な日付です
  14. 14. 有名じゃないかもしれない問題 21億4748万5548年問題 • 2038年問題を検証してた時に知ったのでおまけで。 • 2038年問題を解消するのに、time_tは64bitとなったが、他の変数の一 部が32bitだった・・・ • 2^31 (2147483648) + 1900 = 2147485548 • https://www.wdic.org/w/TECH/21億4748万5548年問題 [root@time-64 ~]# uname -a Linux time-64 3.10.0-862.3.2.el7.x86_64 #1 SMP Mon May 21 23:36:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [root@time-64 ~]# date --date='@67768036191644399' 2147485547年 12月 31日 水曜日 23:59:59 JST [root@time-64 ~]# date --date='@67768036191644400' date: 時間 67768036191644400 が範囲外です
  15. 15. サマータイムは何が問題? • ちゃんと1秒ずつ数えてるなら、結構問題なさそう・・・? • しかし、現実には・・・ • 例:時間を文字列で格納してしまっている • time_tのように、「基準時間から何秒」だと、時間の抜けや重複は発生しないが、 現実のシステムはそうじゃない • 2時間後に進むと、抜けた時間が「ログがないぞ!」って怒られる • 2時間前に戻ると、重複した時間が「もうログがあるんだけど!」って怒られる • 21億4748万5548年問題がかなり良い例 • 「うちのシステムは変えたけど、そっちはどう?」

×