Eu estava brincando com o terminal e a função date, acabei descobrindo por acidente esse bug... esse é o mesmo caso que ouvimos falar em 1999 que no ano 2000 tudo ia parar e coisa do tipo, fazendo a Microsoft e outras empresas lucrar um pouco mais com os patches para consertar esse bug.
Bom, os comandos que retornam datas se baseiam em códigos binários para fazer os cálculos dos segundos etc. Quando o calendário do sistema POSIX foi iniciado, a data de início foi estipulada como 14/12/1901 (e a SCO teima que o
Linux e UNIX, sendo que o UNIX começa em 19/01/1970)... bom essa data para o computador não é 14/12/1901 00:00:00 e sim 00000000 00000000 00000000 00000000.
Nos concentrando nos 3 primeiros zeros vamos contar até 5 em binários:
| 1 = | 000 |
| 2 = | 001 |
| 3 = | 010 |
| 4 = | 011 |
| 5 = | 101 |
Ao chegar em 19/01/2038 03:14:07 em binário será 01111111 11111111 11111111 11111111, após isso o computador vai entender como 13/12/1901 20:45:52.
Veja um exemplo do que eu estou falando:
Bom, graças a Deus não somos como os pessoal da M$ que só avisa em cima da hora para você ser obrigado a comprar o patch dos programas que eles criam... esse bug foi descoberto com 32 anos de antecedência e já tem um patch para consertá-lo. Veja o código na próxima página.
Caso você queira ler o artigo no qual eu baseei a pesquisa:
[1] Comentário enviado por
elgio em 04/03/2008 - 10:42h:
Parabéns pela didática!
Excelente!
Me fez lembrar do bug que a primeira versão do NT tinha: eles usaram uma variável de 32 bits para contar o número de milisegundos que a máquina estava ligada. Em 49 dias esta variável entrava em overflow e o computador se resetava :-O
Mas não se preocupem, foi sem impacto. Ninguém conseguia ficar com um Windows tanto tempo ligado sem ter que reiniciá-lo por outros motivos :-D
hehehehe
[2] Comentário enviado por
hellnux em 04/03/2008 - 10:47h:
Opa,
Interessante o artigo. No BUG de 2000 nem conhecia Linux e nem windows direito.... e do NT nem sabia x]
Vi algo que pode estar errado, acho que seja assim:
0 = 000
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
[]´s
[3] Comentário enviado por
hlegius em 04/03/2008 - 11:11h:
Em 64bits parece que o erro não ocorre mais ...
[hlegius@Selene ~]$ date -d 01/19/2038
Ter Jan 19 00:00:00 BRST 2038
[hlegius@Selene ~]$ date -d 01/20/2038
Qua Jan 20 00:00:00 BRST 2038
Acho que a limitação está na plataforma 32bits...
[4] Comentário enviado por
m4tri_x em 04/03/2008 - 11:15h:
Valeuu...
[]´s
[5] Comentário enviado por
M4iir1c10 em 04/03/2008 - 11:41h:
Obrigado pela dica hlegius, eu esqueci de colocar esse detalhe no artigo o bug e em plataformas 32bits.
hellnux esse sitema binario e coisa de computador mesmo... olha so eu erei uma conta de 1 a 5, k-ra-k.... valeu pela correcao.
[6] Comentário enviado por
removido em 04/03/2008 - 11:56h:
gostei cara,
muito interessante !!!!!!!!!!!!!!!!!!
[7] Comentário enviado por
Teixeira em 04/03/2008 - 13:19h:
Valeu, muito bom o artigo.
O que eu iria comentar os colegas já comentaram.
( Tá passeando em Sydney? "Gudái, máite!..." Tem "snáiks" por aí?... hehehe!)
[8] Comentário enviado por
removido em 04/03/2008 - 14:36h:
só uma observação gramatical na introdução...
Seria Consertar, Concertar vêm de Concerto, de Orquestra, música e tal. =)
[9] Comentário enviado por
removido em 04/03/2008 - 18:59h:
Convenhamos, né cambada... A gente nem sabe se daqui a 32 anos a informática base-ar-se-á (gostaram ?????) em 111110000 e, então, sem exageros.....
Agora, que ficou um muuuuuuuust os códigos mudando constantemente na página, isso ficou..
Aaaaaaaaiiiiiiiiiiiiiii, gamei!!! ;-)
[10] Comentário enviado por
M4iir1c10 em 05/03/2008 - 07:48h:
Desculpe Rodrigo Campelini mais eu escrevi consertar ou concertar? Eu acho que foi com s e nao com c... qual eu devo usar ? Desculpem pelos erros ja tem um tempo que eu estou sem falar portugues, ai ja viu ne? o verbo to be em portugues "Eu estarei indo comprar chocolate"...rsrsrs