Как стать автором
Поиск
Написать публикацию
Обновить
174.49

Java *

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

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

RBKmoney Payments под капотом — инфраструктура платежной платформы

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


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

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

Делаем простой Circuit Breaker на базе кеша в Spring

Время на прочтение8 мин
Количество просмотров15K
Эта статья для тех, кто использует в своем приложении эффективный кеш и хочет простым добавлением 1 класса в проект добавить стабильности не только приложению, но и всему окружению.

Если вы узнали себя, читайте дальше.

Что такое Circuit Breaker


Кадр из фильма Back to the Future
Читать дальше →

Миграция данных с mongoDB и Spring Boot

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

Каждый разработчик рано или поздно встречается с необходимостью миграции данных в базе данных. На нашем проекте мы используем mongoDB в качестве базы данных. Мы подходили к миграции данных разными способами:


  • писали js скрипты и запускали непосредственно в базе данных
  • использовали Mongobee  -  инструмент для автоматических миграций

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

Книга «Elasticsearch, Kibana, Logstash и поисковые системы нового поколения»

Время на прочтение9 мин
Количество просмотров22K
image Привет, Хаброжители! Мы издали книгу по Elastic Stack, предназначенную для специалистов, работающих с большими объемами данных и желающих надежно извлекать их из любого источника в любом формате, а также искать, анализировать и визуализировать данные в режиме реального времени. Эта книга для вас, если вам необходимо фундаментальное понимание работы Elastic Stack в сферах распределенных вычислений и обработки данных в реальном времени.

Ниже будет предоставлена структура книги о приведен отрывок про агрегации.
Читать дальше →

Паттерны проектирования, используемые в Spring Framework

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

Привет, хабровчане! Длинные выходные завершились, а это значит, что пришло время поделиться новым полезным переводом. Сегодня поговорим о паттернах проектирования, используемых в Spring Framework. Как вы догадались, данный материал приурочен к старту набора новой группы по курсу "Разработчик на Spring Framework", который стартует 28 мая. Начнем.



В этой статье сделаем обзор нескольких паттернов проектирования, которые широко используются в Spring Framework. Паттерны проектирования описывают приёмы программирования в объектно-ориентированной разработке программного обеспечения.

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

Заметка о интеграционном тестировании используя Jenkins на Kubernetes

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

Добрый день.


Практически сразу после установки и конфигурации CI/CD по инструкции из предыдущего поста у команды возник вопрос как правильно осуществлять интеграционное тестирование. У нас уже был опыт запуска тестовых зависимостей в docker контейнерах, но это стало проблематичным так как теперь сама сборка была запущена в контейнере. В этой заметке я бы хотел описать два возможных способа интеграционного тестирования внутри контейнера, которые подошли моей команде.

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

Разрабатываем утилиту на GraalVM

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

Постановка задачи


Периодически у меня возникает задача поделиться файлами по локальной сети, например, с коллегой по проекту.


Решений для этого может быть очень много — Samba / FTP / scp. Можно просто залить файл в общедоступное публичное место типа Google Drive, приложить к задаче в Jira, или даже отправить письмом.


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


А хочется чего-то более легковесного и гибкого.


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


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


$ python3 -mhttp.server
Serving HTTP on 0.0.0.0 port 8000 ...

Эта команда стартует веб-сервер в текущей папке и позволяет через веб-интерфейс получить список файлов и скачать их. Больше подобных штук можно отсыпать тут.

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

Лучше день потерять

Время на прочтение20 мин
Количество просмотров15K
В инвестировании есть понятие «Плохо сейчас — хорошо потом». Инвестор регулярно отщипывает 10, 20% или даже 30% своего заработка на будущее. Эти деньги он инвестирует в облигации, акции, ОФЗ, ETF — кто во что горазд. Сейчас, в моменте, инвестор отбирает у себя свой заработок, лишает себя каких-то благ, чтобы в будущем, на горизонте в 10-20 лет, получить пользу от инвестиций. Прибыль в будущем покроет сегодняшние лишения. Примерно такую же стратегию исповедует Алексей Охрименко (obenjiro), но применительно к разработке — лучше день потерять, а потом за 5 минут полететь.


Источник

