Обновить
128K+

Java *

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

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

Собственный провайдер пользователей для Keycloak

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

Интегрируя Keycloak в уже существующую систему, высока вероятность столкнуться с необходимостью во время аутентификации загружать пользователей из древней базы данных, где информация о них может храниться в довольно причудливом виде. Такая задача решается созданием собственного провайдера пользователей (User Federation Provider в терминологии Keycloak). Ниже будет представлено краткое руководство по написанию такого провайдера.

Читать далее

Правильная архитектура MMO эмулятора

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

Предыстория/Мотивация


Все началось с хобби в начале 2020 года — с очередной попытки написания эмулятора игрового сервера Lineage 2 "по новому". Перед этим шагом было несколько попыток распиливания монолита существующих решений на рынке по новым практикам разработки, но затея оказалась тщетной, ибо те монолиты, которые и по сей день существуют и участвуют в так называемом "продакшен-пиратстве", имеют сильную связанность компонентов и решения поставленных задач, сопоставимые с началом 2000х годов, когда сфера только начинала развиваться. А самое главное, что монолит не заточен на построение распределенной архитектуры и, как следствие, обладает низкой эффективностью.


image


Было принято решение взять часть бизнес-логики (основной составляющей обработки действий игрока) из допотопных проектов эмуляторов и создать современный/масштабируемый эмулятор игрового сервера Lineage 2 Prelude Of War.

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

Чат-бот для электронной коммерции

Время на прочтение3 мин
Охват и читатели5.2K
В наши дни чат-боты используются в самых разных сценариях взаимодействия с пользователями. Например, в службах поддержки клиентов различных компаний, о чём я уже писала. В этом материале я хочу рассказать о механизмах, которые используются в чат-ботах при поиске того, что нужно пользователю.



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

Бот, о котором пойдёт речь в этом материале, создан с использованием Java и Apache OpenNLP. Здесь мы поговорим о том, как боты разбирают сообщения пользователей, удаляя из них всё ненужное.
Читать дальше →

«Microsoft Coffee»: первоапрельский ответ на Java

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

На днях в интернете появился любопытный пост. Там утверждается, что в 1996 году несколько сотрудников Microsoft втайне от руководства устроили первоапрельский розыгрыш. Они распространили по магазинам Сиэтла коробки с несуществующим продуктом «Microsoft Coffee», намекающим на Java. Возник резонанс, на местном телеканале вышли новости, но PR-отдел и Билл Гейтс шутку не оценили. Поэтому компания пыталась вычислить организаторов, а публично всё отрицала и замяла историю, так что все эти 25 лет о ней никто не вспоминал.

История забавная, но есть нюанс. Опубликована она 1 апреля 2021 года. И возникает вопрос, как же всё на самом деле: действительно ли в 1996 году происходили описанные события, или подобного не было, а сам этот новый пост и есть первоапрельская шутка?

Если и шутка, то удивительно проработанная. Я собрал тут все подробности: и что сказано в посте, и какие есть аргументы за/против его подлинности.

Читать далее

Доказательное программирование

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

Внимание!


  • Содержание данной статьи никак не связано с докладом академика А. П. Ершова "Научные основы доказательного программирования" 1984г.
  • Статья содержит утверждения, способные вызвать вспышки гнева и неконтролируемой агрессии. За последствия автор статьи ответственности не несет!
  • В тексте упоминаются следующие языки программирования: Java, Swift, Kotlin, Scala, Go, Haskell и др.
  • Эта статья — антитезис. Автор ставит вопросы, но не считает своим долгом на все из них дать ответы.

В момент своего появления в Европе доказательная медицина казалась скандальной, неприятной и отвергаемой почти всем медицинским сообществом идеей. Даже в США, которые сейчас являются оплотом доказательной медицины, долгое время не хотели ее принимать. Основная мысль — докажи, что то, что ты собираешься сделать, реально поможет. Сейчас большинство назначений доктора делают исходя из приобретенных знаний и опыта. Но что если для некоторых ситуаций можно создать такой протокол лечения, следуя которому с болезнью сможет справиться даже неспециалист, и будет доказано, что этот протокол работает? Можно ли покрыть такими протоколами все известные недуги? Все, конечно же, нет, но какие-то — определенно, да.


