Как стать автором
Поиск
Написать публикацию
Обновить
1159.81

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

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

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

Как мы за 60 секунд избавились от шаблонов и упростили управление инфраструктурой с CUE

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров834

Привет, Хабр!

Эта статья о том, как мы избавились от шаблонизации в пользу понятных слоёв в управлении инфраструктурой. Расскажу про предпосылки, поиск решения и инструмент, который мы выбрали — CUElang. Поехали!

В управлении Kubernetes-инфраструктурой рано или поздно наступает момент, когда шаблоны из удобного инструмента превращаются в источник боли.

Читать далее

Автоматизируем сканирование IT-инфраструктуры: скрипт v2.0 для Сканер-ВС 6

Время на прочтение7 мин
Количество просмотров3.2K

Привет, Хабр! Это Антон Дятлов, инженер по защите информации в Selectel. В одной из предыдущих статей я рассказывал, как настроить скрипт, который через API «Сканер-ВС 6» запустит сканирование, создаст отчеты и отправит уведомление в Telegram. Мы научились запускать сканер по расписанию через cron, импортировать IP-адреса и подсети, получать отчеты об уязвимостях. Такой подход хорошо работал на небольших объемах, но в реальных задачах — особенно в инфраструктурах с десятками и сотнями хостов — быстро всплыли ограничения: скрипт требовал ручного контроля на многих этапах, переход между стадиями (сетевой скан → скан уязвимостей → отчет) приходилось отслеживать вручную, проявилась ошибка в сканере, которая не позволяла корректно удалять ассеты.

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

Читать далее

Циклические зависимости в Spring: проблема и способы её решения

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

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

На недавнем JPoint один из разработчиков рассказал мне, как вручную избавлялся от циклических зависимостей на огромном боевом проекте, изучая гигантскую диаграмму зависимостей.

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

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

Читать далее

PEP-734: Субинтерпретаторы в Python 3.14

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров7.7K

Привет! Меня зовут Никита Соболев, я core-разработчик языка программирования CPython, а так же автор серии видео про его устройство.

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

Под катом будет про: новые питоновские API для ускорение и паралеллизации ваших програм, про управление памятью, про дублирование данных. Ну и много C кода!

Чтобы разобраться в вопросе и рассказать вам, я сделал несколько важных шагов: прочитал почти весь код данной фичи, начал коммить в субинтерпретаторы и взял интервью у автора данного проекта. Интервью доступно с русскими и английскими субтитрами. А еще я добавил кучу контекста прямо в видео. Ставьте на паузу и читайте код.

Если вам такое интересно или целиком незнакомо – добро пожаловать!

Читать далее

Spring boot, многопоточка и магия вне хогвартса

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

Всем привет! Меня зовут Алексей, и я работаю Java‑разработчиком с 2018 года. В статье расскажу, как столкнулся с проблемой обработки MultipartFile в многопоточном режиме. Почему эта проблема возникает и какие решения существуют.

Изначально стояла задача организовать фоновую обработку Excel-файлов: принимать файл, мгновенно возвращать клиенту HTTP-200 (без данных), а обработку содержимого выполнять асинхронно в отдельном потоке.

Вроде задачка тривиальная. Делаем контроллер:

Читать далее

Ролевой контроль в приложении: вариант реализации

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров676

Привет! Меня зовут Валерия, я java-разработчик компании SimbirSoft. В этой статье я хочу рассказать об одном из способов реализации ролевого контроля над действиями пользователей в системе. Механизм ролевого контроля позволяет сделать бизнес-процессы надежными с точки зрения информационной безопасности и привести их в соответствие с внутренними регламентами организации. Задачи подобного рода так или иначе возникают на любом проекте. 

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

Читать далее

async2: эксперимент с поддержкой асинхронности в рантайме

Уровень сложностиСложный
Время на прочтение25 мин
Количество просмотров4.2K

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

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

Представим какой‑то абстрактный web‑api, который ходит за данными в БД. При однопоточном синхронном выполнении следующий запрос может быть обработан только тогда, когда полностью был выполнен предыдущий, что неэффективно, т.к. вся нагрузка ложится только на 1 ядро процессора, а остальные простаивают.

Читать далее

ИИ (не) отнимает работу у разработчиков, или Почему вас пока не уволят

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

Привет! Я Саша Сергеев, CTO в Профи.ру. И у технических директоров есть мантра: «Используй скучные технологии». Нельзя брать что-то совсем новое: оно не проверено в проде, мало поддерживается. Лучше что-то надёжное. 

Но для ИИ приходится делать исключение: прищуриться и подумать. Делюсь тем, о чем я думаю сейчас. 

Читать далее

Невидимый архитектор — тот, кто всем мешает, но всех спасает

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров3.3K

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

Читать далее

День рождения Kotlin и релиз нового HTTP-клиента для IntelliJ IDEA в Open Source

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров1.6K

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

