java
-
Интеграционное тестирование с JUnit
Предупреждение: я знаю, что JUnit для UNIT тестов и цена им небольшая. Речь о применении JUnit в ИНТЕГРАЦИОННЫХ тестах. И с другой стороны, на тех проектах, где мне приходилось работать, интеграционное тестирование проводилось вручную. Можно это дело автоматизировать.
-
Конвертирование речи в текст
Результаты поиска инструментов перевода речи в текст
Оглавление:
-
Конспект Otus про использование Camel
Конспект демо-занятия курса "Java Developer. Advanced. Apache Camel: масштабируемые интеграции для Highload" Сергей Проханов
Демо-занятие курса «Java Developer. Advanced» Сергей Проханов
0:10:00
Книга "Шаблоны интеграции корпоративных приложений" Грегор Хоп, Бобби Вульф
0:24:00
50 форматов данных
Camel K - Camel для Kubernetes (K)
CRD - Custom, Resource, Deployment. Деплоит в кубер как Pod/Deployment
0:32:00
Camel Quarkus - расширение Camel для Quarkus. Quarkus - генерит исполняемые файлы (быстрый старт, горячая перезагрузка, контейнеризация). Примеры: camel-quarkus-kafka, camel-quarkus-rest, camel-quarkus-jdbc, camel-quarkus-http, camel-quarkus-mail и т.д.
0:35:31
Camel Kafka Connector - встраивает Camel _внутрь_ Kafka _Connect_. Тут же использование с Kafka _Stream_.
источник - source
приемник - sink
Дает возможность не писать код на Java/Kotlin/Scala/Go
Обрабатывает исключения!
0:39:28
Camel Spring Boot. Примеры:
camel-kafka-starter
camel-rest-starter
camel-jdbc-starter
camel-postgresql-starter
camel-mail-starter
camel-openapi-java-starter
0:41:39
Camel Karaf (OSGi)
0:43:30
Camel Karavan - это изуальный иструмент (UI + IDE) - позволяет создавать, редактировать, запускать и деплоить интеграционные _МАРШРУТЫ_ Camel без глубокого программирования, а через граф.интерфейс. low-code ???
0:46:20
Apache Camel JBang - инструмент позволяет начать работу без установки Maven, Gradle, IDE и др. тяжелых runtime. "Простыми словами это Jbang+Camel в одном флаконе - запускаешь команду, пишешь интеграцию в одном файле (Java, Kotlin, Groovy, YAML) и она сразу работает как полноценое Camel приложение. Прототипирование, временное решение, для обучения.
0:48:52
Практическая часть Camel-Spring Boot предоставляет автоконфигурацию CamelContext. берет на себя регистрацию Producer Template в качестве бинов Spring
BOM Spring Boot - согласовывает версии Spring Boot. Есть 2 BOM:
1) camel-spring-boot-bom - требует ручного разрешения конфликтов
2) camel-spring-boot-dependencies - минимизирует риск конфликтов
0:53:13
Пример конфигурации. В ней 2 зависимости в dependencyManagement:
artifactId -> camel-spring-boot-bom
type -> pom
scope -> import
и как обычно dependencies:
artifactId -> spring-boot-dependencies
type -> pom
scope -> import
0:56:26
Добавление стартеров и запуск контекста
Приложение стартует добавлением основного стартера, а его функциональность _РАСШИРЯЕТСЯ_
подключением _СТАРТЕРОВ_ компонентов.
В standalone-режиме (без web сервера) необходимо указать параметр camel.main.run-controller=true, чтобы главный поток не завершался сразу после старта.
0:58:11
Добавление стартеров и запуск контекста
starter - не нужно указывать версии, т.к. они определены в BOM Spring boot (?)<dependencies> <!-- Camel Starter --> <dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-spring-boot-starter</artifactId> // запуск Camel контекста (вспомни как ебался с xml) </dependency> <!-- Camel Starter JMS --> <dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-jms-starter</artifactId> </dependency> </dependencies>
1:00:34
В application.properties добавить:
camel.main.run-controller=true
есть разница для web приложений. Эта настройка КРИТИЧЕСКИ важна для spring-boot приложения
Работа в фоне. Не останавливается после старта). В обычных boot приложениях не останавливает
приложение tomcat или jetty, а тут не дает выгрузиться Camel.
1:05
Единый стиль конфигурации через своства Spring boot
Синтаксис следует единому шаблону:
camel.component.[component-name].[parameter]=[value]
Пример в application.properties:
camel.component.paho-mqtt5.broker-url=tcp://localhost:61616
(MQTT - Протокол Message Queuing Telemetry Transport. Это протокол обмена сообщениями по шаблону издатель-подписчик (pub/sub))
(paho-mqtt5 - библиотека для взаимодействия с MQTT-сервером)
1:06:59
Объявление маршрутов для Spring Boot:
1. Декларативный подход (идеально)
@Component public class NameClass extends RouteBuilder { @Override public void configure() { from("...") .to("..."); } }
2. Практика
1.11
Задача пересылки сообщений из очередей RabbitMQ в топики Kafka.
В проекте как-то использован kafka-drop (в application.yaml)
Использован Docker Compose
1:1.35
Объясняет суть проекта
Шикарная лекция
1. Темп речи
2. Умение рассказывать. Связная речь.
3. Последовательность (от общего описания к частностям)
4. Яркий пример
Где исходники? Где-то есть исходники примеров. Обещал дать. -
Многомодульный проект
Описан способ организации разработки, когда один из модулей (library) используется в нескольких проектах (application1, application2,... applicationN). Чаще, и возможно проще, переиспольуемый модуль разрабатывается отдельно и затем подключается как зависимость через репозиторий maven. При изменении library его maven версия получает новый идентификатор и это изменение должно быть учтено в целевых проектах. Заготовка проекта: https://github.com/cherepakhin/multi-module.
В проекте два модуля Application и Library. -
О CompletableFeature
Интересно было узнать о возможностях CompletableFeature.
Проект и описание находится тут https://github.com/cherepakhin/completablefeature_many_benchmark -
Области памяти - Stack, Heap
Stack – Каждый поток имеет свой стек, который создается в тоже время, когда создается поток. Стек (локальная или рабочая память потока) содержит фреймы, которые создаются при каждом вызове метода и хранят локальные переменные и промежуточные результаты, возвращают значения для методов и выбрасывают исключения, если это необходимо. Задается параметром Xss (default 1Mb, примеры: -Xss1m, -Xss1024k).
-
Определение Spring beans
Проект для демонстрации на Kotlin https://github.com/cherepakhin/spring_config_k
Аналогичный проект на Java https://github.com/cherepakhin/spring_config -
Покрытие тестами 100%
Задача: довести покрытие тестами до 100%. Зачем? А почему бы и нет?

