읭읭!
여기에 귀하의 회사나 프로젝트에 대한 링크를 추가하세요. GitHub 후원을 구매하세요.
세상의 논리는 모든 진실과 거짓보다 우선합니다.
— 루트비히 비트겐슈타인 [1]
프로그래머가 믿는 거짓의 선별된 목록입니다. 거짓 은 처음에는 사실이라고 믿었 지만 실제로 는 거짓으로 입증된 아이디어입니다.
예 : 유효한 이메일 주소에는 정확히 하나의 @
문자가 있습니다. 따라서 이 규칙을 사용하여 이메일 필드 유효성 검사 논리를 구현하게 됩니다. 오른쪽? 잘못된! 현실은 이메일에 @
문자가 여러 개 있을 수 있다는 것입니다. 따라서 구현에서는 이를 허용해야 합니다. 초기 생각은 당신이 믿었던 거짓입니다.
아래 나열된 거짓 기사에는 더 나은 프로그래머가 되는 데 도움이 되도록 알아야 할 잘못된 믿음에 대한 포괄적인 목록이 있습니다.
내용물
- 메타
- 기예
- 사업
- 암호화폐
- 날짜 및 시간
- 교육
- 이메일
- 지리학
- 인간의 정체성
- 국제화
- 관리
- 멀티미디어
- 네트워크
- 전화번호
- 우편 주소
- 과학
- 사회
- 소프트웨어 공학
- 운송
- 타이포그래피
- 비디오 게임
- 편물
메타
- 프로그래머가 믿는 거짓 - 일반적인 거짓의 간략한 목록입니다. 거짓의 세계에 대한 훌륭한 개요와 빠른 소개입니다.
- 프로그래밍에 대한 거짓 - 프로그래밍과 프로그래머 자신에 대한 겸손하고 재미있는 목록입니다.
- 허위 목록에 대한 허위 - 이러한 허위를 처리해서는 안 되는 방법에 대한 메타 설명입니다.
기예
- 음악에 대한 거짓 - 음악을 체계화할 때 만들어질 수 있는 잘못된 가정입니다.
- 예술에 대한 거짓 - 예술에 대한 일반적인 오해.
사업
- 온라인 쇼핑에 대한 허위 - 가격, 통화 및 재고를 다룹니다.
- 가격에 대한 허위 - 통화, 금액 및 현지화를 다룹니다.
- IBAN에 대한 허위 - 국제 은행 계좌 번호는 국제적이지 않습니다.
- 경제학에 대한 거짓 - 경제학은 단순하거나 합리적이지 않습니다.
- Etsy 회계 시스템의 소수점 오류 - 회계 소프트웨어 유형의 중요성: 소수점이 누락되면 100배의 과충전이 발생합니다.
- 25,000달러의 이상한 돈 - Google Ads에서 위와 동일한 오류 또는 250달러의 내부 쿠폰이 25,000달러로 바뀌는 경우 동전과 달러를 분리하는 위험이 있습니다. 내 조언: 화폐 가치에 대한 정수와 부동소수점을 제거하세요. 소수를 사용하세요. 또는 문자열로 대체하여 구문 분석하고 유효성을 검사하지 마세요.
- 회사 이름의 문자
<
및 >
는 XSS 공격으로 이어집니다. 영국에서는 회사를 특수 문자로 등록할 수 있으므로 해커는 이를 활용하여 "><SCRIPT SRC=MJT.XSS.HT></SCRIPT> LTD
등록했지만 ; DROP TABLE "COMPANIES";-- LTD
, BETTS & TWINE LTD
및 SAFDASD & SFSAF ' SFDAASF" LTD
. - 회사 이름의 세부 사항 - 델라웨어 주와 IRS의 규칙이 어떻게 교차하지 않는지.
- CLDR 통화 정의 - 반란, 침략, 새로운 헌법 및 느린 채택 계획으로 인해 통화 유효 날짜 범위가 겹칩니다.
-
tax
- PHP 5.4+ 세금 관리 라이브러리입니다.
암호화폐
- 비트코인에 대한 거짓 - 비트코인에 대한 잘못된 관점의 목록입니다.
- 이더리움에 대한 거짓 - 계약 프로그래밍의 오해와 일반적인 함정.
날짜와 시간
- 시간에 대한 거짓 - 날짜와 시간에 관한 중요한 기사입니다.
- 시간에 관한 더 많은 거짓 – 파트. 위 기사의 2.
- 시간과 시간대에 관한 거짓 - 다른 하나는 시간대에 중점을 두고 시간과 관련된 거짓을 주장합니다.
- 시간에 대한 거짓에 대한 비판 - 위의 첫 번째 기사를 다루고 더 많은 맥락과 외부 자원을 통해 각 거짓에 대한 설명을 제공합니다.
- 유닉스 시간에 대한 거짓 - 윤초에 주의하세요!
- 시간대에 대한 거짓 - DST 전환의 극단적인 경우에 관한 몇 가지 좋은 점이 있습니다.
- 당신의 달력 오류는 생각하고 있습니다… - iOS 및 macOS 개발자 커뮤니티에서 만든 삽입 및 문화적 영향을 다루는 목록입니다.
- 시간대 데이터베이스 - 전 세계 여러 대표적인 위치의 현지 시간 기록을 나타내는 코드 및 데이터입니다.
- 길고 고통스러운 시간의 역사 - 시간 기록의 대부분의 특이성은 역사에서 설명을 찾을 수 있습니다.
- 당신은 달력 개혁을 옹호합니다 - 당신의 아이디어는 효과가 없을 것입니다. 이 기사에서는 그 이유를 알려줍니다.
- 시간대를 폐지하려는 이유 - 시간대를 폐지하는 것이 좋은 생각처럼 들릴 수도 있지만, 그렇게 하지 못하게 만드는 몇 가지 복잡한 문제가 있습니다.
- 시간 및 시간대 문제 - 도움이 될 수 있다면 시간대를 절대 다루어서는 안 되는 이유에 대한 비디오입니다.
- 노동부에 의한 $26,000 과잉 징수 – 잘못된 달력 회계의 결과.
- RFC-3339 및 ISO-8601 - 두 표준의 형식, 서로 겹치는 방식 및 실제 예제의 거대한 목록입니다.
- ISO-8601,
YYYY
, yyyy
및 연도가 잘못된 이유 - 날짜의 문자열 형식화는 어렵습니다. - UTC는 모두에게 충분합니다. 그렇죠? - 날짜와 시간(특히 UTC)에 대해서는 아마도 생각하지 못한 극단적인 경우가 있습니다.
- UTC를 저장하는 것이 만능은 아닙니다. "날짜를 UTC로 저장하는 것"이 항상 올바른 접근 방식은 아닙니다.
- UT1, TAI 및 UTC 중에서 선택하는 방법 - SI 초, 지구 회전 동기화, 윤초 회피 간의 우선순위에 따라 다릅니다.
- 왜 이 두 번(1927년)을 빼면 이상한 결과가 나오는 걸까요? - 복잡한 과거 시간대와 최신 버전의 소프트웨어에서 과거 날짜를 어떻게 재해석할 수 있는지에 대한 악명 높은 스택 오버플로 답변입니다.
- 중요 및 중요한 날짜 - Y2K부터 Unix epoch의 32비트 초 오버플로까지, 시스템에 따라 주의해야 할 특별한 날짜 목록입니다.
- “나는 버몬트에 있는 공동체에 갈 예정이며 한 시즌보다 짧은 시간 단위는 다루지 않을 것입니다.” - 70년대 엔지니어가 1초 미만의 타이밍 문제로 너무 많은 노력을 기울인 후 그만둔 엔지니어가 터미널에 남긴 메모입니까? 출처: 새로운 기계의 영혼.
교육
- CS 학생들이 졸업할 때 (여전히) 믿는 거짓 - 컴퓨터 과학 학생들이 (아마도) 더 잘 알아야 함에도 불구하고 잘못 믿고 때로는 놀랍게도 믿는 경향이 있는 것의 목록입니다.
- 박사후 연구원에 대한 신화 - "사실이 아닌 많은 것들이 박사후 연구원에 대해 말하고, 쓰여지고, 믿어지고 있습니다."
이메일
- 이메일에 대한 허위 - 주소, 내용 및 전달에 관한 것입니다.
- RFC를 읽을 때까지 이메일 주소의 유효성을 검사하는 방법을 알고 있었습니다. - RFC-822에 따라 의심되지 않는 유효한 이메일 주소에 대한 복잡한 예를 제공합니다.
- 따라서 이메일 주소를 검증할 수 있다고 생각합니다(FOSDEM 2018) - 엣지 케이스 이메일 주소 표시 및 정규식을 사용하여 구문 분석하면 안되는 이유.
- 귀하의 이메일 유효성 검사 논리가 잘못되었습니다 - 이메일 주소에 허용되는 다양하고 놀라운 사항에 대한 요약입니다.
-
libvldmail
- 이메일 주소에 대한 RFC 기반 검사를 구현하는 라이브러리입니다.
지리학
- 지리에 대한 거짓 - 장소, 이름 및 위치를 취합니다.
- 지도에 대한 허위 - 좌표, 투영 및 GIS를 다룹니다.
- 나는 좌표계를 싫어합니다 - 좌표계와 관련된 일반적인 문제를 진단하고 해결하는 지리공간 실무자를 위한 가이드입니다.
- 일본에서 가장 미친 한자 지명 상위 5개 - "일본인조차 읽기 어려운 특별한 한자 그룹이 하나 있습니다. 바로 지명입니다."
인간의 정체성
- 이름에 대한 거짓 - 모든 것을 시작한 기사입니다.
- 이름에 대한 허위 – 예 포함 – 위 기사를 다시 검토한 버전으로, 이번에는 자세한 설명이 포함되어 있습니다.
- 생체인식에 관한 거짓 - 지문은 고유하지 않습니다.
- 가족에 대한 거짓 - 엄격한 규칙으로 가족을 정의할 수는 없습니다.
- 성별에 관한 거짓: #1 및 #2 - 성별은 인간 정체성의 일부이며 그 자체의 미묘함을 가지고 있습니다.
- 나에 대한 거짓 - 이름과 성별, 국제화의 교차점에 있는 문제.
- 동성 결혼: 데이터베이스 공학적 관점 - 성별, 명명 및 관계에 관한 대부분의 허위 사실을 해결하면서 결혼을 데이터베이스에 저장하는 방법.
- 전 세계 개인 이름 - 전 세계 사람들의 이름은 어떻게 다르며, 웹에는 어떤 의미가 있습니까?
- XKCD #327: 엄마의 악용 - 거짓이 어떻게 보안 허점으로 이어질 수 있는지에 대한 재미있는 설명입니다.
- 안녕하세요. 널씨입니다. 내 이름은 나를 컴퓨터에 보이지 않게 만듭니다. - 허위 사실이 어떻게 누군가의 삶에 부정적인 영향을 미치는지에 대한 실제 사례입니다.
- HL7 v3 RIM - 사람 이름을 표현하기 위한 유연한 데이터 모델입니다.
- Apple iOS
NSPersonNameComponentsFormatter
- 개인 이름 구성 요소의 현지화된 표현입니다.
국제화
문자 인코딩, 문자열 형식화, 유니코드 및 국제화에 대해 설명합니다.
- 언어에 대한 거짓 - 소프트웨어를 영어로 번역하는 것은 생각만큼 간단하지 않습니다.
- 일반 텍스트에 대한 거짓 - 일반 텍스트로는 잘라낼 수 없으므로 유니코드가 제대로 작동하는 능력이 더욱 놀랍습니다.
- 텍스트에 대한 허위 - 위의 허위 중 일부를 몇 가지 예와 함께 설명합니다.
- 코드 국제화(Internationalis(z)ing Code) - 코드를 국제화할 때 명심해야 할 사항에 대한 비디오입니다.
- 유니코드 및 문자 집합에 대해 알아야 할 최소한의 정보 - 유니코드, 역사적 맥락 및 기원에 대한 좋은 소개, 이어서 내부 작업에 대한 개요입니다.
- Awesome Unicode - 유쾌한 유니코드 관련 정보, 패키지 및 리소스를 엄선한 목록입니다.
- 유니코드의 어두운 면 - 유니코드는 광범위합니다. 여기에는 용이 있습니다.
- 코드 포인트에 의미 부여를 중단하자 - 유니코드에 대해 더 자세히 알아보고 코드 포인트에 대한 오해를 해소합니다.
- 유니코드 오해 - 대소문자, 인코딩, 문자열 길이 등에 대한 거짓 모음입니다.
-
Latin-1
가정 깨기 - 대부분의 프로그래머는 Latin-1
에 너무 많은 시간을 소비하여 다른 스크립트의 단점을 잊어버립니다. - 배송 라벨에 대한 송가 - 문자 인코딩은 어렵습니다. 데이터 입력의 각 깨진 레이어가 고유한 향신료를 추가할 때 더욱 그렇습니다.
- 현지화 실패: 온도가 어렵습니다. 온도 차이를 있는 그대로 현지화할 수는 없습니다.
- i18n 테스트 데이터 - 단위 테스트 및 QA를 위한 실제 국제 및 다양한 이름 데이터를 편집합니다.
- 버릇없는 문자열의 큰 목록 - 사용자 입력 데이터로 사용될 때 문제를 일으킬 확률이 높은 거대한 문자열 모음입니다. 소프트웨어를 테스트하기 위한 실용적인 엣지 케이스 세트가 있어야 합니다.
관리
- 취업 지원자에 대한 허위 - 취업 지원자와 그들의 취업 이력에 대한 가정이 반드시 사실인 것은 아닙니다.
멀티미디어
- 비디오에 대한 거짓 - 비디오 디코딩 및 재생, 파일, 이미지 크기 조정, 색상 공간 및 변환, 디스플레이 및 자막 등 모든 것을 다룹니다.
- 음악을 다룰 때 고려해야 할 끔찍한 경우 - 음악 카탈로그 데이터는 말도 안되는 것들로 가득 차 있습니다.
- MusicBrainz 데이터베이스 스키마 - 음악 카탈로그 관리의 복잡성을 해결한 것으로 보이는 오픈 소스 프로젝트 및 데이터베이스입니다.
- DDEX - 보관, 음원, 판매 및 사용 보고, 로열티 및 라이선스 거래를 포함한 음악 메타데이터에 대한 업계 표준입니다.
- Apple 음악 스타일 가이드 - 음악, 예술, 메타데이터 형식을 지정하여 검색 가능성을 높이는 품질 보험 지침입니다.
네트워크
- 네트워크에 대한 거짓 - TCP, DHCP, DNS, VLAN 및 IPv4/v6을 다룹니다.
- 분산 컴퓨팅의 오류 - 분산 애플리케이션을 처음 접하는 프로그래머가 항상 만드는 가정입니다.
- IP 주소를 작성하는 방법은 여러 가지가 있습니다. 주소의 일부 부분은 선택 사항입니다. 10진수 및 8진수 표기법에 주의하고 IPv6도 잊지 마세요.
- IDN은 미쳤습니다. 도메인 이름의 국제 문자는 동형이의어와 이형어의 지원을 의미합니다.
-
hostname-validate
- Python에서 호스트 이름의 유효성을 검사하려는 시도입니다.
전화번호
- 전화번호에 대한 허위 - 전화번호, 그 표현 및 의미를 다룹니다.
-
libphonenumber
- 국제 전화번호를 구문 분석하고, 형식을 지정하고, 유효성을 검사하기 위한 Google의 공통 Java, C++ 및 JavaScript 라이브러리입니다. C#, Objective-C, Python, Ruby 및 PHP에서도 사용할 수 있습니다.
우편 주소
- 주소에 대한 허위 - 거리, 우편번호, 건물, 도시 및 국가를 다룹니다.
- 거주지에 대한 허위 - 주소 자체에 관한 것뿐만 아니라 개인과 거주지 간의 관계에 관한 것입니다.
- 이름, 주소 없음에도 불구하고 배달된 편지 - 우편 주소에 대한 궁극적인 허위: 우편 주소가 필요하지 않습니다.
- UK Address Oddities - 1995년 이후 잉글랜드와 웨일즈에서 가장 많이 판매된 주거용 부동산 목록에서 추출한 특이한 점입니다.
- 가능한 가장 최소한의 영국 주소는 무엇입니까? - 비결은 우편번호에 의존하는 것입니다. 영국에서는 우편번호가 매우 구체적이어서 "우편번호가 전체 지역을 나타내는 국가와는 달리 종종 하나 또는 몇 개의 특정 건물을 식별합니다".
- 자신의 우편번호를 가진 곰 - 스모키 베어는 너무 많은 우편물을 받기 때문에 자신만의 우편번호(
20252
)를 가지고 있습니다. - 코스타리카는 왜 실제 주소를 사용하지 않습니까? - 코스타리카는 랜드마크, 역사, 상당한 추측에 의존하는 독특한 주소 시스템을 사용합니다.
- 정규식 및 우편 주소 - 정규식과 거리 주소가 혼합되지 않는 이유
- 악명 높은 일본 우편 CSV 분석 - "나는 많은 공포를 보았지만 다른 곳에서는 이 특별한 형식 선택을 본 적이 없습니다."
- USPS 우편 주소 지정 표준 - 표준화된 주소 형식과 내용을 모두 설명합니다.
-
libaddressinput
- 국제 우편 주소를 구문 분석하고, 형식을 지정하고, 유효성을 검사하기 위한 Google의 공통 C++ 및 Java 라이브러리입니다. -
addressing
- Google의 데이터 세트를 기반으로 하는 PHP 5.4+ 주소 지정 라이브러리입니다. -
postal-address
- 우편 주소를 구문 분석, 정규화 및 렌더링하는 Python 모듈입니다. -
address
- Google의 데이터세트를 사용하여 주소의 유효성을 검사하고 형식을 지정하는 Go 라이브러리입니다.
과학
- 측정 시스템에 대한 거짓 - 측정 시스템 작업 및 측정 시스템 간의 변환에 관한 것입니다.
사회
- 정치적 임명에 대한 거짓 - 선거 시스템을 설계하는 데에는 고유한 트릭이 있습니다.
- Women In Tech에 대한 거짓 - STEM(과학, 기술, 엔지니어링, 수학) 산업의 여성에 대한 신화.
소프트웨어 공학
- 버전에 대한 허위 - 소프트웨어 릴리스에 신원을 부여하는 것은 생각보다 어려울 수 있습니다.
- 빌드 시스템에 대한 거짓 - 소프트웨어 구축은 어렵습니다. 소프트웨어를 구축하는 소프트웨어를 구축하는 것은 더 어렵습니다.
- 정의되지 않은 동작에 대한 거짓 - 정의되지 않은 동작을 호출하면 "무엇이든"이 생각하는 것보다 훨씬 더 광범위하게 정의되므로 어떤 일이든 일어날 수 있습니다.
- CSV에 대한 허위 - RFC4180이 존재하지만 확정적이지 않으며 대부분 무시됩니다.
- 패키지 관리자에 대한 허위 - 패키지와 해당 관리자를 다룹니다.
- 테스트에 대한 허위 - 테스트에 대한 허위 목록을 작성하려는 시도입니다.
- 검색에 대한 거짓 - 검색(분석, 토큰화, 강조 표시 포함)이 믿을 수 없을 정도로 복잡한 이유입니다.
- 모든 소프트웨어 엔지니어가 검색에 대해 알아야 할 사항 - 검색 엔진 구현의 어려움에 대한 더 나은 출처의 기사입니다.
- 페이지 매김에 대한 거짓 - 페이지 매김 알고리즘이 누군가(아마도 당신)에게 두통을 주는 이유.
- 가비지 수집에 대한 거짓 - 가비지 수집의 예측 가능성과 성능에 대한 오해입니다.
- 파일 경로에 대한 오해 - 파일 시스템과 OS의 다양성으로 인해 파일 경로가 우리가 생각하는 것보다 조금 더 어려워집니다.
- Windows 파일 경로의 이상한 세계 - “모든 Unix 기반 시스템에서 경로는 놀라울 정도로 간단합니다.
/
로 시작하면 경로입니다. Windows에서는 그렇지 않습니다.” - CPU 캐시에 대한 오해 - 캐시에 대한 오해는 특히 동시성 및 경쟁 조건과 관련하여 잘못된 주장으로 이어지는 경우가 많습니다.
-
/dev/urandom
에 대한 오해 - /dev/urandom
및 /dev/random
에 대해 계속해서 반복되는 몇 가지 사항이 있습니다. 아직도 그것은 거짓이다. - 상태 머신에 대한 사실 - 상태 머신은 종종 오해되거나 제대로 적용되지 않습니다.
- 안녕! 내 이름은... - 이 강연은 사용자 이름(및 기타 식별자)에 대한 거짓으로 명명되었을 수 있습니다.
-
mtime
에 대한 대중적인 오해 - 파일의 mtime
비교가 유해한 것으로 간주될 수 있는 이유에 대한 게시물의 일부입니다. - 자동 완성 규칙 - 그 자체로는 거짓이 아니지만 자동 완성을 구현하기 위한 훌륭한 모범 사례 목록입니다.
- 부동 소수점 수학 - “당신의 언어는 고장난 것이 아니라 부동 소수점 수학을 하고 있습니다. (…) 이것이 바로
0.1 + 0.2 != 0.3
인 경우가 많은 이유입니다.” - 지옥의 yaml 문서 - YAML은 실수로 발생한 숫자 및 문자열이 아닌 키와 같은 모호한 복잡성으로 가득 차 있습니다.
- 나는 콘텐츠 태깅 시스템에 끝없이 매료되었습니다. 기본이라고 여겨지는 태깅 시스템에도 극단적인 경우가 있습니다.
- 양자 기술에 대한 거짓 - 양자 기술과 컴퓨터에 대한 일반적인 오해.
- 이벤트 중심 시스템에 대한 거짓 - 이벤트 중심 시스템 및 메시지 전달에 대한 오해입니다.
운송
- 자동차에 대한 거짓 - 자동차를 정의하는 것만큼 흔한 것에도 함정이 가득합니다.
- 항공사 좌석 배치도에 대한 거짓 - 항공사 좌석 배치도는 좌석의 깔끔한 행과 열보다 훨씬 더 복잡합니다.
- 공항 코드의 미친 혼란 - 역사, 실용성 및 물류를 조화시키려는 여러 국제 및 국가 기관이 있어 코드는 난해한 규칙을 따르게 됩니다.
- 내 이름이 예약에 문제를 일으킵니다! - 기존 항공사 예약 시스템에서는
MR
접미사를 Mister
로 간주하여 삭제합니다.
타이포그래피
- 글꼴에 대한 허위 - 웹 및 데스크톱 애플리케이션의 타이포그래피에 대한 가정입니다.
- 프로그래머가 대소문자에 대해 알아야 할 진실 - 대소문자에 관한 거짓 형식의 완전한 반대입니다(대문자 및 소문자 텍스트에서와 같이).
비디오 게임
- 문 문제 - 게임에서 문 구현을 고려하지 않은 모든 것.
편물
- HTML에 대한 거짓 - “웹은 아름답다. 웹은 추악합니다. 웹은 놀랍습니다. 이러한 매력의 일부는 역사적인 특징을 지닌 HTML입니다.”
- REST API에 대한 거짓 - API를 생성하고 문서화할 때 주의해야 할 함정입니다.
- URL: 복잡해요... - URL에는 많은 구성요소가 있고 모두 고유한 논리를 가지고 있습니다.
- 15개 이상의 엣지 사례로 설명된 파비콘 다운로드의 숨겨진 복잡성 - 브라우저 탭에 표시되는 작은 아이콘을 다운로드하는 것은 간단한 연습이어야 합니다. 생각보다 훨씬 더 복잡한 것으로 밝혀졌습니다. 야크의 면도를 하지 않도록 주의하세요.
기여
귀하의 기여는 언제나 환영합니다! 먼저 기여 가이드라인을 살펴보시기 바랍니다.
각주
이 목록은 지난 몇 년 동안 소셜 미디어에서 인기를 얻었습니다. 다른 곳에서 논의되고 언급되는 내용을 참조하세요.
헤더 이미지는 Creative Commons BY-SA 2.0 UK 라이선스에 따라 배포되는 Iza Bella가 2010년 2월에 촬영한 수정된 사진을 기반으로 합니다.
[1]: 노트북, 1914-1916 (Liveright, 2022) - 출처: 14e페이지. [↑]