Сквозное и интеграционное тестирование просто, как юнит-тесты

Когда изменения затрагивают несколько микросервисов, возникает вопрос, как протестировать их в связке. Можно покрыть границы сервисов юнит тестами, а интеграцию проверить, развернув измененный код на тестовом окружении. У такого подхода две главные проблемы: цикл изменения-тестирование-исправления становится достаточно долгим и нужно много полноценных окружений, чтобы обеспечить параллельную работу нескольких разработчиков. Давайте …

[recovery mode] Атака на String.hashCode: прообразы и коллизии

Как-то раз мне понадобилось несколько наборов строк с коллизией по хеш-коду. То есть таких, чтобы значение String::hashCode() совпадало для всех строк в наборе. Блуждание по интернету не дало результатов, примеров было мало и все они довольно однообразны. Поиск по словарям подарил забавную пару "javascript’s".hashCode() == "monocle".hashCode(), но практической пользы не …

[Перевод] Ошибка в stacktrace из продакшена

В этой статье я расскажу про исключительную ситуацию, которая произошла с одним исключением в продакшене Android приложения. Читать далее from Java – Объектно-ориентированный язык программирования https://ift.tt/qNM6Wig

Выходим за пределы JVM. Объясняем на крестиках-ноликах чем хорош Kotlin Multiplatform

Какой есть общий недостаток у мобильной, front-end и back-end разработки и иногда распила микросервисов? Дублирование логики. Очень часто я видел статьи или новости, где одна команда мобильных разработчиков ждет другую, чтобы выкатить релиз. И если с мобильными версиями более-менее все понятно и есть решения, то что делать с браузером? Очень …

Обзор GraphQL-фреймворков на Java

В предыдущей статье мы поговорили о том, что такое graphQL, почему решили на него переходить, какие у него есть достоинства и недостатки. Но что делать дальше, если вы всё-таки решились внедрить graphQL в java-проект? Какие на данный момент есть фреймворки, чем они отличаются и какой вообще выбрать? Именно с этими …

[recovery mode] SOLID на практике в автоматизации тестирования

Как на практике реализовать все принципы и упростить разработку тестирования BDD ? Примером будет интеграционное тестирование, но вам ничего не помешает реализовать для End2End Читать далее from Java – Объектно-ориентированный язык программирования https://ift.tt/TKeH92t

It is Wednesday, my java dudes, или насколько сложно сделать свою JVM

Что делать, если накануне переезда повысилась тревожность, а привычные методы не приносят успокоения? Конечно же вырабатывать дофамин через решение упоротых инженерных задач! Мне стало интересно – насколько тяжко было бы сделать свой интерпретатор байт-кода Java? И насколько сложно было бы научить его “новым трюкам”? Писать я буду на Rust, поэтому …

Как я провел лето. Пишем RPC фреймворк. Часть первая: сетевое взаимодействие

Первая публикация из серии про разработку легковесного RPC-фреймворка на java. Посвящена сетевому взаимодействию при вызове удаленной процедуры. Читать далее from Java – Объектно-ориентированный язык программирования https://ift.tt/J7XaCBv

Холостые циклы в Java

Привет, сегодня поговорим о тонкостях реализации холостых циклов (холостого ожидания) в Java. Эта задача встречается нечасто: за девять с небольшим лет работы я столкнулся с ней лишь пару раз. Тем не менее, тема видится интересной и по ней есть что сказать, так что добро пожаловать! Исходный код примеров доступен здесь. …

Ищем-ищем нужное…

Источник Периодически у каждого возникает такая задача, когда необходимо произвести поиск в какой-либо директории, прямо внутри содержащихся там файлов, и найти нужные файлы по ключевым словам. Именно об этом мы и поговорим в этой статье. Читать дальше → from Java – Объектно-ориентированный язык программирования https://ift.tt/cBQdFUj

Сравнение Quartz, kagkarlsson и кастомной реализации для запланированного задания в реактивном Spring Boot приложении

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

Загрузка ленивых полей

Привет, хабр! Сегодняшняя статья навеяна довольно стандартной ситуацией – существует некий «большой» объект, но для работы приложения далеко не всегда требуется загружать его полностью в память. Для решения такой проблемы существует ленивая загрузка полей. Суть её состоит в том, что загрузка поля объекта откладывается до того момента, как оно [поле] …

Управление временем в Java приложениях

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

Интервью Java-специалистов: тонкости проведения и оценки

Всем привет! Меня зовут Алексей, я занимаюсь автоматизацией тестирования на Java/Kotlin в Tele2. Уже около полутора лет принимаю участие в найме новых сотрудников в роли технического интервьюера. В статье поделюсь с вами своим опытом и расскажу о том, как мы проводим собеседования и на что обращаем внимание при отборе кандидатов. …

Зачем нужна Камунда 7.x и как ее освоить без регистрации и СМС

Когда я работал в компании-интеграторе Камунды 7.х я однажды сказал на совещании, что официальные обучающие материалы настолько скучны, что от них клонит в сон. Товарищи согласились и все закончилось тем, что я на работе нарисовал BPMN-диаграмму упрощенной схемы приготовления метамфетамина (ресерчил из корпоративной сети, ага). Мы тогда решили, что такая …

Чувак, где моя черепаха?

Как написать программу, чтобы победить на конкурсе плохого кода? Этот вопрос я задал сам себе, когда прочёл о необычном челлендже на форуме reddit. Да, вы правильно поняли. Это статья не о чистом коде и правильных тестах. Но здесь не будет и речи о плохом, заурядно плохом коде, том коде, который …

Юнга, стоп, у нас кончились ресурсы. Или как мы оптимизировали наши микросервисы

Всем привет. Как вы все знаете после определенных событий у нас случился ресурсный кризис. И появился запрос на оптимизацию потребляемых ресурсов. Темой и станет оптимизация потребления ресурсов микросервисов и уменьшение времени выполнения наших запросов. Читать далее from Java – Объектно-ориентированный язык программирования https://ift.tt/1OQg7us

Компания Ростсельмаш сливает данные своих клиентов

Компания Ростсельмаш, сливает данные своих клиентов. Сегодня хочу поделиться своим мнением и опытом использования, сервисом картирования от компании Ростсельмаш. У компании есть сервис под название Agrotronic. Который позволяет отлеживать данные по картированию. Для того, чтобы пользоваться их сервисом нужно купить датчики на комбайны, стоимостью от 500 т.р. шт. Поставить их …

[Перевод] Сервер авторизации для микросервисов на Spring Boot

В этой статье рассмотрим, как реализовать аутентификацию с помощью централизованного сервера авторизации (Authorization Server) и API-шлюза (API Gateway). Читать далее from Java – Объектно-ориентированный язык программирования https://ift.tt/uQkWKyT

Кастомное автоматическое обновление конфигураций клиентов Spring Cloud Config Server. Часть 1: настройка клиента

Описывается, как можно инициировать автообновление клиентов Spring Cloud Config Server без использования Spirng Cloud Bus или какой-либо иной вспомогательной технологии в качестве посредника Читать далее from Java – Объектно-ориентированный язык программирования https://ift.tt/p8ysvCx

Back to Top