Пишем сервис на Spring c помощью Codex - новое видео
➡️ YouTube | RuTube | VK Видео
В этом видео я покажу основные подходы при разработке типовых rest-сервисов на Spring и Kotlin с помощью AI-агентов. В данном примере используется Codex от Open AI в режиме консольного агента. Эти подходы применимы и ко многим другим агентам (например, qwen code).
➡️ YouTube | RuTube | VK Видео
В этом видео я покажу основные подходы при разработке типовых rest-сервисов на Spring и Kotlin с помощью AI-агентов. В данном примере используется Codex от Open AI в режиме консольного агента. Эти подходы применимы и ко многим другим агентам (например, qwen code).
👍5🔥4❤2
Функциональные интерфейсы в Java - новое видео
➡️ YouTube | RuTube | VK Видео
В основе Stream API, которое значительно упрощает работу с коллекциями в Java, лежит понятие функциональных интерфейсов. Любой интерфейс можно назвать функциональным, если он содержит один-единственный метод. Такой интерфейс снабжается аннотацией
В данном видео рассмотрим наиболее употребимые функциональные интерфейсы стандартной библиотеки. Все эти интерфейсы находятся в пакете
➡️ YouTube | RuTube | VK Видео
В основе Stream API, которое значительно упрощает работу с коллекциями в Java, лежит понятие функциональных интерфейсов. Любой интерфейс можно назвать функциональным, если он содержит один-единственный метод. Такой интерфейс снабжается аннотацией
@FunctionalInterface.В данном видео рассмотрим наиболее употребимые функциональные интерфейсы стандартной библиотеки. Все эти интерфейсы находятся в пакете
java.util.function.👍7🔥4❤1
Stream API - новое видео
➡️ YouTube | RuTube | VK Видео
Stream API появился в Java 8 как более гибкий и эффективный способ работы с коллекциями.
Все методы Stream API можно разделить на две группы: промежуточные и терминальные (конечные). Промежуточные операции следует воспринимать как «отложенные», т.е. они не меняют сами данные, а только задают правила их изменения. А терминальные как раз инициируют всю цепочку преобразований и возвращают модифицированные данные.
➡️ YouTube | RuTube | VK Видео
Stream API появился в Java 8 как более гибкий и эффективный способ работы с коллекциями.
Все методы Stream API можно разделить на две группы: промежуточные и терминальные (конечные). Промежуточные операции следует воспринимать как «отложенные», т.е. они не меняют сами данные, а только задают правила их изменения. А терминальные как раз инициируют всю цепочку преобразований и возвращают модифицированные данные.
👍7🤝3🔥1
Как создавать документы в формате Markdown - новое видео
➡️ YouTube | RuTube | VK Видео
Markdown был создан в 2004 году как упрощённый язык разметки документов. Даже в его названии обыгрывается слово markup (разметка), что намекает нам на простоту использования. Сейчас этот язык поддерживается большинством IDE и сервисов по работе с исходным кодом типа github и bitbucket.
В этом ролике вы узнаете об основных возможностях формата markdown и уже через 5 минут без труда сможете сверстать свой первый
➡️ YouTube | RuTube | VK Видео
Markdown был создан в 2004 году как упрощённый язык разметки документов. Даже в его названии обыгрывается слово markup (разметка), что намекает нам на простоту использования. Сейчас этот язык поддерживается большинством IDE и сервисов по работе с исходным кодом типа github и bitbucket.
В этом ролике вы узнаете об основных возможностях формата markdown и уже через 5 минут без труда сможете сверстать свой первый
README.md👍7🔥5
Новая фича в Spring Initializr!
Не прошло и 7 лет (примерно столько я знаю про этот сервис) как в Spring Initializr появилась возможность выбирать формат конфига приложения. Если раньше в заготовке проекта всегда генерился
Я долго не мог понять, почему они не делают yaml по дефолту, ведь во многих современных системах используется именно этот формат (docker-compose, kubernetes, helm, ansible, gitlab). В самом спринге он поддерживается уже давно. И вот на днях я, наконец, увидел столь ожидаемую фичу)
P.S. И ещё хочу поделиться одним лайфхаком (вдруг вы не знали): любую конфигурацию проекта можно расшарить в виде обычной гиперссылки и отправить другим разработчикам, если воспользоваться кнопкой Share. Этот функционал доступен уже давно.
Не прошло и 7 лет (примерно столько я знаю про этот сервис) как в Spring Initializr появилась возможность выбирать формат конфига приложения. Если раньше в заготовке проекта всегда генерился
application.properties и мне приходилось вручную его преобразовывать в yaml, то теперь это больше не требуется и можно сразу его выбрать в настройках!Я долго не мог понять, почему они не делают yaml по дефолту, ведь во многих современных системах используется именно этот формат (docker-compose, kubernetes, helm, ansible, gitlab). В самом спринге он поддерживается уже давно. И вот на днях я, наконец, увидел столь ожидаемую фичу)
P.S. И ещё хочу поделиться одним лайфхаком (вдруг вы не знали): любую конфигурацию проекта можно расшарить в виде обычной гиперссылки и отправить другим разработчикам, если воспользоваться кнопкой Share. Этот функционал доступен уже давно.
👍8🔥4❤🔥3
Telegram-bot на Spring AI для ChatGPT - новое видео
➡️ YouTube | RuTube | VK Видео
#kotlin #telegram #spring #openai #chatgpt Из этого видео вы узнаете, как написать свой telegram-бот, который взаимодействует с нейросетью. Напишем его на Kotlin, причём таким образом, чтобы с нейросетью можно было вести диалог, т.е. рассмотрим, как сохранять контекст между сообщениями.
Для взаимодействия с нейросетью будем использовать фреймворк Spring AI из экосистемы Spring.
Текстовый вариант этого ролика доступен в виде статьи.
➡️ YouTube | RuTube | VK Видео
#kotlin #telegram #spring #openai #chatgpt Из этого видео вы узнаете, как написать свой telegram-бот, который взаимодействует с нейросетью. Напишем его на Kotlin, причём таким образом, чтобы с нейросетью можно было вести диалог, т.е. рассмотрим, как сохранять контекст между сообщениями.
Для взаимодействия с нейросетью будем использовать фреймворк Spring AI из экосистемы Spring.
Текстовый вариант этого ролика доступен в виде статьи.
👍5❤🔥2🔥1
Новое видео - продолжаем тему про ИИ
➡️ YouTube | RuTube | VK Видео
В Spring AI есть возможность использования retrieval augmented generation (генерация, дополненная поиском). RAG позволяет превратить любую LLM "общего назначения" в интерактивного помощника, знакомого с вашей предметной областью.
Перед тем, как дать ответ на запрос пользователя, выполним поиск подходящей информации в векторном хранилище среди заранее подготовленных документов. Причём каждый документ хранится не в виде текста, а в виде массива чисел (т.н. «векторов»). В качестве векторного хранилища мы будем использовать pgVector - расширение для postgres.
Также доступна статья по теме и пример на github.
➡️ YouTube | RuTube | VK Видео
В Spring AI есть возможность использования retrieval augmented generation (генерация, дополненная поиском). RAG позволяет превратить любую LLM "общего назначения" в интерактивного помощника, знакомого с вашей предметной областью.
Перед тем, как дать ответ на запрос пользователя, выполним поиск подходящей информации в векторном хранилище среди заранее подготовленных документов. Причём каждый документ хранится не в виде текста, а в виде массива чисел (т.н. «векторов»). В качестве векторного хранилища мы будем использовать pgVector - расширение для postgres.
Также доступна статья по теме и пример на github.
👍3🔥2👨💻1
Forwarded from Spring АйО
🎉 Встречаем Spring AI Agents и Spring AI Bench
Java-разработчикам теперь доступен мощный инструментарий для работы с агентными ИИ-системами: Spring AI представила проекты Agents и Bench.
В новом переводе от команды Spring АйО рассмотрим, как первый обеспечивает удобную абстракцию для работы с CLI ИИ-агентами, а второй — предлагает реалистичные бенчмарки для оценки их эффективности в задачах enterprise-разработки.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/965294/
Java-разработчикам теперь доступен мощный инструментарий для работы с агентными ИИ-системами: Spring AI представила проекты Agents и Bench.
В новом переводе от команды Spring АйО рассмотрим, как первый обеспечивает удобную абстракцию для работы с CLI ИИ-агентами, а второй — предлагает реалистичные бенчмарки для оценки их эффективности в задачах enterprise-разработки.
📚 Читать на Хабр: https://habr.com/ru/companies/spring_aio/articles/965294/
🔥4👍2
Model Context Protocol в Spring AI - новое видео
➡️ YouTube | RuTube | VK Видео
#kotlin #spring #ai Протокол контекста модели (Model Context Protocol, MCP) — это открытый стандарт, разработанный и представленный компанией Anthropic 25 ноября 2024 года. Основная цель MCP — создание унифицированного протокола взаимодействия между большими языковыми моделями (LLM) и внешними источниками данных и инструментами. MCP унифицирует определения вызовов интерфейса для доступа к возможностям различных инструментов.
Статья по теме: https://devmark.ru/article/spring-ai-mcp
Пример mcp-сервера: https://github.com/devmarkru/mcp-server-example
Пример mcp-клиента: https://github.com/devmarkru/mcp-client-example
➡️ YouTube | RuTube | VK Видео
#kotlin #spring #ai Протокол контекста модели (Model Context Protocol, MCP) — это открытый стандарт, разработанный и представленный компанией Anthropic 25 ноября 2024 года. Основная цель MCP — создание унифицированного протокола взаимодействия между большими языковыми моделями (LLM) и внешними источниками данных и инструментами. MCP унифицирует определения вызовов интерфейса для доступа к возможностям различных инструментов.
Статья по теме: https://devmark.ru/article/spring-ai-mcp
Пример mcp-сервера: https://github.com/devmarkru/mcp-server-example
Пример mcp-клиента: https://github.com/devmarkru/mcp-client-example
🔥3👍2
Forwarded from Spring АйО
🔥 В Spring 7 завезли нативное версионирование API
База нововведения —
В контроллерах появляется новый атрибут
Хочешь гибкости — прописываешь
На клиентской стороне —
Тестовые клиенты работают по той же логике.
Статья на Хабр "Нативный API Versioning в Spring 7: долгожданная официальная поддержка"
Демо-проект с тестами и примерами
Документация
База нововведения —
ApiVersionStrategy. Он понимает, где искать версию (header, query, media type или путь), умеет её парсить как семантическую, знает поддерживаемый диапазон и может автоматически выставлять Deprecation/Sunset-заголовки. То есть вместо самодельных фильтров теперь есть один официальный механизм.В контроллерах появляется новый атрибут
version:
@GetMapping(path = "/account/{id}", version = "1.1")
public Account get() { ... }
Хочешь гибкости — прописываешь
"1.1+", и метод будет жить до тех пор, пока ты явно не создашь новую версию. Функциональные эндпоинты тоже подтянулись — у них теперь есть предикат version("1.2").На клиентской стороне —
ApiVersionInserter, который один раз настраиваешь:
RestClient client = RestClient.builder()
.baseUrl("http://localhost:8080")
.apiVersionInserter(ApiVersionInserter.useHeader("API-Version"))
.build();
// И дальше только версия
client.get().uri("/account/1")
.apiVersion(1.1)
.retrieve()
.body(Account.class);
Тестовые клиенты работают по той же логике.
Статья на Хабр "Нативный API Versioning в Spring 7: долгожданная официальная поддержка"
Демо-проект с тестами и примерами
Документация
👍4🔥3
Forwarded from Мир Plat.Form
Собираемся в тёплой компании, где обсудим:
❄️ Как реализовать справочники в реальном времени на PostgreSQL и Kafka.
❄️ Чем Virtual Threads отличается от реактивного подхода.
❄️ И узнаем, почему особенности обработки произвольного Unicode-текста могут ввести в ступор даже самого опытного разработчика.
Познакомьтесь со спикерами и их докладами и регистрируйтесь на митап по ссылке
Увидимся!
🟣 27 ноября, 18:00-22:00🟣 Москва, 3-й Красносельский переулок, 19, стр. 13
(Зал «Grey Green»)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Релиз Spring Boot 4!
На прошлой неделе вышел Spring 7 и почти сразу после этого на днях в Spring Initializr стал доступен Spring Boot 4. Пора обновляться, господа!
Напомню, что одной из интересных фишек является версионирование rest-запросов. То, что раньше все делали самостоятельно через сегменты урла или через заголовки, теперь работает из коробки.
Если вы будете генерить проект на Java, то есть возможно подключить Java 25. Если же вы пишете на Kotlin - то почему-то даже при выборе Java 25, в проекте будет указана Java 24. Однако при этом наконец-то подключается не Kotlin 1.9, а Kotlin 2.2:
#spring #java
На прошлой неделе вышел Spring 7 и почти сразу после этого на днях в Spring Initializr стал доступен Spring Boot 4. Пора обновляться, господа!
Напомню, что одной из интересных фишек является версионирование rest-запросов. То, что раньше все делали самостоятельно через сегменты урла или через заголовки, теперь работает из коробки.
Если вы будете генерить проект на Java, то есть возможно подключить Java 25. Если же вы пишете на Kotlin - то почему-то даже при выборе Java 25, в проекте будет указана Java 24. Однако при этом наконец-то подключается не Kotlin 1.9, а Kotlin 2.2:
plugins {
kotlin("jvm") version "2.2.21"
kotlin("plugin.spring") version "2.2.21"
id("org.springframework.boot") version "4.0.0"
id("io.spring.dependency-management") version "1.1.7"
}#spring #java
👍4🔥2👌2
Ускоряем Spring-сервис одной настройкой
На недавно прошедшем митапе от Мир.Platform был интересный доклад про виртуальные потоки в Java и Spring.
Запись трансляции с митапа.
Если вкратце, то достаточно в конфиге выставить один параметр, и приложение, написанное на Spring и Tomcat, начинает работать так же шустро, как и неблокирующий WebFlux/Netty (даже чуть быстрее). При этом вообще никак не надо модифицировать обычный, "синхронный" код.
Вот что надо прописать в
Минимальные требования: Java 21 и Spring Boot 3.2. Но ещё лучше это будет работать на новом Spring Boot 4 и Java 25.
#spring #java
На недавно прошедшем митапе от Мир.Platform был интересный доклад про виртуальные потоки в Java и Spring.
Запись трансляции с митапа.
Если вкратце, то достаточно в конфиге выставить один параметр, и приложение, написанное на Spring и Tomcat, начинает работать так же шустро, как и неблокирующий WebFlux/Netty (даже чуть быстрее). При этом вообще никак не надо модифицировать обычный, "синхронный" код.
Вот что надо прописать в
application.properties:spring.threads.virtual.enabled=true
Минимальные требования: Java 21 и Spring Boot 3.2. Но ещё лучше это будет работать на новом Spring Boot 4 и Java 25.
#spring #java
VK Видео
Java-митап Мир Plat.Form — Видео | ВКонтакте
Смотрите онлайн Java-митап Мир Plat.Form 2 ч 20 мин 22 с. Видео от 27 ноября 2025 в хорошем качестве, без регистрации в бесплатном видеокаталоге ВКонтакте! 136 — просмотрели.
👍6🔥3
Дорогие друзья!
Именно уходящий 2025 год привнёс в нашу повседневную практику разработки искусственный интеллект. Он перешёл из разряда инструмента для энтузиастов в разряд инструментов для промышленного использования. Во многом это произошло благодаря cli-агентам, работающим напрямую с проектом, а также MCP. Я даже показывал в одном из своих видео, как агент самостоятельно решает типовые задачи на уровне джуна и гарантирует компиляцию кода. Многие отечественные компании активно внедряют ИИ в свои повседневные практики. И это меняет рынок труда.
Темпы развития современных технологий поистине впечатляют. Поэтому с нетерпением ждём, что принесёт нам Новый 2026 год с точки зрения технологий. Будут ли ещё значимые изменения в индустрии разработки? Появятся ли ещё более высокоуровневые и удобные инструменты? Сохранятся ли вообще языки программирования для прикладного ПО или будет некий универсальный мета-язык, специально заточенный под LLM? Ответы на все эти вопросы мы узнаем уже совсем скоро!
Буквально через несколько часов наступит Новый Год и я хочу нам пожелать шагать в ногу со временем и быть готовыми к хорошим переменам и изменению привычных подходов.
Всех с праздником! С Новым 2026 годом!!! 🍾🥂🎄
Именно уходящий 2025 год привнёс в нашу повседневную практику разработки искусственный интеллект. Он перешёл из разряда инструмента для энтузиастов в разряд инструментов для промышленного использования. Во многом это произошло благодаря cli-агентам, работающим напрямую с проектом, а также MCP. Я даже показывал в одном из своих видео, как агент самостоятельно решает типовые задачи на уровне джуна и гарантирует компиляцию кода. Многие отечественные компании активно внедряют ИИ в свои повседневные практики. И это меняет рынок труда.
Темпы развития современных технологий поистине впечатляют. Поэтому с нетерпением ждём, что принесёт нам Новый 2026 год с точки зрения технологий. Будут ли ещё значимые изменения в индустрии разработки? Появятся ли ещё более высокоуровневые и удобные инструменты? Сохранятся ли вообще языки программирования для прикладного ПО или будет некий универсальный мета-язык, специально заточенный под LLM? Ответы на все эти вопросы мы узнаем уже совсем скоро!
Буквально через несколько часов наступит Новый Год и я хочу нам пожелать шагать в ногу со временем и быть готовыми к хорошим переменам и изменению привычных подходов.
Всех с праздником! С Новым 2026 годом!!! 🍾🥂🎄
❤4👍4🎉4🍾3
Следующие два года в сфере разработки программного обеспечения
Хочу поделиться с вами статьёй The Next Two Years of Software Engineering. Её автор — Эдди Османи — инженер-программист в Google, работает над Google Cloud и Gemini. Мне кажется, эта статья сильно перекликается с моим прошлым постом. В том новогоднем поздравлении я попытался обозначить вопросы нашей индустрии, над которыми стоит подумать.
А если вам удобнее читать на русском, то перевод статьи Османи доступен у меня на сайте.
#ai
Хочу поделиться с вами статьёй The Next Two Years of Software Engineering. Её автор — Эдди Османи — инженер-программист в Google, работает над Google Cloud и Gemini. Мне кажется, эта статья сильно перекликается с моим прошлым постом. В том новогоднем поздравлении я попытался обозначить вопросы нашей индустрии, над которыми стоит подумать.
А если вам удобнее читать на русском, то перевод статьи Османи доступен у меня на сайте.
#ai
👍7❤5🔥3
MCP-сервер Idea улучшает работу coding агентов
Читайте в моей новой статье о том, как активировать встроенный в Idea (а значит и в OpenIDE) MCP-сервер, как подключиться к нему из cli-агентов (Claude или Qwen Code) и какие методы доступны из коробки.
Эти методы значительно ускоряют и улучшают работу агентов, т.к. парсинг кода происходит с помощью IDE и на это не тратятся драгоценные токены и время.
А также вы узнаете, какой плагин в IDE можно поставить, чтобы расширить список доступных mcp-методов в два раза.
#qwen #openide #ai #mcp #amplicode
Читайте в моей новой статье о том, как активировать встроенный в Idea (а значит и в OpenIDE) MCP-сервер, как подключиться к нему из cli-агентов (Claude или Qwen Code) и какие методы доступны из коробки.
Эти методы значительно ускоряют и улучшают работу агентов, т.к. парсинг кода происходит с помощью IDE и на это не тратятся драгоценные токены и время.
А также вы узнаете, какой плагин в IDE можно поставить, чтобы расширить список доступных mcp-методов в два раза.
#qwen #openide #ai #mcp #amplicode
👍7🔥4❤1
Qwen Code CLI: разработка restful-сервиса на Java и Spring - новое видео
➡️ YouTube | RuTube | VK Видео
В этом видео вы узнаете как можно разрабатывать современные приложения на Java и Spring с помощью консольного агента Qwen Code. Также я покажу как подключить к Qwen Code MCP-сервер OpenIDE (или IntelliJ IDEA). И ещё мы рассмотрим как плагин Amplicode улучшает и ускоряет работу Qwen Code за счёт дополнительных MCP-методов.
Если вдруг захотите купить подписку на Amplicode PRO, то вот вам промокод на скидку:
#qwen #spring #java #openide #amplicode #ai #mcp
➡️ YouTube | RuTube | VK Видео
В этом видео вы узнаете как можно разрабатывать современные приложения на Java и Spring с помощью консольного агента Qwen Code. Также я покажу как подключить к Qwen Code MCP-сервер OpenIDE (или IntelliJ IDEA). И ещё мы рассмотрим как плагин Amplicode улучшает и ускоряет работу Qwen Code за счёт дополнительных MCP-методов.
Если вдруг захотите купить подписку на Amplicode PRO, то вот вам промокод на скидку:
devmark_ru_2026#qwen #spring #java #openide #amplicode #ai #mcp
👍4❤2🔥2