Как стать автором
Поиск
Написать публикацию
Обновить
0
Михаил @workHellread⁠-⁠only

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

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

Mockito. Из чего он приготовлен и как его подавать?

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

Думаю, многим довелось выпить какой-нибудь напиток, который глубоко впился в наши вкусовые рецепторы, что нам хочется пить его каждый день. Так вот для меня таким «напитком» стал Mockito. Один раз написав простенький тест, можно вернуть себе веру в магию. Я всё ещё помню, как удивлялся тому, как он работает.

Чему же я удивился? Например, этому:

private static class Apple {
   private String color;
   public String getName() {return color;}
}

@Test
public void basic() {
   Apple apple = mock(Apple.class);
   when(apple.getName()).thenReturn("Red");
   assertEquals("Red", apple.getName()); // true
}

С точки зрения написания кода, это очень красиво и понятно:

  • Мы создаём экземпляр-заглушку для класса Apple.
  • Затем мы как бы говорим, когда вызывается метод apple.getColor(), то верни «Red».
  • Далее мы просто проверяем действительно ли apple.getColor() возвращает то, что мы хотим, и это работает!

Внимание! Не читайте дальше, если и дальше хотите верить в магию. Дальнейшее содержание статьи отнимет у вас и эту толику детского счастья.

Приятного чтения!

Топ-5 курсов по Java для фуллстек-разработчиков

Время на прочтение4 мин
Количество просмотров23K
В этом материале приведены сведения о пяти лучших курсах, предназначенных для тех, кто хочет начать карьеру в сфере фуллстек-разработки на Java. Роль подобных разработчиков стала в наши дни достаточно популярной. Многие компании нуждаются в таких специалистах. Эти специалисты, правда, пользуются не только Java. Среди применяемых ими инструментов можно, например, отметить Angular, Spring, REST API, HTML, CSS, различные системы управления базами данных.

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



Курсы, сведения о которых приведены в этом материале, способны помочь выйти на достаточно высокий уровень тому, кто ничего не знает о программировании на Java и о работе с другими технологиями. Автор материала подчёркивает тот факт, что он никак не связан с организациями, о курсах которых он рассказывает.
Читать дальше →

Как мы переходили на Java 15 или история одного бага в jvm длиной в 6 лет

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

Мы готовились к выходу Java 15 ради некоторых её новых возможностей. В частности — текстовых блоков. Да, они появились в Java 14 (о новых функциях в Java 14 можно посмотреть здесь), но только как превью-фича, а, начиная с Java 15, она стала доступна в виде окончательно готовой функции.

Мы в hh.ru привыкли внедрять и использовать самые современные технологии в разработке ПО. Пробовать что-то новое — одна из ключевых задач команды Архитектура. Пока многие пишут на Java 8, мы уже близки к тому, чтобы отправить на свалку истории Java 11.

Читать далее

Java Core для самых маленьких. Часть 1. Подготовка и первая программа

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

Запускаю серию обучающих статей по Java Core c картинками, без смс и регистрации!

В этой статье мы быстро пройдемся по истории языка Java и его особенностях.
Установим JDK и подготовим ваш камплюктер для работы с ним.
Конечно же поговорим об IDE и установим IntelliJ IDEA.
Создадим, запустим и разберем первую Java-программу.

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

Читать далее

Книга «Стильный Java. Код, который работает всегда и везде»

Время на прочтение13 мин
Количество просмотров7.1K
image Привет, Хаброжители! В современном мире разработки успешность приложения уже не определяется параметром «просто работает». Хороший программист должен знать возможности языка, практические приемы проектирования и платформенные средства для достижения максимальной производительности и жизнеспособности программ. Эта книга написана для разработчиков, которые хотят создавать качественный софт. Затронуты все ключевые показатели ПО: скорость, затраты памяти, надежность, удобочитаемость, потоковая безопасность, универсальность и элегантность. Реальные задачи и прикладные примеры кода на Java помогут надежно усвоить концепции. Пройдя все этапы создания центрального проекта книги, вы сможете уверенно выбрать правильный путь оптимизации собственного приложения.
Читать дальше →

Как получилось, что 0,1 + 0,2 = 0,30000000000000004?

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

С детства нас учили, что 0,1 + 0,2 равно 0,3. Однако в загадочном мире вычислений все работает по-другому. Недавно я начал писать код на JavaScript и, читая о типах данных, заметил странное поведение 0,1 + 0,2, не равного 0,3.

Читать далее

Вы часто используете null? А он у нас в спецификации

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

В нынешнее время для большинства разработчиков стали очевидными минусы использования null как возвращаемых типов или передачи их как аргумента.

