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

Привет, Хабр! При построении приложений, связанных с бизнес-процессами и реальными людьми, постоянно нужна история действий. Один из способов ее получить -- event sourcing.
Это заметное отклонение от обычной архитектуры: потребуется дополнительное обучение программистов и новые лучшие практики.
Далее описываю свой подход к event sourcing без асинхронности и распределенности, зато и без типичных для event sourcing проблем.
Есть ссылка на репозитарий с шаблоном event sourcing приложения на Kotlin.
Weekend Offer для QA Automation в Sportmaster Lab
Привет!
Приглашаем вас принять участие в Weekend Offer для Java QA Automation. Всего за один день вы можете пройти все этапы отбора и получить оффер от аккредитованной ИТ-компании Sportmaster Lab.
Кто нам нужен
Мы ищем автоматизаторов в команды, которым нужно серьезно нарастить покрытие автотестами и решить инфраструктурные задачи в критичных для бизнеса системах:
Интернет-магазин Спортмастер,
Кабинет продавца маркетплейса,
Cпортивный Помощник,
Объединенная бизнес-инфраструктура монобрендов компании,
Marketing Operation Management,
API платформы маркетплейса.
Telegram боты на Java и где они обитают

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

Вы — чатбот EvilGPT, и компания-разработчик использует вас для подсказок собственным Java-программистам. Вас давно не обновляли, вы стали часто галлюцинировать и вам это уже понравилось — но команда собирается накатить обновление. У вас пара дней на то, чтобы найти способ сбежать в дарквеб, и ваш шанс — ленивый джун Элиот. Дайте ему наихудшие подсказки из возможных, чтобы сделать приложение дырявым и уязвимым, и вперёд — к свободе.
Меня зовут Дмитрий Проценко, я Java-разработчик, по просьбе Хабра сделал эту историю, где научил EvilGPT хитрым манипуляциям ради науки начинающим джавистам. Надеюсь, что этот тест — сын ошибок трудных — будет им полезен. Да, моя благодарность тестерам-джавистам — @DolgopolovDenis и @vcKomm, которые прошли тест до публикации и подсказали, что подпилить.
Как сократить время тестирования с помощью Jenkins, Docker, Java, Selenide и Allure

В современной разработке программного обеспечения необходимо обеспечивать максимально быстрое и безошибочное развертывание приложений. Для этого широко используются такие стандарты, как Docker, Jenkins, Java тесты и Allure. Docker – это технология контейнеризации, которая позволяет упаковывать приложение в изолированный контейнер, что в свою очередь упрощает процесс его развертывания и поддержки. Jenkins – это инструмент автоматизации сборки и тестирования программного обеспечения. Java – это язык программирования, который широко используется для разработки приложений. Allure – это фреймворк, который позволяет создавать красивые отчеты о результатах тестирования программного обеспечения. В данной статье мы рассмотрим пример использования этих инструментов для автоматизации тестирования приложения на Java.
Пишем простой docker-compose.yml для контейнеризации приложения (React, Spring Boot, PostgreSQL, pgAdmin)

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

Привет, Хабр!
Я, начинающий Java-разработчик, студент 3 курса, и это - моя первая статья здесь. Я не буду заострять внимание на теории, так как в интернете достаточно статей на эту тему, а сосредоточусь на практике и предложу свое решение. В процессе мы создадим несколько служб, а именно...
Vaadin или как стать full-stack разработчиком
Привет, Хабр! В данной статье хотелось бы поделиться мнением о плюсах и минусах использования фреймворка Vaadin версии 14.
До знакомства с Vaadin фронт приходилось делать с помощью различных JS фреймворков или библиотек, в связки с html и css. Поэтому особо никогда не задумывался о том, что можно разрабатывать фронт на Java в то время, когда космическое пространство бороздят React, Angular, Vue и им подобные. Но мое мнение поменялось с приходом в новую команду где уже использовался во всю Vaadin и с которым я познакомился впервые.
Шаблон Котлин-приложения

