Проблема 2000

Не DOS, но тоже нам интересно

Проблема 2000

Сообщение Arix » 16 май 2015, 18:11

Наверное многие помнят, какой ажиотаж в конце 90-х вызвала так называемая "проблема 2000". Мол, так как год задается двумя цифрами, после 99 наступит 00, у многих программ случатся глюки. В результате остановятся электростанции, не будут летать самолеты, все банки позакрываются и т.д. Ну и, где-то действительно были кое-какие глюки, однако никакого компьютерного апокалипсиса не случилось. У меня тогда компьютера не было, проверить это дело на себе я не мог. Сейчас у меня есть много старых компьютеров, выпущенных до 2000-года. Так вот, у них у всех, даже у древнего Амстрада с 8086-м процессором, дата в БИОСе задается четырёхзначным числом. И в ДОСе тоже. Скажем, Нортон показывает в датах файлов две цифры, но я ввожу команду DATE, и год отображается четырьмя цифрами - 2015, а не 15. Так откуда же эта проблема взялась? Я не думаю, что у всех компьютеров, какие мне достались, их прежние владельцы перепрошили БИОСы.
Последний раз редактировалось Arix 16 май 2015, 18:12, всего редактировалось 1 раз.
Compaq Deskpro 386/25e, Robotron REI 286-12, Toshiba T213OCT (80486, 75MHz), Sony Vaio PCG F707 (Pentium III 600 MHz), Pentium (100 MHz), Intel Celeron 1700 МГц, PowerMac G5, Intel Core i5-2500K, Asus k52Dr, Сура ПК8000, Spectrum ПИК 64-02
Arix
Мастер Даунгрейда
 
Сообщения: 369
Зарегистрирован: 03 май 2014, 20:30
Откуда: Саратов
Железо: Intel Core i5, Asus k52Dr, Sony Vaio PCG F707, Celeron 1700 МГц, Compaq Deskpro 386/25e, Mac G5

Re: Проблема 2000

Сообщение SokilOff » 16 май 2015, 18:24

Arix писал(а):Так откуда же эта проблема взялась? Я не думаю, что у всех компьютеров, какие мне достались, их прежние владельцы перепрошили БИОСы.

Нездоровый ажиотаж был создан искусственно - это оказался отличный повод для IT-индустрии на ровном месте срубить денег с лопоухих клиентов.

Реальный масштаб "проблемы" был гораздо меньше. Некоторые очень старые программы, например базы данных, могли посчитать, что записи датируются началом 20 века, а не 21-го. В теории. Честно говоря, с ходу сейчас не припомню ни одного приложения с этой недоработкой. По большей части проблема оказалась либо не критичной, либо вообще надуманной.
Лень - это привычка отдыхать ещё до того, как устал.
Аватара пользователя
SokilOff
Мастер Даунгрейда
 
Сообщения: 438
Зарегистрирован: 09 янв 2013, 01:24

Re: Проблема 2000

Сообщение Gawobeka » 16 май 2015, 21:58

SokilOff писал(а):Честно говоря, с ходу сейчас не припомню ни одного приложения с этой недоработкой.

Например, "Дела в порядке" http://old-dos.ru/index.php?page=files& ... ow&id=1910
И вообще, задумка с этой программой была интересная, но недоработок и багов столько, что интерес к ней я потерял быстро. Абсолютно не тянет на коммерческий продукт
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 301
Зарегистрирован: 08 дек 2012, 22:11

Re: Проблема 2000

Сообщение Freeman » 16 май 2015, 22:16

SokilOff писал(а):Нездоровый ажиотаж был создан искусственно - это оказался отличный повод для IT-индустрии на ровном месте срубить денег с лопоухих клиентов.

Да, полностью согласен.

Чисто технически проблема года двумя цифрами присутствовала в ранних версиях dBASE и формата DBF, если не путаю, но к 2000-му году даже если они где и продолжали использоваться, то в новых версиях, где этой проблемы не было.

