Рубрика «разработка» - 9

Самая маленькая хеш-таблица в мире - 1

1 декабря я в очередной раз поучаствовал в Advent of Code, написав программу на Rust. Если интересно — код можно найти на GitHub. Тут мне хотелось бы рассказать о моём решении задачи, предлагавшейся во 2 день мероприятияЧитать полностью »

Внутри Mailion: как устроен фронтенд почты на миллион пользователей - 1

Недавно мы представили защищенную корпоративную почтовую систему «Mailion. Сертифицированный» — единственную на российском рынке с действующим сертификатом ФСТЭК России. Продукт предназначен для работы с конфиденциальной информацией в крупных коммерческих и государственных организациях.

Читать полностью »

Как разработать Telegram-бота для генерации сложных паролей - 1

Чтобы придумать надежный, но запоминающийся пароль, можно взять несколько слов и объединить их в последовательность, напоминающую сюжет. А после — отформатировать и добавить специальные символы. Все просто, но задачу можно автоматизировать — написать Telegram-бота, который будет генерировать пароли прямо в мессенджере. В статье рассказываем, как это сделать.
Читать полностью »

Javascript ― язык весьма оригинальный. Его можно любить, ненавидеть и даже бояться, но равнодушным он вас вряд ли оставит. Не знать или не понимать, с чем ты работаешь ― самая частая ошибка, допускаемая современными фронтенд‑разработчиками. Вам бы понравилось, если бы дантист, к которому вы пришли, не понимал, какой он инструмент использует и какие у него особенности работы? Очевидно, что нет. И рано или поздно, если вы действительно хотите стать профессионалами, вы разберётесь во всём, но как сделать так, чтоб это случилось раньше?

Читать полностью »

После выхода ChatGPT только ленивый не написал о нём. Языковая модель GPT-3.5 от OpenAI привлекла широкое внимание общественности своими возможностями: создание текстов, возможности перевода, получения точных ответов и использования контекста для диалога. Но больше всего разработчиков впечатлила возможность написания работающего кода по запросу на естественном языке.

Читать полностью »

2022 год научил нас быстро менять приоритеты для оперативного реагирования на внешние факторы. В наших целях была зафиксирована ключевая задача по отказу от софта вендора в пользу собственных решений, разработанных на основе микросервисной архитектуры. Стоял вполне комфортный срок: полностью завершить переход до конца года, и команды планомерно шли к этой цели, наряду с разработкой менее масштабных, но тоже важных фич. Но в связи со вполне реальными рисками преждевременного ухода вендора из РФ сроки доработок сократились с полугода до одного месяца (почти как в известной шуткеЧитать полностью »

Cтатья посвящена проекту «ВсеИнструменты.ру» — крупнейшему интернет-магазину DIY-товаров и нашему клиенту по совместительству. Расскажем, с чего начинали сотрудничество почти пять лет назад, как сейчас идут дела и куда мы вместе идём. Поговорим о сопровождавших этот путь технических вызовах и особенностях решений в инфраструктуре, которые позволили бизнесу добиться впечатляющего роста.

«ВсеИнструменты.ру»Читать полностью »

При использовании компаратора в алгоритмах boost::sort и std::sort важно учитывать некоторые особенности работы этих алгоритмов, игнорирование которых может привести к неожиданным последствиям, в том числе к segmentation fault.

image

Чаще всего при сортировке объектов пользовательских типов написание кода сравнения элементов коллекции не вызывает вопросов. Компаратор должен возвращать true, если первый аргумент меньше второго, то есть в отсортированном массиве первый аргумент должен идти перед вторым. Алгоритмы сначала вызывают компаратор для пары элементов x и y. Если компаратор вернул true, значит, элемент x меньше y и он должен идти в коллекции перед элементом y, если false, то компаратор вызывается повторно для пары y и x. Если компаратор опять вернул false, значит, элементы равны, иначе порядок определен.

Меня зовут Олег Игнатов, я — Development Team Lead в команде KICS (Kaspersky Industrial CyberSecurity) «Лаборатории Касперского». Мы защищаем промышленные инфраструктуры и сети от специализированных киберугроз. В этой статье расскажу о некоторых особенностях использования компараторов в С++, знание которых позволит не наступить на различные грабли и сэкономить время при разборе багов.
Читать полностью »

К нам из цеха пришли инженеры и попросили сделать ИТ-систему.

Если вы знакомы со спецификой «суровых производственных мужчин», то знаете, что от них это звучит примерно так же, как «тыквенный смузи и веганский стейк, пожалуйста», — ещё два года назад мы о таком проявлении доверия к ИТ со стороны производства даже мечтать не могли. А тут оказалось, что им нужен инструмент, чтобы контролировать износ сегментов УНРС (установки непрерывной разливки стали), потому что это не только убирает рутину, напрямую влияет на качество продукта — слитков стали, но и снижает потенциальный риск прорыва сегмента с расплавом.

Итак, знакомьтесь, вот один из ручьёв УНРС:

Всё меняется, когда твой софт повышает безопасность производства - 1

Сверху на УНРС приходит ковш, снизу выпадает огромный слиток стали — сляб. Если вы думаете, что достаточно просто залить сталь из ковша в формочку, то нет. Надо, чтобы всё это равномерно остыло, иначе внутри будут раковины, трещины и другие неприятности. Поэтому процесс такой: сверху буфер, бассейн-накопитель для жидкой стали, дальше каскад сегментов-обработчиков. Сталь проливается вниз, а каждый сегмент охлаждает её. В бассейн подаются ковши с расплавом, которые его наполняют.

Самое опасное в УНРС — не уследить за износом какого-то одного из сегментов, по которому идёт расплав, постепенно превращаясь в сляб. И оказалось, что можно свести такую вероятность к нулю, если избавиться от кучи отдельных бумажных документов и автоматизировать контроль.

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

Сейчас покажу результат.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js