Как стать автором
Обновить
4
0.1
Sergei Z. @Julegg

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

Отправить сообщение

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

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

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

Разработка сайта на Тильде на примере реального проекта — подход и разбор решений по UX и UI

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

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

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии2

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

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

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

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

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

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

Читать далее
Всего голосов 16: ↑11 и ↓5+6
Комментарии5

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

Время на прочтение41 мин
Количество просмотров472K


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


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

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


Содержание


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

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

Время на прочтение13 мин
Количество просмотров210K


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

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

Garbage Collection и JVM

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров18K

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

JVM работает как хорошо отлаженный механизм, автоматически распределяя и освобождая память. Это и есть суть Garbage Collection. Это процесс, который автоматически находит и удаляет объекты, которые больше не используются вашим приложением. Благодаря этому, разработчики могут сосредоточиться на логике приложения, не беспокоясь о ручном управлении памятью.

Знание того, как работает GC и JVM, необходимо каждому Java-разработчику. Правильное управление ресурсами напрямую влияет на производительность и стабильность приложений.

Читать далее
Всего голосов 27: ↑24 и ↓3+21
Комментарии7

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

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


Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Комментарии46

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

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.6K

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

Читать далее
Всего голосов 7: ↑6 и ↓1+5
Комментарии1

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

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

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

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

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

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Комментарии2

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

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

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

image

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

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

Время на прочтение13 мин
Количество просмотров146K
«Нам нужен DevOps!»
(самая популярная фраза в конце любого хакатона)

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

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

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

REST API Best Practices

Время на прочтение7 мин
Количество просмотров421K
Привет, Хабр! Представляю вашему вниманию перевод статьи "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
Читать далее
Всего голосов 55: ↑48 и ↓7+41
Комментарии195

Читаем/записываем файл в Андроиде без запроса пермишинсов

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров6.8K

Считаете, что для чтения файла в андроиде нужен

Manifest.permission.READ_EXTERNAL_STORAGE

Сейчас я раскажу как это сделать совсем без запроса пермишинов.

Читать далее
Всего голосов 11: ↑9 и ↓2+7
Комментарии19

JavaFx application with Spring boot

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

В этой статье я продемонстрирую, как с помощью JavaFX и Spring Boot разработать Desktop-приложение с простыми и понятными инструкциями. Рассмотрим плюсы и минусы данного подхода, а так же посмотрим на варианты создания интерфейса для Java приложения. А так же обсудим как можно распространять Java приложение и не заботиться о том что у пользователя может не быть JVM или других необходимых инструментов для работы вашего крутого приложения.

Читать статью
Всего голосов 7: ↑4 и ↓3+1
Комментарии23

Ультра-маленькие демки под DOS

Время на прочтение13 мин
Количество просмотров12K

В статье вы узнаете как сделать маленькие программы для MS-DOS на ассемблере, я покажу как рисовать 2D графику напрямую в видео-буфер. Может быть, вы даже вдохновитесь на создание собственного демо, которое будет ставить рекорды по размерам исполняемого файла.

Читать далее
Всего голосов 75: ↑74 и ↓1+73
Комментарии56

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

Время на прочтение9 мин
Количество просмотров57K

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

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

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

И начал сборку
Всего голосов 91: ↑89 и ↓2+87
Комментарии243

17 убойных репозиториев GitHub, которые нужно сохранить

Время на прочтение6 мин
Количество просмотров137K

Здесь собраны лучшие и самые полезные репозитории Github, которые будут служить вам долгое время.

Читать далее
Всего голосов 174: ↑144 и ↓30+114
Комментарии44

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

Время на прочтение7 мин
Количество просмотров19K

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

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

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

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

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

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

Читать далее
Всего голосов 22: ↑14 и ↓8+6
Комментарии17

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

Время на прочтение8 мин
Количество просмотров220K

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

Читать далее
Всего голосов 32: ↑32 и ↓0+32
Комментарии42

Как я игрульку создал: ч. 1 Предыстория и идея, ч. 2 Игрок и сборщик уровней

Время на прочтение7 мин
Количество просмотров7.1K

Здравствуй, Хабр!

Я хочу поделиться опытом в создании одной гиперказуалки. Сам я, правда, ещё совсем зелен и юн на этой тернистой тропе игроделания, но может кому-то станет интересно и он прочтёт цикл этих статей. Самого кода здесь не будет, а если и будет, то в очень мизерных количествах, в связи с чем вряд-ли эти статьи будут интересны людям, которые хотят применить главную основу программирования "Ctrl+C/Ctrl+V" да и так как я сам новичок то заядлым "про" тут тоже будет скучновато, а плюсом на них может наложиться дебафф "BloodFromTheEyes" от порой наинеумнейших решений наиглупейших проблем. Но всё же опыт есть опыт, так что расскажу что есть.

Хочу прочесть!
Всего голосов 13: ↑11 и ↓2+9
Комментарии9
1
23 ...

Информация

В рейтинге
3 335-й
Откуда
Altenstadt, Hessen, Германия
Зарегистрирован
Активность