Обновить
1326.39

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

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

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

Hibernate Validator 9.1: самый мощный апгрейд за последние годы

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

Что, если ваш валидатор стал бы в 3 раза быстрее и потреблял бы вдвое меньше памяти — без единой правки бизнес-логики? Именно это случилось с Hibernate Validator 9.1: ушли тяжёлые коллекции, пришёл умный стек. Каскадная валидация теперь летает, даже при циклах в графе объектов.

Плюс бонус: меньше мусора в памяти, меньше аллокаций, быстрее интерполяция сообщений. В бенчмарках — просто космос. Все это – в новом переводе от команды Spring АйО.

Комментарий Поливаха Михаила: Несмотря на то, что с валидацией мы напрямую работаем не часто, имейте в виду, что Spring Boot и ваши @RestController-ы под капотом всё равно используют hibernate-validator. Поэтому почитайте, не поленитесь.

Читать далее

Новости

ECS with Sectors (ECSS) — структура памяти в моей ECS

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

Всем привет! Это продолжение статьи про мою ECS в моём движке Stellar Forge, и сегодня я хочу поднять тему архитектуры и немного более подробно раскрыть data oriented design в контексте ECS.
Первую часть можно найти здесь - https://habr.com/ru/articles/972708/ .

Итак, ECSS - Entity Component System with Sectors. В прошлой статье я описал что такое ECS и как его можно приготовить, а сегодня я расскажу вам в чем особенность моей ECS, что такое Sector, как эти секторы хранятся в памяти и что делает мою ECS такой быстрой.

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

Читать далее

ГенИИальный помощник ИТ-аналитика: как ИИ влияет на профессию и что с этим делать

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

Профессия ИТ-аналитика в последние годы быстро трансформируется под влиянием бурного развития генеративного ИИ. Эксперт Axenix Игорь Кайбанов рассказывает, какие задачи теперь должен уметь решать специалист по данным, на какие ключевые тренды в развитии моделей ему важно обратить внимание и какие возможности ГенИИ стоит применять в своей работе.

Эволюция профессии

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

CEO Shopify Тоби Лютке недавно предложил термин context engineer на замену понятия prompt engineer — и это оправдано. От постановки задачи и способов ее исполнения мы перешли к необходимости ограничивать и задавать контекст решения. В этом помогают как экспертные промты и ИИ-агенты, так подключение к системе специализированного массива данных.

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

Ключевой задачей аналитика становится гибридная экспертиза, то есть синтез ИТ-знаний плюс понимание возможностей/рисков ИИ (особенно в security-sensitive отраслях). На этом уровне аналитик становится «проводником» между данными и стратегией, где ГенИИ — не замена, а мультипликатор эффективности.

Читать далее

Vulristics: как я создал инструмент анализа уязвимостей и теперь использую его практически ежедневно

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

Хабр, привет! Меня зовут Александр Леонов. Я ведущий эксперт PT Expert Security Center и среди прочего отвечаю в компании за ежемесячные подборки наиболее критичных (трендовых) уязвимостей, обзоры которых мы каждый месяц публикуем на Хабре.

С 2020 года я развиваю проект Vulristics. Изначально это был мой личный инструмент для анализа уязвимостей из ежемесячных обновлений Microsoft Patch Tuesday. Но постепенно я расширял его функциональность. Теперь утилите можно подавать на вход любой набор идентификаторов CVE и БДУ.

Главная задача Vulristics — оценивать и приоритизировать уязвимости. Для этого утилита анализирует несколько ключевых факторов: наличие признаков публичной эксплуатации, наличие публичного эксплойта, тип уязвимости, популярность ПО, а также оценки CVSS (Common Vulnerability Scoring System) и EPSS (Exploit Prediction Scoring System).

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

Читать далее

Методы массивов. Часть 1

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

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

Привет, Хабр! Меня зовут Александр Дудукало, я автор базового курса по JavaScript. Сегодня мы поговорим о методах массивов. Если коротко, вы узнаете, как легко и элегантно работать со списками данных, не используя громоздкие циклы. Детали внутри.

Читать далее

Не Кафкой единым: как наладить асинхронный обмен сообщениями между микросервисами

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

Всем привет! Меня зовут Сергей Бунатян, я руководитель службы в Техплатформе Городских сервисов Яндекса. 

На сегодняшний день существует довольно много брокеров сообщений. Наиболее часто используемыми в индустрии, пожалуй, будут те, которые, реализуют парадигму очереди сообщений. Самых известных представителей вы наверняка знаете, — Apache Kafka и RabbitMQ, а внутри Яндекса широко используется Logbroker. И, тем не менее, как нетрудно догадаться из этого вступления, мы зачем‑то решили написать свой брокер сообщений.