-
Пример на Kotlin для конвертирования JSON массива в список объектов.
Пример на Kotlin для конвертирования JSON массива в список объектов. Дан сервис:
-
Пример работы с базой данных и списками в java
-
Простые примеры Wicket
"Wicket относится к категории программных каркасов (application framework). Являясь надстройкой над Servlet API, Wicket предоставляет всю необходимую инфраструктуру для функционирования приложений, включая средства для управления жизненным циклом объектов, разграничения прав доступа, локализации, обработки исключительных ситуаций, поддержки сессий пользователей и т.п." ( Разработка Web-приложений с использованием Wicket)
(что-то типа React? Vue? Очень примитивно работа React выглядит так. Есть View, Action, State. View вызывает Acton, который меняет State, а View отслеживает изменения в State. В Wicket примерно также: View отслеживает изменения в Model).
Template Engines for Spring
Примеры из книги "Wicket in action": Wicket test examples на моем github. Не все примеры, только несколько, для того, чтобы понять работу Wicket. Все примеры в https://github.com/perty/wicket-test-examples -
Работа с log
Разработчик сам должен позаботиться о качестве логов, информации из stacktrace будет маловато. Интересны условия возникновения ошибки. Однозначно нужны значения переменных в момент возникновения ошибки, т.к. эти данные потом нигде не получить. Примитивный пример:
-
Разборки с профилями Spring Boot
Задача
Нужно несколько профилей: "prod", "dev", "test",... -
Репозитории yandex
Возникают проблемы при сборке проектов (санкции?). Яндекс подсуетился и сделал зеркало репозиториев https://mirror.yandex.ru/ (в.т.ч. maven, дистрибутивы linux и др.программ).
-
Создание fat jar файла
Оглавление:
-
Ссылки Apache Camel
file:///var/www/main/doc/camel-in-action.pdf
file:///var/www/main/doc/Camel_in_Action_2nd_Edition.epub
Components Camel
File component -
Тестирование REST
В заметке описаны инструменты тестирования REST и примеры использования.
А чем, собственно, проблема?

-
Тестирование с TestNG
TestNG - еще одна система тестирвания. Можно использовать для интеграционных тестов. https://www.baeldung.com/testng Пример с DataProvider:
-
Уровни изоляции транзакций
Read uncommitted. Это самый низкий уровень изоляции. Согласно стандарту SQL на этом уровне разрешено чтение грязных данных (незакоммиченных записей). Но в PostgreSQL на этом уровне чтение грязных данных не допускается.
-
Установка Kafka в Linux
Установка описана в https://www.dmosk.ru/miniinstruktions.php?mini=kafka-linux.
Дистрибутив Kafka: https://downloads.apache.org/kafka/
Скачать https://downloads.apache.org/kafka/3.6.2/kafka_2.12-3.6.2.tgz
Страница 2 из 3