Уйти от ORM
По результатам статьи про Spring Data JPA хабровчане критиковали нас за то, что мы наступали на трудовые мозоли, но не сказали что надо делать. В этой статье мы, наконец, предложим концептуальное решение проблемы ORM.
Читать: https://habr.com/ru/articles/877052/?utm_campaign=877052
@a_cup_of_java | Другие наши каналы
По результатам статьи про Spring Data JPA хабровчане критиковали нас за то, что мы наступали на трудовые мозоли, но не сказали что надо делать. В этой статье мы, наконец, предложим концептуальное решение проблемы ORM.
Читать: https://habr.com/ru/articles/877052/?utm_campaign=877052
@a_cup_of_java | Другие наши каналы
🙈1
10 реальных вопросов с собеседования JavaScript-разработчика с ответами
Разбираем вопросы и задачи, которые могут встретиться на техническом собеседовании
Читать: «10 реальных вопросов с собеседования JavaScript-разработчика с ответами»
@a_cup_of_java | Другие наши каналы
Разбираем вопросы и задачи, которые могут встретиться на техническом собеседовании
Читать: «10 реальных вопросов с собеседования JavaScript-разработчика с ответами»
@a_cup_of_java | Другие наши каналы
🔥2
Введение в реактивное программирование
Так уж получилось, что, устроившись на свою первую работу, я был вынужден напрямую столкнуться с Project Reactor в некоторых сервисах (чего, честно говоря, совсем не ожидал). Почесав репу, я понял, что придется мне идти курить доку, так как знаний по данной теме у меня, мягко говоря, было немного (знал Reactor примерно на уровне: чем отличается Mono от Flux).
В процессе чтения возникла гениальнейшая идея - попрактиковать свои навыки понимания тех. литературы на английском, при этом еще и разобравшись в необходимой мне теме, попутно исполнив свою хотелку написать статью для Хабра. Так и родился мой перевод вводной страницы из документации по реактору.
Читать: https://habr.com/ru/articles/877332/?utm_campaign=877332
@a_cup_of_java | Другие наши каналы
Так уж получилось, что, устроившись на свою первую работу, я был вынужден напрямую столкнуться с Project Reactor в некоторых сервисах (чего, честно говоря, совсем не ожидал). Почесав репу, я понял, что придется мне идти курить доку, так как знаний по данной теме у меня, мягко говоря, было немного (знал Reactor примерно на уровне: чем отличается Mono от Flux).
В процессе чтения возникла гениальнейшая идея - попрактиковать свои навыки понимания тех. литературы на английском, при этом еще и разобравшись в необходимой мне теме, попутно исполнив свою хотелку написать статью для Хабра. Так и родился мой перевод вводной страницы из документации по реактору.
Читать: https://habr.com/ru/articles/877332/?utm_campaign=877332
@a_cup_of_java | Другие наши каналы
Разработка эффективных агентов с помощью Spring AI (Часть 1)
Команда Spring АйО перевела статью, в которой рассказывается про разработку эффективных агентов с помощью Spring AI. Исследование Anthropic "Building effective agents" подчеркивает важность простоты и модульности в разработке LLM-агентов.
В статье рассматривается, как эти принципы реализуются в Spring AI через пять ключевых паттернов: Chain Workflow, Parallelization Workflow, Routing Workflow, Orchestrator-Workers и Evaluator-Optimizer.
Читать: https://habr.com/ru/companies/spring_aio/articles/877196/?utm_campaign=877196
@a_cup_of_java | Другие наши каналы
Команда Spring АйО перевела статью, в которой рассказывается про разработку эффективных агентов с помощью Spring AI. Исследование Anthropic "Building effective agents" подчеркивает важность простоты и модульности в разработке LLM-агентов.
В статье рассматривается, как эти принципы реализуются в Spring AI через пять ключевых паттернов: Chain Workflow, Parallelization Workflow, Routing Workflow, Orchestrator-Workers и Evaluator-Optimizer.
Читать: https://habr.com/ru/companies/spring_aio/articles/877196/?utm_campaign=877196
@a_cup_of_java | Другие наши каналы
👍2🎉2
Telegram бот + ИИ Jlama своими руками
Хабр, привет! Сегодня мы попробуем сделать свой ИИ с телеграм ботом для возможности простого общения с ней. Сразу оговорюсь, мы не будем в очередной раз использовать открытый API ChatGPT или новомодного Deepseek. Мы развернем свой полноценный ИИ локально и сынтегрируем его с телеграм ботом.
Читать: https://habr.com/ru/articles/877746/?utm_campaign=877746
@a_cup_of_java | Другие наши каналы
Хабр, привет! Сегодня мы попробуем сделать свой ИИ с телеграм ботом для возможности простого общения с ней. Сразу оговорюсь, мы не будем в очередной раз использовать открытый API ChatGPT или новомодного Deepseek. Мы развернем свой полноценный ИИ локально и сынтегрируем его с телеграм ботом.
Читать: https://habr.com/ru/articles/877746/?utm_campaign=877746
@a_cup_of_java | Другие наши каналы
Создаём мобильное приложение с нуля: от идеи до публикации в App Store и Google Play
Узнайте, как создать мобильное приложение с нуля: от формирования идеи и разработки до тестирования и публикации в App Store и Google Play. Полный обзор ключевых этапов!
Читать: «Создаём мобильное приложение с нуля: от идеи до публикации в App Store и Google Play»
@a_cup_of_java | Другие наши каналы
Узнайте, как создать мобильное приложение с нуля: от формирования идеи и разработки до тестирования и публикации в App Store и Google Play. Полный обзор ключевых этапов!
Читать: «Создаём мобильное приложение с нуля: от идеи до публикации в App Store и Google Play»
@a_cup_of_java | Другие наши каналы
Java становится надежнее: “Целостность по умолчанию” в действии
Команда Spring АйО перевела статью про ужесточение контроля за динамической загрузкой агентов, ограничения доступа к опасным методам работы с памятью и JNI в новых версиях JDK.
Читать: https://habr.com/ru/companies/spring_aio/articles/877864/?utm_campaign=877864
@a_cup_of_java | Другие наши каналы
Команда Spring АйО перевела статью про ужесточение контроля за динамической загрузкой агентов, ограничения доступа к опасным методам работы с памятью и JNI в новых версиях JDK.
Читать: https://habr.com/ru/companies/spring_aio/articles/877864/?utm_campaign=877864
@a_cup_of_java | Другие наши каналы
👍4🎉2
Как мы перенесли web-сервис в Телеграм Mini Apps
До лета 2023 года перед разработчиками Точка Нетворк стояла проблема: CJM становился сложным, и это затрудняло работу над продуктом. В итоге мы придумали решение — полностью отказались от веба и сосредоточили развитие платформы только в Mini Apps от Телеграма. Без этого было бы невозможно развивать продукт дальше.
В статье расскажу, как и почему мы отказались от веб-версии Точка Нетворк — локального сообщества предпринимателей — и переместились в Телеграм.
Читать: «Как мы перенесли web-сервис в Телеграм Mini Apps»
@a_cup_of_java | Другие наши каналы
До лета 2023 года перед разработчиками Точка Нетворк стояла проблема: CJM становился сложным, и это затрудняло работу над продуктом. В итоге мы придумали решение — полностью отказались от веба и сосредоточили развитие платформы только в Mini Apps от Телеграма. Без этого было бы невозможно развивать продукт дальше.
В статье расскажу, как и почему мы отказались от веб-версии Точка Нетворк — локального сообщества предпринимателей — и переместились в Телеграм.
Читать: «Как мы перенесли web-сервис в Телеграм Mini Apps»
@a_cup_of_java | Другие наши каналы
Apache Flink: использование и автоматическая проверка собственного сериализатора состояния
Привет, Хабр! На связи Александр Бобряков, техлид команды МТС Аналитики. Это мой финальный пост про Apache Flink. В предыдущих частях мы рассматривали процессы сериализации данных, написали кастомный сериализатор, а также покрыли его тестами. В них проверялась поддержка эволюции схемы состояния. Для этого мы реализовали много удобных абстракций, связанных с перезагрузкой Flink MiniCluster, компиляцией тестовых java-классов, использованием их в classpath кластера и так далее.
В этом материале мы применим разработанный сериализатор JacksonStateSerializer в бою, а также автоматизируем проверку эволюции схемы для всех наших классов, участвующих в сериализации.
Весь разбираемый исходный код можно найти в репозитории AlexanderBobryakov/flink-spring. В master-ветке представлен итоговый проект по всей серии. Данная статья соответствует релизной ветке с названием release/11_JacksonEvolvingState. По мере выхода новых материалов на Хабре ссылки на них будут появляться ниже.
Список моих постов про Flink:
Читать: https://habr.com/ru/companies/ru_mts/articles/878070/?utm_campaign=878070
@a_cup_of_java | Другие наши каналы
Привет, Хабр! На связи Александр Бобряков, техлид команды МТС Аналитики. Это мой финальный пост про Apache Flink. В предыдущих частях мы рассматривали процессы сериализации данных, написали кастомный сериализатор, а также покрыли его тестами. В них проверялась поддержка эволюции схемы состояния. Для этого мы реализовали много удобных абстракций, связанных с перезагрузкой Flink MiniCluster, компиляцией тестовых java-классов, использованием их в classpath кластера и так далее.
В этом материале мы применим разработанный сериализатор JacksonStateSerializer в бою, а также автоматизируем проверку эволюции схемы для всех наших классов, участвующих в сериализации.
Весь разбираемый исходный код можно найти в репозитории AlexanderBobryakov/flink-spring. В master-ветке представлен итоговый проект по всей серии. Данная статья соответствует релизной ветке с названием release/11_JacksonEvolvingState. По мере выхода новых материалов на Хабре ссылки на них будут появляться ниже.
Список моих постов про Flink:
Читать: https://habr.com/ru/companies/ru_mts/articles/878070/?utm_campaign=878070
@a_cup_of_java | Другие наши каналы
😁2
Судоку: моя попытка в новый алгоритм решения. Часть 1 (надеюсь)…
Как известно, нахождение оптимального алгоритма решения любой NP-полной задачи - это цель амбициозная, пахнущая славой и неплохими деньгами. Как раз к таким задачам относится Судоку, и как раз своим решением этой головоломки я горел последний месяц. На данный момент сделана (по ощущениям) лишь половина дела, и хоть результаты и вышли интересными (по крайней мере для меня-любимого) - дело еще далеко до завершения, т.к. в определенном моменте настал "творческий тупик". Впрочем, надеюсь, что он пройдет и на свет появится по крайней мере какое-то новое любопытное решение. Пока что лишь поделюсь своими первыми наработками в этом направлении. Пока что они не вполне вылизаны + написаны на Java, перевод на какой-нибудь более простой для восприятия язык планируется лишь с окончательной победой на Java.
Читать: https://habr.com/ru/articles/878124/?utm_campaign=878124
@a_cup_of_java | Другие наши каналы
Как известно, нахождение оптимального алгоритма решения любой NP-полной задачи - это цель амбициозная, пахнущая славой и неплохими деньгами. Как раз к таким задачам относится Судоку, и как раз своим решением этой головоломки я горел последний месяц. На данный момент сделана (по ощущениям) лишь половина дела, и хоть результаты и вышли интересными (по крайней мере для меня-любимого) - дело еще далеко до завершения, т.к. в определенном моменте настал "творческий тупик". Впрочем, надеюсь, что он пройдет и на свет появится по крайней мере какое-то новое любопытное решение. Пока что лишь поделюсь своими первыми наработками в этом направлении. Пока что они не вполне вылизаны + написаны на Java, перевод на какой-нибудь более простой для восприятия язык планируется лишь с окончательной победой на Java.
Читать: https://habr.com/ru/articles/878124/?utm_campaign=878124
@a_cup_of_java | Другие наши каналы
🎉4🤨1
JDBC Fetch Size: Маленькая настройка, большие последствия
В новом переводе от команды Spring АйО Гевин Кинг, создатель Hibernate, объясняет, почему значение fetch size по умолчанию в драйвере Oracle может замедлять запросы — и как его изменение помогает повысить масштабируемость системы.
Читать: https://habr.com/ru/companies/spring_aio/articles/878194/?utm_campaign=878194
@a_cup_of_java | Другие наши каналы
В новом переводе от команды Spring АйО Гевин Кинг, создатель Hibernate, объясняет, почему значение fetch size по умолчанию в драйвере Oracle может замедлять запросы — и как его изменение помогает повысить масштабируемость системы.
Читать: https://habr.com/ru/companies/spring_aio/articles/878194/?utm_campaign=878194
@a_cup_of_java | Другие наши каналы
👍2
WireMock: Легкий путь к эффективному тестированию
Привет, меня зовут Иван, и я зануда.
Сразу скажу, что в моем понимании зануда в тестировании — не тот человек, который всех достал и которого все хотят удушить, а тот, который умеет показать людям, что нужно делать хорошо и не делать плохо, и добиться от них этого. Я считаю, что QA должно расшифровываться как Quality Assistant. Это даже не про Assurance, когда вы обеспечиваете качество, это именно про то, что вы как тестировщик и участник команды помогаете на каждом этапе от требований до выкатки в прод и работы с сопровождением и вашими коллегами добиться того, чтобы каждый этап проходил все лучше и лучше.
В тестировании я уже семь лет, для кого-то это маленький срок, для кого-то — большой, я очень впечатлен коллегами, которые работают уже по 15-20 лет, но развиваюсь, стараюсь нести добро в массы. Одна из моих основных специализаций заключается в том, что я прихожу на проекты, которые начинаются с большой бизнес-идеи, движущейся через много команд. Мне нравятся все вопросы межкомандного тестирования, интеграционного взаимодействия, выстраивания стендов, как драйвить коллег, чтобы мы двигались в одном направлении и не словили на проде кучу ошибок — этим я и занимаюсь.
В связи с этим я часто замечаю, что многие команды и коллеги приходят на интеграционные стенды, мы выкатываемся на те стенды, где начинают работать настоящие сервисы на тестовых средах. Я у коллег вижу такие банальные ошибки, которые нельзя было бы пропустить, если бы мы тестировались изолированно на каком-то отдельном кусочке, проверяя свои интеграции еще до поездки на тестовый стенд. Естественно, чем позже мы находим ошибку, тем больше стоимость ее исправления, поэтому нам нужны моки, чтобы мы все это проверяли.
Читать: https://habr.com/ru/companies/beeline_tech/articles/878368/?utm_campaign=878368
@a_cup_of_java | Другие наши каналы
Привет, меня зовут Иван, и я зануда.
Сразу скажу, что в моем понимании зануда в тестировании — не тот человек, который всех достал и которого все хотят удушить, а тот, который умеет показать людям, что нужно делать хорошо и не делать плохо, и добиться от них этого. Я считаю, что QA должно расшифровываться как Quality Assistant. Это даже не про Assurance, когда вы обеспечиваете качество, это именно про то, что вы как тестировщик и участник команды помогаете на каждом этапе от требований до выкатки в прод и работы с сопровождением и вашими коллегами добиться того, чтобы каждый этап проходил все лучше и лучше.
В тестировании я уже семь лет, для кого-то это маленький срок, для кого-то — большой, я очень впечатлен коллегами, которые работают уже по 15-20 лет, но развиваюсь, стараюсь нести добро в массы. Одна из моих основных специализаций заключается в том, что я прихожу на проекты, которые начинаются с большой бизнес-идеи, движущейся через много команд. Мне нравятся все вопросы межкомандного тестирования, интеграционного взаимодействия, выстраивания стендов, как драйвить коллег, чтобы мы двигались в одном направлении и не словили на проде кучу ошибок — этим я и занимаюсь.
В связи с этим я часто замечаю, что многие команды и коллеги приходят на интеграционные стенды, мы выкатываемся на те стенды, где начинают работать настоящие сервисы на тестовых средах. Я у коллег вижу такие банальные ошибки, которые нельзя было бы пропустить, если бы мы тестировались изолированно на каком-то отдельном кусочке, проверяя свои интеграции еще до поездки на тестовый стенд. Естественно, чем позже мы находим ошибку, тем больше стоимость ее исправления, поэтому нам нужны моки, чтобы мы все это проверяли.
Читать: https://habr.com/ru/companies/beeline_tech/articles/878368/?utm_campaign=878368
@a_cup_of_java | Другие наши каналы
👍5👏2❤1
JetBrains AI Coding Agent Junie Provides Tight Integration with JetBrains IDEs
JetBrains has announced Junie, its new AI coding agent, in closed preview. Junie, says the company, is able to carry through the coding tasks you assign it and leverage the knowledge about your project context as available in the IDE.
By Sergio De Simone
Read: https://www.infoq.com/news/2025/01/jetbrains-junie-agent/
@a_cup_of_java | Другие наши каналы
JetBrains has announced Junie, its new AI coding agent, in closed preview. Junie, says the company, is able to carry through the coding tasks you assign it and leverage the knowledge about your project context as available in the IDE.
By Sergio De Simone
Read: https://www.infoq.com/news/2025/01/jetbrains-junie-agent/
@a_cup_of_java | Другие наши каналы
IntelliJ IDEA 2025.1 EAP 3
Команда Spring АйО перевела статью от JetBrains про релиз третей версии EAP для IntelliJ IDEA 2025.1.
Среди нововведений: обновления режима Kotlin K2, улучшенное логическое представление в панели Structure и автодополнение для несуществующих репозиториев Spring Data.
Читать: https://habr.com/ru/companies/spring_aio/articles/878530/?utm_campaign=878530
@a_cup_of_java | Другие наши каналы
Команда Spring АйО перевела статью от JetBrains про релиз третей версии EAP для IntelliJ IDEA 2025.1.
Среди нововведений: обновления режима Kotlin K2, улучшенное логическое представление в панели Structure и автодополнение для несуществующих репозиториев Spring Data.
Читать: https://habr.com/ru/companies/spring_aio/articles/878530/?utm_campaign=878530
@a_cup_of_java | Другие наши каналы
❤4👍3👎1
Заговор разработчиков против корпораций: архитектура и принципы
С момента написания предыдущей статьи я находился под пристальным вниманием. Попытка опубликовать материалы на англоязычных платформах обернулась фиаско — в первые же минуты легионы последователей тайного братства обрушились с критикой:
— Нет никакой организации! — вопили они.
Подозреваю, что слежка велась через мой телеграм-канал.
Тем не менее я жив, а значит, пора поведать об архитектурной подлости неимоверных масштабов. Вы узнаете, как ведется борьба с крупными корпорациями изнутри и снаружи, как умы разработчиков заражают деструктивными идеями в обертке сакральных истин.
Узнать тайны, о которых молчали десятилети
Читать: https://habr.com/ru/articles/878620/?utm_campaign=878620
@a_cup_of_java | Другие наши каналы
С момента написания предыдущей статьи я находился под пристальным вниманием. Попытка опубликовать материалы на англоязычных платформах обернулась фиаско — в первые же минуты легионы последователей тайного братства обрушились с критикой:
— Нет никакой организации! — вопили они.
Подозреваю, что слежка велась через мой телеграм-канал.
Тем не менее я жив, а значит, пора поведать об архитектурной подлости неимоверных масштабов. Вы узнаете, как ведется борьба с крупными корпорациями изнутри и снаружи, как умы разработчиков заражают деструктивными идеями в обертке сакральных истин.
Узнать тайны, о которых молчали десятилети
Читать: https://habr.com/ru/articles/878620/?utm_campaign=878620
@a_cup_of_java | Другие наши каналы
Гарантированное получение данных через REST API: Подходы и библиотеки для Java
Как реализовать надежное взаимодействие с API в Java. Примеры кода, механизм retry и рекомендации для повышения отказоустойчивости системы
Читать: «Гарантированное получение данных через REST API: Подходы и библиотеки для Java»
@a_cup_of_java | Другие наши каналы
Как реализовать надежное взаимодействие с API в Java. Примеры кода, механизм retry и рекомендации для повышения отказоустойчивости системы
Читать: «Гарантированное получение данных через REST API: Подходы и библиотеки для Java»
@a_cup_of_java | Другие наши каналы
👍3
Альтернатива Keycloak: как настроить SSO в Authentik
Привет, Хабр!
Не так давно передо мной встала задача настроить единый вход (SSO) в наше приложение, и так исторически сложилось, что в компании для этого используют open‑source‑провайдер аутентификации authentik.
Первым делом я, конечно, полез в официальную документацию провайдера, но, к сожалению, не нашел там каких‑то подробных гайдов или туториалов по настройке. Дальше я, само собой, решил погуглить — нашел статьи по запуску authentik, а вот более‑менее подробного туториала, как все это заставить работать, используя наш стек (Java, Spring Boot), не оказалось. Поэтому я решил сделать его сам.
В статье разберем шаги для простейшей настройки authentik и запустим его в связке с Spring Boot приложением.
Читать: https://habr.com/ru/articles/878802/?utm_campaign=878802
@a_cup_of_java | Другие наши каналы
Привет, Хабр!
Не так давно передо мной встала задача настроить единый вход (SSO) в наше приложение, и так исторически сложилось, что в компании для этого используют open‑source‑провайдер аутентификации authentik.
Первым делом я, конечно, полез в официальную документацию провайдера, но, к сожалению, не нашел там каких‑то подробных гайдов или туториалов по настройке. Дальше я, само собой, решил погуглить — нашел статьи по запуску authentik, а вот более‑менее подробного туториала, как все это заставить работать, используя наш стек (Java, Spring Boot), не оказалось. Поэтому я решил сделать его сам.
В статье разберем шаги для простейшей настройки authentik и запустим его в связке с Spring Boot приложением.
Читать: https://habr.com/ru/articles/878802/?utm_campaign=878802
@a_cup_of_java | Другие наши каналы
👍2
ТОП лучших курсов Django: обучение с нуля
⭐Полный список лучших онлайн-курсов Django: освоить веб-разработку с одним из самых мощных фреймворков Python. Сравнение предложений с ценами, оценки и отзывы
Читать: «ТОП лучших курсов Django: обучение с нуля»
@a_cup_of_java | Другие наши каналы
⭐Полный список лучших онлайн-курсов Django: освоить веб-разработку с одним из самых мощных фреймворков Python. Сравнение предложений с ценами, оценки и отзывы
Читать: «ТОП лучших курсов Django: обучение с нуля»
@a_cup_of_java | Другие наши каналы
🎉2
Разработчик с опытом объяснил, почему новички тонут в туториалах, а не в знаниях
Опытный разработчик объяснил, почему новички тонут в туториалах, а не в знаниях, и предложил сосредоточиться на базовых принципах программирования
Читать: «Разработчик с опытом объяснил, почему новички тонут в туториалах, а не в знаниях»
@a_cup_of_java | Другие наши каналы
Опытный разработчик объяснил, почему новички тонут в туториалах, а не в знаниях, и предложил сосредоточиться на базовых принципах программирования
Читать: «Разработчик с опытом объяснил, почему новички тонут в туториалах, а не в знаниях»
@a_cup_of_java | Другие наши каналы
👏3
Пойдём в нейросети вместе со мной
Сегодня никого не удивить ещё одной простой нейросетью для распознавания изображений на питоне через вычисления над матрицами.
(но право слово, дополнительно хорошая статья с ещё одним объяснением алгоритма обратного распространения ошибки совсем не помешает)
Но как насчёт нейросети на jave реализованной без использования матриц? Просто нейроны. Просто связанные между собой.
И что если я скажу тебе, что скорость работы этих двух подходов примерно сравнима между собой?
Читать: https://habr.com/ru/articles/878902/?utm_campaign=878902
@a_cup_of_java | Другие наши каналы
Сегодня никого не удивить ещё одной простой нейросетью для распознавания изображений на питоне через вычисления над матрицами.
(но право слово, дополнительно хорошая статья с ещё одним объяснением алгоритма обратного распространения ошибки совсем не помешает)
Но как насчёт нейросети на jave реализованной без использования матриц? Просто нейроны. Просто связанные между собой.
И что если я скажу тебе, что скорость работы этих двух подходов примерно сравнима между собой?
Читать: https://habr.com/ru/articles/878902/?utm_campaign=878902
@a_cup_of_java | Другие наши каналы
🔥3
Debezium Joins the Commonhaus Foundation
The Debezium project recently completed its move to the Commonhaus Foundation after consulting with the Debezium community and Red Hat, who exclusively sponsored the project since the start in 2015.
By Johan Janssen
Read: https://www.infoq.com/news/2025/02/debezium-joins-commonhaus/
@a_cup_of_java | Другие наши каналы
The Debezium project recently completed its move to the Commonhaus Foundation after consulting with the Debezium community and Red Hat, who exclusively sponsored the project since the start in 2015.
By Johan Janssen
Read: https://www.infoq.com/news/2025/02/debezium-joins-commonhaus/
@a_cup_of_java | Другие наши каналы
👏2