Heltalsgrænse truer Twitter-klienter med 'Twitpocalypse'
Bare rolig. Twitter overlever. Men det er ikke sikkert, at alle tredjepartsklienter klarer skærene lige godt. I løbet af weekenden ventes antallet af sendte beskeder på Twitter nemlig at passere den magiske grænse 2.147.483.647.
Eller den øvre positive værdi for en heltalsvariabel på 32 bit.
Hver besked på Twitter bliver tildelt et heltal som et unikt identifikationsnummer. Det tal vil blive modtaget af de klientprogrammer, som mange Twitter-brugere benytter.
Problemet kan imidlertid opstå, hvis klienten forventer at modtage en heltalsværdi, som kan tildeles til et 32 bit heltal. Fredag lød prognosen på webstedet twitpocalypse.com, at Twitter ville overskride 32 bit-grænsen lørdag omkring middag.
Selve Twitter er forberedt på problemet, men det er ikke sikkert, at alle tredjepartsklienter kan håndtere et beskednummer, som er større end 32 bit.
Konsekvenserne vil variere fra klient til klient, men der er næppe tale om hverken Twitters eller verdens undergang.
Derimod er det endnu en gang en påmindelse om, at man ikke skal slå automatpiloten til, når man programmerer, selvom oprettelsen af en 32 bit heltalsvariabel sidder på rygraden.
Twitter overvejede at fremskynde processen til fredag for at have folk til stede til at håndtere eventuelle problemer. Emnet 'Twitpocalypse' toppede da også som det mest diskuterede på Twitter fredag.
Kommentarer (7)
... så kan man vist godt sige at de programmører, der har valgt at basere sig på at gemme antallet af beskeder i 32 bit heller ikke fortjener at deres software "overlever".
I min lommeregner er en (unsigned) 32 bit's integer [b]noget større[/b] end 2.147.483.647, nærmere 4.294.967.295.
Men det er jo ikke sikkert at klient udviklerene har tængt på unsignede værdier så problemet er jo stadigt reelt. Om ikke andet er det jo ret sjovt at tænke på at vi hele tiden ukritisk bruger plain integers som id-numre uden at overveje konsekvenserne (om de måske ikke er så reelle for os andre).
@STIG JOHANSEN
Nromalt bruger man den sidste (første?) bit til at angive om der er tale et negativt tal. I så fald bliver den størst mulige værdi lig med halvdelen af det teoretisk set mulige.
Teknisk set giver det at
Signed heltal = -2.147.483.648 til +2.147.483.647
mens
Unsigned heltal = 0 til +4.294.967.295
samme antal værdier mellem minimum og maksimum, men eftersom signed heltal er "normalt" at bruge giver det problemer når antallet overstiger de to milliarder et hundrede og syvogfyrre millioner fire hundrede treogfirs tusinde og sekshundrede og syvogfyrre
(et tal bliver først rigtig stort når man skriver ordlyden c",)
Der er 31.622.400 sekunder på et år.
2147483647/31622400 = 1 håndskreven besked hver sekund i 67 år.
Jeg er ret sikker på at ingen af mine applicationer kommer op på det. Og hvis de gør, har jeg penge nok til at hyre 1000 mand og kvinder til at lave det om.

