letsCode
letsCode
  • 123
  • 4 840 409
Онлайн игра на Java #6: Emitter, Pool
Пишем онлайн игру только на Java: сервер Spring Boot + LibGDX, клиент LibGDX HTML.
Пришло время заложить основу взаимодействия пользователей: на данном этапе наш танк начнёт стрелять. Для этого мы реализуем простой emitter - объект, порождающий другие объекты по заданным правилам. У нас эмиттер будет порождать снаряды, выпускаемые танком. В библиотеке libGDX есть свой встроенный эмиттер, но для наших целей он достаточно сложен и неудобен, поэтому (и в образовательных целях) мы реализуем свой. Дополнительно мы познакомимся с пулами объектов (Pooled objects) и встроенной libGDX коллекцией Pool.
Код из видео (клиент):
github.com/drucoder/gdx-panzer/tree/DraftEmitter
Код из видео (сервер, не менялся в этом видео):
github.com/drucoder/gdx-panzers-server/tree/RenderClients
Сайт библиотеки LibGDX:
libgdx.com/
Видео про горячие клавиши IDEA:
ua-cam.com/video/lArM1o0SoMw/v-deo.html
Видео про HTTP протокол:
ua-cam.com/video/C_QZtajkDf0/v-deo.html
Видео про создание сервера для игры с помощью Spring Boot:
ua-cam.com/video/DQ3E04FBPzo/v-deo.html
Видео про отладку в браузере:
ua-cam.com/video/8ZKgsdxSdTc/v-deo.html
Мерч
letscode.vsemaykishop.ru/
Поддержать проект:
➡ Стать спонсором ua-cam.com/users/letscodedrujoin
➡ Яндекс.Деньги money.yandex.ru/to/41001451675086
➡ PayPal paypal.me/letscodedru
➡ Qiwi qiwi.me/letscode
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Второй канал: ua-cam.com/users/geekChatDru
➡ Twitch: www.twitch.tv/drucoder
➡ Твиттер: letsCodeDru
➡ Канал в Telegram: t.me/letsCode_dru
➡ Чат в Telegram: t.me/joinchat/FeiP9xEhqHajfqhLr4z-Nw
Переглядів: 12 034

Відео

