Search
Write a publication
Pull to refresh
3
0
Sergei @Julegg

Fullstack (Spring+Kafka+Angular+React)

Send message

Пробуем Micronaut или Дорогая, я уменьшил фреймворк

Reading time25 min
Views11K

Пробуем Micronaut или Дорогая, я уменьшил фреймворк


Про фреймворк micronaut я мельком вычитал из дайджест рассылок. Заинтересовался, что за зверь такой. Фреймворк ставится в противовес напичканному всем нужным инструментарием Spring.


Micronaut


Предвосхищая грядущую конференцию для разработчиков, где как раз будут рассказывать и показывать, как использовать micronaut в ваших этих микросервисах, я решил хоть раз подготовиться и прийти хоть с каким-то контекстом в голове, с неким набором проблем и вопросов. Выполнить так сказать домашнее задание. Я решил налабать какой-нибудь небольшой pet-project за пару-тройку вечеров (как пойдёт). В конце статьи будет ссылка на репозиторий всех исходников проекта.

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

JWT-аутентификация при помощи Spring Boot 3 и Spring Security 6

Level of difficultyMedium
Reading time15 min
Views96K

Переход от базовых приложений к более сложным требует использования Spring Security для обеспечения безопасности. Новая версия, Spring Security 6, изменяет некоторые базовые реализации, а русскоязычных материалов на эту тему очень мало. В этой статье мы рассмотрим JWT-аутентификацию и авторизацию с помощью Spring Boot 3 и Spring Security 6, чтобы помочь начинающем разработчикам разобраться и начать пользоваться базовым функционалом этой библиотеки. Цель данной статьи - показать, как использовать JWT-аутентификацию с API-интерфейсами.

Читать далее

Пишем свой spring-boot-starter

Reading time5 min
Views68K
Большинство java-разработчиков уже познакомились с проектом Spring Boot, позволяющим быстро написать приложение, использующее различные компоненты Spring Framework (Spring MVC, Spring Data и многие другие).

Всё удобство Spring Boot основано на использовании так называемых Starter, которые позволяют получить набор сконфигурированных бинов, готовых к использованию и доступных для конфигурации через properties-файлы. Но что делать, если для нужной технологии еще не написано стартера?
Читать дальше →

Spring Security 6. Авторизация и аутентификация на основе Базы данных

Level of difficultyMedium
Reading time3 min
Views25K

Привет. Меня зовут Кирилл, я Java-разработчик. Несмотря на то, что уже год я работаю в компании, по прежнему стараюсь находить время для собственных проектов, с помощью которых осваиваю интересующие меня технологии и подходы. Именно на таком проекте я решил разобраться, как работает авторизация и аутентификация на основе базы данных в Spring Security 6. Изменений, по сравнению с предыдущими версиями немало. Примеры из документации не отвечают на все вопросы в полной мере, а материалов на русском языке по этой теме я, как ни старался, не нашел. Информацию собирал из разных иностранных источников по кусочкам. Теперь поделюсь с вами найденным.

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

Основная проблема заключается в том, что с версии Spring Security 5.7.0 класс WebSecurityConfigurerAdapter признан устаревшим и в дальнейших версиях его использование невозможно. Большинство же существующих на данный момент гайдов опираются на наследование этого класса.

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

Читать далее

Что такое Spring Framework? От внедрения зависимостей до Web MVC

Reading time41 min
Views568K


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


  • Чтобы понять, что такое Spring Framework
  • Как работают ее основные фичи: такие как внедрение зависимостей или Web MVC
  • Это также исчерпывающий FAQ (Перечень часто задаваемых вопросов)

Примечание: Статья ~ 9000 слов, вероятно, не стоит читать ее на мобильном устройстве. Добавьте ее в закладки и вернитесь позже. И даже на компьютере ешь читай этого слона по одному кусочку за раз :-)


