Обновить
-20
@sengloryread⁠-⁠only

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

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

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

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

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

Читать далее

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

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

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

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

Дисклеймер:

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

Читать далее

Как я с 0 поднял свой уровень английского до B2 и подтвердил этот уровень на «самом известном языковом экзамене»

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

Привет, Хабр!

В этой статье я расскажу о своем опыте изучения английского языка и поделюсь вещами которые работали и не работали для меня. Процесс изучения языка очень индивидуален, и никогда нельзя утверждать что верный какой-то один метод / схема (хотя некоторые статьи на Хабре прямо говорят: вот этот метод правильный, а вот этот нет).

Начнем с бекграунда и причин.

Я – инженер машиностроитель (мой профиль – торцевые уплотнения вращающихся валов). Я начал работать в своей отрасли сразу после бакалавра, параллельно заканчивая магистратуру, и как только я начал работать, я стал стараться впитать как можно больше теоретических знаний по моей специальности из академических источников. Достаточно бысто я понял, что последняя серьезная книга по моей специальности на русском языке была написана в 1978 году. И спустя больше чем 40 лет технологии сильно поменялись, а вот их описание на русском языке отсутствовает. Зато я нашел на reddit людей работающих в штатах в моей же отрасли. Они мне насоветовали кучу классной литературы. Разумееется, она вся на английском, и русского перевода не имеет.

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

Конечно, перед началом обучения я прочитал много статей на хабре о том как люди учат языки. Некоторые из них поражали скоростью овладения материалом (что-то вроде с нуля до fluent за 4 месяца). Но одна вещь была неизменна – у всех был какой-то план изучения языка.

Читать далее

Логи из docker compose / docker swarm в Grafana / Loki быстро и просто

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

Хочу показать как развернуть готовый и полностью работающий стек мониторинга Grafana + Loki + Prometheus + Pushgateway + Promtail за пару минут (в прямом смысле этого слова), без необходимости устанавливать на машину дополнительное ПО (плагины docker и плагины логирования) и собирать логи со всех контейнеров машины (или сразу со всех нод, в случае с swarm).

Читать далее

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

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

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

Читать далее

Создание простого и работоспособного генетического алгоритма для нейросети с Python и NumPy

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

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

У меня никогда не получалось найти такой алгоритм и чтобы он работал, и был простым, и его можно было использовать, поэтому я приступил к созданию своего легкого, простого, прекрасно работающего Genetic Algorithm.

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

Вначале нам потребуется импортировать модули:

Читать далее

PostgreSQL в «Тензоре» — публикации за год (#4)

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

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

Если не видели дайджест за прошлый год — время наверстать упущенное!

Читать далее

SQL HowTo: итоги по строкам и столбцам «в одно действие»

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

Немного отвлечемся от простых SELECT и посмотрим на реальной бизнес-задаче построения различных "тепловых карт" и "шахматок", как знание возможностей SQL может облегчить жизнь и разработчику, и его базе.

Читать далее

Проектирование аналога Google Docs

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

Google docs – это сервис для совместного редактирования документов. В целом подобные сервисы можно спроектировать двумя способами:

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

Большинство коммерческих решений ориентированы на клиент-серверный подход ввиду предоставляемого им более детального контроля. Так что и мы в этой статье разберём проектирование сервиса с использованием именно клиент-серверной архитектуры.
Читать дальше →

Алгоритмы балансировки нагрузки в .NET. Кэширование и Rate Limiting в Ocelot, сравниваем со стандартными средствами .NET

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

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

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

Читать далее

FizzBuzz for Senior

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

Алоха всем.

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

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

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

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

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

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

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

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

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

Читать далее

LLMClone: как клонировать себя в Telegram

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

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

Читать далее

Безопасность web приложений с использованием Identity Provider

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

В современном цифровом мире, где взаимодействие с онлайн-ресурсами и web приложениями стало неотъемлемой частью нашей повседневной жизни, безопасность и управление личной идентификацией стали ключевыми аспектами. Именно в этом контексте становится крайне важным понятие “Identity Provider” или, сокращённо, IdP.

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

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

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

Читать далее

Деплой приложения на Java. Хостим проект через push в Git

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

В статье мы рассмотрим, как развернуть в облаке приложение на Java, на примере Spring Boot приложения с встраиваемой базой данных H2. А именно, мы попробуем развернуть приложение с простым REST API, сборкой Maven и тремя эндпоинтами, позволяющими добавить продукт, получить список всех продуктов и узнать общую стоимость всех продуктов. 

Код приложения из примера можно скачать по ссылке.

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

Читать далее

Автоматизация тестирования с Cucumber, Selenium и Java

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

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

Читать далее

О динамическом программировании на пальцах

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

Как динамическое программирование может упростить нашу жизнь? Как можно оптимизировать решение задач?

Сегодня мы разберем динамическое программирование на пальцах с примерами на Python!

Усаживайтесь поудобнее, леди и джентльмены!

Вперед!

Костыли для ddrescue. Что делать если SSD перестает отдавать данные

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

Первая версия GNU ddrescue была выпущена 12 августа 2004г 19 лет назад. Но не спешите проматывать статью. Это не очередной пересказ мануала или описание алгоритма работы, коих полно в сети. Сегодня я расскажу о ней кое что новенькое.

Если заинтриговал, то обо всем по порядку.

Технология единого входа: как работает SSO

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

Привет, Хабр!

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

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

Первые идеи SSO зародились в конце 1990-х, когда корпоративные сети стали более сложными, и потребность в централизованном управлении доступом стала очевидной. Это был период, когда организации начали искать способы упростить управление учетными записями для своих сотрудников.
В начале 2000-х было активное развитие технологий SSO. Организации начали внедрять SSO для упрощения доступа к корпоративным приложениям и ресурсам. Это также был период появления стандартов, таких как Kerberos, который лег в основу многих ранних реализаций SSO.
С развитием облачных технологий и мобильных устройств SSO начало получать ещё большее распространение. Возникли такие стандарты, как OAuth и OpenID, которые позволили SSO выйти за пределы корпоративных сетей и обеспечить интеграцию с обширным спектром внешних онлайн-сервисов и приложений.

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

Читать далее

Пакуем весь трафик в Ping message, чтобы не платить за интернет | ICMP NAT traversal

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

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

Так вот, переходя ближе к теме. Вы можете воспроизвести подобное поведение очень просто прямо сейчас при помощи вашего мобильного телефона и ноутбука. Я в своём конкретном кейсе буду пользоваться услугами оператора красного цвета, однако проблема актуальна для всех текущих 4 монополистов рынка сотовой связи. Как вам, скорее всего, уже известно, они около года меняют свою политику, внедряя одно интересное нововведение — с вас требуют дополнительной платы за раздачу интернета поверх основного пакета. То есть вы не можете взять и использовать свои 7 гигов на месяц как ресурс для раздачи при помощи точки доступа. Для точки доступа вам предлагают отдельный, зачастую совсем невыгодный тариф. Конечно, можно сменить основной тариф на специальный «тариф для раздачи» и платить втридорога, но, как вы понимаете, сегодня мы в потребителя будем играть совсем недолго. Сейчас по пунктам нужно доказать нечестность подобной политики и с чувством завершённого введения перейдём к непосредственно технотексту.

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

За интернет они платят? — Да.

Раздача как-либо использует ресурсы провайдера сверх нормы? — Нет.
Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность