Обновить
256K+

Java *

Объектно-ориентированный язык программирования

183,92
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Формирование PKCS#7 detached signature для авторизации через систему ЕСИА

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели5.3K

Всем привет! Меня зовут Богдан, я тимлид java-команды в одном из российских банков. И да, конечно, вот мой телеграм где я делюсь буднями нашей разработки и всякими эдакими приемами которые мы используем.

Недавно появилась необходимость интеграции с авторизацией через систему ЕСИА о сути такой интеграции можно почитать например тут. Статья же про то как правильно средствами исключительно java, без всяких крипто про и прочих платных СКЗИ сформировать подпись запроса в формате PKCS#7 detached signature с использование ГОСТ сертификата и ГОСТ Р 34.10-2012 алгоритма подписи.

Не люблю читать водянистые лонг риды, а еще более не люблю их писать, по этому прошу любить и жаловать, код для использования в ваших проектах: https://github.com/BlackSan11/esia-crypto, ведь что может здесь быть более красноречиво, чем код и библиотека в централе? :)

Читать далее

Как сделать первый деплой Java приложения на удаленный сервер. Инструкция от/для новичка

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели26K

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

Так у меня и родилась идея сделать одну полную инструкцию (прежде всего для себя), где в одном месте будет описан процесс деплоя. Если Вы читаете эту статью, значит мне удалось решить проблему «первой публикации приложения на сервер». К Вашему вниманию любимая рубрика «инструкция для чайников – как самостоятельно сделать свой первый деплой».

Дисклеймер:

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

Читать далее

Spring prototype при помощи Lookup

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели19K

У бинов в Spring бывают разные области действия. Стандартной областью является Singleton.

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

В этой статье разберем бины со скоупом prototype. Рассмотрим пример использования аннотации @Lookup. Статья поможет новичкам увидеть наглядный пример создания прототайп бина при помощи использования аннотации @Lookup.

Читать далее

MVC — это не Spring Web

Время на прочтение2 мин
Охват и читатели8.2K

Хочу поделиться тем, как я вспомнил о MVC паттерне, и как он помог мне сделать архитектуру моей библиотеки в разы выразительней. Легкая статья в стиле до и после.

Читать далее

История создания агрегатора для фриланс бирж

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели3K

Привет, читатель, хочу поделиться своей историей по разработке проекта для сбора фриланс заказов, на данный момент с русских фриланс бирж, реализованных на языке джава, то есть агрегатор. Разработка проекта была начата 15.10.2022. Данная статья будет интересна следующим: оптимизация получения уведомлений о заказах, сравнение своего тестового проекта в области java spring, микросервисная архитектура, запуск такого приложения в докере.

Читать далее

Быстрый старт. SpringBoot + RabbitMQ

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели19K

Было уже достаточно туториалов на тему Rabbit + Spring. В данной статье чуть обновленно описание быстрого запуска очередей. Если ты только начинаешь разбираться с очередями добро пожаловать подcast.

Читать далее

Контейнеризация справочников НСИ

Время на прочтение14 мин
Охват и читатели4.7K

Привет, меня зовут Комаров Алексей, я Java-разработчик в Норникель Спутник. Занимаюсь развитием и поддержкой системы АСУ НСИ (Автоматизированная система управления нормативно-справочной информацией).

В этой статье я хотел бы поделиться успешным опытом создания кастомного веб-приложения для ведения мастер-данных справочника УЕР и его запуска с использованием санкционно-независимого ПО.

Читать далее

Разносим по полочкам этапы тестирования http запросов в Spring

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.7K

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

Речь пойдет об использовании методологии Arrange-Act-Assert применительно к интеграционным тестам на Spring Framework с использованием мокирования (mock) HTTP-запросов к внешним ресурсам, к которым идет обращение по ходу выполнения тестируемого кода в рамках поведения системы. Предлагаемые к рассмотрению тесты написаны с использованием Spock Framework на языке Groovy (см. недавнюю статью по этой теме: Тестируем Spring Boot приложения через Spock Framework). В качестве механизма мокирования будет использоваться MockRestServiceServer. Будет пару слов и о WireMock.

Читать далее

Работаем с enum в kotlin/jvm правильно

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели7.6K

А вы знали, что HashMap для enum уступает по эффективности EnumMap? Или что EnumSet под капотом это обычный long? Под катом несколько рецептов удобного применения этих структур.

Читать далее

Идемпотентность: больше, чем кажется

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели148K

image


Друзья, всем привет! Идемпотентность в проектировании API — не просто формальность. Это свойство, часто рассматриваемое как способ получения одинакового ответа на повторяющийся запрос, на самом деле означает гораздо больше...