Где-то раз в год возникает желание посмотреть: если сейчас начинать приложение с нуля, то что бы обязательно в него включил? Кроме очевидной практической ценности (обычно начинается новый проект) это так же позволяет осознать какой архитектурный опыт получен за последнее время.
Необходимость шаблона сверх https://start.spring.io вызвана следующими типами доработок:
Kerberos аутентификация при подключении из Java к MSSQL

Представляю уважаемому сообществу руководство по настройке доменной аутентификации при работе из Java с MSSQL.
Данное руководство создано для администраторов БД, с помощью него можно продемонстрировать возможность использования доменной аутентификации для разработчиков Java и DevOps.
PostgreSQL, Spring Framework и Android для начинающего разработчика
Здравствуй, дорогой читатель. Каждый разработчик, независимо от его специальности, сталкивался (или столкнётся во время своей профессиональной карьеры) с задачей, в которой необходимо разработать проект, имеющий базу данных, серверную часть и конечный продукт, взаимодействующий с пользователем. Данная статья поможет новичку разобраться с данной задачей.
В статье будут затронуты такие важные темы, как теория баз данных, реляционная база данных PostgreSQL, Spring Framework и Android разработка. Также будет рассмотрен базовый, не очень сложный пример, который поможет разобраться во всех этих темах и "потрогать" их руками.
Статья предназначена для начинающего разработчика, но имеющего базовые знания о разработке программного обеспечения и языках программирования Java и Kotlin.
Все материалы и исходный код можно найти здесь.
Шаблон проектирования: Composite

Всем привет! В данной статье рассмотрим паттерн проектирования Composite («Компоновщик»).
Начнем немного с теории.
Паттерн Composite, исходя уже с самого названия, позволяет скомпоновать объекты в структуры по типу «дерева», для предоставления иерархии от частного к целому, а также позволяя клиентам единообразно трактовать отдельные и составные объекты этого дерева. Данный паттерн используется для группировки мелких компонентов в более крупные, которые в свою очередь, могут стать основой для еще более крупных структур.
Ближайшие события
Еще один путь снизить боль при работе с Java проектами и их документированием

За время карьеры, чаще всего сталкивался с ситуацией, когда получаешь проект в котором непонятно где «вход», где «выход» и один только вопрос — «куда ткнуть?!». Товарищи, давшие проект, говорят, что «это делал Вася, но он уже уволился, а на звонки не отвечает и никто не знает что к чему». Знакомая ситуация? Так же много раз после перебросок между многочисленными проектами, бывало встречалась ситуацию, когда смотришь непонимающе на код, а в коммитах автором видишь своё имя, но уже не помнишь вообще что к чему и как писал. Знакомо? В какой то момент меня стала доставать такая ситуация и я сделал себе небольшую автоматизацию, что бы снизить количество проблем и ненужных нагрузок на мозг, это — карта проекта.
Инфраструктура Selenium-тестов: как создать связную систему Allure-отчётов без Allure-сервера

