Pull to refresh
-6
Alexey Schröder @schroeder read⁠-⁠only

Пользователь

Send message

Генерация PDF-документации из OpenAPI-спецификации в SpringBoot-приложении

Level of difficulty Easy
Reading time 9 min
Views 3.7K

При интеграции с нашим приложением, написанном на "классическом" SpringBoot-стэке встал вопрос о предоставлении описания АПИ партнеру. Фактически из коробки SpringBoot позволяет развернуть на стороне приложения тонкий Swagger-клиент и сгенерировать на лету спецификацию в формате Swagger (OpenAPI), которая представляет собой JSON особой структуры (хотя если читатель не знает, что это, наверное нет никакого смысла вообще читать эту статью).

Проблема осложнялась тем, что наш партнер разрабатывал на 1С, и во всех современных спецификациях для него были слишком сложно освоиться, поэтому встала задача предоставить документацию в человекориентированном виде - DOC, PDF и прочее.

В ходе изысканий в google, была найдена статья, и советы на stackoverflow, которые фактически повторяли эту статью. Фактически было найдено 2 варианта решения:

1) Использовать онлайн-конвертер

2) Настроить цепочку из 3 maven-плагинов:

Читать далее
Total votes 4: ↑3 and ↓1 +2
Comments 4

Прорывная концепция ракетного двигателя

Level of difficulty Hard
Reading time 25 min
Views 85K

Быстрое освоение космического пространства столкнулось с проблемой, связанной с недостаточной эффективностью современных ракетный двигателей.

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

Статья представляет собой результаты испытания трёх модификаций реактивных двигателей на новых принципах работы и их анализ. В статье рассмотрены физические принципы работы реактивного двигателя на новых принципах, его преимущества и проблемы, возникающие при его создании.

Читать далее
Total votes 299: ↑292 and ↓7 +285
Comments 491

Что такое гексагональная архитектура. Разделение бизнес-логики и инфраструктуры с помощью портов и адаптеров

Level of difficulty Medium
Reading time 13 min
Views 23K
image

Гексагональная архитектура — это архитектурный паттерн, представленный Алистером Кокберном и описанный у него в блоге в 2005 году. Основная идея заключается в том, чтобы структурировать приложение таким образом, чтобы это приложение можно было разрабатывать и тестировать в изоляции, не завися от внешних инструментов и технологий.

Вот как сам Кокберн описывает эту архитектуру одним тезисом:

Добиться, чтобы приложение в равной степени могло управляться пользователями, программами, автоматизированными тестовыми или пакетными сценариями, а также разрабатываться и тестироваться в изоляции от устройств и баз данных, на которых оно впоследствии будет выполняться. — Алистер Кокберн, 2005 г.

В этой статье мы рассмотрим некоторые задачи, как правило, решаемые в типичных программных проектах. Затем мы поговорим о гексагональной архитектуре и о том, как она призвана решить эти задачи. Мы также рассмотрим некоторые детали реализации такой архитектуры и варианты тестирования.
Читать дальше →
Total votes 41: ↑39 and ↓2 +37
Comments 45

Как мне захотелось систематизировать виды тестирования

Level of difficulty Easy
Reading time 11 min
Views 25K

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

Читать далее
Total votes 33: ↑33 and ↓0 +33
Comments 29

Арбитраж криптовалют, реальный опыт

Reading time 6 min
Views 189K

Со стартом биткойновой лихорадки в интернете появилось безчисленное множество интересных проектов, начиная от ICO, облачного майнинга и заканчивая влогами и курсами по трейдингу, майнингу и т.п. Я же обратил внимание на крипто арбитраж, о чем мы сейчас и поговорим.

Читать далее
Total votes 19: ↑15 and ↓4 +11
Comments 42

Распределённые транзакции

Level of difficulty Medium
Reading time 10 min
Views 30K

На собеседованиях на позицию middle/senior разработчика часто задают вопросы по распределенным транзакциям в микросервисной архитектуре.

Мой коллега однажды посоветовал отличную статью со сравнением основных паттернов для решения проблем распределённых транзакций.

Я проработал статью и подготовил конспект простыми словами, местами дополнил информацией из других источников и полезными ссылками.

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