Онлайн игра на Java #5: вывод нескольких пользователей на экран
Переглядів 6 тис.2 роки тому
Пишем онлайн игру только на Java: сервер Spring Boot LibGDX, клиент LibGDX HTML. На текущем этапе у нас сервер полностью рассчитывает перемещение игроков и рассылает получившийся стейт по клиентам. А значит мы можем легко вывести нескольких игроков на экран сразу в нескольких браузерах. Код из видео (клиент): github.com/drucoder/gdx-panzer/tree/RenderClients Код из видео (сервер): github.com/dr...
Онлайн игра на Java #4: расчёт позиции игрока на сервере и передача данных на клиента
Переглядів 6 тис.2 роки тому
Java это язык и платформа не только для разработки enterprise решений, а универсальная экосистема для решения любых проблем. В том числе и создание мультимедиа контента. С помощью библиотеки LibGDX можно создавать кроссплатформенные мультимедиа приложения и игры. На последних мы и сосредоточимся в этой серии видео. С помощью Spring Framework можно создавать сложные серверные приложения, обслужи...
Онлайн игра на Java #3: передача состояния клиента на сервер
Переглядів 7 тис.2 роки тому
Java это язык и платформа не только для разработки enterprise решений, а универсальная экосистема для решения любых проблем. В том числе и создание мультимедиа контента. С помощью библиотеки LibGDX можно создавать кроссплатформенные мультимедиа приложения и игры. На последних мы и сосредоточимся в этой серии видео. С помощью Spring Framework можно создавать сложные серверные приложения, обслужи...
Онлайн игра на Java #2: сервер на Spring
Переглядів 16 тис.2 роки тому
Java это язык и платформа не только для разработки enterprise решений, а универсальная экосистема для решения любых проблем. В том числе и создание мультимедиа контента. С помощью библиотеки LibGDX можно создавать кроссплатформенные мультимедиа приложения и игры. На последних мы и сосредоточимся в этой серии видео. С помощью Spring Framework можно создавать сложные серверные приложения, обслужи...
Онлайн игра на Java #1: управление
Переглядів 32 тис.2 роки тому
Java это язык и платформа не только для разработки enterprise решений, а универсальная экосистема для решения любых проблем. В том числе и создание мультимедиа контента. С помощью библиотеки LibGDX можно создавать кроссплатформенные мультимедиа приложения и игры. На последних мы и сосредоточимся в этой серии видео. Мерч letscode.vsemaykishop.ru/ В данном видео мы создадим основу нашей HTML игры...
Простой анализатор диска на JavaFX
Переглядів 12 тис.2 роки тому
Java это не только про вэб. На джава можно просто писать мощные и функциональные приложения, способные работать в любой операционной системе. Без плясок с бубном вокруг модного нынче Electron. Для создания десктопных приложений у Java есть 3 инструмента: AWT, Swing и великолепный JavaFX, который мы краем рассмотрим в этом видео Пробуем создать утилиту для просмотра занятого пространства на диск...
Оповещения из GitHub на рабочем столе
Переглядів 9 тис.2 роки тому
Java это не только про вэб и сервера. В стандартной библиотеке языка имеется отличный инструментарий для создания десктопных приложений. Причём не обязательно с окнами и прочими прелестями. Для нашей задачи - оповещать пользователя о новых pull requests - будет достаточно только иконки в трее и всплывающих нотификаций. Можно добавить контекстное меню к иконке в трее и получить мгновенный доступ...
Web чат на чистой Java (Vaadin)
Переглядів 23 тис.2 роки тому
Web чат на Java фреймворке Vaadin, без единой строки HTML, JS, CSS За Java давно закрепилась слава слишком многословного языка. При этом люди часто забывают, что многословность это не черта самой платформы и экосистемы, а отдельновзятых неудачных решений в прошлом. Времена, когда на джаве нужно было написать пару десятков файлов конфигураций, давно прошли. Современные версии языка вкупе с совре...
Телеграм бот-игра на JAVA в 100 строк
Переглядів 25 тис.2 роки тому
Пишем телеграм бота, реализующего простую игру в стиле "камень-ножницы-бумага" на чистой джава библиотека telegram api. Для пущей сложности я делаю это без БД и при этом пытаюсь выдернуть информацию о том, в каком чате происходит дело (может пригодиться для хранения какой-либо статистики) Для тех, кто попытается это запускать: НЕ РАБОТАЕТ КОРРЕКТНО, ЕСЛИ НЕ ВКЛЮЧЕН INLINE MODE У БОТА И БОТ НЕ Д...
Serverless Framework для Java + AWS
Переглядів 10 тис.2 роки тому
Serverless Framework помогает избавиться от рутинной работы по настройке окружения для вашего кода. По простоте использования этот фреймворк ушёл не далеко от Heroku, но позволяет разворачивать ваш код написанный на любом из популярных языков в самых популярных облачных инфраструктурах: AWS, MS Azure, Google Cloud Platform и некоторых других. Работа с этим фреймворком в самой простой реализации...
Docker toolkit: ctop vs lazydocker
Переглядів 6 тис.2 роки тому
Docker toolkit: ctop & lazydocker При работе с докером через консоль часто приходится совершать какие-то избыточные и однообразные действия, которые легко можно автоматизировать с помощью одной из этих двух утилит. При этом никто не запрещает использовать их совместно, как это делаю я =) Первая из них ctop - более наглядно показывает запущенные процессы и позволяет провалиться в шелл контейнера...
Обработка HTTP запросов. Простой HTTP сервер. #2
Переглядів 15 тис.3 роки тому
Http server. Попробуем реализовать обработку входящих http запросов по схеме, которая используется в java se servlet модели Поддержать проект: ➡ Стать спонсором ua-cam.com/users/letscodedrujoin ➡ Яндекс.Деньги money.yandex.ru/to/41001451675086 ➡ PayPal paypal.me/letscodedru ➡ Qiwi qiwi.me/letscode Для более удобной обработки входящих запросов и отдачи контента клиенту мы реализуем объекты, схож...
Простой HTTP сервер. #1
Переглядів 27 тис.3 роки тому
Http server. Чтобы использовать технологию эффективно, нужно понимать, как она работает. Чтобы понять, как она работает, можно попытаться повторить её. Поддержать проект: ➡ Стать спонсором ua-cam.com/users/letscodedrujoin ➡ Яндекс.Деньги money.yandex.ru/to/41001451675086 ➡ PayPal paypal.me/letscodedru ➡ Qiwi qiwi.me/letscode Реализовать Http сервер на java se не особо сложно. Возможно сделать э...
JMX - админка на минималках
Переглядів 16 тис.3 роки тому
JMX - Java Management Extension - механизм управления приложением через специальный протокол взаимодействия. Поддержать проект: ➡ Стать спонсором ua-cam.com/users/letscodedrujoin ➡ Яндекс.Деньги money.yandex.ru/to/41001451675086 ➡ PayPal paypal.me/letscodedru ➡ Qiwi qiwi.me/letscode JMX - Java Management Extension. Часто случается история, когда нужно добавить в приложение какую-то настройку, к...
Apache Camel. Малоизвестный комбайн
Переглядів 24 тис.3 роки тому
Apache Camel. Малоизвестный комбайн
WebFlux: JWT
Переглядів 18 тис.3 роки тому
WebFlux: JWT
Markdown - напиши README за 2 минуты
Переглядів 49 тис.4 роки тому
Markdown - напиши README за 2 минуты
🔒WebFlux. Spring Security
Переглядів 15 тис.4 роки тому
🔒WebFlux. Spring Security
🏷 Создание JSP тэга и своей библиотеки тэгов (Java Servlet)
Переглядів 7 тис.4 роки тому
🏷 Создание JSP тэга и своей библиотеки тэгов (Java Servlet)
HTTP протокол на пальцах
Переглядів 126 тис.4 роки тому
HTTP протокол на пальцах
WebFlux. R2DBC с Postgres в Spring (плюс миграции с Flyway)
Переглядів 23 тис.4 роки тому
WebFlux. R2DBC с Postgres в Spring (плюс миграции с Flyway)
WebFlux. Реактивный web с Spring Java
Переглядів 60 тис.4 роки тому
WebFlux. Реактивный web с Spring Java
Project Reactor - реактивная Java
Переглядів 47 тис.4 роки тому
Project Reactor - реактивная Java
Project Loom. Асинхронная многопоточность в Java 15
Переглядів 16 тис.4 роки тому
Project Loom. Асинхронная многопоточность в Java 15
Новое в JDK 14 (синтаксис)
Переглядів 26 тис.4 роки тому
Новое в JDK 14 (синтаксис)
Как быстро писать HTML без боли (Emmet)
Переглядів 9 тис.4 роки тому
Как быстро писать HTML без боли (Emmet)
N+1 и дефолтные методы. Spring Boot + Webix
Переглядів 13 тис.4 роки тому
N 1 и дефолтные методы. Spring Boot Webix
🖼️ JSTL для JSP (Java Servlet)
Переглядів 12 тис.4 роки тому
🖼️ JSTL для JSP (Java Servlet)
Диалог для таблицы для выбора значения. Spring Boot + Webix
Переглядів 4 тис.4 роки тому
Диалог для таблицы для выбора значения. Spring Boot Webix