Читать дальше →

Проектирование БД рекомендательной системы по подходу DB-first

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели5.6K

В данной статье мы рассмотрим проектирование системы по подходу DB-first и то, какие проблемы он помогает не просто решить, а устранить как явление.

Читать далее

FizzBuzz for Senior

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели11K

Алоха всем.

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

А как быть интервьюерам? Какую задачу дать кандидату? Как понять сигналы, что кандидат «шарит»?

Я наткнулся на интересную статью по интервью на Senior инженера C++. Там у парня спрашивают базовую задачу FizzBuzz.

В этой статье мы рассмотрим бенчмарки различных решений на Java, начиная от простых вариантов и заканчивая многопоточными реализациями. Давайте разбираться вместе!

Читать далее как "Senior" решает FizzBuzz

Stone. Квалификаторы и идентификаторы

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели1.2K

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

Собственные решения для разработчика развивать и разрабатывать оказалось крайне удобно. Архитектура библиотеки и ее фичи разрабатывались под конкретные задачи в проектах. И особенный случай в проекте, заставил переосмыслить всем привычные квалификаторы для DI, и добавить что-то новое.

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

Читать далее

Ближайшие события

Интеграция Keycloak в приложение Spring Boot 3 с использованием протокола OAuth2.0

Уровень сложностиСредний
Время на прочтение27 мин
Охват и читатели57K

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

В данной статье мы рассмотрим процесс интеграции Keycloak в наше приложение Spring Boot 3 в качестве сервера авторизации с использованием протокола OAuth2. Обсудим смысл OAuth2, его механизм работы и сравним его с другими протоколами. Кроме того, мы настроим Keycloak с использованием Docker Compose, воспользовавшись PostgreSQL в качестве базы данных для Keycloak. Затем мы интегрируем Keycloak с нашим приложением Spring Boot 3, используя протокол OAuth2. Также мы подключим Keycloak Admin Client и, наконец, проверим функциональность всей системы.

Читать далее

Простой сервис аутентификации и авторизации по JWT на основе фильтров SpringSecurity

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели24K

Напишем простой сервис аутентификации с выдачей JWToken. Для реализации будем использовать Java 17, Maven, SpringBoot 3.2.0, h2 в памяти. Авторизация и аутентификация будет реализована на основе фильтров SpringSecurity.

Ссылка на проект GitLab

Читать далее

Я нашёл сид Мэла (melharucos) в Майнкрафте

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели13K

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

Сам сид: 3483555484082087413

Читать далее

Операция «K». Ищем баги в коде IntelliJ IDEA

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.4K

В этой статье мы проверим проект IntelliJ IDEA Community Edition на наличие ошибок и отправим наши правки разработчикам. Крупный проект, Open Source база и использование статического анализатора при разработке. Сложная задача для PVS-Studio.

Читать далее

Mockito и как им пользоваться

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели88K

Привет, Хабровчане!

Помню, как в одном из моих первых проектов, мы столкнулись с проблемой тестирования кода, который зависел от внешних сервисов и баз данных. Это было не только трудоемко, но и занимало уйму времени. И сразу стало понятно, что без мокирования нам не обойтись. Мокирование создать поддельные версии сложных объектов или систем, чтобы мы могли тестировать каждую часть нашего кода изолированно. Это упрощает написание тестов и бустит их выполнение.

Несколько строк кода, и вы уже создаете моки для ваших сервисов и DAO! Mockito предоставляет понятный API для мокирования, который делает тесты не только проще в написании, но и более читабельными.

Читать далее

Что требуется для развития рынка цифровых двойников

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели1.9K

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

Цифровые двойники входят в топ-5 мировых стратегических технологических трендов. Ожидается, что в 2024 году технологию внедрят 250 отечественных предприятий, затраты составят 145 млрд рублей по данным дорожной карты «Технет» Национальной технологической инициативы. Давайте разберемся, реальны ли эти прогнозы для России.

Читать далее

Spring Cloud Gateway. Единая точка входа или отказа: путь к non-blocking API gateway

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели50K

Привет, Хабр! Меня зовут Никита Летов, я техлид бэкенд-разработки сервисов дистанционного банковского обслуживания Росбанка для физических лиц, или как модно сейчас говорить, ретейла. В этом посте я расскажу, что такое входная точка в приложение, когда в ней появляется необходимость и какие вообще задачи решает паттерн API Gateway. Мы рассмотрим классический блокирующий подход на примере гейтвея Netflix Zuul 1.x, проблемы, связанные с его эксплуатацией, а также реактивный Spring Cloud Gateway и сложности перехода на него. В заключение сравним два подхода.

Читать далее