java
-
Vaadin
Tutorial "Components and Layouts": https://vaadin.com/docs/v14/flow/tutorial/components-and-layouts
Для разработки Vaadin приложений, кроме java, нужен настроенный node:$ node -v v20.0.0
Описание Vaadin 8 https://vaadin.com/framework
Генерация Spring Boot в Spring Initializr https://start.spring.io/ -
Vacancy Backend RestAssured
Vacancy Backend RestAssured
https://github.com/cherepakhin/vacancy_backend_restassured
Rest тесты для проекта vacancy_backend
-
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 -
WildFly
Склонировал https://github.com/wildfly/wildfly JAVA 17
Оглавление:
-
Автоматизация хаоса - Camunda
Давно прочитал в журнале Компьютерра статью "Автоматизация хаоса". 1999 год!!! В google полно документов на эту тему. Пару слов хочется черкнуть от себя. В большинстве проектов, на которых приходилось работать, так или иначе возникает эта тема.
Хотя и не очень явно.
-
Виды тестирования
Попытка как то структурировать тесты.
Виды тестирования:
1. Unit testsЗдесь же может использоваться полезный инструмент как "Покрытие тестами":
2. Интеграционное- REST
- behave-restfull - интересный способ описания тестов с помощью специального языка Gerkin (Behave тестирование с помощью RestAssured проекта shop_kotlin)
- REST tests (RestAssured)
- База данных (DataJpaTest)
- Given-When-Then tests
- Эффективный подход к тестированию WEB-КОНТРОЛЛЕРОВ в Spring Boot приложениях(habr)
3. Нагрузочное
Yandex tank test
Еще тесты:
Интеграционное тестирование на Kotlin проекта ktor_shop (https://ktor.io)Ссылки
- REST
-
Возврат ответов в REST (и ответы при ошибках)
По мотивам статьи Изучаем ResponseEntity<?> и избавляемся от него в контроллерах Spring Boot
В заметке рассмотрено 2 способа:1. Способ с возвратом ResponseEntity<?>
2. Способ с возвратом объекта -
Два слова о Camel
Spring boot велик и могуч, но есть и другие инструменты.

Camel позволяет абстрагироваться от кода и сосредоточиться на конфигурации, взаимодействии компонент. Camel это интеграционный клей, который соединяет компоненты системы, предоставляя коннекторы. Примеры коннекторов: rest, ftp, Spring bean и еще много всяких: https://camel.apache.org/components/next/index.html#_components.
-
Динамическое создание Spring Bean в RunTime
Создания бинов с параметрами из базы данных и создания массива бинов и передачей этого массива как зависимость в другой бин.
Различные способы задания конфигурации Spring Beans (Java)
Различные способы задания конфигурации Spring Beans (Kotlin)
В задаче опроса филиалов в проекте МТС -
Заготовка для UI проектов со Spring Boot Web и FreeMarker (HR Admin)
Заготовка для UI проектов со Spring Boot Web и FreeMarker
Оглавление:
-
Загрузка файла с Java, Spring Boot, Themleaf. Frontend и Backend.
Используется Java 11, Spring Boot, Themeleaf, Bootstrap.
Ссылка на репозиторий: FileUploadExample -
Именование commit
Взято из https://www.conventionalcommits.org/en/v1.0.0/
Коротко:<type>[optional scope]: <description> [optional body] [optional footer(s)]
-
Интеграционное тестирование с JUnit
Предупреждение: я знаю, что JUnit для UNIT тестов и цена им небольшая. Речь о применении JUnit в ИНТЕГРАЦИОННЫХ тестах. И с другой стороны, на тех проектах, где мне приходилось работать, интеграционное тестирование проводилось вручную. Можно это дело автоматизировать.
-
Конвертирование речи в текст
Результаты поиска инструментов перевода речи в текст
Решения только для ввода текста в поля редактирования текста. Не подойдет для эмуляции нажатия кнопок, combobox и т.д., хотя как то и можно приспособить, но в этой заметке не про это.Оглавление:
- Vosk
- Статья на Baeldung "How to Convert WAV or MP3 to Text in Linux"
- Wisper
- В Android есть встроенный распознаватель речи в клавиатуре.
- Встроенные в браузер средства на JavaScript (Web Speech API).
- Статья на Habr "Rhasspy — опенсорсный и полностью офлайновый речевой тулкит. Распознавание русского языка. Никаких утечек в облако."
- Ссылки
-
Конспект 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 -
Очень простые базы данных с хранением данных на диске.
MapDB
Проект заброшен, но рабочий.
DB db = DBMaker.fileDB("file.db").make()https://www.baeldung.com/mapdb
https://github.com/jankotek/mapdb/
mapdb-manual-20.pdf
Страница 3 из 5