И вот тут невольно возникает вопрос: не обошла ли медицина другую, казалось бы, не менее прогрессивную индустрию разработки программного обеспечения?

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

8 апреля — Backend stories meetup (онлайн)

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

Привет!

У нас через неделю очередной онлайн-митап, на этот раз для бекендеров. Будет 2 доклада от нас (Дмитрий @kruftik Гадеев и Роман Бледнов), а также доклад от Максима Степачева, разработчика GridGain.

Всё как всегда — онлайн, бесплатно, в 19.00 МСК, будет трансляция и запись, главное зарегистрируйтесь по ссылке заранее, чтобы мы смогли прислать вам все ссылки.

Программа под катом.

Читать далее

Книга «Java: быстрый старт»

Время на прочтение7 мин
Охват и читатели6.3K
image Привет, Хаброжители! Всегда хотели научиться программировать на Java, но не знаете, с чего начать? Или хотите быстро перейти с другого языка на Java?

Уже перепробовали множество книг и курсов, но ничего не подходит?

Серия «Быстрый старт» — отличное решение, и вот почему: сложные понятия разбиты на простые шаги — вы сможете освоить язык Java, даже если никогда раньше не занимались программированием; все фундаментальные концепции подкреплены реальными примерами; вы получите полное представление о Java: концепции объектно-ориентированного программирования, средства обработки ошибок, работа с файлами, лямбда-выражения и т. д.; в конце книги вас ждет интересный проект, который поможет усвоить полученные знания.
Читать дальше →

YAHW на React

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

Да, это еще один хелло-ворлд на React, которых уже много на сети. Зачем еще один? Здесь я попытался рассказать о создании простого приложения так, как хотел бы прочитать об этом в то время когда делал первые шаги на React, т.е стовсем недавно. Обратить внимание на то, что мне нужно было узнать сначала. Надеюсь начинающим пригодится, а продолжающие дадут свои замечания.

Читать далее

История о PostgreSQL 13, Testcontainers и багах

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

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

Несмотря на то, что на текущем месте работы взаимодействовать с PostgreSQL приходится значительно меньше, я продолжаю поддерживать свою библиотеку pg-index-health. Недавно я зарелизил версию 0.3.1, ключевой особенностью которой стала поддержка PostgreSQL 13.

Эта история началась достаточно давно, ещё в октябре 2020. В процессе мне пришлось отказаться от embedded версии СУБД в тестах, перейти на Testcontainers, столкнуться с ошибкой в PG13 и даже немного пообщаться в переписке с одним из разработчиков Постгреса... Но обо всем по порядку.

Читать далее

Управление памятью Java

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

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

Читать далее

Effective Programs (10 Years of Clojure) — Rich Hickey (с русским переводом)

Время на прочтение61 мин
Охват и читатели2.8K
Всем привет!

Я сделал перевод и набил субтитры на доклад Рича Хикки — Effective Programs (10 Years of Clojure) — Эффективные программы (10 лет Clojure). Впервые на русском языке.

Доклад был представлен в 2017 году на конференции Clojure Conj.
Читать дальше →

Очумелые ручки: как мы пишем плагины для платформы Atlassian

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

Всем привет, я Java-разработчик в ЮMoney.

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

Поехали!

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

От монолита к модулям: как отстроены бизнес-процессы склада Lamoda

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

Привет! Меня зовут Евгений Рябышев, я разработчик в одной из команд направления Warehouse Management System (WMS) компании Lamoda. Я занимаюсь тем, что автоматизирую склад. В этой статье расскажу, как мы строим нашу модульную архитектуру.


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


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

Обзор программы JPoint 2021: воркшопы, Spring, «игра вдолгую»

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


