Yandex for Backend – Telegram
Yandex for Backend
8.7K subscribers
632 photos
46 videos
3 files
310 links
Канал для бэкендеров от Яндекса. Рассказываем про события по Python, Go, Java и C++ и не только, делимся экспертизой, обсуждаем технологии и поддерживаем бэкенд-комьюнити.

Другие каналы Яндекса по стекам разработки: https://news.1rj.ru/str/addlist/Hrq31w2p1vUyOGZi
Download Telegram
🐾 Наши любимые петы: робот-художник

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

Сегодня мы показываем пет-проект Антона Чистякова, менеджера проектов в Яндексе. Он навайбкодил на Python софт, который позволяет коллаборативному роботу-манипулятору (uFactory Lite 6) самостоятельно пройти весь путь художника: от смешивания красок до финального штриха на холсте.

🔶 Ссылки на систему управления роботом и процесс генерации изображений

P. S. Антон — не волшебник, а только учится, и поэтому просит не ругать его код
🈯️

Этот пост — часть спецпроекта «Наши любимые петы». Ранее мы рассказывали про другие личные проекты яндексоидов: инструмент для передачи данных по сети и среду для автоматизации маркировки напитков.


🛎 А ещё мы открыли call for papers ваших петов! Если вы разрабатываете что-то для души и хотите поделиться этим с аудиторией Yandex for Developers — расскажите про ваш проект в этой форме.

✉️ Мы будем собирать заявки до первой половины декабря, а после внимательно их прочитаем и выберем самые интересные и вдохновляющие петы. После Нового года мы свяжемся с их авторами и начнём публиковать посты про «питомцев» наших читателей.

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥3
🐍 Как мы провели первый Pytup в Белграде

На прошлой неделе мы собрали в зале 120 питонистов! Обсудили с ними главные технические изменения в Python за год и разобрались, что происходит с культурой и экспертизой в сообществе. Поговорили про 3.14, PEP’ы и Rust в CPython, а ещё поделились прогнозами.

Благодарим экспертов:

🟢 Станислава Змиева, Head of Engineering в Sema, автора популярного фреймворка Cadwyn

🟢 Александра Шадчина, ведущего разработчика Яндекс Sandbox, активного контрибьютора Python

🟢 Никиту Бесшапошникова, независимого эксперта, разработчика Python-фреймворка для 400+ сервисов Яндекса

🟢 Александра Зверянского, MLE в Martian и соорганизатора Python Belgrade

А ещё спасибо всем, кто был с нами офлайн и онлайн, участвовал в дискуссии и задавал вопросы!

💻 Смотрите запись митапа на ютубе и в VK Видео

📷 Ищите себя на фотографиях

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥3🤔2👍1🌚1
🧬 Temporal: серебряная пуля распределённой бизнес-логики

Долгий процесс со множеством состояний, таймеров и внешних событий создаёт много сложностей при разработке. Раньше для такой системы нужны были не просто танцы с бубном, а целый концерт: стейт‑машина с полудюжиной состояний, очереди и воркеры, обработчики на каждое событие и блокировки от race conditions.

С этой проблемой мы столкнулись и в процессинге Яндекс Еды. Жизненный цикл заказа от оплаты до доставки — яркий пример такой распределённой логики. Но в итоге решение мы нашли. И весьма элегантное.

🖍 Мы переписали код с помощью Temporal:


e, err := w.prepareExecutor(ctx, req)
if err != nil {
return nil, err
}

if err := e.CreateAndPay(); err != nil {
return e.HandleResult(err)
}

if err := e.InitializeNativeDelivery(); err != nil {
return e.HandleResult(err)
}

if err := e.WaitForOrderConfirmation(); err != nil {
return e.HandleResult(err)
}

if err := e.WaitDelivery(); err != nil {
return e.HandleResult(err)
}

return e.HandleResult(nil)


Теперь это выглядит как одна линейная функция-воркфлоу. Она читается как описание бизнес-логики, но при этом гарантированно выполняется от начала до конца. А ещё она переживает падения сервисов и временные сбои зависимостей.

🔶 Читайте на Хабре, почему мы выбрали Temporal как основу обновлённого процессинга, в чём его сильные стороны и как изменилась наша жизнь после перехода на новые рельсы.

А ещё в статье мы разбираем:

🟢 Чем приходится платить за инструментарий Temporal

🟢 Какие возможности он даёт и кому пригодится

🟢 Как обстоят дела с observability (спойлер: заметно лучше, чем без Temporal)

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Please open Telegram to view this post
VIEW IN TELEGRAM
9🥴4🙈4💊1
🟢 Харденинг: спасти буфер от переполнения и сохранить доступ

Есть способы защиты, которые можно использовать в продуктовом коде уже после релиза. Это харденинг — система, которая позволяет находить и предотвращать различные ошибки и уязвимости. Например, выходы за границу буфера, обращения по невалидному адресу, переполнения целочисленной переменной и так далее.

Для C/C++ это особенно актуально. Так, 70% уязвимостей в Microsoft и критических багов в Chromium — ошибки памяти, а из них 70% — это 0-day. Некоторые госучреждения и вовсе рекомендуют избегать C++ в пользу более безопасных языков.

👩‍⚕️ Этой теме посвятили доклад Роман Русяев и Юрий Грибов на C++ Zero Cost Conf. О главных уязвимостях, которые выделили ребята, мы рассказали в тексте ниже, а ключевые инструменты харденинга показываем в карточках.

♋️ Уязвимость 1. Stack Smashing

С этой атаки началась практическая эксплуатация уязвимостей памяти. Злодей переполняет буфер, перезаписывает локальные переменные и адрес возврата. После этого он кладёт на стек вредоносный код и изменяет адрес возврата так, чтобы процессор начал выполнять его после выхода из функции. Это часто приводит к получению полного контроля над системой.

♋️ Уязвимость 2. Return-to-libc

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

♋️ Уязвимость 3. Return-oriented Programming

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

♋️ Уязвимость 4. Атаки на кучу

Эта угроза связана с переполнением буфера, расположенного не на стеке, а в динамической памяти — куче. Это позволяет перезаписать данные соседнего буфера и контролировать критичные для программы переменные. А ещё так можно испортить метаданные аллокатора.

💹 Примеры и подробности — в полной записи выступления. Смотрите по ссылкам на ютубе или в VK Видео. В докладе много линков на полезные материалы и фичи, которыми можно пользоваться уже сейчас.

А весь плейлист целиком с другими докладами C++ Zero Cost Conf 2025 найти можно тут:

VK Видео
Ютуб

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍2