Обновить
1024K+

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

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

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

Как Яндекс Диск выдерживает сотни гигабит входящего трафика: устройство балансировки загрузок

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

Типичная схема бэкэнд‑приложения выглядит стандартно: группа экземпляров сервиса и балансировщик перед ними. Пользователь отправляет запрос на балансировщик, а тот проксирует его на конкретный инстанс.

Эта схема отлично работает на лёгких API‑запросах, но рассыпается, как только трафик становится тяжелее. В случае с Яндекс Диском речь идёт о массовой загрузке файлов. 

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

Читать далее

Спутниковая связь в симуляторе NS-3. Часть 1

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

Моделирование спутниковых систем связи в симуляторе компьютерных сетей NS-3 с использованием модуля Satellite.

Читать далее

Забытый мультиколор (часть 2)

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

Полное руководство по аппаратному мультиколору для тех, кто не знает, что это такое и зачем он нужен.

Создание графики, форматы, вывод на экран

Читать далее

Шахматные программы VII. Основной перебор Stockfish

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

Итак, мы добрались до самого сердца шахматной программы Стокфиш. Ее основной функции - search. Именно здесь бьется пульс этого движка.

Сейчас мы произведем разбор этой функции. О ее важности уже не раз говорилось на предыдущих страницах. Теперь нам предстоит понять, как основной поиск выглядит в реальной программе. Еще раз напомню, что функцию search можно найти в файле search.cpp. Обзорному описанию содержания этого файла была посвящена предыдущая часть

Читать далее

Что именно делал компилятор: как ассемблер помогает разобраться в производительности кода на C++

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

Расскажу вам одну историю о том, как смог прокачаться в качестве C++-программиста. Мне в этом помогло не чтение стандарта. Я тогда ещё не понимал до конца метапрограммирование с использованием шаблонов (честно говоря, прямо сейчас эту тему изучаю). Нет, просветление наступило, когда я всмотрелся в целую простыню кода на ассемблере x86–64, но не запаниковал, а подумал: “O, нет, нет. ЧТО ТАМ сделал компилятор?”

Читать вывод компилятора — это не какое-то мистическое тёмное искусство, которое практикуют только подстриженные в барбершопах разработчики компиляторов, с закрытыми глазами разбирающиеся в выделении регистров. Это навык. Его можно усвоить, затем в нём напрактиковаться, и результат вас очень удовлетворит. Овладев этим умением, вы больше никогда не будете писать «умные» абстракции как раньше. 

Читать далее

Зачем первокурснику машина Тьюринга (и почему это важнее, чем кажется в эпоху «вайбкодинга»)

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

Модель мышления: не талант, а способ смотреть на правила

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

Классическая работа Saeed Dehnadi и Richard Bornat *The camel has two humps описывает знаменитый «двухгорбый» распределение успехов на первых курсах программирования. Значительная доля студентов — иногда до половины потока — не проходит вводный курс, несмотря на мотивацию, хороших преподавателей и смену языков и методик за десятилетия. Авторы показали, что до изучения синтаксиса Java или Python можно довольно надёжно предсказать, кто «поймёт», а кто будет бороться, с помощью простого теста на последовательность присваиваний — не на знание языка, а на согласованность ментальной модели вычисления.

Что такое «правильная модель мышления» в их смысле

Dehnadi и Bornat опираются на идею mental models (ментальных моделей): человек, рассуждая, строит воображаемое «состояние мира», проверяет в нём гипотезу и ищет контрпримеры Johnson-Laird, Mental Models . В эксперименте «верблюд с двумя горбами» студентам давали короткие фрагменты псевдокода с присваиваниями. Оказалось, что успешные новички последовательно интерпретируют присваивание как правило перезаписи ячейки памяти: «сначала вычисли выражение справа, затем положи результат в переменную слева, старое значение исчезает». Неуспешные часто смешивают модели: где-то видят «равенство», как в уравнении из школьной математики, где-то — «копирование слева направо», где-то отказываются отвечать, потому что «это бессмысленно».

Читать далее

Как решить конфликт в Git: merge, rebase, cherry-pick conflict

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

Всем снова привет!

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

В этой статье мы разберём, как действовать и, главное, мыслить в таких ситуациях. Проблема в том, что конфликтов в git может случиться куча: может сломаться ручной git merge, при git pull, может полететь при git rebase , git cherry-pick и т.д. Из-за этого одного конкретного решения нет, но зато есть общий принцип решения.

Читать далее

(Не)безопасный eBPF: что маркетологи забыли упомянуть об уязвимостях

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

eBPF называют «безопасным по умолчанию». Но что, если это не так?

Все хвалят eBPF за «безопасность и изоляцию». Но что если данные из вашей eBPF-мапы может прочитать любой процесс с правами root?

Я не буду учить писать свой eBPF-хелпер. Я покажу практический пример демонстрации этой уязвимости.

Пора разобрать вопрос, о котором часто молчат: почему данные из eBPF-мап могут быть доступны не только вашему агенту.

Читать далее