На Frontend Conf 2018 Алексей рассказал, как потеряв кучу времени сейчас, в конечном счете его сэкономить потом. Этот доклад не о чувстве скуки и не о том, как бороться с монотонными и рутинными задачами, а о том как потратить время по максимуму — сколько есть, все потратить, и посмотреть, что из этого получится. В расшифровке доклада опыт написания инструментов для отладки, тестирования, оптимизации, скафолдинга и валидации под разные проекты. Бонусом Алексей расскажет о ряде уже существующих инструментов и о пользе, которую они приносят. Давайте выяснять, надо ли вообще на это тратить время.

О докладчике: Алексей Охрименко — разработчик в Avito Frontend Architecture, где немного улучшает жизнь миллионов людей. Ведет подкаст «5 min Angular», а в свободное ото сна и подкаста время организует Angular Meetup вместе с ребятами из Тинькофф, и выступает с огромным количеством разных и спорных докладов.

Виктор Гамов о Kafka Streams IQ на jug.msk.ru

Время на прочтение2 мин
Количество просмотров4.1K
8 мая 2019 года на встрече московского сообщества Java-разработчиков jug.msk.ru Виктор Гамов рассказал про Kafka Streams IQ (Interactive Queries).


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

Актуальна ли книга «Java Concurrency in Practice» во времена Java 8 и 11?

Время на прочтение5 мин
Количество просмотров43K
Здравствуйте, коллеги!

Статья, перевод которой мы предлагаем сегодня, в очередной раз напоминает о важности нестареющей книги "Java Concurrency in practice" под авторством Брайана Гёца (Brian Goetz).


Даты комментариев к этой статье в оригинале подсказывают, что автор обновляет и заново публикует ее не в первый раз. Поэтому мы позволили себе также обновить ссылку на упоминаемую в статье книгу Рауля-Габриэля Урма, Марио Фуско и Алана Майкрофта, которая выходила в издательстве «Manning» под названием «Java 8 in Action». У нас готовится перевод нового издания под названием «Modern Java». Но пока давайте поговорим о классике. Вы приглашаетесь под кат.
Читать дальше →

Генерация кода для бекенда. Что генерировать, как и зачем?

Время на прочтение11 мин
Количество просмотров9.4K
Я хочу показать в этой статье как у нас в фирме генерируется бекенд (и немного фронтенд) код, зачем вообще это нужно и как это лучше делать.

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

Эти типы объектов:
1. Messages — объекты, которые будучи сериализoванными в JSON участвуют в обмене информации между фронтендом и бекендом
2. Endpoints — URI, который вызывает фронтенд вместе с описанием HTTP метода, параметров запроса, типа Request Body и типа респонса
3. Entities — Это такие messages, для которых них есть стандартные endpoints для Create/Update/List/Delete (может быть не все), они хранятся в базе данных и для них есть Data Access Object, или Spring JPA repository — вообщем зависит от технологии, но какой то доступ к базе данных

Фронтендом я не занимаюсь вообще, но
1) Знаю, что он пишется на Typescript, поэтому мы генерируем и классы тайпскрипта
2) Большая часть требований к бекенду приходит от разработчиков фронтенда.

Требования к коду



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

Практические задачи по Java — для курсов и прочих занятий

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

Практические задачи по Java — для курсов и прочих занятий


Несколько вводных слов


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

Дело в том, что каждое моё занятие состоит из двух частей. На первой я выступаю в роли лектора — рассказываю с примерами кода о какой-то новой теме (классы, наследование, дженерики и так далее). Вторая часть — практическая. Очевидно, что нет смысла просто рассуждать о программировании, надо программировать. Приоритет на занятиях — решение задач, то есть программирование чего-то как-то. Программирование на занятиях отличается от программирования дома, так как на занятиях можно задать вопрос, показать код, получить быструю оценку кода, комментарии по улучшению, исправлению написанного. Очень легко было найти задачи для самых первых занятий. Задачи на циклы, условные операторы, и ООП (к примеру, написать класс «Собака» или класс «Вектор»). Сервисы вроде leetcode позволяют даже проверить правильность решения таких задач сразу, онлайн. Но какие задачи дать студентам на занятии, которое было посвящено коллекциям? Потокам? А аннотациям? За несколько лет я придумал, или переработал несколько таких задач, и эта статья, по сути, является сборником этих задач (к некоторым задачам прилагается решение).
Читать дальше →

Мины под производительностью ждут своего часа

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

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


Картинка для привлечения внимания

image

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

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

Как скачать JDK 12? Объяснение длиной в 7 символов

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

Морфеус: Я тебя прекрасно понимаю. Объясню, почему ты здесь. Потому, что ты что-то понял. Ты не можешь выразить это, но ощущаешь. Ты всю жизнь ощущал, что мир не в порядке — странная мысль, но её не отогнать. Она — как заноза в мозгу. Она сводит с ума. Не даёт покоя. Это и привело тебя ко мне. Понимаешь, о чём я говорю?