Содержание


  • Введение
  • Основы внедрения зависимостей
  • Контейнер Spring IOC / Dependency Injection
  • Spring AOP (Аспектно-ориентированное программирование) и прокси
  • Управление ресурсами Spring
  • Spring Web MVC
  • Дополнительные модули Spring Framework
  • Spring Framework: часто задаваемые вопросы
  • Заключение
Читать дальше →

Дюк, вынеси мусор! — 1. Введение

Reading time13 min
Views238K


Наверняка вы уже читали не один обзор механизмов сборки мусора в Java и настройка таких опций, как Xmx и Xms, превратилась для вас в обычную рутину. Но действительно ли вы в деталях понимаете, что происходит под капотом вашей виртуальной машины в тот момент, когда приходит время избавиться от ненужных объектов в памяти и ваш идеально оптимизированный метод начинает выполняться в несколько раз дольше положенного? И знаете ли вы, какие возможности предоставляют вам последние версии Java для оптимизации ответственной работы по сборке мусора, зачастую сильно влияющей на производительность вашего приложения?

Попробуем в нескольких статьях пройти путь от описания базовых идей, лежащих в основе всех сборщиков мусора, до разбора алгоритмов работы и возможностей тонкой настройки различных сборщиков Java HotSpot VM (вы ведь знаете, что таких сборщиков четыре?). И самое главное, рассмотрим, каким образом эти знания можно использовать на практике.
Узнать

Пришел, увидел, обобщил: погружаемся в Java Generics

Reading time17 min
Views362K
Java Generics — это одно из самых значительных изменений за всю историю языка Java. «Дженерики», доступные с Java 5, сделали использование Java Collection Framework проще, удобнее и безопаснее. Ошибки, связанные с некорректным использованием типов, теперь обнаруживаются на этапе компиляции. Да и сам язык Java стал еще безопаснее. Несмотря на кажущуюся простоту обобщенных типов, многие разработчики сталкиваются с трудностями при их использовании. В этом посте я расскажу об особенностях работы с Java Generics, чтобы этих трудностей у вас было поменьше. Пригодится, если вы не гуру в дженериках, и поможет избежать много трудностей при погружении в тему.


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

Интеграция видеоплеера YouTube во Flutter

Level of difficultyMedium
Reading time4 min
Views3.2K

Hola, Amigos! Меня зовут Вова Зевеке, я Flutter-разработчик в Amiga. В одном из проектов передо мной стояла задача — интегрировать видеоплеер во Flutter- приложение, с которого можно было бы смотреть видео с YouTube. Казалось бы, подключаем  пакет youtube_player_flutter и всё готово. Но не тут-то было, я столкнулся с рядом проблем, о решении которых рассказываю в статье.

Читать далее

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

Level of difficultyMedium
Reading time12 min
Views45K

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

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

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

Читать далее

Как выполнять тестовые задания для java- джуниоров/стажеров, чтобы попасть на собеседование

Reading time4 min
Views27K
Недавно в силу своей работы, мне довелось отбирать стажеров в нашу компанию. Все кто еще помнит как это — быть стажером/джуном, должны помнить как сложно без опыта воткнуться в более-менее нормальное место, где будут тратить ресурсы на твое обучение. Из-за того, что поток начинающих разработчиков очень большой, у работодателя есть возможность выбирать из этого потока если и не самых лучших, то как минимум толковых, перспективных ребят, на которых стоить потратить время на обучение, чтобы потом их у себя трудоустроить.

У каждой компании своя методика поиска таких кандидатов. Мы, на сегодняшний день, придерживаемся следующей: даем небольшое тестовое задание (около часа работы, для опытного разработчика), для выполнения которого достаточно знаний java-core и просим выложить его на гитхаб. По времени выполнения не ограничиваем. Затем, качественно выполнивших задание соискателей приглашаем на собеседование.

image