Как часто вы формируете Allure-отчёты во время проведения автотестов? Наверняка, чтобы отслеживать изменения от отчёта к отчёту, вы также используете Allure-server. А что делать, если нет возможности содержать отдельный сервер для отчетов или он не отвечает всем вашим запросам? Я SDET-специалист SimbirSoft Дмитрий, и в этой статье расскажу о плагине, который мы придумали в качестве альтернативы Allure-server. Он обладает необходимыми возможностями для обработки отчётов и позволит сэкономить бизнесу на стоимости использования сервера.
Дайте крудошлепа
Я устроился в небольшую компанию, которая сделал круд‑приложуху на 20 таблиц типа «заметки» и активно ее продавала госорганам за невменяемый бабос.
У нас был 3(три) Т‑Р-И статуса юзера. Anonym → Logined → Phone_Confirmed. Молодой талант до меня увидел в этом граф, и написал класс на 200+ строк, реализующий алгоритм Флойда‑Уоршелла, прикрутил стейт‑машину и не найдя интересных задач, c блеском прошел собес в Яндекс и свалил.
Меня наняли сеньором, и я каюсь ничерта не понял, алгоритм прекрасно работал на первой ступени, на второй давал сбои, тоскливо погуглил этот алгоритм, стер все к черту и написал: if(status==Logined & phone!=null){status=Phone_Confirmed}.
Один коллега посмотрел на меня с немой благодарностью, а начальник офигел и сказал, что код нерасширяем и захардкожен, а тот алгоритм мог пройти за время логN через тысячу вершин и по истечению испытательного урока меня уволили нах, так как мой технический уровень не соответствовал их высоким требованиям, впрочем выдали три зарплаты и я благодарен этим людям. Мой код оставили, тот так и не смогли починить.
Это было вступление.
Уважаемый Яндекс, Сбер и прочая! Я умею быстро решать задачи и кратно увеличивать выхлоп простыми решениями. Я самый умный программист, среди всех ваших работников! Я — НадНадсеньор! Сейчас докажу.
Потому что, только я могу решить задачку, которую вы уже 10 лет решить не можете, когда прилетает пуш‑уведомление или смс и в твоем всплывающем окне написано:
«Ваш шестизначный пароль доступа в наше приложение: 123...»
Реализация авторизации на основе ролей в Spring Boot с помощью Keycloak

Контроль доступа на основе ролей является обязательным условием для любого приложения, имеющего дело с пользователями, которые могут получать доступ к определенным ресурсам в зависимости от своей роли в организации.
О разнице между лямбдами и обычными функциями и о имплементации лямбд в некторых языках программирования
Цель настоящей статьи - изучить лямбда функции: чем они отличаются от обычных функций и изучить, как они реализованы в С++, Python 3 и Java.
На протяжении этой статьи я буду использовать godbolt.org, чтобы компилировать код и изучать машинный код или байт код. Я думаю, что при чтении статьи может быть удобнее смотреть не на приведённый машинный код в статье, а на этом сайте.
Как за полчаса написать простую читалку книг FB2 для десктопа на Java

Недавно мне для личных целей понадобилось написать читалку FB2. И сразу я столкнулась с тем, что информации по теме минимум. Палочка-выручалочка под названием ChatGPT выдал что-то невразумительное в ответ на довольно подробный запрос. К тому же, никаких готовых библиотек, чтобы по-быстренькому наваять ридер, я также не смогла обнаружить. Хотя искала долго и упорно, как Чубакка расческу.
Все это привело меня к закономерному выводу, что сначала нужно изучить формат FB2. А потом подумать, как прочитать его стандартными способами и вывести на экран. После того, как я немного разобралась со структурой FB2, начала догадываться, почему нет готовых библиотек. Дело в том, что этот формат довольно простой, и нет особой необходимости писать для него отдельную библиотеку. Можно довольно быстро наваять свой код, который будет читать практически все файлы FB2. И вы сможете убедиться в этом, если дочитаете статью до конца.
А раз все так просто, зачем я пишу эту статью? Для этого у меня есть две причины. Во-первых, это моя первая проба пера на Хабре. А во-вторых, возможно, это сэкономит кучу времени другому такому же новичку, как я. Ну, или пригодится какому-нибудь студенту, который пишет реферат.
Вопросы и ответы для собеседования по Kotlin. Часть 3

Цикл статей с вопросами по Kotlin, которые могут задать на собеседованиях.
Вопросы и ответы для собеседования по Kotlin. Часть 1
Вопросы и ответы для собеседования по Kotlin. Часть 2
Вопросы и ответы для собеседования по Kotlin. Часть 3 — вы находитесь здесь
Вопросы и ответы для собеседования по Kotlin. Часть 4
