Обновить
512K+

Java *

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

199,48
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Делаем дашборды для Grafana из того, что отдает экспортер метрик Prometheus и автоматизируем это

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

Столкнувшись с необходимостью сделать новый дашборд в Grafana под много новых метрик (а не добавить, так как готовый из галереи не находится), я сделал небольшое веб-приложение, которое сконвертирует "портянку" с данными метрик в простенький, но доходчивый дашборд со всеми необходимыми метриками.

В статье описание работы конвертора и рассказ о некоторых хитростях в настройке мониторинга Apache Spark и Hadoop.

Укыйбызмы?

Пишем бота-кликера на Kotlin для Lineage 2

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

Еще не все новогодние салаты были съедены, “Ирония судьбы” уже просмотрена, а до начала рабочей недели еще целая вечность и нужно было придумать себе развлечение на оставшиеся праздники. Предвкушая ностальгию я открыл Lineage 2, одну из самых популярных MMORPG “нулевых” на СНГ пространстве. Однако, самому играть уже не хотелось и пришла идея автоматизировать это дело. За подробностями под кат!

Читать далее

Управление зависимостями в IntelliJ IDEA

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

В этом руководстве, в продолжение темы просмотра зависимостей, мы рассмотрим управление зависимостями в IntelliJ IDEA.

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

Читать далее

Повышение электробезопасности

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

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

Для выполнения вышеуказанного условия предлагается данная система сбора информации с различных датчиков. Сбор данных происходит с помощью приложения устанавливаемого на сотовый телефон, который может находится как у непосредственного исполнителя; либо у наблюдающего за работой; либо у обоих. Связь датчиков с сотовым телефоном по Bluetooth. Полученные данные накапливаются в телефоне, а также одновременно передаются в определенный Telegram-канал с идентификационными данными пользователя (код компании/фамилия, имя). По идентификационным данным в телеграмм-канале производителя устройств возможна сортировка полученных данных.

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

Информация от датчиков передается по Bluetooth BLE в наименовании устройства в режиме advertising – посылки «рекламы» (18 байт).

Читать далее

Движение по магистрали без аварий. Или как передавать 1,5 терабайта в сутки и ни одного не потерять?

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

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

Меня зовут Владимир Евсеев, я Senior Java developer, Teamlead в SSP SOFT.

Наша команда приступила к масштабному проекту: системе, обеспечивающей транспортный уровень документооборота банка. Сегодня я расскажу, как мы справились с первым этапом: выстроили магистраль, способную передавать около 150 000 файлов в сутки, или 1,5 терабайта информации. Поделюсь, что получилось и что еще предстоит  довести до совершенства.

Читать далее

Сортировка слиянием через рекурсию

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

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

Читать далее

Spring Modulith: достигли ли мы зрелости модульности

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

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

Однако минусы микросервисов настолько огромны, что это все равно, что отрубить себе правую руку, чтобы научиться писать левой; есть более управляемые (и менее болезненные!) способы достижения того же результата.

Даже с тех пор, как началось повальное увлечение микросервисами, возобладали некоторые более хладнокровные. В частности, Оливер Дротбом, разработчик среды Spring, долгое время был сторонником альтернативы moduliths. Идея состоит в том, чтобы сохранить монолит, но спроектировать его вокруг модулей.

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

Читать далее

Особое мнение: смотрим на нагрузочные тесты как на функциональные

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

Что делать, если у команды появилась потребность регулярно оценивать производительность приложения и в динамике сравнивать быстродействие с прошлыми прогонами, а внедрять для этого решение enterprise-уровня - это как из пушки по воробьям? Мы решили пойти немного неочевидным, но продуктивным путём, воспользовавшись опытом реализации функциональных тестов и их интеграции в систему CI/CD, ведь, в сущности, почему нужно обязательно смотреть на тестирование производительности, как на что-то особенное? Что из этого получилось, и с какими проблемами при этом пока ещё приходится мириться - читайте под катом.

Читать далее

Интеграция Primefaces в приложение на Spring Boot. Часть 2 — Готовим контекстное меню для главной страницы

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

В этой статье описывается пример интеграции библиотеки компонентов пользовательского интерфейса Primefaces, построенной на основе фреймворка JavaServer Faces (JSF), в MVC приложение на Spring Boot.

Первая часть

Читать далее

JEP-400 или UTF-8 РєРѕРґРёСЂРѕРІРєР° РїРѕ умолчанию

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

Не прошло и пяти лет, как в Java 18 докатилось небольшое, но очень ожидаемое и обсуждаемое изменение: теперь во всех стандартных API используется UTF-8 кодировка по умолчанию. Это изменение, которое сделает выражение «Write once, run anywhere» действительно правдой, так как теперь поведение приложения будет еще меньше зависеть от системы, где оно запущено. 