Читать далее
Total votes 26: ↑23 and ↓3 +20
Comments 1

Гауссов сплэтинг: как это выглядит

Level of difficulty Easy
Reading time 11 min
Views 12K
Пример работы гауссова сплэтинга. Этот ролик — не видеосъёмка реального мира, а рендер в реальном времени на настольном компьютере

Всплеск внимания к технике сплэтинга связан с представленной в августе этого года статьей 3D Gaussian Splatting for Real-Time Radiance Field Rendering [Трёхмерный гауссов сплэтинг для рендера radiance field в реальном времени]. До этого, в июле, эта научная работа исследователей Университета Лазурного берега, Института информатики Общества Макса Планка и французского Национального института исследований в информатике и автоматике вошла в пятёрку лучших работ SIGGRAPH 2023.

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

Сейчас исследователи бьются над поиском практического применения технологии и сканированием движения. В оригинальной работе речь идёт о воссоздании в первую очередь статичных сцен.
Читать дальше →
Total votes 65: ↑65 and ↓0 +65
Comments 13

Аудит пользователей Spring Data JPA

Reading time 5 min
Views 5.2K

Задача: в БД необходимо фиксировать кто создал сущность, кто её обновил, и кто её удалил.

Все знают, как взять пользователя из контекста и сунуть его в сущность. Допустим, на уровне сервиса в методе извлечь информацию о нём и «засетать» его в нужные поля (придётся везде таскать этот кусок кода по сервису), а с аспектами как‑то выглядит не явно и накладывает ряд обязательств (например, развешивание аннотаций над методами всякий раз, когда мы что‑то пытаемся сделать с сущностью (новые участники команды могут не знать о такой неявной практике, а старые забыть о ней)).

Мне хотелось полностью делегировать это приложению, но погуглив, я не нашёл какого‑то явного решения. Сейчас расскажу, как мне удалось это сделать:

Читать далее
Total votes 12: ↑11 and ↓1 +10
Comments 18

Лучший софт для автоматизации скриншотов

Level of difficulty Easy
Reading time 6 min
Views 23K
Такие скриншоты присылала Таня

У нас была знакомая девушка Таня (имя изменено), которая делала скриншоты ПК только смартфоном. То есть фотографировала экран — и присылала сделанную фотографию. Всё с телефончика, очень удобно…

В то же время есть масса эффективных инструментов для сохранения копии экрана каждую секунду или минуту, хранения архива, поиска по нему, автоматического копирования на удалённый хостинг и т. д.
Читать дальше →
Total votes 45: ↑45 and ↓0 +45
Comments 61

Новый взгляд на Maven-plugin для IDEA — GMaven

Level of difficulty Medium
Reading time 8 min
Views 5.2K

Привет, меня зовут Григорий Мясоедов, ранее я имел опыт работы в JetBrains в команде build tools, а конкретно занимался Maven-plugin.  В этой статье я хочу поговорить о том как устроен плагин под капотом, его сильных и слабых местах, и о том что я в итоге со всем этим сделал.

Одна из самых частых проблем, которыми я занимался в JetBrains, звучала так - “через командную строку Maven проект собирает, но в IDEA он не импортируется (импортируется с ошибками)”. Как будет показано ниже большинство этих проблем связаны с архитектурой JB Maven плагина.

Читать далее
Total votes 22: ↑21 and ↓1 +20
Comments 26

Gradle для тестировщика

Level of difficulty Easy
Reading time 6 min
Views 5.9K

Всем привет. Меня зовут Ирек, и я в профессиональном IT с 2012 года. Прошел путь от специалиста службы поддержки до разработчика. На данный момент занимаюсь автоматизацией тестирования в компании РТК ИТ.

В статье хочу рассказать о полезных для автоматизатора возможностях Gradle.

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 0

Создаем читабельный e2e тест для микросервисов на Spring Boot с помощью Cucumber 7 и Wiremock

Level of difficulty Medium
Reading time 7 min
Views 6.2K

Дорогой читатель, это мой первый туториал и если я что-то упустил или не объяснил, хотя стоило бы, напиши пожалуйста комментарий и я обновлю статью.

TL;DR