Нео: О едином сайте для скачивания OpenJDK?



(Подлинное фото: Нео осознал, какой из дистрибутивов OpenJDK надо скачать).

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

Приглашаем на второй Camunda BPM Meetup Raiffeisenbank UPD Трансляция

Время на прочтение2 мин
Количество просмотров3.5K
Приглашаем вас на второй в России открытый митап Camunda BPM, который пройдет 30 мая 2019 года на площадке Райффайзенбанка в Нагатино.

Как прошел первый митап сообщества Camunda BPM можно посмотреть в этом посте.

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

Сильное сообщество – крутая площадка для развития, поэтому мы не только приглашаем вас на митап, но и активно зовем всех присоединяться к чату Camunda BPM User Group. С поддержкой комьюнити жить проще и веселее, ведь тогда появляется возможность что-то быстро спросить у коллег или просто скинуть интересную статью или мем.

Хотите в чат? Тогда вам сюда


AnyStub, библиотека заглушек соединений в Java

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

В отличие от множества платформ Java страдает от недостатка библиотек заглушек соединений. Если вы давно в этом мире, то наверняка должны быть знакомы с WireMock, Betamax или даже Spock. Многие разработчики в тестах используют Mockito для описания поведения объектов, DataJpaTest с локальной h2 базой данных, Cucumber тесты. Сегодня вы познакомитесь с легковесной альтернативной, которая поможет справиться с разными проблемами, с которыми вы могли сталкиваться используя эти подходы. В частности, anyStub пытается решить следующие проблемы:


  • упростить кофигурацию тестового окружения
  • автоматизировать сбор данных для тестов
  • остаться в тестировании вашего проложения и избежать тестирования чего-то ещё
Читать дальше →

Переговоры провалены: как Oracle убила Java EE

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


Сегодня (3 мая) президент Eclipse Foundation Майк Милинкович (Mike Milinkovic) написал в своем блоге об окончательных результатах закрытых переговоров между Oracle и Eclipse Foundation о товарном знаке. Как мы помним, Oracle объявила, что она открывает исходный код Java EE для этой организации, так что фреймворк будет с открытым кодом “по-настоящему”. После 18 месяцев интенсивных переговоров все усилия подошли к концу: переговоры провалены. Соглашения о товарном знаке не будет.

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

Руководство по аннотациям TestNG для Selenium WebDriver

Время на прочтение16 мин
Количество просмотров91K
Мир, труд, май, хабровчане! Для тех, кто также как и мы ворвался в межпраздничную рабочую неделю, мы подготовили перевод, который хотим приурочить к старту набора на курс «Java QA Engineer», запуск которого запланирован на 28 мая.



TestNG — это тестовый фреймворк, созданный Cédric Beust, он помогает нам удовлетворить многие наши потребности в тестировании. TestNG широко используется вместе с Selenium. Хотите знать, что означает NG? Это значит “Next Generation” (“Следующее поколение”). TestNG похож на JUnit, но он более мощный, когда дело касается управления потоком выполнения вашей программы. Архитектура фреймворка помогает нам сделать тесты более структурированными и обеспечить лучшие точки валидации.
Читать дальше →

Создание инструмента для быстрого и эффективного написания автотестов на Selenium

Время на прочтение26 мин
Количество просмотров13K
Фундаментальный строительный блок автоматизации – тестирование
Род Джонсон
image

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

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

Я расскажу о том, как с нуля, имея небольшой опыт разработки, написал платформу для запуска тестов, и о самой платформе. Сам я считаю, что мой продукт получился весьма эффективным, а значит будет многим полезен и имеет место для рассмотрения.
Читать дальше →

OutOfMemory и использование векторных изображений в Android Studio

Время на прочтение4 мин
Количество просмотров6.1K
Привет, Хабр! В данной статье, ориентированной на новичков, я бы хотел дать несколько советов по оптимизации использования приложением памяти устройства, дабы постоянно не получать OutOfMemory, а также рассмотреть использование векторных изображений в текущей актуальной версии Android Studio (3.4), так как большинство русскоязычных ресурсов по этой теме (последняя статья на Хабре про векторные изображения датируется 2015 годом) устарели, что нередко вводит начинающих разработчиков в заблуждение. Итак, приступим.
Читать дальше →

Вклад авторов