🎯 Как быстро настроить распределённую трассировку в Spring Boot с OpenTelemetry
Дебажить без трейсинга — как ловить баги с завязанными глазами. Но Spring Boot и тут не подвёл: подключаем, настраиваем — и уже можно видеть, что происходит внутри сервиса (и между сервисами тоже).
1️⃣ Добавляем зависимости
Плюс агент (нужно будет передать при запуске JAR-а):
2️⃣ Настраиваем экспорт в Jaeger / Zipkin / OTEL Collector
Добавляем конфигурацию в application.yml:
Можно слать трейсинг напрямую в Jaeger или Zipkin, или в OTEL Collector для гибкости.
3️⃣ Автоматическая трассировка веб-запросов и JDBC
Ничего руками писать не нужно. Всё, что проходит через @RestController и JdbcTemplate — уже обвешано спанами. Нужно только запустить приложение с агентом:
Сразу работают:
— Спаны на все входящие HTTP-запросы
— Спаны на SQL-запросы
— Привязку логов к трейсам (если логгер поддерживает traceId)
4️⃣ Кастомные спаны
Нужно залезть в середину метода и обернуть свою логику? Без проблем:
5️⃣ Визуализация трассировок
Установите Jaeger UI или Zipkin — и смотрите в реальном времени, что делает сервис и как долго.
💬 Что вы используете для трейсинга?
🐸 Библиотека джависта #буст
Дебажить без трейсинга — как ловить баги с завязанными глазами. Но Spring Boot и тут не подвёл: подключаем, настраиваем — и уже можно видеть, что происходит внутри сервиса (и между сервисами тоже).
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
ИЛИ
implementation 'io.opentelemetry.instrumentation:opentelemetry-spring-boot-starter:2.1.0'
Плюс агент (нужно будет передать при запуске JAR-а):
-javaagent:opentelemetry-javaagent.jar
Добавляем конфигурацию в application.yml:
otel:
exporter:
otlp:
endpoint: http://localhost:4317
resource:
attributes:
service.name: my-service
instrumentation:
spring-web:
enabled: true
jdbc:
enabled: true
Можно слать трейсинг напрямую в Jaeger или Zipkin, или в OTEL Collector для гибкости.
Ничего руками писать не нужно. Всё, что проходит через @RestController и JdbcTemplate — уже обвешано спанами. Нужно только запустить приложение с агентом:
java -javaagent:opentelemetry-javaagent.jar -jar myapp.jar
Сразу работают:
— Спаны на все входящие HTTP-запросы
— Спаны на SQL-запросы
— Привязку логов к трейсам (если логгер поддерживает traceId)
Нужно залезть в середину метода и обернуть свою логику? Без проблем:
@Autowired
private Tracer tracer;
public void doSomething() {
Span span = tracer.spanBuilder("custom-operation").startSpan();
try (Scope scope = span.makeCurrent()) {
// какая-то магия
} finally {
span.end();
}
}
Установите Jaeger UI или Zipkin — и смотрите в реальном времени, что делает сервис и как долго.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Устали копаться в логах или ловить баги методом “на авось”? Попробуйте вот этот промпт — он сэкономит вам часы мучений:
📝 Промпт:
Debug the following code and identify potential issues or anti-patterns. Suggest fixes, explain the root cause of errors, and recommend tools or techniques to prevent such bugs in the future.
// Вставьте глючный код сюда
— Добавьте
Simulate expected vs actual output behavior
если не понимаете, почему оно работает не так, как вы думаете— Добавьте
Point out hidden performance issues or memory leaks
если подозреваете, что код ест больше, чем должен— Добавьте
Suggest logging or monitoring strategies
чтобы ловить баги ещё до того, как они вас поймаютPlease open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека питониста | Python, Django, Flask
На собеседовании важно уметь выделить главное — свои сильные стороны, мышление и ценности. Это помогает справляться со стрессом, неожиданными вопросами и субъективной оценкой.
• Как работает PCA
• Зачем он нужен
• Как применять его на практике — например, для анализа доходностей акций S&P 500
Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
Надоело тратить время на создание шаблонных тестов вручную? IntelliJ IDEA поможет и с этим. С помощью Ctrl + Shift + T можно сгенерировать структуру тестов для классов и методов.
🔹 Зачем это нужно
— Вместо того, чтобы вручную писать шаблон тестов, IDEA сгенерирует базовую структуру тестов для классов или методов.
— Особенно полезно, когда проект растет, а тестов слишком много, чтобы каждый раз выдумывать тестовую структуру с нуля.
🔹 Как использовать
— Поместите курсор на класс или метод, для которого нужен тест.
— Нажмите
Ctrl + Shift + T
(на Windows/Linux) или Cmd + Shift + T
(на macOS).— Выберите, какой тестовый фреймворк использовать (JUnit, TestNG и т.д.), и IDEA предложит создать тестовый класс с нужной структурой.
IDE автоматически создаст тестовый класс с методами для проверки каждого (или выбранного) публичного метода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
🤔📝 Псевдокод: когда преподы не шарят, а ты в тупике
Псевдокод может быть настоящим головняком, особенно если требования к нему кажутся непонятными или не совпадают с тем, что вы видите в реальной практике программирования.
Узнайте, как сделать псевдокод полезным инструментом, а не дополнительной нагрузкой.
➡️ Читать статью
🐸 Библиотека шарписта
Псевдокод может быть настоящим головняком, особенно если требования к нему кажутся непонятными или не совпадают с тем, что вы видите в реальной практике программирования.
Узнайте, как сделать псевдокод полезным инструментом, а не дополнительной нагрузкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💼🚫 Собес провален? 8 советов, как извлечь пользу из каждого отказа
Отказы на собеседованиях — явление крайне неприятное и даже демотивирующее. Особенно если вы действительно готовились к интервью, вложили много усилий и личного времени в подготовку.
Однако отказ — это всего лишь один из этапов в поиске работы и не стоит воспринимать его как конец света.
➡️ Читать статью
🐸 Библиотека программиста
Отказы на собеседованиях — явление крайне неприятное и даже демотивирующее. Особенно если вы действительно готовились к интервью, вложили много усилий и личного времени в подготовку.
Однако отказ — это всего лишь один из этапов в поиске работы и не стоит воспринимать его как конец света.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔹 10 Java-инструментов, которые стоит освоить в 2025 году
Отличная подборка свежих тулов от команды JavaRevisited. Автор рассказывает, почему IntelliJ IDEA по-прежнему топ, как Maven и Gradle делят рынок сборщиков, зачем подключать SonarQube к CI/CD, и как JaCoCo помогает не пускать баги в прод.
🔹 16 лучших инструментов для анализа покрытия кода в Java
LambdaTest собрали отличную коллекцию тулов для code coverage. JaCoCo, Cobertura, Emma и другие инструменты с реальными примерами, плюс — рекомендации, как интерпретировать отчёты и не уплыть в графиках.
🔹 Spring Tools 4.29.0: новые возможности
В марте вышел свежий релиз Spring Tools с обновлённой поддержкой Spring Boot 3.x, быстрой навигацией и улучшенной автоподстановкой. Плюс, разработчики поработали над интеграцией с IDE (включая Eclipse и VS Code).
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по Java | тесты, код, задания
Forwarded from Библиотека задач по Java | тесты, код, задания
Что будет результатом запуска кода?
Anonymous Quiz
18%
Executing MyService
64%
NoUniqueBeanDefenitionException
4%
MyService
7%
BeanNotFoundException
7%
Ошибка компиляции
Java-разработчик (junior+/middle) — от 200 000 до 250 000 ₽, гибрид (Москва, Санкт-Петербург)
Java-разработчик (Платёжная инфраструктура) — 300 000 — 370 000 ₽, гибрид (Москва, Санкт-Петербург)
Senior Java Developer — от 400 000 ₽, удалёнка (Москва, Астрахань, Екатеринбург)
Java разработчик с нуля (стажер) — от 70 000 до 80 000 ₽, удалённо (Москва, Астрахань, Екатеринбург)
Java разработчик (middle) — от 270 000 до 300 000 ₽, удалёнка (Москва)
Please open Telegram to view this post
VIEW IN TELEGRAM