Шардировать или не шардировать
Если ваш сервис рассчитан на миллиарды пользователей, то несомненно возникнет вопрос о масштабировании.
Ранее, автор уже рассмотрел способ масштабирования через партицирование. В данной статье рассмотрим шардирование к сервиса Баланс дабы обеспечить его работу с миллиардами пользователей без необходимости использовать суперкомпьютеры, а при желании вовсе запускать на "кофеварках".
В чём вопрос?
Читать: https://habr.com/ru/articles/905910/?utm_campaign=905910
@a_cup_of_java | Другие наши каналы
Если ваш сервис рассчитан на миллиарды пользователей, то несомненно возникнет вопрос о масштабировании.
Ранее, автор уже рассмотрел способ масштабирования через партицирование. В данной статье рассмотрим шардирование к сервиса Баланс дабы обеспечить его работу с миллиардами пользователей без необходимости использовать суперкомпьютеры, а при желании вовсе запускать на "кофеварках".
В чём вопрос?
Читать: https://habr.com/ru/articles/905910/?utm_campaign=905910
@a_cup_of_java | Другие наши каналы
Пара советов по покрытию тестами проекта на SpringBoot
Уверен многие сталкивались с ситуацией когда тесты на проекте разрастаются бесконтрольно, проходят долго, а любое изменение в коде приводит в нескольким дням отладки и исправления падающих тестов.
В этой статье я попробовал привести пару советов, которые помогут сделать так, чтобы тесты документировали код, который они проверяют, модифицировать их было не больно и длительность тестовых пайплайнов не улетала за десятки минут
Читать: https://habr.com/ru/articles/906318/?utm_campaign=906318
@a_cup_of_java | Другие наши каналы
Уверен многие сталкивались с ситуацией когда тесты на проекте разрастаются бесконтрольно, проходят долго, а любое изменение в коде приводит в нескольким дням отладки и исправления падающих тестов.
В этой статье я попробовал привести пару советов, которые помогут сделать так, чтобы тесты документировали код, который они проверяют, модифицировать их было не больно и длительность тестовых пайплайнов не улетала за десятки минут
Читать: https://habr.com/ru/articles/906318/?utm_campaign=906318
@a_cup_of_java | Другие наши каналы
Большой гайд по мобильной разработке от Tproger: полезные статьи, практики и советы
Делимся нашими статьями про мобильную разработку: iOS, Android, Flutter, SwiftUI, Jetpack Compose, публикация в сторах и советы по доступности — всё в одном месте.
Читать: «Большой гайд по мобильной разработке от Tproger: полезные статьи, практики и советы»
@a_cup_of_java | Другие наши каналы
Делимся нашими статьями про мобильную разработку: iOS, Android, Flutter, SwiftUI, Jetpack Compose, публикация в сторах и советы по доступности — всё в одном месте.
Читать: «Большой гайд по мобильной разработке от Tproger: полезные статьи, практики и советы»
@a_cup_of_java | Другие наши каналы
Cервисы в Android
Под ОС Android можно разрабатывать приложения различного уровня сложности: от простых оконных игр до довольно сложных системных приложений. Достаточно распространенным типом приложений являются сервисы, и в этой статье мы поговорим о том, какие сервисы бывают и как их можно написать.
Читать: https://habr.com/ru/companies/otus/articles/903614/?utm_campaign=903614
@a_cup_of_java | Другие наши каналы
Под ОС Android можно разрабатывать приложения различного уровня сложности: от простых оконных игр до довольно сложных системных приложений. Достаточно распространенным типом приложений являются сервисы, и в этой статье мы поговорим о том, какие сервисы бывают и как их можно написать.
Читать: https://habr.com/ru/companies/otus/articles/903614/?utm_campaign=903614
@a_cup_of_java | Другие наши каналы
🟢 Важные темы на QCon London 2025
На третий день QCon London 2025 обсуждались ключевые темы: политика AMQP, где Джон О'Хара рассказал об эволюции стандартов сообщений. Также обсуждались серверные базы данных и симбиоз архитектуры и безопасности, без которого системы теряют устойчивость.
Подробности: https://www.infoq.com/news/2025/05/day-three-qcon-london-2025/
#en
@a_cup_of_java | Другие наши каналы
На третий день QCon London 2025 обсуждались ключевые темы: политика AMQP, где Джон О'Хара рассказал об эволюции стандартов сообщений. Также обсуждались серверные базы данных и симбиоз архитектуры и безопасности, без которого системы теряют устойчивость.
Подробности: https://www.infoq.com/news/2025/05/day-three-qcon-london-2025/
#en
@a_cup_of_java | Другие наши каналы
Как автотесты и GitHub Actions помогают улучшать свои пет-проекты
Привет. Сегодня поговорим о том, как я в последние 2 недели поправил свои пет-проекты, а также исправил серьёзные ошибки благодаря автотестам и налаженному CI/CD через GitHub Actions.
Читать: https://habr.com/ru/articles/906624/?utm_campaign=906624
@a_cup_of_java | Другие наши каналы
Привет. Сегодня поговорим о том, как я в последние 2 недели поправил свои пет-проекты, а также исправил серьёзные ошибки благодаря автотестам и налаженному CI/CD через GitHub Actions.
Читать: https://habr.com/ru/articles/906624/?utm_campaign=906624
@a_cup_of_java | Другие наши каналы
❤1👍1
Программирование без условных операторов
В программировании на C-подобных языках (и не только) частенько приходится использовать условные операторы, такие как
К слову, многие отмечают, что последний оператор
Тем не менее, как бы там ни было, существует целый ряд иных подходов, который позволяет избавиться от этих операторов, что само по себе довольно любопытно, поэтому, рассмотрение этих подходов и видится интересным.
Давайте исследуем некоторые из них…
Читать: https://habr.com/ru/companies/beget/articles/903758/?utm_campaign=903758
@a_cup_of_java | Другие наши каналы
В программировании на C-подобных языках (и не только) частенько приходится использовать условные операторы, такие как
If, else, switch — и особенно часто их используют новички, потому что их понимание и работа достаточно проста (в итоге, могут рождаться, иной раз, поистине монструозные конструкции — грешен, практиковал:-))).К слову, многие отмечают, что последний оператор
switch им приходилось видеть только на разнообразных олимпиадных задачках или школьных уроках, в то время как в реальной работе применяется он достаточно редко (а вы его используете, и насколько часто?).Тем не менее, как бы там ни было, существует целый ряд иных подходов, который позволяет избавиться от этих операторов, что само по себе довольно любопытно, поэтому, рассмотрение этих подходов и видится интересным.
Давайте исследуем некоторые из них…
Читать: https://habr.com/ru/companies/beget/articles/903758/?utm_campaign=903758
@a_cup_of_java | Другие наши каналы
👎5
Как работает React-паттерн «Составной компонент» (compound component) и для чего он нужен
Разбираем типичные проблемы при разработке компонентов. Изучаем, какие архитектурные подходы вложены в паттерн. Реализуем паттерн на примере компонента Аккордеон и смотрим на плюсы и минусы подходов
Читать: «Как работает React-паттерн «Составной компонент» (compound component) и для чего он нужен»
@a_cup_of_java | Другие наши каналы
Разбираем типичные проблемы при разработке компонентов. Изучаем, какие архитектурные подходы вложены в паттерн. Реализуем паттерн на примере компонента Аккордеон и смотрим на плюсы и минусы подходов
Читать: «Как работает React-паттерн «Составной компонент» (compound component) и для чего он нужен»
@a_cup_of_java | Другие наши каналы
Java Digest #24
Всем привет! 👋👋👋👋👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
В этом выпуске рассказываем о новых JEPs в OpenJDK, которые вошли в статус Candidate. Спойлер Applet API — RIP. В этом месяце вышли сразу IntelliJ IDEA 2025.1 и OpenIDE — эта битва будет легендарной!
Мы добавили краткий обзор JavaOne’25. И, как обычно, собрали полезные статьи: как избавиться от Flaky-тестов с помощью JMina, как ZGC аллоцирует память в хипе. Сделали подборку материалов о паттернах и методологиях разработки и разбавили размышлениями о том, как писать хороший код и оставаться профессионалом.
Читать свежий выпуск
Читать: https://habr.com/ru/companies/tbank/articles/906934/?utm_campaign=906934
@a_cup_of_java | Другие наши каналы
Всем привет! 👋👋👋👋👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
В этом выпуске рассказываем о новых JEPs в OpenJDK, которые вошли в статус Candidate. Спойлер Applet API — RIP. В этом месяце вышли сразу IntelliJ IDEA 2025.1 и OpenIDE — эта битва будет легендарной!
Мы добавили краткий обзор JavaOne’25. И, как обычно, собрали полезные статьи: как избавиться от Flaky-тестов с помощью JMina, как ZGC аллоцирует память в хипе. Сделали подборку материалов о паттернах и методологиях разработки и разбавили размышлениями о том, как писать хороший код и оставаться профессионалом.
Читать свежий выпуск
Читать: https://habr.com/ru/companies/tbank/articles/906934/?utm_campaign=906934
@a_cup_of_java | Другие наши каналы
👍3
JDK 25 упрощает Java: методы main теперь могут быть нестатичными, введены компактные исходники и новый класс java.lang.IO для удобного ввода-вывода. Эти нововведения облегчают обучение и создание простых программ, сохраняя совместимость со стандартным инструментарием.
Подробности: https://www.infoq.com/news/2025/05/jdk25-instance-main-methods/
#en
@a_cup_of_java | Другие наши каналы
Подробности: https://www.infoq.com/news/2025/05/jdk25-instance-main-methods/
#en
@a_cup_of_java | Другие наши каналы
😱7💯2
Новое в экосистеме Java: четыре ключевых JEP для JDK 25, восьмой релиз Spring AI 1.0.0, обновления Quarkus 3.22.0 и первый кандидат LangChain4j 1.0.0. WildFly вошёл в Commonhaus Foundation, поддерживая развитие открытого ПО. Следите за изменениями!
Подробности: https://www.infoq.com/news/2025/05/java-news-roundup-apr28-2025/
#en
@a_cup_of_java | Другие наши каналы
Подробности: https://www.infoq.com/news/2025/05/java-news-roundup-apr28-2025/
#en
@a_cup_of_java | Другие наши каналы
7 запросов к разработке вызывающих и смех и слезы
Всем привет. Сегодня хотел затронуть тему, которая в бытности разработчика вызывает и смех, и слезы, — о самых необычных запросах на разработку от коллег, поставляющих задачи. Также заранее прошу не принимать прочитанное близко к сердцу: какие-то из ситуаций могут показаться наивными, но обойти их стороной я не смог в этом посте.
Итак, начну с собственного реноме. Меня зовут Богдан, я работаю в одном достаточно большом отечественном финтеке вот уже 7-й год и добрую половину из них занимаю позицию Java-лида в одной из интеграционных команд. За такое (относительно) длительное время в энтерпрайзе периодически приходят требования на разработку, от которых хочется или плакать, или смеяться, а то и всё вместе. Происходит это по самым разным причинам, которые мы сегодня касаться не будем. Скажу лишь, что никого не осуждаю, не пытаюсь никого принизить и наверняка сам генерировал нечто схожее, о чем пойдет речь ниже. Также стоит учесть, что мой бэкграунд преимущественно бэкендово-интеграционный, соответственно, и кейсы будут из этой области и контекста. Ну а дальше — по кейсам, по тем 7 кейсам, когда прочитав требования, внутри что-то скукоживается от отвращения либо раздается улыбка во всё лицо — у кого как.
Немного глобального контекста: проект, вокруг которого будут описаны курьезные запросы, — интеграционная шина данных, напичканная самой разной интеграционной логикой, Java-приложение, состоящее из невообразимого количества SOAP/REST-методов, шедуллеров и всяческих очередей.
Читать: https://habr.com/ru/articles/907134/?utm_campaign=907134
@a_cup_of_java | Другие наши каналы
Всем привет. Сегодня хотел затронуть тему, которая в бытности разработчика вызывает и смех, и слезы, — о самых необычных запросах на разработку от коллег, поставляющих задачи. Также заранее прошу не принимать прочитанное близко к сердцу: какие-то из ситуаций могут показаться наивными, но обойти их стороной я не смог в этом посте.
Итак, начну с собственного реноме. Меня зовут Богдан, я работаю в одном достаточно большом отечественном финтеке вот уже 7-й год и добрую половину из них занимаю позицию Java-лида в одной из интеграционных команд. За такое (относительно) длительное время в энтерпрайзе периодически приходят требования на разработку, от которых хочется или плакать, или смеяться, а то и всё вместе. Происходит это по самым разным причинам, которые мы сегодня касаться не будем. Скажу лишь, что никого не осуждаю, не пытаюсь никого принизить и наверняка сам генерировал нечто схожее, о чем пойдет речь ниже. Также стоит учесть, что мой бэкграунд преимущественно бэкендово-интеграционный, соответственно, и кейсы будут из этой области и контекста. Ну а дальше — по кейсам, по тем 7 кейсам, когда прочитав требования, внутри что-то скукоживается от отвращения либо раздается улыбка во всё лицо — у кого как.
Немного глобального контекста: проект, вокруг которого будут описаны курьезные запросы, — интеграционная шина данных, напичканная самой разной интеграционной логикой, Java-приложение, состоящее из невообразимого количества SOAP/REST-методов, шедуллеров и всяческих очередей.
Читать: https://habr.com/ru/articles/907134/?utm_campaign=907134
@a_cup_of_java | Другие наши каналы
Нужен ли сеньору второй язык программирования? Опытом поделился разработчик с 18 годами стажа
Нужен ли сеньору второй язык программирования? Опыт и выводы разработчика с 18 годами стажа — когда и зачем изучать новые языки
Читать: «Нужен ли сеньору второй язык программирования? Опытом поделился разработчик с 18 годами стажа»
@a_cup_of_java | Другие наши каналы
Нужен ли сеньору второй язык программирования? Опыт и выводы разработчика с 18 годами стажа — когда и зачем изучать новые языки
Читать: «Нужен ли сеньору второй язык программирования? Опытом поделился разработчик с 18 годами стажа»
@a_cup_of_java | Другие наши каналы
❤2💯2
Пример забытого «наивного» алгоритма
Недавно написал скептический комментарий по поводу необходимости алгоритмических интервью. Вспомнил примеры из своей практики, один из них вполне подходящий, можно сделать патч в opensource проекте.
Разработчики зачастую пишут код (скелет), используя наивные алгоритмы и не используя валидаторы (предполагая изменить код позже либо ошибочно предположив что объем данных будет небольшим).
Не так давно попался один тикет с жалобой на зависание in-house приложения которое обрабатывает adobe pdf документы (печатает в png изображение для web клиентов).
Приложение использует библиотеку apache pdfbox.
Запустил тест с проблемным pdf документом в котором использовались формы – компьютер “пошел на взлет”. Похоже на длинный цикл, хорошо пошел.
Жду пару минут, стало интересно.
Начался тротлинг CPU (перегрев, рабочая коробочка у меня небольшая, мобильная, с воздушным охлаждением и быстро нагревается при большой длительной нагрузке).
Читать: https://habr.com/ru/articles/907316/?utm_campaign=907316
@a_cup_of_java | Другие наши каналы
Недавно написал скептический комментарий по поводу необходимости алгоритмических интервью. Вспомнил примеры из своей практики, один из них вполне подходящий, можно сделать патч в opensource проекте.
Разработчики зачастую пишут код (скелет), используя наивные алгоритмы и не используя валидаторы (предполагая изменить код позже либо ошибочно предположив что объем данных будет небольшим).
Не так давно попался один тикет с жалобой на зависание in-house приложения которое обрабатывает adobe pdf документы (печатает в png изображение для web клиентов).
Приложение использует библиотеку apache pdfbox.
Запустил тест с проблемным pdf документом в котором использовались формы – компьютер “пошел на взлет”. Похоже на длинный цикл, хорошо пошел.
Жду пару минут, стало интересно.
Начался тротлинг CPU (перегрев, рабочая коробочка у меня небольшая, мобильная, с воздушным охлаждением и быстро нагревается при большой длительной нагрузке).
Читать: https://habr.com/ru/articles/907316/?utm_campaign=907316
@a_cup_of_java | Другие наши каналы
Join таблиц в реальном времени на Apache Flink
Статья посвящена реализации join-операций в системах потоковой обработки данных на базе Apache Flink. Рассматриваются основные подходы к объединению потоков в реальном времени, включая
Читать: https://habr.com/ru/articles/907664/?utm_campaign=907664
@a_cup_of_java | Другие наши каналы
Статья посвящена реализации join-операций в системах потоковой обработки данных на базе Apache Flink. Рассматриваются основные подходы к объединению потоков в реальном времени, включая
inner join, а также паттерны дедупликации. Уделено внимание использованиюKeyedCoProcessFunction для построения отказоустойчивых и масштабируемых join-пайплайнов. Работа ориентирована на инженеров, строящих real-time витрины и сложные трансформации на Flink в продакшене.Читать: https://habr.com/ru/articles/907664/?utm_campaign=907664
@a_cup_of_java | Другие наши каналы
Где искать проблему в проде: сравнение профилирования с eBPF и BitDive
eBPF vs BitDive: Сравнение решений для системного и прикладного профилирования
Разбираем разницу между eBPF и BitDive: системное профилирование против глубокого анализа Java-приложений. Что выбрать для продакшена?
Читать: https://habr.com/ru/articles/907750/?utm_campaign=907750
@a_cup_of_java | Другие наши каналы
eBPF vs BitDive: Сравнение решений для системного и прикладного профилирования
Разбираем разницу между eBPF и BitDive: системное профилирование против глубокого анализа Java-приложений. Что выбрать для продакшена?
Читать: https://habr.com/ru/articles/907750/?utm_campaign=907750
@a_cup_of_java | Другие наши каналы
ООП — это скам
На хабре и в остальном интернете хватает статей с критикой ООП. Кто-то ругает эту концепцию за излишнюю многословность, кто-то рассуждает о плохих аспектах ООП, кто-то сравнивает реализации ООП в разных языках.
После прочтения большинства этих статей и нескольких лет кодинга на C# я заявляю: «ООП - это один большой обман. Никто не понимает, что это такое. Люди просто говорят какие-то умные термины, их собеседники с умным видом кивают, хотя на деле трактуют эти же термины совершенно по-разному».
И вот почему.
Читать: https://habr.com/ru/articles/907756/?utm_campaign=907756
@a_cup_of_java | Другие наши каналы
На хабре и в остальном интернете хватает статей с критикой ООП. Кто-то ругает эту концепцию за излишнюю многословность, кто-то рассуждает о плохих аспектах ООП, кто-то сравнивает реализации ООП в разных языках.
После прочтения большинства этих статей и нескольких лет кодинга на C# я заявляю: «ООП - это один большой обман. Никто не понимает, что это такое. Люди просто говорят какие-то умные термины, их собеседники с умным видом кивают, хотя на деле трактуют эти же термины совершенно по-разному».
И вот почему.
Читать: https://habr.com/ru/articles/907756/?utm_campaign=907756
@a_cup_of_java | Другие наши каналы
💊7👍3
Синтетика подвела: как реальные данные делают unit-тесты надёжными
Введение
В мире разработки программного обеспечения надёжность и качество кода напрямую зависят от эффективности тестирования. Unit-тесты призваны проверять поведение отдельных компонентов без влияния внешних факторов. Традиционно в них используют синтетические (искусственно сгенерированные) данные, однако на практике всё чаще оказывается, что такие тестовые наборы не отражают реальных сценариев и приводят к ложному ощущению «зелёного» покрытия. В этой статье мы разберём, почему использование реальных данных при написании unit-тестов значительно повышает их ценность, и объясним, какие недостатки несут синтетические данные.
Читать: https://habr.com/ru/articles/907812/?utm_campaign=907812
@a_cup_of_java | Другие наши каналы
Введение
В мире разработки программного обеспечения надёжность и качество кода напрямую зависят от эффективности тестирования. Unit-тесты призваны проверять поведение отдельных компонентов без влияния внешних факторов. Традиционно в них используют синтетические (искусственно сгенерированные) данные, однако на практике всё чаще оказывается, что такие тестовые наборы не отражают реальных сценариев и приводят к ложному ощущению «зелёного» покрытия. В этой статье мы разберём, почему использование реальных данных при написании unit-тестов значительно повышает их ценность, и объясним, какие недостатки несут синтетические данные.
Читать: https://habr.com/ru/articles/907812/?utm_campaign=907812
@a_cup_of_java | Другие наши каналы
МCP в Java: новый уровень интеграции с ИИ
Java-сообщество активно внедряет Model Context Protocol (MCP) — открытый стандарт для интеграции контекста с крупными языковыми моделями. Инструменты на базе JBang упрощают запуск MCP-серверов, расширяя возможности разработчиков и обогащая бизнес-приложения.
Подробности: https://www.infoq.com/news/2025/05/mcp-within-java-ecosystem/
#en
@a_cup_of_java | Другие наши каналы
Java-сообщество активно внедряет Model Context Protocol (MCP) — открытый стандарт для интеграции контекста с крупными языковыми моделями. Инструменты на базе JBang упрощают запуск MCP-серверов, расширяя возможности разработчиков и обогащая бизнес-приложения.
Подробности: https://www.infoq.com/news/2025/05/mcp-within-java-ecosystem/
#en
@a_cup_of_java | Другие наши каналы
JavaScript: большой гайд от Tproger
Гайд по JavaScript. Топовые и полезные статьи с теорией, инструментами и фреймворками. Практика для новичков и продвинутых программистов. ✔ Tproger
Читать: «JavaScript: большой гайд от Tproger»
@a_cup_of_java | Другие наши каналы
Гайд по JavaScript. Топовые и полезные статьи с теорией, инструментами и фреймворками. Практика для новичков и продвинутых программистов. ✔ Tproger
Читать: «JavaScript: большой гайд от Tproger»
@a_cup_of_java | Другие наши каналы
🌚1
От пет-проекта к книге про Spring
Рассказ о том, как я написал свою вторую книгу, о создании тестового приложения-примера для неё, об истории написания пет-проекта длиной почти в 20 лет, о том как мужественно переписывал его несколько раз, о мыслях в процессе написания проекта, о размышлениях и страданиях в процессе написания книги, о развилках и муках выбора, о финальном завершении книги, о выпуске книги в продажу, об испытанных при этом эмоциях, о сроках и их срывах, о дневнике написания книги и всём остальном.
Читать: https://habr.com/ru/articles/907920/?utm_campaign=907920
@a_cup_of_java | Другие наши каналы
Рассказ о том, как я написал свою вторую книгу, о создании тестового приложения-примера для неё, об истории написания пет-проекта длиной почти в 20 лет, о том как мужественно переписывал его несколько раз, о мыслях в процессе написания проекта, о размышлениях и страданиях в процессе написания книги, о развилках и муках выбора, о финальном завершении книги, о выпуске книги в продажу, об испытанных при этом эмоциях, о сроках и их срывах, о дневнике написания книги и всём остальном.
Читать: https://habr.com/ru/articles/907920/?utm_campaign=907920
@a_cup_of_java | Другие наши каналы