КОМЕНТАРІ

  • @user-hh5rf5jf7m
    @user-hh5rf5jf7m 2 дні тому

    не работает

  • @smallworldoflynx3772
    @smallworldoflynx3772 5 днів тому

    Огромное спасибо

  • @user-mr5pq1dc1t
    @user-mr5pq1dc1t 7 днів тому

    После слов "срать в порты" я понял что подписываюсь😅

  • @DrW1ne
    @DrW1ne 10 днів тому

    очень старое видео, но было интересно гдето день пытатся выявить что проблема в том что тут старый спригбут.

  • @user-qn1nq2bb5u
    @user-qn1nq2bb5u 10 днів тому

    за grep console спасибо)

  • @b213videoz
    @b213videoz 20 днів тому

    Hipster stuff

  • @crazym8nd
    @crazym8nd 21 день тому

    ожидал plain java а не всякие спрингбуты и ваадины)

  • @mizantropoff
    @mizantropoff 24 дні тому

    "Вам несложно, а мне приятно" - мне очень сложно) Андрей, я где то видел Ваши замечания о jQuery, о том, что он влечет за собой плохую архитектуру кода. то есть Вы понимаете, что такое - ПЛОХАЯ АРХИТЕКТУРА кода. Вопрос - а что такое плохая архитектура обучающего курса ? Зачем нам был нужен маппинг "/changeMessage"? зачем мы расширяем @SendTo "/activity"? Это какие то "встроенные" дефолты? Я не понял - где мы настроили маппинг, чтобы использовать абсолютные пути при импорте? Ну хотя бы пару вступительных слов про сокеты, стомпы и пр. Как это все работает - у меня понимание процентов на 30-40, не более. Лайкну конечно, и пойду топтать гугл и ютюб. чтобы понять хотя бы процентов 70-80 урока.

  • @mizantropoff
    @mizantropoff 26 днів тому

    3 недели спустя вернулся проверить свои нервы снова. Но сначала расскажу, что мне пришлось сделать, чтобы с учетом Vue3 приложение работало после шага, описанного в этом уроке. Во первых, чтобы резюмировать и самому лучше понять - что и зачем я делаю, ну а во-вторых, может кому пригодится. 1) Начнем с того, что установка версий npm, node, webpack и vue, описанных в этом видео, мне ничего не дала, и я установил все ПОСЛЕДНИЕ версии , актуальные на май 2024 года. Кроме vue-resource, которого уже нет в живых. Vue 3 напрочь отказался работать с vue-resource последней известной версии, нагугленный и установленный axios нельзя было применить , не будучи знатоком js (промисы, коллбэки и пр.) 2) После долгих мучений я ушел отсюда, чтобы разобраться с js. Хорошо , что у меня уже был в подписке отличный материал - 20 часов JS спокойным, медленным темпом, правда, на английском, (нс неплохим произношением, и для меня это не было проблемой). Автор этого курса , если захочет, уберет мою ссылку, но я не думаю, что это правильно, Андрей шикарный программист, но чтобы обучать других, ему было бы полезно посмотреть на образец того - как нужно снимать обучающие ролики, таких материалов очень немного в свободном доступе. Обратите внимание , там отличная МЕТОДИКА, постепенно, от простого сложного и с массой задач). Итак, у кого пробелы в JS - прошу сюда ua-cam.com/video/EerdGm-ehJQ/v-deo.htmlsi=DRmq680D_0e1SEmH . Кстати, у этого китайца скоро выйдет курс по Node.js 3) После долгих поисков я нашел отличный пример Spring Rest + Vue.js приложения на Vue3. На ютюбе такого очень мало, максимум - GET запрос и ВСЕ! Вот ссылка howtodoinjava.com/spring-boot/vuejs-app-with-spring-boot/ . Ну и наконец, после всего этого я за пару часов скоректировал код Андрея под Vue3 , не меняя структуру и логику, всего лишь добавив Axios. Бэк я не менял. Итак, мой main.js: < import {createApp, h } from 'vue' import App from 'pages/App.vue' import Axios from 'axios' //import Resources from "vue-resource"; const app = createApp({ render: () => h(App), }) app.mount('#app') > В созданной директории resources/static/utils я создал apiClient.js: < import axios, { AxiosInstance } from "axios"; const API_URL = "localhost:9000"; const axiosInstance = axios.create({ baseURL: API_URL, headers: { "Content-Type": "application/json", }, }); export default axiosInstance; > В созданной директории resources/static/service я создал messageService.js: < import apiClient from "../utils/apiClient"; import Message from "../types/Message.js"; class MessageService { // get All Messages getAllMessages() { return apiClient.get("/message").then((response) => response.data); } getMessageById(id) { return apiClient.get(`/message/${id}`).then((response) => response.data); }; edit(id, msg){ return apiClient .put(`/message/${id}`, msg) .then((response) => response.data); } async delete(id) { return await apiClient .delete(`/message/${id}`) .then((response) => response.data); }; save(msg){ return apiClient.post("/message", msg).then((response) => response.data); }; } export default new MessageService(); > В MessagesList.vue я импортирую messagesService: < import messageService from "../../service/messageService"; > ... и меняю method : < deleteMessage(message) { try { messageService.delete(message.id).then(() => { this.messages.splice(this.messages.indexOf(this.message), 1) }) } catch (error) { console.error(error.toString()) } } > В MessageForm.vue я также импоритрую сервис и меняю method save(): save() { const message = {text: this.text} if(this.id) { messageService.edit(this.id, message) .then(data => { const index = getIndex(this.messages, data.id) this.messages.splice(index, 1, data) this.id= "" }) } else { messageService.save(message).then((data) => { this.messages.push(data) } ) } this.text = "" } Я пока не стал менять все кардинально, хотя там масса возможностей для оптимизации. Буду смотреть дальше. Помолясь.))) Андрей, не обижайся, ты крут, но для такого чайника, как я - слишком) PS. В методе save при сохранении НОВОГО сообщения как то странно работает data - вернее то работает, то нет. Как вариант, можно пушить message, предварительно присвоив id из полученной с бэка data ( message.id = data.id this.messages.push(message) По идее то же самое, но почему то у меня пару раз message грузился на страницу с пустым id, и только после обновления страницы id (загружались из базы).

  • @videoshlyapa
    @videoshlyapa 27 днів тому

    Если честно то для новичка только будет понятно как выйти а все остальное проходит быстро и хер понятно че к чему.

  • @MrJet84
    @MrJet84 29 днів тому

    Не пользовался никогда. Спасибо

  • @ukrainesov21
    @ukrainesov21 29 днів тому

    4:54 - не понимаю, как у тебя получилось использовать переменную типа BaseRequest в строчке 29, у меня пишет 'BaseRequest' is abstract; cannot be instantiated. Кроме того, даже если оставить как было SendMessage request, то в параметры никак не лезет переменная chatId типа long, т.к. там требуется тип String. Может что-то изменилось за пару лет в черном ящике и методы стали другими?

  • @user-lx9ws9er9d
    @user-lx9ws9er9d Місяць тому

    Самая имбовая часть мне кажется

  • @andreyromanov680
    @andreyromanov680 Місяць тому

    Спасибо большое, все бы как ты объясняли. Лайк

  • @restartedpanda5995
    @restartedpanda5995 Місяць тому

    Спасибо!!!

  • @lionelmessi6652
    @lionelmessi6652 Місяць тому

    что делать,если выходит ошибка FluentToken.-, FluentToken.., FluentToken.COMMENT_LINE or FluentToken.Symbol expected, got '<' после перехода на ftl,вместо mustache

  • @evgenyhyvarinen8367
    @evgenyhyvarinen8367 Місяць тому

    Очень крутая подача, за долгое время не видел столь крутых обзоров/туториалов на тек, респект от души а юмор залетает как дети в школу :)

  • @mizantropoff
    @mizantropoff Місяць тому

    Из 2024 привет. Мучился с запуском, пока снова взял и не загрузил все новые версии фрейморков, в том числе node, и все поехало. Но радовался рано. Какое то время все работало, потом какая то странная ошибка стала вылетать : Cannot read properties of undefined (reading 'Vue') TypeError: Cannot read properties of undefined (reading 'Vue') at initBackend (chrome-extension://nhdogjmejiglipccpnnnanhbledajbpd/build/backend.js:2088:28) Понял, что причина в строке App.use(VueResource) (deprecated), убираю ее и все вроде нормально, но стоило раскоментировать messageApi с корректировкой как на видео - ни одна функия не работает, ну и когда опять подключаю Resourse - все равно не работает MessagesList.vue:20 Uncaught TypeError: this.$resource is not a function at Proxy.deleteMessage (MessagesList.vue:20:12) at Proxy.del (MessageRow.vue:9:14) at onClick._cache.<computed>._cache.<computed> (MessageRow.vue:21:46) at callWithErrorHandling (runtime-core.esm-bundler.js:195:1) at callWithAsyncErrorHandling (runtime-core.esm-bundler.js:202:1) at HTMLInputElement.invoker (runtime-dom.esm-bundler.js:696:31) deleteMessage @ MessagesList.vue:20 del @ MessageRow.vue:9 onClick._cache.<computed>._cache.<computed> @ MessageRow.vue:21 callWithErrorHandling @ runtime-core.esm-bundler.js:195 callWithAsyncErrorHandling @ runtime-core.esm-bundler.js:202 invoker @ runtime-dom.esm-bundler.js:696

  • @broalan
    @broalan Місяць тому

    Охренеть ) Учу джаву 4 месяца уже, только только добрался до спринга. Думаю писал бы такое приложение неделю, а то и больше ) Скажи, Андрей, через сколько лет я так же смогу? 😌

    • @letsCodeDru
      @letsCodeDru 2 дні тому

      Писал приложение пару-тройку дней в свободное от работы время) можешь поднять свой уровень до такого за пару лет в нормальном стартапе

  • @user-jk3cn7ck2f
    @user-jk3cn7ck2f Місяць тому

    Хороший понятный видос. качественный.

  • @mizantropoff
    @mizantropoff Місяць тому

    Нууууууууу, ребята, это твердый дизлайк. На лету мимоходом говорится про целый пласт сложнейших вещей, которые совершенно не относятся к Java и Spring Boot. Вы меня простите, но если уже делать курс на такой базе, нужно как то включать подачу тех знаний и логики, которые относятся ко всем упомянутым технологиям. Это не просто html, css, js, эти техники по значительности требуют не менее пристального изучения, чем Spring, а по объему - даже БОЛЬШЕГО. Смысла не понимаю так давать материал. С другой стороны, если кто уже владеет этими технологиями в совершенстве - неужели его устроит подача Спринга на таком уровне?! А кто не владеет - пойдет их изучать и вернется сюда через год, забыв уже все на свете. Конечно, можно откатиться на ранние версии и тупо повторить все за автором, но это не обучение, а ..... И все для того чтобы красоту навести? Зачем? Лучше закончить со спрингом, путь итог будет деревянным, но понятным и разобранным до основания. Путь мы бы видели на странице json ы сплошные. И отдельно разбирать уже украшения. Или отдельно пилить подробные видео про все упомянутые технологии и рекомендовать изучать их ДО данного курса сразу же, в описании. А тут все по верхам, я считаю. Никакого глубокого понимания. Все обо всем и ни о чем. Жаль. Придется уходить наверное, не нравится мне, как попугаю просто тупо копировать и вставлять.

  • @user-xb2dv2ew6j
    @user-xb2dv2ew6j Місяць тому

    Насколько WebFlux актуален сегодня при том что завезли виртуальные потоки?

  • @mizantropoff
    @mizantropoff Місяць тому

    Простите, я не понимаю, как это работает. А именно - мы просто указываем маппинг обработанный в контроллерею , как ресурс, и Vue компоненты подхватывают и нашу базу, и методы, которые даже называются по разному во Vue и в контроллере. Ну ладно , messages подхватываются, но методы? Мы ведь даже не указываем get, post, put, delete. И конечно, я не смог на лету все это адаптировать к Vue3, использую пока Vue 2. Потом буду думать как мигрировать. Пока не нашел нормального описания именно варианта с CDN во Vue3, большая часть материала касается приложений, у которых и серверная и клиентская часть на Vue. Если кто полезные ссылки даст - буду рад. Мне нравится этот вариант, так как для демонстрации два сервера городить не вижу смысла, а тут , как я понимаю, все работает на одном сервере - и фронт и бэк.

  • @anjelomanoranjan
    @anjelomanoranjan Місяць тому

    Спасибо) бомбезное видео. А у тебя есть видео где ты при написании сервиса, программы, приложения... работаешь с HashMap?

  • @moovestone
    @moovestone 2 місяці тому

    спасибо. только это походу для тех, кто уже работает разработчиком, а не изучает)

  • @odnorob
    @odnorob 2 місяці тому

    Спасибо отличная инструкция. Только "dd" и "x" это не совсем удаление, это вырезание. Потом вставить вырезанное можно клавишей "p".

  • @PlesneviyGRIB
    @PlesneviyGRIB 2 місяці тому

    А если был неправильно выполнен merge? 1) "revert -m 1" (ревертим merge) 2) "merge robotics..." (Пытаемся снова смерджить ветку, и получает already up to date, так как все коммиты достижимы) Как поступать в случае, если зафакапили merge (без переписывания истории)?

  • @vladislavosipenkov1412
    @vladislavosipenkov1412 2 місяці тому

    А нет видео где stomp но вместо фронта - postman?

  • @romanivanov3302
    @romanivanov3302 2 місяці тому

    Хороший урок, спасибо! Теперь лицензия стоит 800 баксов уже ахахаха

  • @mustaev1982
    @mustaev1982 2 місяці тому

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

  • @LiRa-py8ki
    @LiRa-py8ki 2 місяці тому

    Хкрня

  • @ShuxriddinSolixov
    @ShuxriddinSolixov 2 місяці тому

    Спасибо за полезный контент

  • @desantovih
    @desantovih 2 місяці тому

    автор спасибо тебе большое!!!!!!!!!!!!!!ВИ это адская хня !!!я не смог выйти сукаааааааа

  • @Ximelay
    @Ximelay 2 місяці тому

    Прочитал как НЕГР

  • @LKeyman_
    @LKeyman_ 2 місяці тому

    3 месяца учил основы Java. Сейчас вообще не понимаю зачем это делал, потому что из основ тут ничего нет! Вообще не понятно че происходит... Это фиаско, чувствую боль...

    • @universeunity9970
      @universeunity9970 2 місяці тому

      Так само собой. Он здесь фреймворк использует. Что ты собирался здесь понять? Ещё очень рано. Нужно много всего изучить, а потом изучить сам этот фреймворк, что бы на нём работать, если тебе именно это будет нужно, конечно.

  • @TarasYanchuk
    @TarasYanchuk 2 місяці тому

    Это называется "паравиртуализация"

  • @nelsonnetru
    @nelsonnetru 3 місяці тому

    Друзья! Я одного не понял - когда отредактировали MainController и в аргументы для "/add" вместо text и tag вставили @Valid Message message, как SPRING все равно понимает, что в post-запросе данные формы - это Message? По какому принципу парсит поля <input> из формы?

  • @artemkarpov1078
    @artemkarpov1078 3 місяці тому

    Продолжения не будет (

  • @oopseasy
    @oopseasy 3 місяці тому

    Много воды!

  • @gregjorliony9719
    @gregjorliony9719 3 місяці тому

    Невероятный. 🙏

  • @ZeBatua
    @ZeBatua 3 місяці тому

    Видео для тех, кто уже что-то знает про стримы. Я вообще ничего не понял. Куда то летит, миллион всего объясняет. 0 шансов запомнить и тем более понять

  • @andrejklester5851
    @andrejklester5851 3 місяці тому

    Еммитер это типа паттерна фабрика?

  • @andrejklester5851
    @andrejklester5851 3 місяці тому

    Круто 🫠❤️

  • @way2play980
    @way2play980 3 місяці тому

    Спасибо, очень интересно!

  • @botsynth
    @botsynth 3 місяці тому

    А сейчас это уже не актуально?

  • @Maloy_in
    @Maloy_in 3 місяці тому

    Благодарю, добрый человек :) Огромный привет с 2024г )

  • @patron.monster
    @patron.monster 3 місяці тому

    Концовка - сделала мой день)))) Ахахахаха 🤣🤣🤣

  • @mustache_mentor
    @mustache_mentor 3 місяці тому

    Лучше использовать конечно инжект через конструктор в тестах вместо @Autowired

  • @MrRONE777
    @MrRONE777 3 місяці тому

    кайфовое видео. всё по делу

  • @JanSobolewski1987
    @JanSobolewski1987 4 місяці тому

    в метод @PostMapping("/") по сегодняшнему гайду спринга должен идти параметр @ModelAttribute Message message вместо прописывания каждого поля