Обновить
1003.57

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Почему ваши тесты для Telegram-ботов работают неправильно (и как это исправить)

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели3.6K

15-20 минут на ручное тестирование. После каждого коммита. 47 состояний диалога. Бесконечные «а этот edge case я проверил?». Flaky тесты с реальным API. Rate limits от Telegram. Проблема не в коде - проблема в том, как вы его тестируете. Ручное тыканье в Telegram не масштабируется. Тесты с реальным API - медленные и flaky. Свои моки писать - неделя работы. Я нашёл способ лучше: 50 интеграционных тестов за 2 секунды. Без сети. Без токенов.

50 интеграционных тестов за 2 секунды

Новости

SVG-фильтры как язык атак: кликджекинг нового поколения

Уровень сложностиПростой
Время на прочтение19 мин
Охват и читатели4.7K

Команда JavaScript for Devs подготовила перевод исследования о новой технике кликджекинга, которая использует SVG-фильтры как полноценную среду выполнения логики. Автор показывает, как с их помощью читать пиксели, строить логические схемы, реализовывать многошаговые атаки и даже эксфильтрировать данные через QR-коды — включая реальный кейс атаки на Google Docs.

Читать далее

Параллелизация pytest: от xdist до Kubernetes

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели3.6K

Тесты — это хорошо. Медленные тесты — это CI на 40 минут и разработчики, которые забывают их запускать локально. Разберём, как ускорить pytest от простого -n auto до распределённого запуска в Kubernetes.

Читать далее

Metaflow: повышение эффективности ML/AI-разработки в Netflix

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели4.8K

Metaflow — это фреймворк, работу над которым мы начали в 2019. В том же году мы открыли его исходный код. Теперь он обеспечивает функционирование широкого спектра ML/AI-систем в Netflix, а так же — во многих других компаниях. Он пользуется любовью тех, кто его применяет, так как он помогает им доводить их ML/AI-идеи от стадии прототипа до продакшна. Он позволяет им уделять внимание не решению рутинных задач, а созданию современнейших систем, которые дарят радость людям по всему миру и развлекают их.

Metaflow даёт разработчикам следующие возможности:

Читать далее

Структуры данных на практике. Глава 2: Иерархия памяти

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели3.1K

«Память — это современный диск, диск — это современная лента», — Джим Грей

Проблема ста тактов

В Главе 1 мы говорили о том, что промахи кэша стоят 100-200 тактов, а попадания в кэш — всего 1-4 такта. И это не какая-то мелкая деталь, а самый важный фактор современной производительности.

Ниже я расскажу, почему это так.

Однажды я оптимизировал драйвер устройства для встраиваемой системы на RISC-V. Драйвер должен был обрабатывать пакеты от сетевого интерфейса, но при большой нагрузке мы теряли пакеты. CPU работал с частотой 1 ГГц, а для обработки каждого пакета требовалось около 500 команд. Простая математика:

500 команд ÷ 1 ГГц = 500 наносекунд на пакет

При скорости 500 нс на пакет мы могли бы обрабатывать 2 миллиона пакетов в секунду. Однако мы справлялись всего с 200 тысячами пакетов в секунду, то есть в десять раз меньше, чем ожидалось.

Профилировщик показан следующее:

$ perf stat -e cycles,instructions,cache-misses ./driver_test Performance counter stats:

5,000,000 cycles

500,000 instructions

45,000 cache-misses

Постойте-ка: 500000 команд должны занимать 500000 тактов (при 1 IPC). Но мы видим 5 миллионов тактов. Куда подевались лишние 4,5 миллиона тактов?

Читать далее

Революционный подход в школьной образовательной робототехнике

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели6.1K

Mirte — это недорогая полностью open-source платформа учебного мобильного робота, где ученик проходит путь «от телеуправления и Blockly до Python, SSH и полноценного ROS», задуманная как единый «трек» обучения от начальной школы до университета, оставаясь на одном и том же роботе и в одной и той же среде. Идея Mirte в образовании — не прятать «настоящую» робототехнику за игрушечными абстракциями, а сделать к ней удобный, поэтапный вход.

Читать далее

Claude Code: практический гайд по настройке, автоматизации и работе с контекстом

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели8K

Команда AI for Devs подготовила перевод подробного гайда по Claude Code — от skills и хуков до MCP, субагентов и плагинов. Автор делится реальным сетапом после месяцев ежедневной работы и показывает, как выжать максимум из Claude Code, не убив контекст и производительность.

Читать далее

«Области тьмы» ИТ: платформы управления данными

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели4K

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

Читать далее

Разработка технических тестовых заданий, устойчивых к ИИ

Время на прочтение6 мин
Охват и читатели4.2K

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

Читать далее

Rust 1.93.0: обновление встроенного musl, глобальный аллокатор и tls, cfg в asm

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.8K

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

Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.93.0 вам достаточно выполнить команду:

$ rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.

Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Что стабилизировано в 1.93.0

Маппинг POJO в MongoDB с помощью Jackson

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.5K