Младшие разработчики даже если не понимают, то обычно следуют "чистому коду" (прочитав книжку Роберта Мартина). Поэтому код с возможностью возникновения NPE стал встречаться реже, хотя, конечно, они есть.

Не хочу сказать, что любое использование null - это плохо, скорее тут можно сказать "семь раз отмерь, один раз отрежь".

Тем не менее, я долгое время не жаловался насчет NPE, даже когда разработчики с языков у которых строгий контроль на эту тему хвастались своим null-safety. Но из-за одного бага я понял, что просто использование null - это не так страшно, даже если вы возвращаете или передаете его. Разумеется, это очень плохо, но есть вещи хуже - null в спецификациях.

Было бы не особо интересно, если рассказ был об одной компании, которая сделала плохую спецификацию. Давайте вместо этого поговорим о более известной спецификации из Java EE - Java Servlet Specification, а конкретно возьмем класс HttpServletRequest и заглянем в метод getCookies()

Читать далее

Swagger (OpenAPI 3.0)

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

Swagger - это фреймворк для спецификации RESTful API. Его прелесть заключается в том, что он дает возможность не только интерактивно просматривать спецификацию, но и отправлять запросы – так называемый Swagger UI. Также возможно сгенерировать непосредственно клиента или сервер по спецификации API Swagger, для этого понадобиться Swagger Codegen.

Читать далее

Шпаргалка по Spring Boot WebClient

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

WebClient — это неблокирующий, реактивный клиент для выполнения HTTP-запросов.

ПРИМЕЧАНИЕ: Начиная с версии 5.0, этот класс законсервирован и в дальнейшем будут приниматься только минорные запросы на изменения и на исправления багов. Пожалуйста, подумайте об использовании org.springframework.web.reactive.client.WebClient, который имеет более современный API и поддерживает синхронную, асинхронную и потоковую передачи.

Читать далее

Свойства против методов

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


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

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

Jmix / CUBA Platform: итоги 2020 и планы на 2021 год

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

В этой статье я подведу итоги 2020 года и расскажу о планах команды CUBA на 2021. Несмотря на внешние потрясения, прошедший год был очень продуктивным для нашей команды, а новый обещает быть еще интереснее. 

TL;DR

Для тех, кто не знаком с Jmix: это новое поколение CUBA Platform, open source платформы для разработки широкого спектра корпоративных приложений. Jmix включает в себя фреймворк на основе Spring Boot, специализированные инструменты разработки, встроенные в IntelliJ IDEA и набор высокоуровневых компонентов. Такая комбинация значительно ускоряет и упрощает разработку приложений.

С выпуском Jmix в конце года мы фактически переписали бэкенд CUBA Platform, перенеся архитектуру на Spring Boot и сделав его модульным. На этом фундаменте в текущем году мы планируем:

- создать полнофункциональный UI клиент на React, с поддержкой визуальных конструкторов

- интегрировать GraphQL для взаимодействия между клиентом и сервером

- максимально упростить и автоматизировать DevOps

- поддержать возможность создания cloud native приложений

- предоставить больше визуальных инструментов разработчика в Studio, смещая фокус из runtime в design time. 

Чтобы реализовать задуманное, мы хотим удвоить команду разработки и активно ищем единомышленников. Подробности - под катом. 

Читать далее

Кейс: автоматизация тестирования верстки сайта с помощью скриншотов

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

Привет, меня зовут Фахридин Джамолидинов, я специалист департамента тестирования в «Ростелеком ИТ». Занимаюсь автоматизацией тестирования основного сайта компании rt.ru. Наш сайт – это не только витрина для информирования клиентов и продаж услуг и товаров для сегментов B2C, B2B и B2O, он ещё предназначен для обслуживания текущих клиентов: FAQ, чат, формы обратной связи, платежные формы и т.п. Он постоянно обновляется, и каждый раз после выпуска новой версии нужно проверять сотни страниц с богатым, динамичным UI на работоспособность в браузерах и адаптивность вёрстки.

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

Осознавая, что ручное регрессионное тестирование существующего UI превращается в кошмар и отнимает кучу времени, мы решили автоматизировать данный процесс. Сегодня мы покажем, как работает автотестирование по скриншотам – будем акцентировать внимание на функционал aShot, или как помочь автотестам «видеть» ошибки.

Читать далее

Kafkaрианский переезд или как расшевелить партиции

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

Привет, Хабр! Работаю java программистом в одной финансовой организации. Решил оставить свой след на хабре и написать первую свою статью. В силу проблем с наличием девопсеров передо мной была поставлена задача обновить кластер кафки с 2.0 до 2.6 без даунтайма и потери сообщений (сами понимаете, никто не любит, когда денежки зависают в воздухе или где-то теряются). Хочу поделиться этим опытом с Вами и получить конструктивный фидбек. Итак, хватит воды, переходим сразу к делу.

