문제

2010 년을 이해하지 못하는 시스템에 대한 많은 보고서가 있지만 그 이유는 모르겠습니다. 내가보고있는 현재 시스템은 내가 알 수있는 한 잘 작동하지만 실제 문제가 더 잘 검색하는 것이 무엇인지 알고 싶습니다.

누구든지 약간의 빛을 발할 수 있습니까?

편집하다: http://www.rte.ie/business/2010/0105/bug.html - 독일의 신용 카드에 영향을 미치는 정보

도움이 되었습니까?

해결책

은행 및 통신에 사용되는 몇 가지 프로토콜 -SMS 프로토콜 포함 - 연도를 인코딩하십시오 BCD 단일 바이트에서.

2000-2009 년부터 인코딩이 동일하기 때문에 올해를 표준 바이너리 숫자로 해석하는 실수를 쉽게 할 수 있습니다.

Encoding  Binary-interpreted  BCD-interpreted
0x01      2001                2001
0x02      2002                2002
...
0x09      2009                2009
0x10      2016                2010
...

이것이 아마도 Windows 모바일 버그의 원인 일 것입니다.

다른 팁

가능한 설명 중 하나는 아래 기사에 있습니다

http://www.theeregister.co.uk/2010/01/05/symantec_y2k10_bug/

저렴하고 더러운 Y2K 버그 수정에 대한 최근 기사를 상기시켜줍니다. 일부 부도덕 한 프로그래머가 <10 = 20xx 인 경우 간단한 경우 날짜가 19xx입니다.

Spamassassin은 미래에 Spam과 같이 날짜를 너무 멀리 표시하는 규칙을 가졌습니다.

/20[1-9][0-9]/

수정은 며칠이 너무 늦었지만 아주 간단합니다.

/20[2-9][0-9]/

10 년 후에 다시 뵙겠습니다.

1 자리 연도 필드를 사용하는 시스템이 있습니다. 예. 한 자리. 따라서이 시스템이 실패한 이유는 "2000"이 "2010"과 동일하게 표현되기 때문입니다.

내가 들었던 것은 사람들이 Y2K를 위해 한 빠른 수정이었습니다. 따라서 xx <10이면 20xx else 19xx.

Y2K 이후 경력을 시작하고 연도를 대표하기 위해 1 자리를 사용하는 젊은 개발자 때문일 수 있습니다.

나는 지난 주말에 사이트에서 작은 2010 년 실패를 처리했는데, 코딩의 감독의 결과 일뿐입니다.

누군가 목록에 2009 년까지 항목이 포함 된 경우 목록 항목의 값을 현재 DateTime.now.now ()로 설정하는 것이 좋습니다.

ddlItem.findByText(DateTime.Now.Year.ToString())

다음은 Norton Symantec Endpoint Protection의 스크린 샷입니다.

Alt Text http://img695.imageshack.us/img695/4500/152010112800am.jpg

@ Symantec이 고객에게 알리지 않아서 정말 좋습니다. 기사가 게시 될 때까지 : http://www.theeregister.co.uk/2010/01/05/symantec_y2k10_bug/

구성 요소에는 올해를 두 부분으로 나누는 버그가 있습니다. 두 번째 부분은 숫자 10이 기본 10에 있지 않도록 비교에서 사용되며, 기본 16에있는 것은 0x10 = 16 (16 진)임을 의미합니다.

Google 코드 검색을 사용했습니다 오픈 소스 소프트웨어에서 Y2010 버그를 찾으십시오. 버그 ( "200%d"를 Printf 형식 문자열로 사용)를 나타내는 특정 패턴을 찾았으며 해당 버그가있는 여러 프로젝트를 찾았습니다. 검색 패턴을 창의적으로 적용하면 더 많은 종류의 버그가 발생할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top