Self-Evolving Knowledge: Как взрастить senior агента

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

Привет! Я не AI-инженер, у меня нет ML образования. Я проджект-менеджер со старым бекграундом в качестве веб-разработчика и с опытом более 10 лет в управлении командами разработки ПО. И с приходом полноценных AI-агентов я стал по выходным заниматься экспериментами на своих пет-проектах. 

Один из таких проектов - мобильное приложение для запоминания карточек/слов: я учу японский язык и не нашёл ни одного сервиса, в котором добавлять новые слова в словарь было бы не мучительно, поэтому решил сделать своё, для себя. Что ж, для этого у меня не было GPU-кластера и команды, но был MacBook, свободное воскресенье и конкретная проблема, которую я хотел решить.

Ниже я опишу свои наблюдения с точки простого PM'a, и вытекающую ​идею и концепт.

Читать далее

Парсил zakupki.gov.ru без API — расскажу что узнал

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

Месяц назад я начал делать pet-приложение для государственных закупок: свайпай тендеры как в Tinder, видишь AI-скоринг заказчика — стоит ли вообще лезть. Для скоринга нужны данные обо всех контрактах заказчика. Источник один — ЕИС zakupki.gov.ru. И тут начались сюрпризы.

SOAP-API требует ЭЦП юр.лица — отвал на старте. FTP-сервер с XML-выгрузками закрыт с 1 января 2025. OpenData портал — красивый каталог датасетов, но без единой ссылки на скачиваемый файл. Часа три я экспериментировал и сдался.

Остаётся HTML-парсинг публичных страниц. Дальше всё интереснее: 44-ФЗ и 223-ФЗ имеют разную вёрстку, заказчик идентифицируется тремя разными форматами одновременно (real_inn / orgId / orgCode), а НМЦК и дата эл.акта приёмки лежат вообще не там, где подсказывает имя URL.

В статье — архитектура на Vapor + Redis + PostgreSQL, код канонизации ИНН, четыре грабли где я тормозил по нескольку часов, и реальные цифры: 128k+ строк контрактов в БД, ~340 уникальных заказчиков с полным скорингом, ~100ms средняя latency на feed-запрос.

Если кто-то знает легальный путь к данным ЕИС без ЭЦП юр.лица — буду благодарен в комментах. Может я что-то упустил.

Читать далее

Как мы интегрировали AI агентов с T-FLEX: отказ от абстракций и самопроверка моделей

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

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

Системы уровня T-FLEX CAD работают через закрытые DLL-библиотеки, требуют жесткого контроля сессии и точного вызова методов API. В такой среде нейросети часто «галлюцинируют», выдавая код, который выглядит правдоподобно, но на практике приводит к падению процесса или зависанию лицензии. САПР не прощает ошибок в типах данных или абстрактных догадок.

Чтобы автоматизировать реальные конструкторские задачи и получать стабильный результат, нам пришлось отказаться от привычного формата чат-ботов. Мы разработали tflex_harness в котором агент состоит из языковой модели, из контура управления, локального поиска по API-документации, генерации C#-кода, компиляции и контролируемого запуска в T-FLEX CAD.

Читать далее

Командная разработка на 1С через EDT и Git: пошаговая настройка проекта

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

Командная разработка в 1С не обязана держаться на блокировках, непрозрачной истории и ручном разборе изменений.

В статье показываем, как перевести проект в 1С:EDT, настроить Git и Git LFS, организовать ветки для команды и аккуратно работать с конфликтами в XML‑метаданных.

Разобрать процесс

От favicon до криптографии: как мы уместили 167 рабочих инструментов в одном сервисе

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

Мы были двумя 16-летними студентами колледжа, чья программа безнадёжно отставала от индустрии. Пока на парах проходили технологии пятилетней давности, реальный мир уже жил в экосистеме React, Next.js и WebAssembly. Пришлось учиться самим — по вечерам разбирая современный стек и споря об архитектуре. Эта тяга сподвигла нас создавать не абстрактные проекты для портфолио, а реально полезные инструменты, которыми хочется пользоваться каждый день.

Так четыре года назад родился наш проект — 167 утилит и 8 интерактивных песочниц в одном сервисе. Форматтеры, конвертеры, генераторы паролей и UUID, DevOps-конфиги, шпаргалки и песочницы для Python, SQL и Bash. Всё сделали прямо в браузере, без сервера.

Рассказываем как это было.

Читать далее

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

Как я заставил AI‑агента писать нормальный код на Spring

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

Откуда берётся «среднее приложение с GitHub»? Если попросить агента создать JPA‑сущность или настроить Spring Security, то он выдаст вполне рабочий код. Вопрос только в одном: для какого проекта?

Модели натренированы на миллионах репозиториев: студенческие работы, всех задолбавшая Petclinic, туториалы с YouTube, у меня кстати, есть куча своих:D.

