Внедряем Testcontainers за два дня или как перестать бояться рефакторинга и начать доверять своим тестам
Надоело, когда после сотни зеленых unit-тестов приложение падает на тестовом стенде? Когда рефакторинг превращается в кошмар из-за необходимости переписывать полсотни тестовых классов? Мне тоже надоело и я нашел решение. В статье покажу, как за два-три рабочих дня внедрить Testcontainers и начать писать тесты, которые действительно работают. В докладе вы найдете production-ready решение с PostgreSQL, Kafka и WireMock, которое выявит реальные проблемы еще до деплоя, честное тестирование реального поведения приложения.
Читать: https://habr.com/ru/articles/986870/?utm_campaign=986870
@a_cup_of_java | Другие наши каналы
Надоело, когда после сотни зеленых unit-тестов приложение падает на тестовом стенде? Когда рефакторинг превращается в кошмар из-за необходимости переписывать полсотни тестовых классов? Мне тоже надоело и я нашел решение. В статье покажу, как за два-три рабочих дня внедрить Testcontainers и начать писать тесты, которые действительно работают. В докладе вы найдете production-ready решение с PostgreSQL, Kafka и WireMock, которое выявит реальные проблемы еще до деплоя, честное тестирование реального поведения приложения.
Читать: https://habr.com/ru/articles/986870/?utm_campaign=986870
@a_cup_of_java | Другие наши каналы
❤2🔥1
JVM ещё жива, но уже бесполезна: как Netflix научился убивать её по GC
Вместо того чтобы ждать, пока Java-приложение окончательно "зависнет" из-за GC, инженеры Netflix сделали jvmquake — инструмент, который сам определяет, что JVM уже не спасти, вызывает дамп памяти и аккуратно завершает процесс. Меньше тревог, больше аптайма.
Подробности - в новом переводе от команды Spring АйО.
Читать: https://habr.com/ru/companies/spring_aio/articles/987116/?utm_campaign=987116
@a_cup_of_java | Другие наши каналы
Вместо того чтобы ждать, пока Java-приложение окончательно "зависнет" из-за GC, инженеры Netflix сделали jvmquake — инструмент, который сам определяет, что JVM уже не спасти, вызывает дамп памяти и аккуратно завершает процесс. Меньше тревог, больше аптайма.
Подробности - в новом переводе от команды Spring АйО.
Читать: https://habr.com/ru/companies/spring_aio/articles/987116/?utm_campaign=987116
@a_cup_of_java | Другие наши каналы
🔥1
Soft-, Weak-, Final- и PhantomReference в Java
В статье представлены сведения о классах пакета java.lang.ref - SoftReference, WeakReference, PhantomReference и др. Описываются приёмы их применения.
Читать: https://habr.com/ru/articles/987362/?utm_campaign=987362
@a_cup_of_java | Другие наши каналы
В статье представлены сведения о классах пакета java.lang.ref - SoftReference, WeakReference, PhantomReference и др. Описываются приёмы их применения.
Читать: https://habr.com/ru/articles/987362/?utm_campaign=987362
@a_cup_of_java | Другие наши каналы
Observability-as-Code в Spring Boot: Контракты и тесты для метрик, логов и трейсов
Observability-as-Code - это подход, при котором базовые элементы наблюдаемости (метрики, логи, трассировки) описываются и проверяются так же строго, как и код самого приложения. Эта информация хранится в VCS и к ней выдвигаются такие же требования, как “остальному коду”. Инженеры явно описывают "контракт" наблюдаемости (какие метрики и логи должна выдавать система, с какими свойствами), снабжают этот контракт автоматическими тестами и включают проверки в процесс CI/CD.
В данной публикации мы подробно разберем, почему такой подход эффективен, и как его реализовать в Spring Boot с использованием Micrometer, OpenTelemetry и инструментов вроде ArchUnit.
Читать: https://habr.com/ru/companies/spring_aio/articles/987358/?utm_campaign=987358
@a_cup_of_java | Другие наши каналы
Observability-as-Code - это подход, при котором базовые элементы наблюдаемости (метрики, логи, трассировки) описываются и проверяются так же строго, как и код самого приложения. Эта информация хранится в VCS и к ней выдвигаются такие же требования, как “остальному коду”. Инженеры явно описывают "контракт" наблюдаемости (какие метрики и логи должна выдавать система, с какими свойствами), снабжают этот контракт автоматическими тестами и включают проверки в процесс CI/CD.
В данной публикации мы подробно разберем, почему такой подход эффективен, и как его реализовать в Spring Boot с использованием Micrometer, OpenTelemetry и инструментов вроде ArchUnit.
Читать: https://habr.com/ru/companies/spring_aio/articles/987358/?utm_campaign=987358
@a_cup_of_java | Другие наши каналы
❤1
Почему Kotlin ломает JPA
Используешь Kotlin с Jakarta Persistence и думаешь, что всё работает? Возможно, до первой неожиданной ошибки. data class, val, final-классы и даже значения по умолчанию — всё это может тайно мешать корректной работе JPA. Вместе с Торбеном Янссеном в новом переводе от команды Spring АйО разберем скрытые ловушки и показывают, как настроить проект правильно, чтобы не наступить на мину.
Читать: https://habr.com/ru/companies/spring_aio/articles/987890/?utm_campaign=987890
@a_cup_of_java | Другие наши каналы
Используешь Kotlin с Jakarta Persistence и думаешь, что всё работает? Возможно, до первой неожиданной ошибки. data class, val, final-классы и даже значения по умолчанию — всё это может тайно мешать корректной работе JPA. Вместе с Торбеном Янссеном в новом переводе от команды Spring АйО разберем скрытые ловушки и показывают, как настроить проект правильно, чтобы не наступить на мину.
Читать: https://habr.com/ru/companies/spring_aio/articles/987890/?utm_campaign=987890
@a_cup_of_java | Другие наши каналы
Как мы перевели сервисы Java с виртуальных машин в Kubernetes
Статья: «Как мы перевели сервисы Java с виртуальных машин в Kubernetes»
В этой статье я разберу наш путь от VM к Kubernetes: какие задачи решали, как настраивали пайплайны, с какими сложностями столкнулись и какие плюсы в итоге получили.
Читать: https://habr.com/ru/companies/alfastrah/articles/988306/?utm_campaign=988306
@a_cup_of_java | Другие наши каналы
Статья: «Как мы перевели сервисы Java с виртуальных машин в Kubernetes»
В этой статье я разберу наш путь от VM к Kubernetes: какие задачи решали, как настраивали пайплайны, с какими сложностями столкнулись и какие плюсы в итоге получили.
Читать: https://habr.com/ru/companies/alfastrah/articles/988306/?utm_campaign=988306
@a_cup_of_java | Другие наши каналы
11 топовых библиотек и фреймворков для Java в 2025 году
Топ библиотек и фреймворков Java 2025: Spring Boot, Hibernate, JUnit, Micronaut, Quarkus. Практические советы от Senior и Lead разработчиков.
Читать: «11 топовых библиотек и фреймворков для Java в 2025 году»
@a_cup_of_java | Другие наши каналы
Топ библиотек и фреймворков Java 2025: Spring Boot, Hibernate, JUnit, Micronaut, Quarkus. Практические советы от Senior и Lead разработчиков.
Читать: «11 топовых библиотек и фреймворков для Java в 2025 году»
@a_cup_of_java | Другие наши каналы
Как изменить код работающего Java-приложения? Пишем свой HotSwap
Практический разбор создания Java-агента для модификации байт-кода на лету. Как использовать Attach API, Instrumentation и Byte Buddy, чтобы изменить поведение работающего приложения. Подробно о реализации и ошибках.
Читать: «Как изменить код работающего Java-приложения? Пишем свой HotSwap»
@a_cup_of_java | Другие наши каналы
Практический разбор создания Java-агента для модификации байт-кода на лету. Как использовать Attach API, Instrumentation и Byte Buddy, чтобы изменить поведение работающего приложения. Подробно о реализации и ошибках.
Читать: «Как изменить код работающего Java-приложения? Пишем свой HotSwap»
@a_cup_of_java | Другие наши каналы
Apple выпустила Swift SDK для написания Android-приложений — спустя 11 лет после релиза языка
Apple выпустила Swift SDK для Android — теперь на Swift можно писать нативные Android-приложения и переносить код между платформами
Читать: «Apple выпустила Swift SDK для написания Android-приложений — спустя 11 лет после релиза языка»
@a_cup_of_java | Другие наши каналы
Apple выпустила Swift SDK для Android — теперь на Swift можно писать нативные Android-приложения и переносить код между платформами
Читать: «Apple выпустила Swift SDK для написания Android-приложений — спустя 11 лет после релиза языка»
@a_cup_of_java | Другие наши каналы
Инженер реализовал завирусившийся XKCD-комикс про зависимости ПО
Инженер создал Stacktower — интерактивную версию культового XKCD-комикса, показывающую, как одна зависимость может «обрушить» все приложение
Читать: «Инженер реализовал завирусившийся XKCD-комикс про зависимости ПО»
@a_cup_of_java | Другие наши каналы
Инженер создал Stacktower — интерактивную версию культового XKCD-комикса, показывающую, как одна зависимость может «обрушить» все приложение
Читать: «Инженер реализовал завирусившийся XKCD-комикс про зависимости ПО»
@a_cup_of_java | Другие наши каналы
❤3
Java: 15 самых популярных докладов 2025 года на YouTube
От базовой прокачки производительности до работы с ИИ и данными. Все доклады доступны бесплатно на YouTube
Читать: «Java: 15 самых популярных докладов 2025 года на YouTube»
@a_cup_of_java | Другие наши каналы
От базовой прокачки производительности до работы с ИИ и данными. Все доклады доступны бесплатно на YouTube
Читать: «Java: 15 самых популярных докладов 2025 года на YouTube»
@a_cup_of_java | Другие наши каналы
❤2
Forwarded from Типичный программист
This media is not supported in your browser
VIEW IN TELEGRAM
Ну и еще немного про ИИ! 😁
Одни компании недолюбливают нейросети за риск утечки конфиденциальной информации. Судя по комменту к предыдущему посту вы тоже от него устали🤪 Но каким-то образом у разных компаний получается приручить эту химеру и выуживать из нее пользу.
Как, например, у этих ребят. Команда хотела облегчить работу коллег и создала то, что стало ключом к корпоративному ИИ. Они хотели доступ к мощным нейросетям, но так, чтобы ни байта данных не вышло за порог компании. И чтобы запускал это не только технарь, но и обычный менеджер.
Главный стоппер был предсказуем: как заставить прожорливые модели стабильно работать в облаке под нагрузкой? Решение оказалось элегантным.
Это девятый артефакт — для тех, кто побаивается нейросетей, но явно на них облизывается. Покажите вашему начальнику, скажите, что все не так страшно👻
Одни компании недолюбливают нейросети за риск утечки конфиденциальной информации. Судя по комменту к предыдущему посту вы тоже от него устали
Как, например, у этих ребят. Команда хотела облегчить работу коллег и создала то, что стало ключом к корпоративному ИИ. Они хотели доступ к мощным нейросетям, но так, чтобы ни байта данных не вышло за порог компании. И чтобы запускал это не только технарь, но и обычный менеджер.
Главный стоппер был предсказуем: как заставить прожорливые модели стабильно работать в облаке под нагрузкой? Решение оказалось элегантным.
Это девятый артефакт — для тех, кто побаивается нейросетей, но явно на них облизывается. Покажите вашему начальнику, скажите, что все не так страшно
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Типичный программист
Победителями премии Тпрогер 🐀 становятся...
Здесь играет барабанная дробь и интригующая музыка... Вам нужно только выждать драматическую паузу перед объявлением победителей — в каждой номинации он один, и определяется большинством голосов. Готовы?
В номинации «Продукт года» золотая мышь достается компании:
🐀 NetVision за платформу интеллектуального мониторинга СИМ .
В номинации «Облачный продукт года» побеждает компания:
🐀 Гравитон с паком виртуализации «Гелиус»
Звание «IT-ивент года» вручается компании:
🐀 Островок! за О!Хакатон
И в категории «Дизайн года» первое место занимает компания:
🐀 AcademiaDev за интерактивную инсталляцию .
Каждый ваш лайк, голос влияли на исход премии. Давайте поддержим всех — ставьте 🏆участникам, которые хоть и не заняли призового места, но точно остались в сердечке.
И 🔥, если хотите аналогичных активностей и готовы выбирать еще!
Здесь играет барабанная дробь и интригующая музыка... Вам нужно только выждать драматическую паузу перед объявлением победителей — в каждой номинации он один, и определяется большинством голосов. Готовы?
В номинации «Продукт года» золотая мышь достается компании:
В номинации «Облачный продукт года» побеждает компания:
Звание «IT-ивент года» вручается компании:
И в категории «Дизайн года» первое место занимает компания:
Каждый ваш лайк, голос влияли на исход премии. Давайте поддержим всех — ставьте 🏆участникам, которые хоть и не заняли призового места, но точно остались в сердечке.
И 🔥, если хотите аналогичных активностей и готовы выбирать еще!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
RAG в JVM-стеке: AI-ассистент на Spring AI без Python
Команда автора статьи внедрила AI-ассистента для внутренней системы, не переходя на Python. Взяли Spring AI, PostgreSQL с pgVector и быстро убедились: качество ответов упирается не в код, а в данные. Документация оказалась разрозненной, стандартное разбиение на чанки теряло контекст.
После экспериментов с перекрытием и секциями пришли к простому решению: векторный поиск идёт по чанкам, но в ответ передаётся полный текст секций, к которым относятся найденные фрагменты. Это сохранило точность поиска и устранило разрывы инструкций. Главный вывод — модель не добавляет знаний, а лишь отражает зрелость документации. Улучшение базы знаний дало больший прирост качества, чем выбор более мощной LLM.
Для Java-разработчиков — готовый кейс внедрения RAG в привычном стеке. Подробности с примерами кода — в статье: https://habr.com/ru/companies/raiffeisenbank/articles/1012666/
Команда автора статьи внедрила AI-ассистента для внутренней системы, не переходя на Python. Взяли Spring AI, PostgreSQL с pgVector и быстро убедились: качество ответов упирается не в код, а в данные. Документация оказалась разрозненной, стандартное разбиение на чанки теряло контекст.
После экспериментов с перекрытием и секциями пришли к простому решению: векторный поиск идёт по чанкам, но в ответ передаётся полный текст секций, к которым относятся найденные фрагменты. Это сохранило точность поиска и устранило разрывы инструкций. Главный вывод — модель не добавляет знаний, а лишь отражает зрелость документации. Улучшение базы знаний дало больший прирост качества, чем выбор более мощной LLM.
Для Java-разработчиков — готовый кейс внедрения RAG в привычном стеке. Подробности с примерами кода — в статье: https://habr.com/ru/companies/raiffeisenbank/articles/1012666/
Три ИТ-события, которые вы могли пропустить (а зря)
Пока все гонятся за хайповыми новостями, мы вместе с коллегой Андреем Дмитриевым из JUG.ru собрали события, которые уже повлияли на мир разработки.
В пилотном выпуске нового подкаста:
— Хакеры стерли десятки тысяч ПК через Microsoft Intune
— Дефицит оперативной памяти до 2030 года
— Оптимизация glibc под x86_64
О других событиях вы можете узнать, послушав подкаст.
Особое внимание предлагаем уделить рефлексии. В выпуске мы подсветили, почему те или иные истории важны для ИТ-сообщества. А теперь призываем вас в комменты под видео: что уже вошло в вашу жизнь из этих кейсов? И как думаете, что из этого не производит резонанса?
Смотрите подкаст и присоединяйтесь к дискуссии: https://tprg.ru/S7jD
Пока все гонятся за хайповыми новостями, мы вместе с коллегой Андреем Дмитриевым из JUG.ru собрали события, которые уже повлияли на мир разработки.
В пилотном выпуске нового подкаста:
— Хакеры стерли десятки тысяч ПК через Microsoft Intune
— Дефицит оперативной памяти до 2030 года
— Оптимизация glibc под x86_64
О других событиях вы можете узнать, послушав подкаст.
Особое внимание предлагаем уделить рефлексии. В выпуске мы подсветили, почему те или иные истории важны для ИТ-сообщества. А теперь призываем вас в комменты под видео: что уже вошло в вашу жизнь из этих кейсов? И как думаете, что из этого не производит резонанса?
Смотрите подкаст и присоединяйтесь к дискуссии: https://tprg.ru/S7jD
VK Видео
Важные ИТ-новости #1
00:15 Java 26 00:56 glibc 01:55 Anthropic 02:45 Perplexity 03:38 Инженерная продуктивность 05:17 Python 06:24 Тони Хоар 07:37 Atlassian && Oracle 08:52 Youtube 09:59 Яндекс 10:35 DirectX 11:33 Excel 12:36 Андрей Карпатый 14:03 Intel 15:35 Microsoft…
Как решить задачу охраны промышленных объектов
Проинспектировать НПЗ с десятками корпусов или организовать охрану трубопровода на 400 км — задача не из простых.
Камеры не заглянут за угол. Дрон через 30–40 минут работы придется зарядать. Охранник — дорого, медленно, небезопасно.
Остаётся робособака. Они уже вышли за пределы мемных видео от Boston Dynamics, и сейчас активно используются в кейсах, вроде охраны.
Как они устроены технически — можете узнать в материале на нашем сайте. Внутри:
— как устроено ядро и почему к нему нет прямого доступа
— почему к лидару обязательно добавляют сонар и радар
— как работает рой в mesh-сети без GPS
— где робот ломается (метель, стройка, полиэтиленовая плёнка)
Спойлер: экосистема пока сырая, стандартов нет, собрать самому нельзя. Но альтернативы для сложного рельефа и помещений — нет.
Проинспектировать НПЗ с десятками корпусов или организовать охрану трубопровода на 400 км — задача не из простых.
Камеры не заглянут за угол. Дрон через 30–40 минут работы придется зарядать. Охранник — дорого, медленно, небезопасно.
Остаётся робособака. Они уже вышли за пределы мемных видео от Boston Dynamics, и сейчас активно используются в кейсах, вроде охраны.
Как они устроены технически — можете узнать в материале на нашем сайте. Внутри:
— как устроено ядро и почему к нему нет прямого доступа
— почему к лидару обязательно добавляют сонар и радар
— как работает рой в mesh-сети без GPS
— где робот ломается (метель, стройка, полиэтиленовая плёнка)
Спойлер: экосистема пока сырая, стандартов нет, собрать самому нельзя. Но альтернативы для сложного рельефа и помещений — нет.
Локализация через Enum: избавляемся от рантайм-парсинга
В статье на Tproger разобрали три подхода к локализации: классическое наследование требует дублировать поля вручную, стандартные ARB/JSON парсятся в рантайме и съедают память, а табличные генераторы требуют ручного запуска после каждой строки.
Выход — Enum в одном файле без внешних ресурсов. Это убирает рантайм-парсинг и ручное дублирование. Если ваши сервисы сопрягаются с клиентами, где локализация до сих пор требует JSON или генераторов, стоит переложить её на compile-time решение.
В статье на Tproger разобрали три подхода к локализации: классическое наследование требует дублировать поля вручную, стандартные ARB/JSON парсятся в рантайме и съедают память, а табличные генераторы требуют ручного запуска после каждой строки.
Выход — Enum в одном файле без внешних ресурсов. Это убирает рантайм-парсинг и ручное дублирование. Если ваши сервисы сопрягаются с клиентами, где локализация до сих пор требует JSON или генераторов, стоит переложить её на compile-time решение.