Skip to main content

Y2038 - Year 2038 problem

hay còn gọi là Unix Millennium Bug.

Cho những người thích đọc wiki

http://en.wikipedia.org/wiki/Year_2038_problem

Cho fan python

In [8]: import datetime
In [10]: datetime.datetime.fromtimestamp((2**32 /2 - 2))
Out[10]: datetime.datetime(2038, 1, 19, 10, 14, 6)
Kết quả trên là 10 giờ do sử dụng GMT+7
Để lấy kết quả UTC:
In [31]: import time

In [32]: time.gmtime(2**32/2-2)
Out[32]: time.struct_time(tm_year=2038, tm_mon=1, tm_mday=19, tm_hour=3, tm_min=14, tm_sec=6, tm_wday=1, tm_yday=19, tm_isdst=0)


năm 2038 có gì hot?

để hiểu rõ vấn đề này cần có chút hiểu biết về 1 kiểu dữ liệu trong C được gọi là  signed 32-bit integer 
kiểu dữ liệu này chỉ có thể biểu diễn giá trị dương lớn nhất là 2**32 / 2 - 2 = 2147483646
(signed - có dấu âm/dương, tức nó biểu diễn được từ - (2 ** 32 /2 )đến 0  đến 2 ** 32 - 2 )



Vậy, đến năm 2038, ngày 19 tháng 1, nếu OS nào không xử lý vấn đề này thì tòan bộ giá trị dùng kiểu dữ liệu time_t sẽ bị chuyển về năm 1901. Và "sự cố" này sẽ gây ra hậu quả nghiêm trọng hơn sự cố Y2K rất nhiều lần.


2 OS đã đưa ra bản fix cho vấn đề này là NetBSD và OpenBSD 5.5
, chuyển từ time_t 32 bits sang dùng kiểu dữ liệu time_t 64 bits . Các OS based Linux hiện vẫn chưa đưa ra bản fix nào (công việc này không phải đơn giản, bởi sẽ cần sửa rất nhiều chương trình sử dụng time_t)

Comments

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG