Рубрика «java» - 117

Как известно из функциональных интерфейсов в Stream API нельзя выбрасывать контролируемые исключения. Если по каким-то причинам это необходимо (например, работа с файлами, базами данных или по сети), приходится оборачивать их в RuntimeException. Это неплохо работает если ошибки игнорируются, но если их необходимо обрабатывать, то код получается громоздкий и трудночитаемый. Я заинтересовался можно ли объявлять интерфейсы и методы с generic исключениями и неожиданно для себя узнал, что можно.

Зададим такой функциональный интерфейс, от стандартного интерфейса Function<A, B> он отличается только наличием третьего generic-типа для бросаемого исключения.

public interface ThrowableFunction<A, B, T extends Throwable>{
	B apply(A a) throws T;
}

И объявим простенький метод, который преобразует коллекцию используя этот интерфейс, у этого метода также объявлен generic-тип для бросаемого исключения (совпадающий с типом исключения которое может выбросить функциональный интерфейс).

public static <A, B, T extends Throwable> Collection<B> map(Collection<A> source, ThrowableFunction<A, B, T> function) throws T {
	Collection<B> result = new ArrayList<>();
	for (A a : source) {
		result.add(function.apply(a));
	}
	return result;
}

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

В этой статье я покажу несколько работающих решений задачи передачи и анализа логов из Java приложений в MS Azure. Мы рассмотрим решения как для windows, так и для linux виртуальных машин, находящихся как в облаке, так и on-premise. В качестве подсистемы логирования для Java будем использовать log4j2.

Для анализа логов будем использовать Azure Stream Analytics.

Стриминг и анализ логов Java приложений в MS Azure с использованием Log4j и Stream Analytics - 1

Читать полностью »

Моделирование планеты маргариток

  1. Лирика
  2. Описание интерфейса
  3. Декомпозиция
  4. Модель
  5. Логика

1. Лирика

Давным-давно, не помню где, я узнал об одном удивительном эксперименте, начало описания было такое: Представьте себе планету, примерно такую, как Земля, которая вращается вокруг звезды примерно такой, как Солнце. На планете есть жизнь, но не очень разнообразная — всего два вида маргариток — черные и белые. Представили? Какой заход! Автор красавчик, почти Экзюпери.
Читать полностью »

Возникла передо мной такая задача: тестирование debian пакета. И требования:

  • пакет устанавливает и стартует systemd сервис.
  • используются native armhf библиотеки

Тестирование должно включать в себя:

  • установка пакета на чистую систему: проверка наличия зависимостей
  • запуск: проверка зависимостей в рантайме
  • тестирование запущенного приложения: проверка prod конфигурации

Тестирование debian пакетов в Travis-CI - 1

Читать полностью »

Добрый день, хочу затронуть тему документирования REST API. Сразу же оговорюсь, этот материал будет ориентирован на инженеров работающих в Spring экосистеме.
На нескольких последних проектах я использовал фреймворк SpringRestDocs, он успешно закрепился в портфолио, был показан знакомым, которые также начали успешно его применять и теперь я хочу поделиться с Вами в статье о его возможностях и преимуществах. Статья позволит разобраться с применением SpringRestDocs и начать его использовать.
Читать полностью »

«В ЕЕ всегда есть альтернатива» — Дмитрий Александров (T-Systems) о Java EE - EE4J - 1

В последнее время вокруг Java EE много шумихи: сначала выход восьмой версии, затем новость о переходе в Eclipse Foundation и о переименовании. Но многие обсуждения новостей сводятся к тому, что люди думают о новом названии EE4J. Мы решили этим не ограничиваться и расспросить Дмитрия Александрова (ведущего эксперта-программиста в T-Systems): он и имеет дело с Java EE в своей работе, и активен в EE-сообществе, и выступает с EE-докладами на конференциях. Так что вопросы мы ему задали и с точки зрения «применимость в вашей работе», и с точки зрения «что думает сообщество в целом», и заодно про доклады: он как раз уже завтра выступит у нас на Joker.
Читать полностью »

Про использование Google MAPs API написано много статей, но основная часть из них устарела на столько, что глазам становится просто больно. Здесь хочу рассказать про замечательную библиотеку для работы со всеми MAPs API в частности Directions API, а так же о том как все это встроить в приложение.
Читать полностью »

В информационном мире и Digital-Банке само собой разумеется – Digital Security и Digital Signature.

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

Криптография дает возможность закрыть для посторонних глаз информацию конфиденциального характера с помощью шифрования.

Как применять криптографию в соответствии с законодательством и ладу с регуляторами?

Речь пойдет о правовых аспектах и об организационно-технических мероприятиях в рамках официального перехода на национальные стандарты в области криптографической защиты информации ГОСТ Р 34.11-2012 «Функция хэширования» и ГОСТ Р 34.10-2012 «Процессы формирования и проверки электронной цифровой подписи».

Переход осуществляется в средствах электронной подписи, применяемых для информации, не содержащей сведений, составляющих государственную тайну, в случаях, подлежащих регулированию со стороны ФСБ России в соответствии с действующей нормативной правовой базой.
Читать полностью »

Sql, RegExp, Gradle — что их объединяет? Всё это примеры использования проблемно-ориентированных языков или DSL (domain-specific language). Каждый такой язык решает свою узконаправленную задачу, например, запрос данных из БД, поиск совпадений в тексте или описание процесса сборки приложения. Язык Kotlin предоставляет большое количество возможностей для создания собственного проблемно-ориентированного языка. В ходе статьи мы разберемся, какие инструменты есть в арсенале программиста, и реализуем DSL для предложенной предметной области.

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

Kotlin DSL: Теория и Практика - 1

Читать полностью »

Бесплатная YouTube-трансляция Joker 2017: Java 9, Concurrency, GC, Spring и, конечно, паззлеры - 1

Круг замкнулся. Ровно год назад мы провели открытую трансляцию Joker 2016 для всех тех, у кого не было возможности зарегистрироваться. С тех пор мы провели более десятка трансляций с конференций по .NET, JavaScript, DevOps, мобильным технологиям, тестированию и Java, само собой.

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

Собственно, уже совсем скоро вы сможете увидеть, что у нас получилось — 3 ноября в 9:30 утра мы начнем двухдневную бесплатную трансляцию главного трека Joker 2017. Трансляция будет идти с одним перерывом «на сон». А еще она будет в разрешении 1440р, так что в кои-то веки вам понадобятся ваши крутые мониторы.

В программу вошли доклады Cay Horstmann, Алексея Шипилёва, Баруха jbaruch Садогурского, Тагира lany Валеева, Николая xpinjection Алименкова, Евгения EvgenyBorisov Борисова, Сергея Milfgard Абдульманова и еще кое-кого.

Интересно? Давайте под кат.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js