Читать далее

JPoint и Joker: какие доклады запомнились мне больше всего

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

Ушедший 2020 год, как мы все знаем, выдался тихим и спокойным, даже вспомнить нечего. Дом-работа, тихие будни, уютные посиделки — ничего интересного. Разбавить скуку нам помогли онлайн-конференции, и я как джавист поучаствовал в JPoint и Joker.


Ранее уже публиковал свои конспекты некоторых докладов Joker. Однако теперь были открыты все видеозаписи 2020-го, так что любой читатель может лично увидеть доклады, а организаторы позвали меня написать, какие из них привлекли меня больше всего. Дважды меня просить не надо, так что публикую эту статью, в которой перечислю самые интересные для меня доклады. Надеюсь, что она поможет найти полезную информацию и для вас. Ссылки на полные плейлисты конференций — в конце.


Примечание от автора: хотя пост написан по предложению JUG Ru Group, я пишу только о том, что интересно мне самому, и моё мнение может не совпадать с мнением организаторов.


Доклады по теме Performance


Начну я, пожалуй, с доклада Свена Рупперта «Hidden pearls for high-performance-persistence in Java».


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

Java 16 — новые синтаксические возможности языка

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

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

Читать далее

Гибкая авторизация с помощью Casbin и PERM. Практический пример

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

После написания предыдущей статьи по языку PERM и библиотеке Casbin, возникли вопросы. Причем не у одного человека, и я хотел ответить сначала в комментарии, но понял, что объем материала выходит за рамки обычного комментария, поэтому изложу этот ответ в виде отдельной статьи.


Я долго не мог понять ту конкретную конструкцию, которая сидела в голове у вопрошающих, но в конечном итоге после уточняющих вопросов получил ответы, компиляцию которых приведу в цитате.

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

Spring Cloud и Spring Boot. Часть 2: использование Zipkin Server для распределенной трассировки

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

Из прошлой статьи (перевод на хабре, оригинал на англ.) вы узнали, как использовать Eureka Server для обнаружения и регистрации сервисов. В этой статье мы познакомимся с распределенной трассировкой (Distributed Tracing).

Распределенная трассировка используется для поиска и устранения ошибок в работе микросервисов. Она помогает в отслеживании прохождения запроса через ряд микросервисов. И помимо этого, может использоваться для анализа производительности.

Читать далее

Need for speed. Пакетная обработка данных с TiSpark

Время на прочтение7 мин
Количество просмотров1.4K
TiSpark – это подключаемый модуль Apache Spark, который работает с платформой  TiDB  и отвечает на запросы сложной интерактивной аналитической обработки (OLAP). Этот плагин Spark широко используется для пакетной обработки больших объёмов данных и для получения аналитических инсайтов. Я старший архитектор решений в PingCAP и бывший разработчик TiSpark. В этом посте я объясню, как он работает и почему TiSpark лучше традиционных решений для пакетной обработки.

Приятного чтения!

Вызываем код на Java, C, NodeJS, C#, Python из InterSystems IRIS

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

Введение


Одно из ключевых направлений развития платформы данных InterSystems IRIS — открытость. Открытость во взаимодействии с языками программирования, технологиями и протоколами. Поддержка языков программирования двусторонняя — возможен как вызов кода из InterSystems IRIS, так и предоставляется API для работы с InterSystems IRIS извне. В этой статье речь пойдёт о первом варианте — вызове кода из InterSystems IRIS. Целью этого небольшого повествования является демонстрация того, как просто и удобно можно это сделать. Я не буду сравнивать различные языки программирования (хотя в конце есть таблица по скорости работы различных имплементаций), всё зависит от решаемых вами задач и требований, предъявляемых к результату разработки. В этой статье я продемонстрирую несколько различных подходов к вызовам сторонних библиотек, а реализовывать мы будем одну и ту же функциональность — вызов функции DELFATE из библиотеки zlib.

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

Еще раз про try и Try

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

По вопросу обработки ошибок уже множество статей написано и все равно возникают вопросы и споры. Я не стану рассматривать все способы и языки, но хотел бы остановится на исключениях в JVM и сравнить их с функциональным подходом (`Try`/`Either`) на примере Scala.

Эта статья так же не про сравнение ФП с ООП – совсем не обязательно бросать одно ради другого. Но посмотреть и сравнить всегда полезно.

Читать далее
1

Информация

В рейтинге
Не участвует
Откуда
Шуя, Ивановская обл., Россия
Дата рождения
Зарегистрирован
Активность