タグ

ブックマーク / note.com/ruiu (2)

  • システム障害なしにうるう秒を乗り切る技術の発達について|Rui Ueyama

    数年に一度、1日が1秒だけ長くなることがある。そのたびにどこかでシステム障害が起こるのだが、何回もうるう秒を経験するごとに次第にベストプラクティスも確立されつつある。ここではうるう秒問題と人々がそれにどう対応してきたかについて説明しよう。 うるう秒というのは地球の自転速度のわずかな揺らぎに対して時計を調整するために数年に一回調整される1秒のことだ。うるう秒で1秒短くなる日は23:59:59からの1秒がスキップされる。うるう秒で1秒長くなる日は、23:59:59の次が23:59:60になり、その1秒後に次の日の00:00:00になる。 というわけで公式には秒というのは数年に一度60秒目というのがありえるのだが、ほとんどのOSはうるう秒にきちんと対応していない。Linuxなどでは通常「時計を1秒戻す」という驚くほど単純な方法でうるう秒を扱っている。つまりうるう秒がある日には23:59:59.9

    システム障害なしにうるう秒を乗り切る技術の発達について|Rui Ueyama
    souvenir038
    souvenir038 2017/12/02
    うるう秒を扱う安全な方法"leap smear"。うるう秒が追加される日の00:00:00からサーバの時計の進みを0.001%ほど遅くして、ちょうどうるう秒の瞬間に時計が1秒遅れている状態に。実質的にうるう秒をなくしてしまう。
  • 十分大きな乱数をユニークな識別子として使うのがなぜ安全なのか|Rui Ueyama

    いろいろなソフトウェアで、大きいランダムな値をユニークな値とみなすということが行われている。例えばユニークな識別子としてよく使われるUUIDはただの122ビットの乱数だ。gitもSHA-1ハッシュ値が160ビットの乱数のように扱えることを期待して、それをユニークな識別子として使っていた。実際にはランダムな2つの値が同じになる確率はゼロではないのに、なぜこれが安全なやり方だと言えるのだろうか? それについてちょっと説明してみよう。 あるシステムが、乱数で生成された識別子の衝突のなさに依存しているとして、仮に衝突が発生した場合、相当悪い結果、例えば復旧不可能な形でデータベースが壊れてしまうとしよう。これはどれくらい危険なのだろうか? 数学の問題で、学校のクラスの中で同じ誕生日の人が1組以上いる可能性は思ったより高いという話を聞いたことがあると思う。あるランダムに生成された値が衝突する確率という

    十分大きな乱数をユニークな識別子として使うのがなぜ安全なのか|Rui Ueyama
    souvenir038
    souvenir038 2017/11/29
    128ビット乱数を825兆個(1.3エクサバイト相当)生成したとき、衝突する確率は10億分の1。現実的なほとんどのシステムではその確率はこれよりずっと小さい。恐竜絶滅レベルの隕石が来年地球にぶつかる確率よりずっと低い。
  • 1