Но без чёткого контекста агент выдаёт типичное «среднее приложение с GitHub»: всё синтаксически верно, но далеко не всегда вписывается в существующий РЕАЛЬНЫЙ проект. С Lombok или без него? Используя @IdClass или @EmbeddedId? Предпочитаешь Record'ы или классические классы? Как у тебя маппятся DTO? Агент этого не знает и чаще всего либо пытается угадать, либо начинает грепать всё что можно и нельзя.

Prompt engineering помогает, но ненадолго. Прикреплять каждый раз примеры сущностей и архитектурные правила — прошлый век. Интеграция в IDE с @ и выбором файлов уже лучше, но всё равно надо постоянно об этом помнить и как РОБОТ писать ему одно и тоже.

Читать далее

Ralph Wiggum простыми словами: цикл в Claude Code, который не останавливается

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

Если вы в последнее время заглядывали в техно-Twitter, то наверняка видели, как люди обсуждают «Ralph Wiggum» так, будто это чит-код. Мемный нейминг делу не помогает, но идея вполне реальна: это официальный плагин для Claude Code, который превращает одиночный промпт в устойчивый цикл. Агент продолжает работать, исправляя собственные ошибки, пока действительно не дойдёт до финишной черты, которую вы задали.

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

Читать далее

Агентные фреймворки: обещали революцию,  что осталось в 2026

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

Два года назад все хотели агента, который «сам пишет код, сам его тестирует и сам деплоит в прод». 

Сейчас 2026 год. Давайте честно поговорим о том, что из этого взлетело, а что тихо умерло в корпоративных slack-каналах под сообщениями «окей, пока притормозим с агентами».

Читать далее

IT очищается от случайных людей. И это хорошо

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

Прочитал статью "Как я в 2026 году ВЫШЕЛ из айти?". Если коротко, то там про парня, который несколько лет работал на нелюбимой работе программиста. Каждая встреча — мучение, каждая задача — мучение. Нужно было буквально каждый день заставлять себя работать. Когда конкуренция стала еще сильнее, стало еще тяжелее, потому что сменить работу уже было невозможно. Легкие деньги ушли из профессии. В итоге автор ушел на обычную работу кровельщика. Начал, условно, класть шифер на свежем воздухе и радоваться солнышку.

Я, безусловно, рад за автора. Рад, что прекратились его мучения. Рад, что он обрел счастье и любимую работу. Но еще больше я рад за IT, потому что там стало одним случайным человеком меньше. Не воспринимайте это грубо, дальше я объясню, что имею в виду.

Читать далее

Удобная компоновка (в расте)

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

Почитал у известного чела о пост-условиях (“посткондишнс”) на свифте - и знаете, раст все равно лучше. Тупо приятнее язык даже для создания торговой биржи со своей мудреной бизнес-логикой - тикерами, логикой стопов и лимитных ордеров, многопоточностью, паттерн матчингом, децентрализованной сетью, графиками, распределениями парето, гаусса, стьюдента. Не трогая деревативов и разницу форвард/фьючерс, есть “аск” и “бид”, три вида ордеров, тикеры, взлеты и падения, вискарь-тревоги-роботы - короче, что нужно сделаем (кроме роботов), а для всего остального мастер кард (или МИР, а для европейцев “е-ц” карты).

Простейшая реализаций биржы (тикера) складывается всего из двух куч (binary heap) или двух стаканов: “аск” (продажа) и “бид” (покупка), и следствием их пересечения является сделка. Кто-либо создает ордер на покупку, указывая количество, и ордер исполняется мгновенно по верхней цене в стакане. Если хочется купить дешевле, создается лимитный ордер с указанием цены, а сделка ожидает продавца, согласного продать вам по указанной цене. С точки зрения реализации нет особой разницы между “asap” и лимитными ордерами. Чуть сложнее стопы.

Читать далее

Диванный инвестор #3. +88% годовых на бектесте

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

Если вы, как и я, пробовали инвестировать - покупали и продавали ценные бумаги по наитию или рандому, то вам сюда. Тут мы начнем выстраивать наши хаотические метания в систему для генерирования денег.

Читать далее

Вайб-кодинг здорового человека: как мы научили ИИ писать код по нашим правилам

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

В мае 2026 складывается ощущение, что уметь писать код вручную больше не обязательно — вокруг все наперегонки хвастаются, как за выходные собрали мега-сервис, на конференциях показывают слайды про х100 к продуктивности разработчиков, а в вакансиях все чаще требуют опыт работы с ИИ-инструментами. Вайб-кодинг победил, расходимся?

Да, для личных проектов и стартапов вайб-кодинг действительно отлично работает. Проблемы начинаются, когда подход «сделай мне как у Google» пытаются занести в продукт со серьезными требованиями и крупными клиентами. 

У нас в команде возник практический вопрос: можно ли использовать вайб-кодинг в разработке пользовательских этапов автоматизации ContentCapture, платформы интеллектуальной обработки документов? Причем использовать как полноценный инструмент, который реально сократит время на интеграции, бизнес-правила и RPA-сценарии (и не создаст новых проблем).

Если коротко: у нас получилось. Дальше расскажем, как мы это сделали, с какими сложностями столкнулись и что получили в итоге.

Читать далее