Задание обычно содержит реализацию CRUD методов в файл через консольное меню с одной-двумя сущностями плюс валидацию некоторых полей. В качестве примера приведу классическую ситуацию с пользователем, которому нужно реализовать валидацию email и телефона, по заданному шаблону и к этому иметь возможность ввести от 1 до 3 телефонов. Откликов приходит очень много, а мест очень мало — соответственно отбор достаточно жесткий.
Читать дальше →

Docker: как развернуть фуллстек-приложение и не поседеть

Reading time13 min
Views172K
«Нам нужен DevOps!»
(самая популярная фраза в конце любого хакатона)

Сначала немного лирики.

Когда разработчик является отличным девопсом, умеющим развернуть своё детище на любой машине под любой OC, это плюс. Однако, если он вообще ничего не смыслит дальше своей IDE, это не минус — в конце концов, деньги ему платят за код, а не за умение его разворачивать. Узкий глубокий специалист на рынке ценится выше, чем средней квалификации «мастер на все руки». Для таких, как мы, «пользователей IDE», хорошие люди придумали Docker.

Принцип Docker следующий: «работает у меня — работает везде». Единственная программа, необходимая для деплоя копии Вашего приложения где угодно — это Docker. Если Вы запустили своё приложение в докере у себя на машине, оно гарантированно с тем же успехом запустится в любом другом докере. И ничего, кроме докера, устанавливать не нужно. У меня, к примеру, на виртуальном сервере даже Java не стоит.
Читать дальше →

REST API Best Practices

Reading time7 min
Views454K
Привет, Хабр! Представляю вашему вниманию перевод статьи "REST API Best Practices" автора Krishna Srinivasan.

REST становится общим подходом для представления сервисов окружающему миру. Причина его популярности заключается в его простоте, легкости использования, доступе через HTTP и другие. Существует неправильное представление о том, что все данные, доступные через сеть, считаются REST, но это не так. В этой статье я собираюсь объяснить вам некоторые best practices, которые вы должны всегда помнить при реализации собственного REST приложения. Я бы хотел услышать ваш опыт в REST приложениях, поэтому если вы знаете best practies, которые не упомянуты в этой статье, пожалуйста, поделитесь с нами в комментариях.

Disclamer: все best practies основаны на моем личном опыте. Если вы имеете другое мнение, не стесняйтесь отправлять его мне на email, и мы обсудим его.

Здесь представлен список best practices, которые будут обсуждаться в этой статье:

1. Конечные точки в URL – имя существительное, не глагол
2. Множественное число
3. Документация
4. Версия вашего приложения
5. Пагинация
6. Использование SSL
7. HTTP методы
8. Эффективное использование кодов ответов HTTP
Читать далее

Самодельные Hi-End напольники

Reading time9 min
Views68K

Ещё в студенческие годы родилась мысль сделать клон английских колонок Proac response 2.5. Они уже давно сняты с производства, но в своё время стоили около $4500 за пару. Пожалуй, современным аналогом этих колонок можно назвать модель того же производителя Response D30S. Беглый поиск показывает цену на них в районе £5500 в самой Англии, и $7800 за пределами - в общем, цены примерно такие.

Хорошая новость в том, что динамики для этих колонок производит датская компания ScanSpeak, и их можно купить отдельно, так же как и компоненты для фильтров. В итоге, клон можно собрать примерно за 10-15% от цены оригинальных колонок, в зависимости от отделки.

Помню, что в студентеские годы комплект динамиков стоил около 15.000р, и они свободно продавались в России. Но даже таких денег у меня не нашлось, поэтому проект застрял лет на 10. И вот недавно я зашёл на сайт производителя, и обнаружил, что высокочастотник собираются снять с производства. Решил - если не соберу колонки сейчас, то уже никогда не соберу.

И начал сборку

Современная серверная разработка на языке Java: 1. Инструменты разработчика

Reading time7 min
Views22K

Приветствую, уважаемый читатель!

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

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

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

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

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

Читать далее

Создание telegram web apps и взаимодействие с ними в телеграм ботах

Reading time8 min
Views349K