В Delphi 4 (вроде) Borland добавила переменную в модуль SysUtils, определяющую до какого года двузначные даты (в том числе и из DBF) считаются принадлежащими XX веку. Эта одна-единственная переменная -- и есть решение "проблемы 2000 года". Вот и всё, с чем пришлось столкнуться на практике, а программистом я работаю с 1998 года.
Разработчик языка программирования Кантор
Аватара пользователя
Freeman
Мастер Даунгрейда
 
Сообщения: 647
Зарегистрирован: 06 дек 2012, 05:49
Откуда: Санкт-Петербург

Re: Проблема 2000

Сообщение Nika » 16 май 2015, 22:27

Это, помню, просто вакханалия царила весь 1999 год..
До неприличия. Отмывали кучу бабла. Образовалось масса "компьютерных фирм", которые практически только этой хнёй и занимались.
По всем городам и весям по вызову ездили мальчички "в коммандировки"
и запускали у клиентов всякие тестовые программки и в случае необходимости устанавливали какие-нибудь патчи.
С зарплатой в стольник баксов, когда у нормальных людей была зарплата в районе 30-ти $.
В поголовном большинстве мальчички были бестолковые, серьёзную проблему с софтом (Y2K error) решить заведомо неспособные.
Только официальные патчи БИОСА - и никаких чудес. Кстати, в начале 2000-х (и этими мальчичками в том числе) профессия "программист" оказалась опущена ниже самого низкого плинтуса. Злился народ на отмытую кучу бабосов. При том, что реальные проблемы, где они случались, тихо и спокойно боролись силами местных сотрудников.

Была и у меня эта проблема с BIOS'ом на 486 машине.
Решилась написанием программки SET_YEAR.COM,
Которая отрабатывала в autoexec.bat - файле и проблем не было в DOS и Win9x программах.
Для Linux'а пришлось сделать вообще корректировку BIOS'ной даты в коде MBR жёсткого диска.
Тогда раз в год надо было просто перезадать константу в BOOT-секторе и всех делов.

Но у меня на 486 эта проблема была в лёгкой форме - BIOS просто глючил при сохранении года даты.
И таких машин было полно, причём зависело это от производителя BIOS, поскольку проблема была уже чисто софтовая,
а архитектура позволяла хранить полный год даты.

Тогда пришлось попользоваться несколькими тестовыми программами, вот тот архив:
http://old-dos.ru/index.php?page=files& ... ow&id=3116
-- самая крутая из них была Нортоновская "Norton 2000 BIOS Test/Fix utilite" - в архиве это Y2K_NORT.
Под Windows создавалась загрузочная дискета, с которой потом загружалась тестируемая машина.
Добавил туда собственную примочку TEST_IMG.COM, которая грузила тест из файла TEST_IMG.OVL
(имидж той дискетки, которую создавали для загрузки).

Это были программки для тестирования проблем с биос'ом.
--------------------------------------------------------------------------

Из обычных программ, имеющих эту ошибку - самая, пожалуй, известная - это VolkovCommander v.4.00 и v.4.01.
Его пришлось пропатчить на предмет этой ошибки. Причём официального патча этих версий (4.00 и 4.01) на предмет "y2k" не было.
Версия VC.COM 4.02 уже не имела этого бага. Выражался он в том, что у одиночного файла с новой датой невозможно было поменять атрибуты. Если же файл был помечен в группу файлов, то для них гамузом атрибуты менялись нормально. И всё равно это было неудобно.
Посмотреть можно на странице загрузки VC:
http://old-dos.ru/index.php?page=files& ... how&id=169

Другая, менее известная программа с глюком 2000 года - это редактор KEDIT 1988 года выпуска.
В нём невозможно было указать курсором и загрузить на редактирование файл из листинга файлов.
Тоже пришлось его патчить - и проблем не стало.
Вот здесь этот редактор:
http://old-dos.ru/index.php?page=files& ... show&id=87
- есть моя патченная версия и оригинальная, какая ходила в те времена у юзеров.