Мероприятие пройдет онлайн 22 июля, в 17:00 (МСК), на YouTube, VK и RUTUBE каналах Amplicode. Участие абсолютно бесплатное.

Главное – зарегистрироваться, чтобы получить на почту ссылки на трансляцию и файл .ics для добавления события в календарь.

Читать далее

Unity: корутины и UniTask — когда что использовать

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

Сравнение корутин и UniTask в Unity.
Узнай, когда использовать каждый подход, как обрабатывать ошибки и улучшить производительность игр. Практические примеры кода.
В статье ты найдешь:
• Что такое корутины и UniTask
• Сравнение производительности
• Обработка ошибок
• Отмена операций
• Работа с ECS
• Когда что использовать

Читать далее

Размышления об OpenAI

Время на прочтение13 мин
Количество просмотров2.4K

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

Читать далее

Как мы засунули Git в браузер (и чего нам это стоило)

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров6.3K

Привет, Хабр! Меня зовут Паша, я разработчик Gramax — open source-платформы для управления технической документацией в подходе Docs as Code.

В этой статья я расскажу, как и для чего мы интегрировали Git в браузер, какие технологии использовали и какие технические решения приняли. А если подробнее: почему отказались от IsomorphicGit в пользу libgit2, каким образом мы собрали его под WebAssembly, как он работает с файлами и зачем вообще все это было нужно.

Читать далее

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

Запускаем несколько интерпретаторов в коде на Python — невероятная скорость

Время на прочтение16 мин
Количество просмотров5.2K

5 июня 2025 года был принят PEP-0734. Судя по информации на официальном сайте, он является продолжением PEP-0554. Этот PEP предлагает добавить новый модуль, interpreters, для поддержки проверки, создания и запуска кода в нескольких интерпретаторах в текущем процессе. А если идти дальше, то он является частью PEP-0684, которые предлагает один GIL на интерпретатор.

Несколько полноценных интерпретаторов работающих рядом. Какие плюсы?

— Один процесс;
— Один тред, но руками можно создавать еще;
— По GILу на интерпретатор, все еще можно получить плюшки настоящей многозадачности по сети;
— Работает с asyncio.

В этой статье вы узнаете как работает эта фича под капотом и в реальном питоне. Приятного чтения!

Читать далее

Занятия программированием и обучением шагающего двуного мини-робота в кружке от Центра робототехники Сбера

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

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

Читать далее

Масштабирование stateful приложений

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

Всем привет! В этой статье я хочу разобрать довольно‑таки интересную и в то же время сложную тему — «Поддержание консистентного состояния в stateful сервисах при масштабировании».

Читать далее

От хаоса к порядку: построение системы автотестов в условиях минимальных требований

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

Привет! Меня зовут Александр, я SDET-специалист в SimbirSoft. В этой статье я расскажу, как можно покрыть разрабатываемую часть проекта автотестами на ранних этапах его разработки, если в команде отсутствуют аналитики и присутствуют задокументированные требования только по основному функционалу. Эта статья будет интересна как джунам, так и техническим специалистам middle и выше, а также руководителям команд (team leads) и техническим лидам (tech leads).

Я поделюсь тем, как в такой ситуации были настроены процессы в нашей команде. Мы работаем над проектом с утвержденной микросервисной архитектурой с внутренними и внешними сервисами. Команда работает по Scrum-методологии и состоит из тимлида, разработчиков сервисов, QA и SDET-специалистов. От заказчика поступила лишь основная информация о том, что должен делать продукт и на каких платформах его можно будет использовать. Именно эта информация и была задокументирована в виде требований.

Читать далее

Советы новичкам в карьере программиста

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

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

Читать

Распродажа в издательстве «Питер»

Время на прочтение1 мин
Количество просмотров13K

Добрый день, Хаброжители!

Стартовала июльская распродажа от издательства «Питер».

Лето – время для отдыха, приключений и, конечно, для новых книг!

Читать далее

«Почему компилятор Rust такой медленный?»

Уровень сложностиСредний
Время на прочтение43 мин
Количество просмотров9.4K

Я потратил месяц на создание веб-сайта в Docker и теперь готов поделиться ужасными историями.

У меня есть проблема.

Мой веб-сайт (на котором была опубликована эта статья) в основном обслуживается одним двоичным файлом Rust. Он стал слишком длинным. Каждый раз, когда мне нужно внести изменение, я должен:

Собрать новую статически компонуемую библиотеку (с --target=x86_64-unknown-linux-musl)

1. Скопировать её на сервер

2. Перезапустить веб-сайт

Ситуация, мягко говоря, неидеальная.

Поэтому мне бы хотелось перейти к развёртыванию веб-сайта при помощи контейнеров (будь то Docker, Kubernetes или что-то иное), в духе подавляющего большинства ПО, разворачиваемого в последний десяток лет.

Единственная проблема заключается в том, что реализовать быстрые сборки Rust с Docker не так уж просто.

Читать далее

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