В Java-приложениях, работающих с MongoDB, преобразование данных между нативным документо-ориентированным представлением MongoDB и обычными Java-объектами (POJO — Plain Old Java Objects) является частой задачей.

Читать далее

На стыке AI и науки: Летняя школа Veai для студентов

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.8K

День студента — отличный повод поговорить не только о сессиях и вечеринках, но и о том, зачем вообще учиться.

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

Образовательные проекты совместно с ведущими ВУЗами Росиии, ИТМО и СПбГУ – важная часть нашей работы. Летняя школа Veai – это не обычная стажировка, а возможность для студентов попробовать себя в реальных задачах, увидеть практическое применение своих знаний.

В 2025 году Летняя школа Veai прошла уже в третий раз. В течение полутора месяцев 8 талантливых ребят работали над проектами на стыке компьютерных наук и IT. Помогали и обучали их кураторы из Veai, действующие преподавателями СПбГУ (матмех и факультет математики и компьютерных наук).

Проекты и отзывы

OpenCode + Docker Model Runner для локальной разработки с ИИ

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели9.8K

Команда AI for Devs подготовила перевод статьи о том, как использовать OpenCode вместе с Docker Model Runner для локальной разработки с LLM. В центре внимания — контроль над кодом, данными и затратами: модели запускаются локально, контекст не уходит во внешние сервисы, а ИИ-ассистент становится частью вашей инфраструктуры, а не сторонним SaaS. Практический разбор для тех, кто хочет использовать ИИ в разработке без компромиссов по безопасности и стоимости.

Читать далее

Ближайшие события

Алгоритм резолва зависимостей в Angular Ivy: Математика Блум-фильтров и битовые маски

Уровень сложностиСложный
Время на прочтение5 мин
Охват и читатели9.2K

Как Angular Ivy находит зависимости за O(1)? Глубокое погружение в алгоритм резолва: от генерации уникальных ID токенов до битовой магии Блум-фильтров. Разбираем, почему строковые токены замедляют ваше приложение и как работает наследование кумулятивных масок в LView.

Разложить на биты

От пустоты к идее: как я создал свою первую доску вдохновения

Уровень сложностиПростой
Время на прочтение27 мин
Охват и читатели9.2K

Эта история не о строчках кода, а о том, как мы с другом устали смотреть на пустую доску в офисе. Сначала мы сделали свою версию проекта — с партнёрами и погодой, как мы предполагали по возможным требованиям. Потом я создал версию для себя: с котиками из Giphy API, бегущей строкой цитат и анимированной погодой. В этой статье — о том, как из простого желания добавить красок в рабочее пространство родился личный Preloader перед началом работы, и как пустота корпоративного экрана превратилась в доску вдохновения, которая теперь висит фоном на моём мониторе.

Читать далее

Что такое Skills, Prompts, Projects, MCP и сабагенты? База для понимания агентной экосистемы

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели14K

Команда AI for Devs подготовила перевод статьи, в которой по полочкам разбирается агентная экосистема. Skills, Prompts, Projects, MCP и сабагенты — что из этого отвечает за знания, что за действия, а что за подключение к данным. Материал помогает понять, какой инструмент когда использовать и как собирать из них сложные, но управляемые AI-воркфлоу.

Читать далее

Оно обязательно сломается: не «если», а «когда»

Время на прочтение2 мин
Охват и читатели16K

Навеяло несколькими прочитанными недавно статьями и комментариями к ним.

Люди, помните — «дерьмо случается»! Конечно, хорошо жить в мире где всё идет строго по плану, работает без ошибок и сбоев, никто не пытается ни в чем навредить и так далее — от только где он, этот мир?

Вот недавнее: джава‑скрипты в браузере сожрали кучу памяти, потому что где‑то на роутере пакеты не проходили так, как от них ожидалось.
Хорошо, конечно, что причину удалось найти — но как вообще могло такое получиться?

Читать далее

Кастомные аллокаторы для игровых движков: arena, pool и slab на C++

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели12K

Стандартный malloc — универсальный инструмент, но в геймдеве универсальность часто означает «недостаточно быстро». Когда бюджет кадра 16 мс, а каждый кадр рождаются тысячи объектов, имеет смысл разобраться в специализированных аллокаторах.

Рассмотрим три основных типа: arena, pool и slab — когда какой использовать, как реализовать, и какие подводные камни ждут.

Смотреть реализацию

Как сделать (очень) маленькие LLM действительно полезными

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели18K

Команда AI for Devs подготовила перевод статьи о том, как выжать максимум из маленьких языковых моделей. Автор показывает, что даже очень компактные LLM могут быть полезны в реальных задачах — если правильно работать с контекстом, embeddings и RAG.

Читать далее

Flask в 2025: итоги года и состояние экосистемы

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели7.5K

Команда Python for Devs подготовила перевод ежегодного обзора экосистемы Flask от Miguel Grinberg. Автор подробно разбирает, каким оказался 2025 год для фреймворка: замедление разработки, минимум релизов, снижение активности сообщества и растущую конкуренцию со стороны FastAPI.

Читать далее

Вклад авторов