Траст-менеджер здорового человека

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

Объектно-ориентированный язык программирования

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

Ситуация на меме на самом деле не страшная, но имеет место быть. Большие языковые модели набирают популярность, и компании все чаще смотрят в сторону их использования. Haulmont не стал исключением.
В этой статье я хочу рассказать вам о нашем новом продукте – Jmix AI Assistant. Пока не понятно, кто увидит эту статью, и будет ли у этих замечательных людей базовое представление о фреймворке Jmix, так что с вашего позволения начну с его краткого описания.

Всем привет, меня зовут Александр Матюшенко, я инженер по автотестированию в одной из платформенных команд в Альфа-Онлайн. В статье хочу рассказать, как внедрить функционал скриншот-тестирования в проект E2E автотестов с использованием библиотеки aShot от Yandex. Возможно, в этой статье я добавил излишне много кода на Java, но хочется более подробно показать, как это работает.

Привет, сообщество HABR! =)
Начав изучать Kafka Streams, я заметил, что для решения различных задач приходится искать информацию по разным источникам, поэтому со временем накопилось много собственных конспектов. Хочу поделиться ими в виде серии туториалов на Хабре.
Несмотря на обилие ресурсов по Kafka Streams и отличные статьи на Хабре [ноль, один, два], мне не хватало пошаговых руководств, которые детально раскрывают изъяны и преимущества этой технологии. Поэтому решил создать такой материал, чтобы помочь другим разобраться структурно и последовательно.
Миграция на новые версии фреймворков всегда сопровождается сложностями, особенно если в них произошли значительные изменения. В этой статье мы рассмотрим, с какими проблемами я столкнулся при переходе со Spring Boot 2.x.x на Spring Boot 3.3.1 и Hibernate 6.4+, а также предложим решения, которые могут помочь другим разработчикам избежать аналогичных трудностей при обновлении своих приложений.
Стоит отметить, что далеко не все проблемы при миграции монолитов можно решить с помощью инструментов автоматической миграции, таких как OpenRewrite, особенно если у Вас множество сущностей, связанных между собой легаси-кодом и сложной бизнес-логикой.
С выходом Spring Boot 3.3.1 разработчики столкнулись с необходимостью перехода на более новые версии Hibernate (6.2+). Это обновление связано с изменениями в Hibernate, обеспечивающими совместимость с новыми версиями Spring Boot и использование новых возможностей фреймворка.

В этой статье мы обсудим вопросы, с которыми столкнулись разработчики из компании «Наука» при создании Java-приложений и оформлении кода. Эти трудности, «выстраданные» через годы опыта, стали результатом многолетней работы над программным обеспечением для крупных предприятий нефтеперерабатывающей и нефтехимической отрасли.
Наша компания существует уже более 30-ти лет, и на сегодняшний день в ней работает более 100 разработчиков ПО на различных проектах. Одной из основных проблем в нашей компании, и, как мы полагаем, не только в нашей, является большая текучка кадров, в том числе и среди разработчиков. Чтобы упростить и ускорить процесс вхождения вновь пришедших разработчиков в проекты, для программистов, уже работающих в нашей компании, был рекомендован некоторый набор правил по разработке Java-приложений. Также был составлен перечень типовых ошибок при оформлении кода, подробно разобранный на примерах.
Программистам в IT-компаниях, подобных нашей, заказчики платят не за производимый ими код, а за успешную автоматизацию их (заказчиков) бизнес‑процессов. Поэтому материал статьи связан прежде всего с коммерческой разработкой enterprise-систем.
Мы надеемся, что данная статья может быть полезна back-end разработчикам enterprise-систем, работающим в других IT-компаниях.

Ревью - важный этап разработки и одна из самых частых точек взаимодействия разработчиков с кодом и между собой, особенно в распределенных командах. Один разработчик пишет код, другой (ревьюер) - проверяет написанное, а тимлид хочет, чтобы ревью было быстрым и качественным.
Что же можно сделать в каждой из трех ролей, чтобы все остались довольны (и целы)?

Привет, Хабр!
ThreadLocal — вещь, которая на первый взгляд кажется отличным решением некоторых проблем многопоточности. Вроде бы просто: привязываешь переменную к каждому потоку, и никто из других потоков не может её трогать. Но за всей этим скрывается куча нюансов, которые могут навести некоторую долю шороха.

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

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