Близится новый JPoint, и мы готовы подробно рассказать о его программе. В этом посте мы разделили доклады по тематическим блокам: можно и быстро понять «что вообще будет», и узнать конкретику. А во вступлении упомянем отдельные моменты:


  • Пришла весна, то есть самое время поговорить о Spring. О нём будет четыре доклада, в том числе большое двухчастное выступление Евгения Борисова. Для него мы даже продлили JPoint на пятый день — получился специальный «день Борисова» :)
  • Онлайн-формату подходят воркшопы. Поэтому в отдельных случаях можно будет не просто любоваться слайдами: спикер будет выполнять конкретные задачи на практике, объясняя всё происходящее и отвечая на вопросы зрителей.
  • Есть доклады не строго про Java, а про то, как успешно разрабатывать «на длинной дистанции» (чтобы всё радовало не только на стадии прототипа, а годы спустя): как делать проекты поддерживаемыми, не плодить «велосипеды», работать с легаси.
  • Ну и никуда не девается привычное. Знакомые темы: «что у Java внутри», тулинг/фреймворки, языковые фичи, JVM-языки. Спикеры, посвятившие теме годы жизни: от технического лида Project Loom Рона Пресслера до главного Spring-адвоката Джоша Лонга. Возможность как следует расспросить спикера после доклада. И уточки для «отладки методом утёнка»!
Читать дальше →

Selenium для игр: автоматизируем крестики-нолики

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

На тему моего стрима на этой неделе меня вдохновила демонстрация Судхарсана Селвараджа, где он использовал Selenium для игры на виртуальном пианино. Я тоже хотела использовать Selenium, чтобы немного развлечь вас и себя, поэтому составила этот «рецепт», наглядно демонстрирующий, как автоматизировать игру в крестики-нолики (tic-tac-toe) онлайн!

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

Читать далее

Удаленный доступ к IDE при помощи Projector

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

Как вы наверняка знаете, Swing — это фреймворк, позволяющий разрабатывать графические интерфейсы для приложений на платформе Java. IDE JetBrains используют Swing для отрисовки интерфейсов. Также Swing применяется и в других IDE на базе IntelliJ, например, в Android Studio.

IDE JetBrains и приложения на Swing — десктопные приложения, и, в целом, это плюс. Однако бывают случаи, которые требуют иного подхода (например, тонкий клиент). И именно здесь нам пригодится Projector.

Projector — это технология, с помощью которой вы запускаете IDE на базе IntelliJ либо Swing-приложения на сервере. Далее вы можете подключаться к ним откуда угодно, используя браузеры или нативные приложения.

Читать далее

Сбор метрик Spring Boot приложения c помощью Prometheus и Grafana

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

В данной статье рассмотрен пример работы с метриками. В начале, настройка приложения для поставки метрик. Настройка Prometheus для сбора и хранения метрик. Настройка Grafana для отображения собранных метрик.

Читать далее

«Отдых — это непросто»: Андрей Бреслав о жизни после Kotlin

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

Для многих в IT-сообществе имя Андрея Бреслава было почти синонимичным с названием языка программирования: «мы говорим Бреслав, подразумеваем — Kotlin». Неудивительно, поскольку Андрей возглавлял этот проект десять лет подряд, с самого его создания. Но теперь ситуация изменилась, потому что в ноябре он объявил об уходе из проекта.

Беспокоиться за будущее языка не приходится: там всё в надёжных руках Романа Елизарова, и недавно мы опубликовали наш диалог с ним. Но захотелось расспросить и Андрея:

Какими он видит итоги своей работы над Kotlin?

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

Что он сейчас делает в стартапе Alter? Каково после громадного проекта заниматься менее масштабным? И почему Alter написан не на Kotlin?

Читать далее

Создаем свою инспекцию для IDEA

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

В статье показано, как быстро можно сделать свою полноценную инспекцию для IDEA для языка Java. В инспекции будем проверять, что переопределены методы equals, hashСode для классов, используемых в качестве ключа в HashMap. Писать будем на Kotlin.

Читать далее