Сегодня я расскажу про нашу систему, которая называется STQ — Sharded Tasks Queue. По названию системы можно было бы подумать, что это ещё один сервер очередей, однако это будет не совсем верно. STQ — это скорее message broker. 

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

Читать далее

Анимированный UI: как улучшить взаимодействие с пользователем

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

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

В продакшене анимация всегда балансирует между выразительностью и производительностью. Чем сложнее сцена, тем выше нагрузка на процессор, особенно на мобильных устройствах. Поэтому важно оптимизировать: использовать GPU-дружественные свойства (transform, opacity), избегать тяжёлых reflow, а для сложных эффектов — применять библиотеку, которая работает с отложенным рендерингом, например Framer Motion или GSAP. Это не только повышает плавность, но и снижает энергопотребление, что прямо влияет на опыт пользователя.

Когда команда проектирует систему анимаций, важно фиксировать принципы в дизайн-системе. Это помогает избежать хаоса и гарантирует согласованность между продуктами. Хорошая практика — описывать длительность, кривые ускорения и паттерны движения как переменные, чтобы и дизайнеры, и разработчики говорили на одном языке. Например, motion-tokens, где заданы типовые параметры переходов: fast-out-slow-in, linear-out-slow-in и т.д.

На зрелом уровне анимация становится не надстройкой, а частью архитектуры интерфейса. Она помогает продукту чувствоваться цельным, обеспечивает предсказуемость и ритм, а главное — создаёт ощущение «живого» цифрового опыта. Привет, я Максим, frontend-разработчик в компании SimbirSoft, в этой статье расскажу, как сделать полезный для пользователя UI.

Читать далее

Как мы сделали платформу для собеседований Enterly

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

Привет, Хабр! Я Анжела Большакова, разработчик направления Digital Interview в Т-Банке.

Мы в T активно развиваем внутренние инструменты, а иногда такие проекты перерастают в продукты для внешних пользователей. Так произошло с платформой для интервью, которой занимается моя команда.

Поделюсь опытом создания инструмента: почему мы решили развивать платформу для интервью, что она умеет, как помогает Т-Команде. В конце расскажу о планах развития платформы как полноценного внешнего продукта.

Читать далее

Python + Fortran: Когда numpy уже мало, а C++ ещё страшно. Ускоряем код в 150 раз

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

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

В прошлой статье я рассуждал о том, почему Fortran в 2025 году всё ещё жив и даже растет в рейтингах. В комментариях справедливо заметили: «Философия — это хорошо, но как это применить современному разработчику? Зачем мне Fortran, если я пишу на Python?».

Это правильный вопрос. Сегодня я хочу ответить на него кодом, а не словами.

Я покажу, как использовать Fortran в качестве «числодробилки» для Python. Мы возьмем задачу, на которой интерпретатор Python гарантированно просядет, и ускорим её в ~150 раз, используя инструмент, который уже есть в вашем numpy.

Речь пойдет не о замене Python, а о симбиозе: удобный интерфейс Python + сырая мощь Fortran.

Читать далее

Решение головоломки NYTimes Pips с помощью решателя ограничений

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

Кажется, что головоломка NYT Pips — это просто игра с домино и цветными клетками. Но если взглянуть на неё как на задачу удовлетворения ограничений, она превращается в удобный полигон для современных решателей вроде MiniZinc.

В статье автор показывает, как описать Pips не в виде алгоритма перебора, а в виде системы ограничений: сетка, домино, суммы по областям, симметрии и «мусорные» решения. По ходу дела выясняется, что войти в мир constraint solving можно буквально за пару часов, а заодно на практике понять, почему эти инструменты умеют разруливать экспоненциальный хаос вариантов за миллисекунды — но иногда внезапно «залипают» на одной и той же головоломке.

Читать разбор

Проектируем как синьор: универсальная бинаризация

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

Здравствуйте, меня зовут Дмитрий Карловский и я.. да не важно кто я. Важно о чём я говорю, и как аргументирую.

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

Что ещё за VaryPack?

SFINAE в C++

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

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

Сегодня я хочу поговорить про SFINAE, загадочную аббревиатуру из C++. Расшифровывается SFINAE не менее загадочно: Substitution Failure Is Not An Error, по-русски: «неудавшаяся подстановка — не ошибка». Сейчас рассмотрим, почему это правило появилось, как оно работает и как мы можем использовать его себе во благо.

