Pull to refresh
0
0
Send message

Современные стандарты идентификации: OAuth 2.0, OpenID Connect, WebAuthn

Reading time13 min
Views79K
Пускать или не пускать? Вот в чем вопрос…

Сейчас на многих сайтах мы видим возможность зарегистрироваться или войти с помощью соцсетей, а некоторые сайты предлагают использовать внешние ключи безопасности или отпечатки пальцев. Что это? Стандарты с хорошо проработанной безопасностью или проприетарные реализации? Можем ли мы доверять этим технологиям и использовать их для разработки сайтов и в повседневной жизни? Давайте разбираться. Итак, сейчас существуют несколько стандартов и технологий для идентификации пользователей OAuth 2.0,OpenID Connect, WebAuthn, SAML 2.0, Credential Management API и др. В статье я расскажу о трех наиболее перспективных протоколах OAuth 2.0, OpenID Connect и WebAuthn. И чтобы понять как их применять на практике, сделаем три лабораторные работы. В качестве платформ для идентификации пользователей будем использовать GitHub и Google, на которых у большинства есть аккаунты.

image
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments21

Почти все, что вы хотели бы знать про Docker

Level of difficultyEasy
Reading time11 min
Views53K

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

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

Читать далее
Total votes 65: ↑60 and ↓5+65
Comments57

Как внедрить Prototype в Singleton в Spring с помощью параметра ProxyMode

Level of difficultyMedium
Reading time2 min
Views7.5K

Если просто добавить к определению бина аннотацию @Scope(SCOPE_PROTOTYPE), и использовать этот бин в синглтоне через аннотацию @Autowired – будет создан только один объект. Потому что синглтон создается только однажды, и обращение к прототипу случится тоже однажды при его создании (при внедрении зависимости).

На самом деле вариантов довольно много:

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

MapStruct — смаппь меня, если сможешь

Level of difficultyEasy
Reading time15 min
Views14K

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

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

Spring AOP. Маленький вопросик с собеседования

Reading time20 min
Views128K
Довелось мне тут на днях побывать на очередном собеседовании. И задали мне там вот такой вот вопрос. Что на самом деле выполнится (с точки зрения транзакций), если вызвать method1()?

public class MyServiceImpl {
  
  @Transactional
  public void method1() {
    //do something
    method2();
  }

  @Transactional (propagation=Propagation.REQUIRES_NEW)
  public void method2() {
    //do something
  }
}

Ну, мы же все умные, документацию читаем или, по крайней мере, видео выступлений Евгения Борисова смотрим. Соответственно и правильный* ответ знаем (правильный* — это такой, который от нас ожидает услышать тот, кто спрашивает). И звучать он должен примерно так.

«В связи с тем, что для поддержки транзакций через аннотации используется Spring AOP, в момент вызова method1() на самом деле вызывается метод прокси объекта. Создается новая транзакция и далее происходит вызов method1() класса MyServiceImpl. А когда из method1() вызовем method2(), обращения к прокси нет, вызывается уже сразу метод нашего класса и, соответственно, никаких новых транзакций создаваться не будет».

Но знаете, как это бывает, вроде и ответ правильный уже давно знаешь. И применяешь это знание регулярно. А вдруг раз… и неожиданно задумаешься: «Подождите-ка, ведь если мы используем Spring AOP, то там могут создаваться прокси и через JDK, а могут и с CGLIB; а еще возможно, что CTW или LTW подключили. И что такой ответ всегда будет верен?».

Ну что ж: интересно? Надо проверить.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments16

Генерация OpenAPI из Spring Boot MVC

Level of difficultyMedium
Reading time7 min
Views5.2K

В этой статье посмотрим, насколько хороша генерация в OpenAPI из Spring MVC (спойлер — довольно хороша), какие есть подводные камни и костыли, чтобы с ними справится.

Наше API будет включать:
— валидацию тела и параметров с помощью JSR-303 
— различные коды ответа с помощью ControllerAdvice и без него
— работа с Page и Pageable
— авторизация запросов

Читать далее
Total votes 7: ↑7 and ↓0+10
Comments5

Принципы SOLID, только понятно

Level of difficultyEasy
Reading time6 min
Views68K

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

Изучить принципы
Total votes 80: ↑66 and ↓14+59
Comments94

Пишем простой docker-compose.yml для контейнеризации приложения (React, Spring Boot, PostgreSQL, pgAdmin)

Level of difficultyEasy
Reading time21 min
Views42K

В данной статье описан простой пример написания docker-compose.yml файла на примере контейнеризации приложения с использованием Spring Boot на бэкенде, React на фронте, PostgreSQL в качестве базы данных и pgAdmin - для просмотра данных в базе.

Читать далее
Total votes 14: ↑11 and ↓3+11
Comments16

PostgreSQL, Spring Framework и Android для начинающего разработчика

Level of difficultyMedium
Reading time17 min
Views13K

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

В статье будут затронуты такие важные темы, как теория баз данных, реляционная база данных PostgreSQL, Spring Framework и Android разработка. Также будет рассмотрен базовый, не очень сложный пример, который поможет разобраться во всех этих темах и "потрогать" их руками.

Статья предназначена для начинающего разработчика, но имеющего базовые знания о разработке программного обеспечения и языках программирования Java и Kotlin.

Все материалы и исходный код можно найти здесь.

Читать далее
Total votes 5: ↑3 and ↓2+2
Comments1

Дорожная карта по изучению C++

Reading time6 min
Views120K

Привет!

Представляем вашему вниманию дорожную карту для изучения языка программирования C++. Идея дорожной карты возникла после проведения десятков собеседований молодых разработчиков, которые претендовали на роль Junior Developer C++, но обладали довольно слабой подготовкой по различным причинам.

Заинтересовавшихся приглашаем к прочтению статьи, а также ознакомиться с дорожной картой.

Читать далее
Total votes 58: ↑54 and ↓4+65
Comments75

learnopengl. Урок 1.1 — OpenGL

Reading time7 min
Views332K
Здравствуйте. Несколько недель назад я начинал серию переводов статей по изучению OpenGL. Но на 4 статье один хабровчанин заметил, что мои переводы могут нарушать лицензию, по которой распространяются учебные материалы, предоставленные в исходной статье. И действительно, мои переводы нарушали лицензию. Для разрешения этой проблемы я обратился к авторам того набора уроков, но так и не смог добиться нормального ответа. По этой причине я связался с автором другого, не менее (а возможно даже и более) крутого, набора уроков по OpenGL: Joey de Vries. И он дал полное разрешение на перевод его набора уроков. Его уроки гораздо более обширные, чем прошлый набор, поэтому эти переводы растянутся на долго. И я обещаю, будет интересно. Заинтересовавшихся прошу под кат.

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

На счет уроков по Vulkan: к сожалению мне тяжело сейчас написать уроки по данному API по причине скудной видеокарты на данный момент, которая просто не поддерживает Vulkan API, поэтому уроки по данному API будут только после обновления видеокарты.
Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments9

Information

Rating
Does not participate
Registered
Activity

Specialization

Backend Developer, Frontend Developer
From 60,000 ₽
Git
REST
PostgreSQL
Spring Boot
SQL