Привет! На связи Александр Бархатов — DevOps-инженер в крупнейшем продуктовом холдинге и автор статей в медиа вАЙТИ.. Самое популярное средство для сборки контейнеризированного приложения — это Dockerfile, текстовый файл, в котором прописаны специальные инструкции для готовых Docker-образов. Несмотря на всеобщую популярность Docker, в 2011 году вышел инструмент под названием Buildpacks, принцип работы которого мы рассмотрим в этой статье.

Всем привет. Я разрабатываю приложения с использованием Java, Spring Boot, Hibernate.
В прошлой статье я показал реализацию паттерна Spring Fluent Interface. При помощи которого можно инкапсулировать похожие действия внутри приложения в модуль, предоставлять клиентскому коду удобный декларативный API, и при этом «кишки» модуля могут использовать «магию» Spring.
В этой статье я хочу поделиться опытом работы с Spring + ThreadLocal.
Два слова о ThreadLocal.
Это потокобезопасная переменная. Под капотом у которой ConcurrentHashMap. Ключ — текущий поток (там чутка сложнее, но для понимания будет достаточно). Значение может быть любым типом, ThreadLocal типизирована <T>. При этом можно инициализировать значение null, или сразу чем‑то, например пустым списком.

Spring выпустил Spring AI 1.0.0 M3, который принес множество значительных улучшений и новых возможностей в разработку AI-приложений.
В новом переводе от команды Spring АйО рассказывается про улучшения, связанные с observability, совершенствование системы advisor`ов и оптимизацию работы с функциями и embedding моделями.
Задача этой статьи только одна - попробовать уложить принципы SOLID на понятных «бытовых» примерах, а уже потом посмотреть, как оно может работать на практике - в коде.
Итак, SOLID - это 5 принципов, которые используются при разработке приложений. На каждый принцип по букве:
1. S — Single Responsibility Principle (Принцип единственной ответственности)
Определение: Каждый класс должен выполнять только одну задачу.
Пример из жизни:
Например, мы купили шкаф для одежды.

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

Команда Spring АйО перевела статью, которая отлично подойдёт тем, кто ещё не знаком со Spring Data Envers. В статье на простых примерах объясняется, как отслеживать изменения данных в приложении, используя этот инструмент.

Наверняка в вашем проекте используется очередь сообщений (не важно kafka, pulsar или какой-нибудь зайчик). Основной проблемой является подробное тестирование работы вашей системы. Рассмотрим варианты решения и посмотрим, что там у автора в рукаве.

Всем привет! 👋 👋 👋 👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
В этом выпуске детально рассмотрим новый релиз Java 23 и расскажем, какие JEPы в него вошли. Посмотрим несколько интересных докладов с JVM Language Summit, узнаем об опыте Netflix по переходу на Generation ZGC и почитаем интересную статью о низкоуровневых инструментах обеспечения гарантий порядка памяти.

Приветствую, сообщество!
Меня зовут Александр, я java разработчик в компании БФТ. Тружусь я на проекте СМЭВ-адаптера, где мы занимаемся транзитивной обработкой сообщений. В нашу зону ответственности входит несколько микросервисов, которые обрабатывают очень много сообщений, почти ничего не пишут в БД, но часто обращаются в сторонние прикладные сервисы.
Для отслеживания пути сообщения через наши микросервисы мы используем Zipkin. Помимо этого в проекте задействован Apache Camel, с помощью которого мы выстраиваем цепочку обработки сообщения в одном конкретном микросервисе. Стандартные средства для работы с Zipkin обычно позволяют легко добавить к трассе вход, выход в сервис и запись в БД, но, т.к. к нас не совсем стандартное поведение у сервисов, нам хотелось выделять в Zipkin и обращение в сторонние сервисы.
Хотелось эту логику как-то элегантно встроить в роут Camel, но существующие средства такой возможности не предоставляли.
Было принято решение написать свой компонент для Apache Camel. Делали мы это впервые и, к сожалению, полноценного гайда в интернетах найти не удалось...
Встречайте! Гайд по написанию собственного Camel-компонента!

Я являюсь разработчиком мобильных приложений с опытом уже более 3х лет! Я всегда разрабатываю мобильные приложения один - это требует моя работа. Но сегодня я хочу поделиться с Вами тем, что такое Dagger Hilt!
Dagger Hilt - это необходимый каждому инструмент, который упрощает в разы разработку мобильных приложений. Служит для внедрения зависимостей. В первую очередь он необходим тем, у кого в проекте есть множество классов, которые требуют реализации. Хотите чтоб за вас это сделал кто-то другой? Dagger Hilt к вашим услугам.