{"id":1187,"date":"2014-12-11T06:06:27","date_gmt":"2014-12-11T12:06:27","guid":{"rendered":"https:\/\/www.lastdragon.net\/?p=1187"},"modified":"2014-12-11T06:06:27","modified_gmt":"2014-12-11T12:06:27","slug":"no-hay-fecha-que-no-llegue-ni-plazo-que-no-se-cumpla-el-efecto-2038-y-la-muerte-de-los-32-bits","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=1187","title":{"rendered":"No hay fecha que no llegue ni plazo que no se cumpla, el efecto 2038 y la muerte de los 32 bits"},"content":{"rendered":"<p>Alguna vez escuchaste del efecto Y2K \u00bf no ? entonces lee este articulo <a href=\"https:\/\/www.lastdragon.net\/?p=329\">El fin del mundo \u00bfOtra vez?<br \/>\n<\/a><br \/>\nAunque son muy parecidos ocurrir\u00e1n de forma diversa, el primero fue causado por IBM y Microsoft que no eran compatibles con POSIX, en el 2000 todos los que us\u00e1bamos GNU\/Linux como este servidor nos burl\u00e1bamos de ellos. Que tiempos eran buenos a\u00f1os. Pero el Karma se regresa.<\/p>\n<p>Los sistemas basados en POSIX como lo es Unix y cualquier Unix compatible como GNU\/Linux, FreeBSD, incluso otros pseudo POSIX como Windows NT, XP a 32 bits tendr\u00e1n un final muy violento en diciembre del 2038, ninguna maquina de 32bits deber\u00e1 estar operativa a llegar el diciembre del 2038 y menos si esa m\u00e1quina es responsable de alg\u00fan servicio importante como banca o servicios b\u00e1sicos como alumbrado p\u00fablico por citar ejemplos.<\/p>\n<p>Explicar el problema es f\u00e1cil.<\/p>\n<p>Dentro de la norma de POSIX se especifica que para determinar la fecha se usa la cantidad de segundos que han transcurrido desde las 0 horas del primero de enero de 1970, cada segundo a partir de ese momento es almacenado en una variable de 32 bits con signo, el m\u00e1ximo numero positivo alcanzado seria literalmente 2 Gigabytes ( segundos en n\u00fameros enteros ) poco mas de 2 millones de segundos ( 2.147.483.647 ) al momento de transcurrir el segundo 2.147.483.64\u201d8\u201d  habr\u00e1 un desbordamiento de buffer en el mejor de los casos la fecha se mover\u00e1 a un signo negativo, en otro simplemente colapsa el sistema operativo y sus aplicaciones en general.<\/p>\n<p>Si eres un programador avanzado seguro tomas la variable time_t de lenguajes de programaci\u00f3n en C o basados en C como tipo de dato ya sabes que todos tus programas van a fallar llegado el diciembre del 2038<\/p>\n<p>Pienso que la mayor\u00eda de las empresas se est\u00e1n preparando uno de los motivos de por qu\u00e9 usar sistemas operativos en 64 bits es palear este problema, ojala todo fuera tan f\u00e1cil como eso.<\/p>\n<p>El problema es que miles de millones de aplicaciones han sido compiladas en los 32 bits incluso los compiladores de esas aplicaciones fueron compilados as\u00ed, aunque la maquina y su sistema operativo soporte una variable de time_t de 64 bits la aplicaci\u00f3n que corre sobre el sistema operativo de 64 bits no lo soportara, de que sirve tener un sistema operativo que puede sobrevivir el a\u00f1o 2038 si muchas de las aplicaciones importantes no se podr\u00e1n ejecutar a menos que alguien recompilara todo esos programas viejos asumiendo que el c\u00f3digo fuente est\u00e1 disponible, que todos los compiladores han sido recompilados para escribir c\u00f3digo con time_t en 64 bits. Si tu usas un Windows en 64 bits que en este momento es lo mas probable tal vez no lo hayas notado pero muchas de tus aplicaciones y herramientas que corren sobre tu Windows de 64 bits fueron compiladas en 32 bits, aun hay mas aplicaciones funcionales en 32 bits en uso que sus versiones de reemplazo en 64 bits.<\/p>\n<p>Tal vez lo m\u00e1s sensato no ser\u00eda recompilar y tratar de reparar todas las aplicaciones viejas de 32bits, tal vez lo menos doloroso ser\u00eda volver a escribir las aplicaciones tomando la previsi\u00f3n de que sean en 64 bits desde su origen, pero el tiempo se agota.<\/p>\n<p>Aunque en el a\u00f1o 2000 nos burl\u00e1bamos de los sistemas operativos de Microsoft , los usuarios de GNU\/Linux \u00e9ramos consientes del problema del a\u00f1o 2038, pero 38 a\u00f1os despu\u00e9s se ve\u00eda como algo lejano, ahora solo faltan 23 a\u00f1os para llegar al l\u00edmite, siento que nos faltar\u00eda tiempo para cambiar esto.<\/p>\n<p>Un ejemplo de esto, solo por poner un entorno paranoico apocal\u00edptico , el internet est\u00e1 lleno de millones de ruteadores, estos ruteadores originalmente corren en 32 bits de hecho el mismo protocolo de internet el IPV4 es un protocolo de 32 bits, si no han cambiado todos los ruteadores en internet para el 2038 algunas rutas en el internet fallar\u00edan dejando zonas sin ruteabilidad , de nada sirve que el ruteador destino sea de 64 bits si del que depende es de 32 bits, tendr\u00eda que haber sido cambiado completamente todos esos ruteadores pilares de internet en todos los pa\u00edses del mundo, por supuesto que para entonces tal vez ya estamos usando IPv6, solo que IPv6 aun con las mejores intenciones aun no despega ni siquiera por que ya se agotaron todas las ip del IPv4<\/p>\n<p>Aun queda tiempo antes del d\u00eda del juicio para los sistemas POSIX , m\u00e1s vale que est\u00e9n trabajando en arreglarlo <strong>porque no hay d\u00eda que no llegue ni fecha que no se cumpla<\/strong> y el efecto del a\u00f1o 2038 es una cita con el destino que es <strong>ineludible e inaplazable<\/strong>.<\/p>\n<p>Por supuesto que usar una variable de 64 bits tampoco es una soluci\u00f3n definitiva, por que eventualmente los 64 bits que la conforman tambi\u00e9n se desbordaran, pero para cuando esto ocurra ya no ser\u00e1 problema de nosotros si no de las generaciones futuras quienes maldecir\u00e1n el problema que les habremos heredado y correr\u00e1 por cuenta de ellos solucionar nuestros errores. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Alguna vez escuchaste del efecto Y2K \u00bf no ? entonces lee este articulo El fin del mundo \u00bfOtra vez? Aunque son muy parecidos ocurrir\u00e1n de forma diversa, el primero fue causado por IBM y Microsoft que no eran compatibles con POSIX, en el 2000 todos los que us\u00e1bamos GNU\/Linux como este servidor nos burl\u00e1bamos de&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,1],"tags":[],"class_list":["post-1187","post","type-post","status-publish","format-standard","hentry","category-en-la-opinion-de","category-personal"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/1187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1187"}],"version-history":[{"count":1,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/1187\/revisions"}],"predecessor-version":[{"id":1188,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/1187\/revisions\/1188"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}