На конференции Joker я рассказал, как развивались события в работе над JEP-400 и как сделать так, чтобы ничего не поломалось после перехода на новые версии JDK. А теперь делюсь с Хабром и видеозаписью доклада, и текстовой версией. Как говорится, помимо двух самых сложных задач в программировании – нейминга и инвалидация кэша, есть ещё две: таймзоны и кодировки. Вот о кодировках и поговорим. Как читается название доклада/поста — разберёмся в конце.

Читать далее

Как сделать анимацию с помощью MotionLayout

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

Привет, Хабр! Меня зовут Павел Беловол, я Android-разработчик на проекте онлайн-кинотеатра KION в МТС Digital. Это новая часть сериала о внедрении фичи Autoplay в KION, в которой я расскажу про свой личный опыт работы с MotionLayout на примере продакшн-задачи в KION. Из этой статьи вы узнаете, где нужно использовать MotionLayout, а где лучше обойтись без него и писать код анимации самостоятельно.

Читать далее

Javarush, так ли полезно спустя 9.5 лет?

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

Про Javarush, писали уже многие, в этой статье хотелось бы выразить свое мнение буквами и символами. Как вы уже наверняка знаете, Javarush - это весьма интересный проект, который предлагает обучение языку программирования Java, здесь вы изучите основы, решая простые (и не очень) практические задачи, в формате интерактивного комикса, где ВЫ главный герой.

Читать далее

Spring Data JDBC и генерация ID

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

Каждый раз, когда необходимо сделать сервис на Java, работающий с реляционной базой, я не могу определиться, прямо как та обезъяна, которая хотела быть и умной, и красивой. Хочется делать запросы на обычном SQL, по-минимуму обкладываясь различными "магическими" аннотациями, но при этом лень самому писать RowMapper'ы, готовить PreparedStatement'ы или JdbcTemplate, и тому подобное, за что любят обзывать Java многословной. И каждый раз руки тянутся к Spring Data JDBC, который, вроде как, и был задуман как нечто среднее. Но с ним тоже, зачастую, можно вляпаться в какую-то ерунду на ровном месте.

Потребовалось мне сохранять новые записи в таблицу. Казалось бы, в чем вопрос - берешь CrudRepository и все у тебя работает из коробки. Но на практике возникло несколько нюансов, например:

Читать далее

Ближайшие события

Интеграция Primefaces в приложение на Spring Boot. Часть 1 — настройка зависимостей и базовый проект

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

В данной статье описывается пример интеграции библиотеки компонентов пользовательского интерфейса Primefaces, построенной на основе фреймворка JavaServer Faces (JSF), в MVC приложение на Spring Boot.

Читать далее

Моя первая книга по Java

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

Статья о том, как я написал и полностью довёл до издания мою первую книгу по Java, про что эта книга, какие у неё особенности и где можно её купить. Приводится список глав с кратким описанием их содержания.

Читать далее

Теория категорий в API для консистентности Apache Cassandra

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

Для Apache Cassandra проектирование структуры таблиц выполняется для нужд одного конкретного приложения, а перед программистом встают проблемы дублирования данных (один запрос читает одну таблицу, в которой есть все нужные поля) и контроля инициализации значений для колонок, входящих в первичный ключ

В статье предлагается вариант организации клиентского API для решения проблем с консистентностью данных и инициализации требуемых полей на базе комбинации паттернов проектирования Factory Method, Builder и Finite State Machine

TLDR: Если представить паттерн Factory Method как предел в терминах теории категорий, т.е. кортеж с проекциями, и инициализировать фабрику при помощи паттерна Builder, то можно получить удобный API для создания объектов с дублирующимся данными

Читать далее

Мессенджеры на работе — это не прокрастинация, или как мы сделали сервис для автотестирования. Часть 1

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

Однажды у нас появилась идея отправлять отчёты о выполнении автотестов в мессенджер Telegram. Постепенно эта идея переросла в сервис, который позволяет запускать тесты, оповещать об ошибках и получать отчёты в любом мессенджере, где есть возможность интегрировать бота. Помимо доступа к результатам автотестов, бот получил интеграцию с Jira и другими инструментами, которые мы используем в РТЛабс.

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

Читать далее

Использование Postgres в качестве очереди сообщений

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

Базы данных не являются очередями сообщений — это устоявшееся утверждение, которое обсуждалось во многих статьях в блогах и презентациях на конференциях. Но с развитием реляционных баз данных выдерживает ли это утверждение проверку? Если посмотреть на современные версии Postgres, то ответ часто оказывается отрицательным. 

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

Читать далее

Абстрактные классы и интерфейсы в Java

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

В каких случаях стоит использовать абстрактный класс, а в каких — интерфейс? Давайте разбираться, в чем между ними разница.

Читать далее