From 895a2e0a76c9c40ae638978c22bd39ed23e4c603 Mon Sep 17 00:00:00 2001 From: dan63047 Date: Mon, 31 Jan 2022 22:41:53 +0300 Subject: [PATCH] eng text + additional time bugs --- fullscreen-style.css | 9 +++--- index.html | 73 ++++++++++++++++++++++++++----------------- script.js | 74 +++++++++++++++++++++++++++++++++++++++----- style.css | 33 ++++++++++++++++++-- 4 files changed, 146 insertions(+), 43 deletions(-) diff --git a/fullscreen-style.css b/fullscreen-style.css index 7110e98..8162846 100644 --- a/fullscreen-style.css +++ b/fullscreen-style.css @@ -17,8 +17,9 @@ body{ #prog{ width: 100%; } -#title{ +#title_ru, #title_en{ position: fixed; + text-align: center; top: 0; width: calc(100% - 16px); } @@ -47,6 +48,7 @@ body{ width: calc(100% - 16px); } #button-to-fullscreen, #button-fullscreen-exit{ + transition: 500ms; position: absolute; left: 25px; top: 35px; @@ -57,12 +59,9 @@ body{ #button-to-fullscreen:hover, #button-fullscreen-exit:hover{ color: #fff; } -#button-to-fullscreen, #description, footer{ +#button-to-fullscreen, #description_ru, #description_en, footer, #language-selector{ display: none; } #title{ text-align: center; -} -a:visited{ - color: #fff; } \ No newline at end of file diff --git a/index.html b/index.html index a2d0c1f..51ad0f7 100644 --- a/index.html +++ b/index.html @@ -25,42 +25,29 @@ +
language:ruen
-

До смерти 32-битных систем осталось

+

До смерти 32-битных систем осталось

+

Until the death of 32-bit systems remaining

-
+

О чём этот сайт?

-

Проблема 2038 года в вычислительной технике — ожидаемые сбои в программном обеспечении накануне 19 января - 2038 года. Данная проблема затронет программы и системы, в которых используется представление времени по - стандарту POSIX (UNIX-время), которое представляет собой количество секунд, прошедшее с полуночи 1 января - 1970 года. Такое представление времени — это стандарт для Unix-подобных операционных систем (из-за - повсеместного использования языка Си).

-

Сейчас значение Unix timestamp равно .

+

Проблема 2038 года в вычислительной технике — ожидаемые сбои в программном обеспечении накануне 19 января 2038 года. Данная проблема затронет программы и системы, в которых используется представление времени по + стандарту POSIX (UNIX-время), которое представляет собой количество секунд, прошедшее с полуночи 1 января 1970 года. Такое представление времени — это стандарт для Unix-подобных операционных систем (из-за повсеместного использования языка Си).

+

Сейчас значение Unix timestamp равно .

В чём проблема?

-

В старых 32-битных системах (до середины 1990-х) используется тип данных time_t для хранения секунд в виде - signed int (32-битного целого со знаком). Самая поздняя дата, которая может быть представлена таким - форматом в стандарте POSIX — это 03:14:07, вторник, 19 января 2038 года по Всемирному времени (UTC).

-

Более позднее время заставит такое поле данных стать отрицательным, как бы закольцевав таким образом время - (поскольку отрицательное число может быть воспринято программами как время в 1970 или 1901 году, в - зависимости от реализации). В результате любые расчёты, включающие дату позже 19 января 2038 года, могут - привести к сбою программы либо к ошибочным вычислениям.

-

Для проблемы 2038 года не существует простого решения для существующих комбинаций операционных систем и - прикладного программного обеспечения. Изменение определения типа time_t на 64 бита нарушит бинарную - совместимость программ, существующих хранимых данных и всего другого, использующего представление времени в - бинарном виде. А приведение time_t в целое без знака может нарушить работу программ, которые вычисляют - разницу во времени.

+

В старых 32-битных системах (до середины 1990-х) используется тип данных time_t для хранения секунд в виде signed int (32-битного целого со знаком). Самая поздняя дата, которая может быть представлена таким форматом в стандарте POSIX — это 03:14:07, вторник, 19 января 2038 года по Всемирному времени (UTC).

+

Более позднее время заставит такое поле данных стать отрицательным, как бы закольцевав таким образом время (поскольку отрицательное число может быть воспринято программами как время в 1970 или 1901 году, в зависимости от реализации). В результате любые расчёты, включающие дату позже 19 января 2038 года, могут привести к сбою программы либо к ошибочным вычислениям.

+

Для проблемы 2038 года не существует простого решения для существующих комбинаций операционных систем и прикладного программного обеспечения. Изменение определения типа time_t на 64 бита нарушит бинарную совместимость программ, существующих хранимых данных и всего другого, использующего представление времени в бинарном виде. А приведение time_t в целое без знака может нарушить работу программ, которые вычисляют разницу во времени.

Что подвержено этой проблеме?

-

Многие структуры данных, которые используются сегодня, имеют 32-битные представления времени, встроенные - в их структуру. Полный список этих структур данных практически невозможно составить, но есть хорошо известные - структуры данных, у которых есть проблема времени Unix:

+

Многие структуры данных, которые используются сегодня, имеют 32-битные представления времени, встроенные в их структуру. Полный список этих структур данных практически невозможно составить, но есть хорошо известные структуры данных, у которых есть проблема времени Unix:

    -
  • файловые системы (многие файловые системы используют только 32 бита для представления времени в индексных - дескрипторах)
  • +
  • файловые системы (многие файловые системы используют только 32 бита для представления времени в индексных дескрипторах)
  • форматы двоичных файлов (в которых используются 32-битные поля времени)
  • базы данных (которые имеют 32-битные поля времени)
  • языки запросов к базам данных, такие как SQL, которые имеют команды, похожие на UNIX_TIMESTAMP()
  • @@ -70,17 +57,45 @@
  • встроенные подсистемы управления и мониторинга завода, НПЗ
  • различное медицинское, военное оборудование
-

Любая система, использующая структуры данных, содержащие 32-битные представления времени, представляет риск. - Степень риска зависит от характера отказа.

-

Использаванные материалы при составлении этого текста

+

Любая система, использующая структуры данных, содержащие 32-битные представления времени, представляет риск. Степень риска зависит от характера отказа.

+

Использованные материалы при составлении этого текста

+
+

What is this site?

+

The Year 2038 problem in computing technology - expected failures in software on the eve of January 19, 2038. This problem will affect the programs and systems that use the presentation view according to the POSIX standard (UNIX-time), which is the number of seconds passed from midnight on January 1, 1970. Such a presentation of time is a standard for UNIX-like operating systems (due to the ubiquitous use of the C language).

+

Now the UNIX timestamp value is .

+

What is the problem?

+

In the old 32-bit systems (until the mid-1990s), the time_t data type is used to store seconds in the form of signed int (32-bit integer with the sign). The most late date, which can be represented by this format in POSIX Standard - is 03:14:07, Tuesday, January 19, 2038 for World Time (UTC).

+

Later time will cause such a field to become negative, as if looping the time in this way (since a negative number can be interpreted by programs as time in 1970 or 1901, depending on the implementation). As a result, any calculations that include a date later than January 19, 2038 may cause the program to crash or cause erroneous calculations.

+

For the year 2038 problem, there is no universal solution for existing combinations of operating systems and application software. Changing the definition of the time_t type to 64 bits will break the binary compatibility of programs, existing stored data, and anything else that uses a binary representation of time. And casting time_t to an unsigned integer can break programs that compute the time difference.

+

What is affected by this problem?

+

Many data structures that are used today have 32-bit time presentations built into their structure. The complete list of these data structures is almost impossible to compile, but there are well-known data structures that have a UNIX time problem:

+
    +
  • file Systems (Many file systems use only 32 bits to submit time in index descriptors)
  • +
  • binary file formats (in which 32-bit time are used)
  • +
  • databases (which have 32-bit time fields)
  • +
  • languages requests for databases, such as SQL, which have commands similar to UNIX_TIMESTAMP()
  • +
+

Examples of systems using data structures that may contain 32-bit presentations of the time include:

+
    +
  • embedded management and monitoring subsystems, refinery
  • +
  • various medical, military equipment
  • +
+

Any system that uses data structures containing 32-bit time represents the risk. The degree of risk depends on the nature of the failure.

+

Used materials when compiling this text

+ +
+

-

Автор сайта: dan63047

+

Автор сайта: dan63047

diff --git a/script.js b/script.js index 816b65d..df9f57a 100644 --- a/script.js +++ b/script.js @@ -1,18 +1,61 @@ const maxtimestamp = 2147483647; var readable_timer_mode = 0; var msec_display = true; - +var fullscreen = false; +var other_counters = [ ["Year 2100 bug", "Проблема 2100 года", 946684800, 4102444800], + ["UNIX unsinged 32-bit timestamp", "UNIX 32 бита без знака", 0, 4294967295], + ["FAT filesystems timestamps", "Штампы времени файловой системы FAT", 351907200, 4354819200], + ["Year 10K bug", "Проблема 10 000 года", -62167219200, 253402300800], + ["Year 32,768 bug", "Проблема 32 768 года", -62167219200, 971890963200], + ["Year 65,536 bug", "Проблема 65 536 года", -62167219200, 2005949145600], + ["UNIX singed 64-bit timestamp", "UNIX 64 бита со знаком", 0, 9223372036854775807], + ["UNIX unsinged 64-bit timestamp", "UNIX 64 бита без знака", 0, 18446744073709551615], + ]; +var language_user = window.navigator ? (window.navigator.language || + window.navigator.systemLanguage || + window.navigator.userLanguage) : "ru"; +language_user = language_user.substr(0, 2).toLowerCase(); +language_site = (language_user == "ru" || language_user == "by" || language_user == "ua") ? "ru" : "en"; function ReadableTimerSwitcher(){ readable_timer_mode++ if(readable_timer_mode > 2){readable_timer_mode = 0} } addEventListener("fullscreenchange", (event) => { - if(document.fullscreen){ - $("#style").attr("href", "fullscreen-style.css") + if(!fullscreen){ + $("#style").attr("href", "fullscreen-style.css"); + $("#description_en").css("display", "none"); + $("#description_ru").css("display", "none"); + fullscreen = true; }else{ - $("#style").attr("href", "style.css") + $("#style").attr("href", "style.css"); + languageSwitcher(language_site) + fullscreen = false; } }) + +function languageSwitcher(lang_code){ + switch (lang_code) { + case "ru": + $("#title_en").css("display", "none"); + $("#title_ru").css("display", "block"); + $("#description_en").css("display", "none"); + $("#description_ru").css("display", "block"); + $("#me_tg_en").css("display", "none"); + $("#me_tg_ru").css("display", ""); + language_site = "ru"; + break; + case "en": + $("#title_ru").css("display", "none"); + $("#title_en").css("display", "block"); + $("#description_ru").css("display", "none"); + $("#description_en").css("display", "block"); + $("#me_tg_ru").css("display", "none"); + $("#me_tg_en").css("display", ""); + language_site = "en"; + break; + } +} +languageSwitcher(language_site); function msecDisplaySwitcher(){ if(msec_display){ msec_display = false @@ -30,7 +73,8 @@ function Cycle() { $("#time-left").html(t.toLocaleString('ru')); $("#time-left-msec").html("." + ("00" + lmsec).slice(-3)) $("#prog").val(timestamp); - $("#timestamp").html(Math.trunc(timestamp).toLocaleString('ru')); + $("#timestamp_ru").html(Math.trunc(timestamp).toLocaleString('ru')); + $("#timestamp_en").html(Math.trunc(timestamp).toLocaleString('ru')); if (left < 60 && readable_timer_mode != 2) { $("#time-left-readable").css("display", "none") } if (left <= 0) { clearInterval(c); @@ -52,12 +96,28 @@ function Cycle() { thour = Math.floor(left / 60 / 60) % 24, tday = Math.floor(left / 60 / 60 / 24) % 365, tyear = Math.floor(left / 60 / 60 / 24 / 365); - $("#time-left-readable").html("(" + tyear + " л. " + tday + " дн. " + ("0" + thour).slice(-2) + ":" + ("0" + tmin).slice(-2) + ":" + ("0" + tsec).slice(-2) + ")"); + switch (language_site) { + case "ru": + $("#time-left-readable").html("(" + tyear + " л. " + tday + " дн. " + ("0" + thour).slice(-2) + ":" + ("0" + tmin).slice(-2) + ":" + ("0" + tsec).slice(-2) + ")"); + break; + case "en": + $("#time-left-readable").html("(" + tyear + " y. " + tday + " d. " + ("0" + thour).slice(-2) + ":" + ("0" + tmin).slice(-2) + ":" + ("0" + tsec).slice(-2) + ")"); + break; + } break; case 2: var precentage = (timestamp/maxtimestamp)*100; $("#time-left-readable").html(Math.trunc(timestamp).toLocaleString('ru')+" / "+maxtimestamp.toLocaleString('ru')+" ("+precentage.toFixed(8)+"%)"); break; } + let other_counters_html = (language_site == "ru") ? "

Другие, более далёкие проблемы времени в вычислительной технике

" : "

Other, more distant time problems in computing

"; + other_counters.forEach(element => { + l = element[3] - timestamp; + other_counters_html = other_counters_html + '

'+ element[(language_site == "ru") ? 1 : 0] + '

' + Math.trunc(l).toLocaleString('ru') + + '
' + new Date(element[3]*1000).toUTCString() + " · " +(((timestamp-element[2])/(element[3]-element[2]))*100).toFixed(8).toString() + + '% · ' + Math.floor(l / 60 / 60 / 24 / 365).toLocaleString('ru') + ((language_site == "ru") ? " л. " : " y. ") + (Math.floor(l / 60 / 60 / 24) % 365).toString() + ((language_site == "ru") ? " дн. " : " d. ") + + ("0" + (Math.floor(l / 60 / 60) % 24)).slice(-2) + ':' + ("0" + (Math.floor(l / 60) % 60)).slice(-2) + ':' + ("0" + (Math.floor(l) % 60)).slice(-2) + '
' + '
'; + }); + $("#other_countdowns").html(other_counters_html) } -var c = setInterval(Cycle, 1000 / 60); \ No newline at end of file +var c = setInterval(Cycle, 1000 / 15); \ No newline at end of file diff --git a/style.css b/style.css index 610e3ed..40d9ec2 100644 --- a/style.css +++ b/style.css @@ -26,6 +26,7 @@ body{ cursor: pointer; } #button-to-fullscreen, #button-fullscreen-exit{ + transition: 500ms; position: absolute; left: 25px; top: 35px; @@ -35,12 +36,40 @@ body{ #button-to-fullscreen:hover, #button-fullscreen-exit:hover{ color: #fff; } -#button-fullscreen-exit{ +#button-fullscreen-exit, #title_en, #description_en{ display: none; } -#title{ +#title_ru, #title_en{ text-align: center; } +a{ + transition: 500ms; + color: #333; + text-decoration: none; +} +a:hover{ + color: #fff; +} a:visited{ + color: #999; +} +a:visited:hover{ + color: #fff; +} +#language-selector{ + position: absolute; + right: 25px; + top: 35px; + + color: #333; +} +#lang-name, #rus{ + padding-right: 7px; +} +#rus, #eng{ + transition: 500ms; +} +#rus:hover, #eng:hover{ + cursor: pointer; color: #fff; } \ No newline at end of file