Вот так выглядел листинг файлов при выборе нового файла на редактирование:
(обратите внимание на даты файлов. Это не позволяло загрузить файл с неверной датой)
Код: Выделить вс
KEDIT4   RAR   451036  02/25/113  20:59:36
CODES           12060  03/05/100  12:13:52
PROFILE          1020  07/31/98  23:22:10
PROFILE1          655  06/11/91  08:58:38
READ     ---     1093  07/02/102  05:14:30
KEDITHLP BAT      358  01/09/100  13:43:18
KE_      BAT      560  01/09/108  05:51:40
KE_MENU  BAT       47  01/09/100  08:32:58
CHOICES  COM     2219  12/02/98  22:07:50
CONWAIT  COM      267  12/05/88  11:00:00
DESBUF   COM      544  12/05/88  11:00:00
DISABLE  COM      543  12/05/88  11:00:00
DROPBUF  COM      633  12/05/88  11:00:00
ENABLE   COM      543  12/05/88  11:00:00
GLVMGR   COM     1396  12/05/88  11:00:00
Последний раз редактировалось Nika 18 май 2015, 08:23, всего редактировалось 13 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 594
Зарегистрирован: 17 окт 2013, 00:21

Re: Проблема 2000

Сообщение nongrato » 17 май 2015, 16:27

Знаю по крайней мере одну ОС, в которой "millenium bug" - вполне реальная проблема. Это - NeXTStep. В ней просто невозможно выставить дату позднее. А на оф сайте Apple до сих пор лежит патч, исправляющий это безобразие.

Но расслабляться еще рано- нас еще ждет "проблема 2038".
Последний раз редактировалось nongrato 17 май 2015, 17:02, всего редактировалось 1 раз.
SGI Octane2 | SGI VW 320 | Sun Ultra 10 | Sun Sparcstation 20
Аватара пользователя
nongrato
Мастер Даунгрейда
 
Сообщения: 655
Зарегистрирован: 21 апр 2013, 16:26
Откуда: СПб

Re: Проблема 2000

Сообщение Arix » 17 май 2015, 21:47

Астероид упадёт?
А, вспомнил, что-то там получается, что в двоичной системе не хватит разрядов для 2038-го года.
Интересно, что-нибудь из моей ретротехники доживёт до этого года?
Последний раз редактировалось Arix 17 май 2015, 21:50, всего редактировалось 2 раз(а).
Compaq Deskpro 386/25e, Robotron REI 286-12, Toshiba T213OCT (80486, 75MHz), Sony Vaio PCG F707 (Pentium III 600 MHz), Pentium (100 MHz), Intel Celeron 1700 МГц, PowerMac G5, Intel Core i5-2500K, Asus k52Dr, Сура ПК8000, Spectrum ПИК 64-02
Arix
Мастер Даунгрейда
 
Сообщения: 369
Зарегистрирован: 03 май 2014, 20:30
Откуда: Саратов
Железо: Intel Core i5, Asus k52Dr, Sony Vaio PCG F707, Celeron 1700 МГц, Compaq Deskpro 386/25e, Mac G5

Re: Проблема 2000

Сообщение Nika » 17 май 2015, 22:47

nongrato писал(а):.. Но расслабляться еще рано- нас еще ждет "проблема 2038".

2048 ?

Это переход от 7FFh -> 800h. Но этого-то уж точно никто не заметит.
Не представляю себе, где может использоваться 12-битная переменная.
Последний раз редактировалось Nika 17 май 2015, 22:52, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 594
Зарегистрирован: 17 окт 2013, 00:21

Re: Проблема 2000

Сообщение nongrato » 17 май 2015, 23:06

