Yᴏᴜʀ Pʀᴏᴅᴜᴄᴛ ʜᴇʀᴇ!
Добавьте сюда ссылку на свою компанию или проект: купите спонсорство GitHub.
Логика мира первична всякой истине и лжи.
- Людвиг Витгенштейн [1]
Тщательно подобранный список лжи, в которую верят программисты. Ложь — это идея , в которую вы изначально верили, что она верна , но на самом деле она оказалась ложной .
Например, идея : действительный адрес электронной почты содержит ровно один символ @
. Итак, вы будете использовать это правило для реализации логики проверки поля электронной почты. Верно? Неправильный! Реальность такова: электронные письма могут содержать несколько символов @
. Поэтому ваша реализация должна позволять это. Первоначальная идея — это ложь, в которую вы верили.
Перечисленные ниже ложные статьи будут содержать полный список тех ложных убеждений, о которых вам следует знать, чтобы помочь вам стать лучшим программистом.
Содержание
- Мета
- Искусство
- Бизнес
- Криптовалюта
- Даты и время
- Образование
- Электронная почта
- География
- Человеческая идентичность
- Интернационализация
- Управление
- Мультимедиа
- Сети
- Номера телефонов
- Почтовые адреса
- Наука
- Общество
- Программная инженерия
- Транспорт
- Типография
- Видеоигры
- Интернет
Мета
- Ложь, в которую верят программисты. Краткий список распространенных заблуждений. Отличный обзор и быстрое введение в мир фальши.
- Ложь о программировании — унизительный и забавный список о программировании и самих программистах.
- Ложь о списках ложной информации — метакомментарий о том, как не следует обращаться с этой ложью.
Искусство
- Ложь о музыке. Ложное предположение, которое может быть сделано при кодификации музыки.
- Ложь об искусстве. Распространенные заблуждения об искусстве.
Бизнес
- Ложь об интернет-покупках: цены, валюты и товарные запасы.
- Ложь о ценах. Охватывает валюты, суммы и локализацию.
- Ложь относительно номеров IBAN: международные номера банковских счетов не являются международными.
- Ложь об экономике. Экономика непроста и не рациональна.
- Ошибка десятичной точки в системе учета Etsy. Важность типов в бухгалтерском программном обеспечении: отсутствие десятичной точки приводит к 100-кратной завышенной цене.
- Двадцать пять тысяч долларов смешных денег. Та же ошибка, что и выше, в 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 статьи выше.
- Ложь о времени и часовых поясах. Другой вариант касается лжи, связанной со временем, с упором на часовые пояса.
- Критика лжи о времени — берется за первую статью выше и дается объяснение каждой лжи с дополнительным контекстом и внешними ресурсами.
- Ложь о времени Unix – обратите внимание на високосную секунду!
- Ложь о часовых поясах. Есть несколько интересных моментов, касающихся крайних случаев перехода на летнее время.
- Ваша календарная ошибка — это думать… — список, охватывающий вставки и культурное влияние, составленный сообществом разработчиков iOS и macOS.
- База данных часовых поясов — код и данные, которые представляют историю местного времени для многих репрезентативных мест по всему миру.
- Долгая и мучительная история времени. Большинство особенностей хронометража можно найти объяснение в истории.
- Вы выступаете за реформу календаря. Ваша идея не сработает. В этой статье рассказывается, почему.
- Итак, вы хотите отменить часовые пояса. Отмена часовых поясов может показаться хорошей идеей, но есть немало сложностей, которые делают это не совсем так.
- Проблема со временем и часовыми поясами — видео о том, почему вам никогда не следует иметь дело с часовыми поясами, если вы можете помочь.
- Избыточный сбор в размере 26 000 долларов со стороны Министерства труда – следствие неправильного календарного учета.
- RFC-3339 против ISO-8601 — огромный список форматов двух стандартов, их совпадение и живые примеры.
- ISO-8601,
YYYY
, yyyy
и почему ваш год может быть неправильным. Строковое форматирование даты сложно. - UTC хватит на всех, верно? - Существуют крайние случаи, связанные с датами и временем (в частности, UTC), о которых вы, вероятно, не подумали.
- Хранение UTC не является панацеей: «Просто хранить даты в формате UTC» не всегда правильный подход.
- Как выбрать между UT1, TAI и UTC. Зависит от ваших приоритетов между секундами SI, синхронизацией вращения Земли и предотвращением дополнительных секунд.
- Почему вычитание этих двух раз (в 1927 году) дает странный результат? - Ответ Infamous Stack Overflow как о сложных исторических часовых поясах, так и о том, как исторические даты могут быть переинтерпретированы новыми версиями программного обеспечения.
- Критические и значимые даты — от 2000 года до переполнения 32-битных секунд эпохи Unix, список особых дат, за которыми следует следить в зависимости от системы.
- «Я собираюсь в коммуну в Вермонте и не буду иметь дело с единицей времени короче сезона». - Это заметка, оставленная на его терминале уволившимся инженером в 70-х годах после слишком больших усилий, потраченных на решение проблем с точностью до секунды. Источник: Душа новой машины.
Образование
- Ложь Студенты компьютерных наук (все еще) верят после окончания учебы - Список вещей (и не только), во что студенты-компьютерщики склонны ошибочно, а иногда и удивительно верить, хотя им (вероятно) следовало бы знать лучше.
- Постдок-мифы: «О постдокторантах-исследователях говорят, пишут и во что верят, но это не соответствует действительности».
Электронная почта
- Ложь об электронной почте: адреса, содержание и доставка.
- Я знал, как проверить адрес электронной почты, пока не прочитал RFC. Содержит сложные примеры, которые являются неожиданными действительными адресами электронной почты в соответствии с RFC-822.
- Итак, вы думаете, что можете проверить адреса электронной почты (FOSDEM 2018). Представление адресов электронной почты в крайнем случае и почему вам не следует использовать регулярное выражение для их анализа.
- Ваша логика проверки электронной почты неверна. Краткое изложение различных удивительных вещей, которые разрешены в адресе электронной почты.
-
libvldmail
— библиотека, реализующая проверки адресов электронной почты на основе RFC.
География
- Ложь о географии: рассказывает о местах, их названиях и расположении.
- Ложь о картах: координаты, проекции и ГИС.
- Я ненавижу системы координат — руководство для практиков в области геопространственных данных по диагностике и устранению распространенных проблем с системами координат.
- Топ-5 самых безумных топонимов кандзи в Японии. «Есть одна особая группа кандзи, которую трудно прочитать даже японцам: топонимы».
Человеческая идентичность
- Ложь об именах — статья, с которой все началось.
- Ложь об именах – с примерами – пересмотренная версия статьи выше, на этот раз с подробными объяснениями.
- Ложь о биометрии. Отпечатки пальцев не уникальны.
- Ложь о семьях. Невозможно определить семью, руководствуясь строгими правилами.
- Ложь о гендере: № 1 и № 2. Пол является частью человеческой идентичности и имеет свои тонкости.
- Ложь обо мне - Проблемы на стыке имен, пола и интернационализации.
- Однополые браки: перспектива разработки базы данных - Как хранить брак в базе данных, устраняя при этом большинство ложных сведений о поле, именовании и отношениях.
- Личные имена по всему миру. Как имена людей различаются по всему миру и каковы последствия для Интернета?
- XKCD #327: Подвиги мамы — Забавный взгляд на то, как ложная реализация может привести к дырам в безопасности.
- Здравствуйте, я мистер Налл. Мое имя делает меня невидимым для компьютеров — реальный пример того, как ложь оказывает негативное влияние на чью-то жизнь.
- HL7 v3 RIM — гибкая модель данных для представления человеческих имен.
- Apple iOS
NSPersonNameComponentsFormatter
— локализованные представления компонентов имени человека.
Интернационализация
О кодировке символов, форматировании строк, Юникоде и интернационализации.
- Ложь о языке. Перевод программного обеспечения с английского не так прост, как кажется.
- Ложь относительно простого текста. Обычный текст не может его разрезать, что делает Unicode еще более невероятным из-за его способности просто хорошо работать.
- Ложь о тексте. Подмножество ложных сведений, описанных выше, проиллюстрировано некоторыми примерами.
- Интернационализация кода — видео о том, что нужно учитывать при интернационализации кода.
- Минимум, который нужно знать о Unicode и наборах символов. Хорошее введение в Unicode, его исторический контекст и происхождение, за которым следует обзор его внутренней работы.
- Awesome Unicode — тщательно подобранный список замечательных интересных деталей, пакетов и ресурсов для Unicode.
- Темные уголки Юникода. Юникод обширен, здесь и драконы.
- Давайте перестанем приписывать значение точкам кода. Углубимся в Юникод и развенчаем мифы о точках кода.
- Заблуждения о Unicode. Сборник неверных сведений о регистре, кодировках, длине строки и т. д.
- Разрушение наших предположений
Latin-1
. Большинство программистов проводят так много времени с Latin-1
, что забывают о особенностях чужих скриптов. - Ода транспортной этикетке. Кодировка символов сложна, тем более, что каждый нарушенный уровень ввода данных добавляет свою изюминку.
- Ошибка локализации: температура затруднена. Вы не можете локализовать разницу температур как есть.
- Данные тестирования i18n — подборка реальных международных и разнообразных данных о названиях для модульного тестирования и контроля качества.
- Большой список нежелательных строк. Огромный набор строк, которые с высокой вероятностью могут вызвать проблемы при использовании в качестве данных, вводимых пользователем. Необходимый набор практических крайних случаев для тестирования вашего программного обеспечения.
Управление
- Ложь о соискателях работы. Предположения о соискателях работы и их опыте работы не обязательно верны.
Мультимедиа
- Ложь о видео. Расскажите обо всем: декодировании и воспроизведении видео, файлах, масштабировании изображений, цветовых пространствах и преобразовании, отображении и субтитрах.
- Ужасные крайние случаи, которые следует учитывать при работе с музыкой. Данные музыкальных каталогов полны сумасшедших вещей.
- Схема базы данных MusicBrainz — проект и база данных с открытым исходным кодом, которые, кажется, решили сложность управления музыкальным каталогом.
- DDEX — отраслевой стандарт музыкальных метаданных, включая архивирование, звукозапись, отчеты о продажах и использовании, гонорары и лицензионные соглашения.
- Руководство по стилю Apple Music — рекомендации по обеспечению качества при форматировании музыки, изображений и метаданных для повышения их доступности.
Сети
- Ложь о сетях — охватывает TCP, DHCP, DNS, VLAN и IPv4/v6.
- Заблуждения распределенных вычислений. Предположения, которые неизменно делают программисты, плохо знакомые с распределенными приложениями.
- Существует несколько способов записи IP-адреса. Некоторые части адреса являются необязательными, помните о десятичной и восьмеричной системе счисления, а также не забывайте об 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
— библиотека адресации PHP 5.4+, основанная на наборе данных Google. -
postal-address
— модуль Python для анализа, нормализации и рендеринга почтовых адресов. -
address
— библиотека Go для проверки и форматирования адресов с использованием набора данных Google.
Наука
- Ложь о системах измерения - О работе с системами измерения и преобразовании между ними.
Общество
- Ложь о политических назначениях. В разработке избирательных систем есть свои особенности.
- Ложь о женщинах в сфере технологий — миф о женщинах в отраслях STEM (наука, технологии, инженерия, математика).
Программная инженерия
- Ложь о версиях. Присвоить идентичность выпуску программного обеспечения может оказаться сложнее, чем предполагалось.
- Ложь о системах сборки. Создавать программное обеспечение сложно. Создавать программное обеспечение, которое создает программное обеспечение, сложнее.
- Ложь о неопределенном поведении. Вызов неопределенного поведения может привести к тому, что произойдет что угодно , поскольку определение «чего угодно» гораздо более широкое, чем можно подумать.
- Ложь в отношении CSV. Несмотря на то, что RFC4180 существует, он далеко не окончательный и по большей части игнорируется.
- Ложь о менеджерах пакетов. Охватывает пакеты и их менеджеры.
- Ложь о тестировании. Попытка составить список ложных сведений о тестировании.
- Ложь о поиске. Почему поиск (включая анализ, токенизацию и выделение) обманчиво сложен.
- Что каждый инженер-программист должен знать о поиске — статья с лучшими источниками о сложности реализации поисковых систем.
- Ложь о нумерации страниц. Почему ваш алгоритм нумерации страниц вызывает у кого-то (возможно, у вас) головную боль.
- Ложь о сборе мусора. Заблуждения о предсказуемости и производительности сборки мусора.
- Мифы о путях к файлам. Разнообразие файловых систем и операционных систем делает пути к файлам немного сложнее, чем мы можем себе представить.
- Странный мир путей к файлам Windows. «В любой системе, основанной на Unix, путь — это удивительно простая вещь: если он начинается с
/
, это путь. В Windows все не так». - Мифы о кэшах ЦП. Неправильные представления о кэшах часто приводят к ложным утверждениям, особенно когда речь идет о параллелизме и условиях гонки.
- Мифы о
/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 крайних случаях. Загрузка маленького значка, который вы видите на вкладках браузера, должна быть простым упражнением. Все оказалось намного сложнее, чем вы думаете. Будьте бдительны и не брейте Яка.
Содействие
Ваш вклад всегда приветствуется! Пожалуйста, сначала ознакомьтесь с правилами внесения взносов.
Сноски
За последние несколько лет этот список приобрел некоторую популярность в социальных сетях. Посмотрите, как это обсуждается и упоминается в другом месте.
Изображение заголовка основано на модифицированной фотографии, сделанной в феврале 2010 года Изой Беллой и распространяемой по лицензии Creative Commons BY-SA 2.0 UK.
[1]: Записные книжки, 1914–1916 гг. (Liveright, 2022) – источник: стр. 14e. [↑]