В обновлении Bot API 6.0 телеграм-боты получили много новых функций. Из них для разработчиков самая примечательная - Telegram Web Apps (Веб-приложения внутри телеграм). С этим нововведением разработчики могут подключать к своим ботам web-приложения, которые открываются в дополнительном окне, что сильно расширяет инструментарий, а, следовательно и функционал ботов в телеграм.

Читать далее

Как изучить SQL за ночь или шпаргалка для системного аналитика

Level of difficultyEasy
Reading time10 min
Views179K

Помните, как вы были студентами, и готовились к экзаменам по ночам?

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

Изучите теорию на примерах и закрепите на 13 практических задачах по SQL.

Читать далее

Мой опыт заказа кастомной электрогитары

Reading time15 min
Views20K

Привет, Хабр! Расскажу о своём опыте заказа электрогитары, на примере Рыбки Holst-60 — подписной модели основателя и гитариста группы Ария Владимира Холстинина, разработанной к его 60-летнему юбилею с его деятельным участием.

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

Приятно, когда заботятся о таких нюансах! Насколько хорошо продуманы и реализованы другие аспекты, расскажу далее.
Заодно поговорим о дизайне и комплектующих современных электрогитар.

Основы теории вероятностей с помощью Python

Reading time8 min
Views34K

Привет, Хабр! Я очень долго собирался с мыслями, чтобы попробовать опубликовать свою статью в вашем сообществе, это дебют, поэтому буду рад услышать в комментариях обратную связь по поводу содержимого материала. Тематика сегодняшнего сообщения – это разбор базовых понятий в теории вероятности с помощью языка программирования Python.

Прежде чем приступить к изложению базовых понятий немного расскажу о себе, о профессиональном опыте, чтобы вы могли иметь представление об авторе. Я окончил Уральский Федеральный Университет по направлению бизнес-информатика и сейчас работаю младшим научным сотрудником в Институте экономики Уральской Академии наук (г. Екатеринбург). В основном направление, по которому я обучался, опиралось на моделировании бизнес процессов. Было конечно немного статистики и теории вероятности, но по мере своего профессионального роста знаний, полученных в университете, мне оказалось недостаточно, поэтому сейчас я вспоминаю изученный материал и постепенно изучаю новый. В качестве такого своеобразного отчёта о проделанной работе принял решение публиковать небольшие статьи здесь. Надеюсь для новичков, которым собственно я и являюсь по сегодняшний день данный материал будет полезен.

За основу для изучения взял оксфордский учебник на английском языке «Bayesian Statistics for Beginners» (автор Therese M и Ruth M.Mickey). Если у вас есть какие-то базовые знания по математике, которые вы хотите углубить или вспомнить данная книга как раз для вас. Мне очень понравилось её необычное изложение в форме интервью, достаточно простой английский (для уровня B1-B2). Думаю, если вы часто читаете документацию на английском языке или ещё лучше научную литературу, учебник можно осилить практически без словаря. Сама книга – цветная, читать формулы – одно удовольствие. В общем зарекомендовал как мог.

Читать далее

Европейские альтернативы американским интернет-сервисам

Reading time8 min
Views17K

Зашифрованное хранилище файлов CryptDrive.cz (Чехия)

Судя по последним событиям, Евросоюз начал по-взрослому давить на Google, Facebook и другие американские компании, которые собирают персональные данные европейских граждан и отправляют в США.

Например, в начале 2022 года популярный инструмент Google Analytics уже запретили к использованию в трёх странах Евросоюза. Чего нам ожидать дальше? Простая экстраполяция:

  • Во-первых, остальные страны ЕС запретят Google Analytics.
  • Во-вторых, они запретят другие американские сервисы.
  • В-третьих, действия ЕС скопируют некоторые государства «догоняющего развития» вроде РФ. Хотя необязательно эти государства думают о правах граждан. Просто считают их (граждан) своей собственностью по праву владения.
Читать дальше →

Information

Rating
Does not participate
Location
Hamburg, Hamburg, Германия
Registered
Activity