2038. Переполнение time_t в 32-битных POSIX-совместимых системах.
SGI Octane2 | SGI VW 320 | Sun Ultra 10 | Sun Sparcstation 20
Аватара пользователя
nongrato
Мастер Даунгрейда
 
Сообщения: 655
Зарегистрирован: 21 апр 2013, 16:26
Откуда: СПб

Re: Проблема 2000

Сообщение Nika » 17 май 2015, 23:21

nongrato писал(а):2038. Переполнение time_t в 32-битных POSIX-совместимых системах.
А, да.
Вроде бы есть такая проблемка:
https://ru.wikipedia.org/wiki/UNIX-%E2%F0%E5%EC%FF
В программах для хранения UNIX-времени используется целочисленный знаковый тип. Знаковость упрощает вычисление разницы в секундах между двумя моментами времени, которая может быть отрицательной. 32-битные числа со знаком могут ссылаться на моменты времени от пятницы 13 декабря 1901 года 20:45:52 до вторника 19 января 2038 года 03:14:07 включительно.
Раз такое дело, то похлеще "проблемы 2000" будет головняк. У кого-то.
Последний раз редактировалось Nika 17 май 2015, 23:35, всего редактировалось 4 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 594
Зарегистрирован: 17 окт 2013, 00:21

Re: Проблема 2000

Сообщение Gawobeka » 18 май 2015, 20:29

Freeman писал(а):Чисто технически проблема года двумя цифрами присутствовала в ранних версиях dBASE и формата DBF, если не путаю, но к 2000-му году даже если они где и продолжали использоваться, то в новых версиях, где этой проблемы не было.


Вступлюсь за dBASE - в ней такой проблемы не было. Формат DBF прекрасно поддерживает 4-значное обозначение года.
Просто в dBASE III ("не плюс") имелась возможность ввода года только двумя последними цифрами, поэтому все годы воспринимались как 1900-е. В версии dBASE III+ появилась команда SET CENTURY и все стало Ok.
Но и третья "бесплюсовая" версия понимает год правильно. Чтобы в этом убедиться, достаточно загрузить в нее файл с датами из XXI века и потом просмотреть их с помощью команды "? YEAR(<поле_с_датой>)".
Последний раз редактировалось Gawobeka 19 май 2015, 00:56, всего редактировалось 2 раз(а).
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 301
Зарегистрирован: 08 дек 2012, 22:11

Re: Проблема 2000

Сообщение Freeman » 19 май 2015, 00:02

Gawobeka писал(а):Формат DBF прекрасно поддерживает 4-значное обозначение года.

Всех версий? Их вроде бы несколько было: до III, III разных вариаций и IV.
Разработчик языка программирования Кантор
Аватара пользователя
Freeman
Мастер Даунгрейда
 
Сообщения: 647
Зарегистрирован: 06 дек 2012, 05:49
Откуда: Санкт-Петербург

Re: Проблема 2000

Сообщение Gawobeka » 19 май 2015, 00:49

Все форматы DBF, начиная с III "бесплюсовой" версии и выше, с которыми я работал, поддерживают.
Формат DBF II не поддерживает - там вообще нет полей типа "дата"
Последний раз редактировалось Gawobeka 19 май 2015, 00:57, всего редактировалось 1 раз.
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 301
Зарегистрирован: 08 дек 2012, 22:11

Re: Проблема 2000

Сообщение Freeman » 19 май 2015, 01:22

Gawobeka писал(а):Все форматы DBF, начиная с III "бесплюсовой" версии и выше, с которыми я работал, поддерживают.

Ну вот, тогда я неправ насчет dBASE. Выходит, в моей практике этой проблемы вообще не было.
Разработчик языка программирования Кантор
Аватара пользователя
Freeman
Мастер Даунгрейда
 
Сообщения: 647
Зарегистрирован: 06 дек 2012, 05:49
Откуда: Санкт-Петербург


Вернуться в Прочее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1