К механике SFINAE

Асинхронность и многопоточность в Dart/Flutter: Future, Stream и Isolates

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

При разработке Flutter-приложений быстро возникает необходимость выполнять долгие операции: загрузку данных из сети, обращение к базе, работу с файлами, вычисления и т.п. Если делать это синхронно, основной поток блокируется, интерфейс «зависает», а пользователь видит «замороженный» экран. Асинхронное программирование в Dart позволяет вынести такие операции из UI-потока, не блокируя интерфейс.

В данной статье мы расскажем, как во Flutter использовать ключевые инструменты асинхронности Dart — Future, async/await, Stream, а также многопоточность через Isolate — и покажем, как применять их на практике в реальных приложениях.

Читать далее

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

Миграция демо-проекта на Spring Boot 4, Spring 7.0, JDK 25

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

Продолжаю серию публикаций про наши Java-онлайн курсы. Предыдущие посты:

Тесты на дженериках. Параметризация AssertJ и сравнение Json через объекты

Контроллеры на дженериках: пишем кода в 3 раза меньше

Миграция Java Spring Boot на Kotlin

Работа с документами в Java

Как многие знают, недавно вышел Spring Boot 4 / Spring 7.0. В постах компании@spring_aio есть несколько статей по новому функционалу.

Я мигрировал наш небольшой учебный демо-проект Spring Boot 3.x HATEOAS (ссылка на GitHub) на Spring Boot 4 и добавил API версионирование. В статье даю ссылки на новый функционал, описываю шаги миграции и код проекта. Буду рад читателям:)

Читать далее

Ассемблер для гоферов. Часть 1

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

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

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

Читать далее

OpenIDE 2025.2: поддержка Java 25, Virtual Thread Debugging и обновления UI

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

Вышла OpenIDE 2025.2 — первая российская IDE с поддержкой Java 25. Мы идём в ногу с платформой и остаёмся на самом острие технологий. Но не только этим релиз интересен: в нём появилась улучшенная отладка виртуальных потоков, обновления связанные с UI, а ещё пара важных обновлений экосистемы.

Поехали по порядку.

Читать далее

Системный инженер или разработчик: что выбрать в 2026 году

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

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

Читать далее

Книга: «Head First. Изучаем программирование на JavaScript. 2-е изд.»

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

Привет, Хаброжители!

Новое, полностью переработанное издание легендарной книги проведет вас по всему пути изучения JavaScript, начиная с фундаментальных понятий и заканчивая самыми актуальными современными возможностями. Вы погрузитесь в тонкости типов JavaScript и его функций, научитесь разбираться в классах, объектах и замыканиях, приобретете практический опыт работы с DOM (Document Object Model) в браузере и откроете для себя неожиданные возможности JavaScript. Вас ждет не просто чтение — вы будете играть, решать головоломки, размышлять над загадками и взаимодействовать с JS так, как никогда не пробовали ранее. А еще вы будете писать реальный код (и много!) и сразу приступите к построению собственных приложений.

Вы готовы сделать шаг вперед в веб-программировании и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? Тогда пришло время познакомиться с самым «горячим» языком програм- мирования — JavaScript! Особенностью этого издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O'Reilly в ряду множества скучных книг, посвященных программированию.

Читать далее

Тёмная сторона Си: трюки, хаки, магия и алгоритмы

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

Доброго времени суток, господа и дамы! Иногда у некоторых людей возникает желание заняться откровенным непотребством в программировании — то, что не несет практической пользы напрямую, но помогает развлечься. И я — не исключение. В этой статье я хочу рассказать вам о лайфхаках, трюках (магических и не очень), алгоритмах на языке C!

Идея написать эту статью зародилась из моего поста, после него я написал статью «Математика, биты, магия и немного ненормального программирования на C» и «Фокусы, хаки, магия и прочее ненормальное программирование на C», которые раскрывали много интересных моментов. Увидев, что многим понравилась, я задумался: почему бы не изучить еще какие-нибудь трюки, заодно практикуясь в программировании на C?

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

Всех, кто заинтересовался — прошу под кат.

Читать далее

Как Rust думает о памяти: &mut, provenance и noalias

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

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

Сегодня с вами посмотрим изнанки модели памяти Rust. Поговорим о том, кто имеет право на доступ к памяти, что такое provenance указателей, почему &mut T считается эксклюзивным и как все это добралось до уровня оптимизатора LLVM через атрибут noalias.

Читать далее

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