Весь код для микросервисов и e2e теста тут

Рекомендую быстро пробежаться по коду перед прочтением статьи т к в самой статье я объясню только неочевидные моменты реализации e2e тестирования.

Читать далее
Total votes 8: ↑8 and ↓0 +8
Comments 2

Spring Data JPA: проекции в запросах

Reading time 8 min
Views 13K

Вероятно, первое, что приходит вам на ум, когда вы реализуете запрос с помощью Spring Data JPA — это проекции. Это связано с тем фактом, что проекции определяют атрибуты сущности и столбцы базы данных, возвращаемые вашим запросом. А возможность выбирать нужные столбцы очень важна для вашей бизнес-логики. Также это имеет решающее значение для производительности вашего приложения и поддерживаемости вашего кода. Вы можете (и должны) выбрать такую проекцию, которая минимизирует накладные расходы и предоставляет данные в наиболее удобной для использования форме.

Читать далее
Total votes 9: ↑8 and ↓1 +7
Comments 1

Spring-потрошитель: жизненный цикл Spring Framework

Level of difficulty Medium
Reading time 8 min
Views 43K

Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.

Но насколько хорошо вы знакомы с жизненным циклом фреймворка? Наверняка вы сталкивались с проблемами поднятия контекста и освобождением ресурсов при его остановке, когда проект разрастается. Сегодня я попытаюсь наглядно показать вам это.

Читать далее
Total votes 19: ↑15 and ↓4 +11
Comments 9

Spring Data JPA и upsert

Level of difficulty Medium
Reading time 10 min
Views 14K

Всем привет! Есть достаточно распространенная задача: нужно вставить новую запись в БД, но если она уже там есть, то её следует обновить. Эта ситуация может встретиться, например, если у вас есть 2 источника данных, каждый из которых передает половину информации об объекте, и ваш сервис должен склеить части вместе по какому‑то внешнему идентификатору. Но вы не знаете, в каком порядке к вам попадут эти половинки. Предлагаю посмотреть, как это можно сделать, если сервис использует Spring Data JPA.

Читать далее
Total votes 5: ↑5 and ↓0 +5
Comments 12

Spring Boot. Настройка профилирования времени выполнения

Level of difficulty Easy
Reading time 9 min
Views 6.1K

В процессе работы над одной из задач возникла необходимость промониторить время исполнения отдельных участков кода одного из микросервисов для того, чтобы отловить узкие места и попытаться эту ситуацию исправить.

Т.к. речь шла о сервисе, который был написан довольно давно, и в него многие месяцы не вносились изменения, повинуясь принципу “работает - не трогай”, я решил постараться сделать это, не прикасаясь к самому коду сервиса.

Читать далее
Total votes 7: ↑6 and ↓1 +5
Comments 13

Цикл постов про Keycloak. Часть первая: Внедрение

Reading time 18 min
Views 47K

Цикл постов про Keycloak (часть 1): Внедрение.

О чем речь?

Это первая часть серии статей о переходе на Keycloak в качестве SSO в условиях кровавого enterprise.

Читать далее
Total votes 29: ↑27 and ↓2 +25
Comments 6

Javarush, так ли полезно спустя 9.5 лет?

Reading time 3 min
Views 35K

Про Javarush, писали уже многие, в этой статье хотелось бы выразить свое мнение буквами и символами. Как вы уже наверняка знаете, Javarush - это весьма интересный проект, который предлагает обучение языку программирования Java, здесь вы изучите основы, решая простые (и не очень) практические задачи, в формате интерактивного комикса, где ВЫ главный герой.

Читать далее
Total votes 7: ↑6 and ↓1 +5
Comments 13

Mockoon

Reading time 7 min
Views 8.6K

Привет, хотелось бы рассказать о приложении для организации мок-сервера Mockoon. Это довольно удобная и мощная программа, но в русскоязычном сегменте интернета про нее ничего не нашлось, поэтому решил поделиться опытом использования с примерами возможностей.

Читать далее
Total votes 6: ↑6 and ↓0 +6
Comments 0

Information

Rating
Does not participate
Location
Bacharach, Rheinland-Pfalz, Германия
Date of birth
Registered
Activity