- 123
- 4 840 409
letsCode
Приєднався 1 кві 2015
rvryibob
Привет. Меня зовут Андрей и это канал letsCode.
Здесь мы пишем код и разбираемся с современными технологиями разработки программного обеспечения. Основная цель проекта - сделать сложное и запутанное понятным и дать какой-то практический результат сразу после каждого видео.
В рамках видео я рассматриваю следующие языки и фреймворки (технологии, библиотеки, тулзы, идеи, обряды, приметы): Java, Python, JavaScript, Git, JVM, Spring Boot, Flask, Hibernate, Sqlalchemy, maven, pyenv, npm, yarn ... и много чего еще
Но хочется еще добавить: мы не просто "Андрей и зрители", мы стараемся быть сообществом, в котором все вместе становимся программистами и растём в профессиональном плане, а это значит, что UA-cam это не единственное место, где мы пересекаемся. Заглядывай в Телеграм! =)
Поддержать проект
➡ UA-cam: ua-cam.com/users/letsCodeDrujoin
➡ Yandex.Деньги money.yandex.ru/to/41001451675086
➡ Qiwi qiwi.me/letscode
Привет. Меня зовут Андрей и это канал letsCode.
Здесь мы пишем код и разбираемся с современными технологиями разработки программного обеспечения. Основная цель проекта - сделать сложное и запутанное понятным и дать какой-то практический результат сразу после каждого видео.
В рамках видео я рассматриваю следующие языки и фреймворки (технологии, библиотеки, тулзы, идеи, обряды, приметы): Java, Python, JavaScript, Git, JVM, Spring Boot, Flask, Hibernate, Sqlalchemy, maven, pyenv, npm, yarn ... и много чего еще
Но хочется еще добавить: мы не просто "Андрей и зрители", мы стараемся быть сообществом, в котором все вместе становимся программистами и растём в профессиональном плане, а это значит, что UA-cam это не единственное место, где мы пересекаемся. Заглядывай в Телеграм! =)
Поддержать проект
➡ UA-cam: ua-cam.com/users/letsCodeDrujoin
➡ Yandex.Деньги money.yandex.ru/to/41001451675086
➡ Qiwi qiwi.me/letscode
Онлайн игра на 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
Пришло время заложить основу взаимодействия пользователей: на данном этапе наш танк начнёт стрелять. Для этого мы реализуем простой 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. Часто случается история, когда нужно добавить в приложение какую-то настройку, к...
Markdown - напиши README за 2 минуты
Переглядів 49 тис.4 роки тому
Markdown - напиши README за 2 минуты
🏷 Создание JSP тэга и своей библиотеки тэгов (Java Servlet)
Переглядів 7 тис.4 роки тому
🏷 Создание JSP тэга и своей библиотеки тэгов (Java Servlet)
WebFlux. R2DBC с Postgres в Spring (плюс миграции с Flyway)
Переглядів 23 тис.4 роки тому
WebFlux. R2DBC с Postgres в Spring (плюс миграции с Flyway)
WebFlux. Реактивный web с Spring Java
Переглядів 60 тис.4 роки тому
WebFlux. Реактивный web с Spring Java
Project Loom. Асинхронная многопоточность в Java 15
Переглядів 16 тис.4 роки тому
Project Loom. Асинхронная многопоточность в Java 15
Как быстро писать HTML без боли (Emmet)
Переглядів 9 тис.4 роки тому
Как быстро писать HTML без боли (Emmet)
N+1 и дефолтные методы. Spring Boot + Webix
Переглядів 13 тис.4 роки тому
N 1 и дефолтные методы. Spring Boot Webix
Диалог для таблицы для выбора значения. Spring Boot + Webix
Переглядів 4 тис.4 роки тому
Диалог для таблицы для выбора значения. Spring Boot Webix
не работает
Огромное спасибо
После слов "срать в порты" я понял что подписываюсь😅
очень старое видео, но было интересно гдето день пытатся выявить что проблема в том что тут старый спригбут.
за grep console спасибо)
Hipster stuff
ожидал plain java а не всякие спрингбуты и ваадины)
се ля ви)
"Вам несложно, а мне приятно" - мне очень сложно) Андрей, я где то видел Ваши замечания о jQuery, о том, что он влечет за собой плохую архитектуру кода. то есть Вы понимаете, что такое - ПЛОХАЯ АРХИТЕКТУРА кода. Вопрос - а что такое плохая архитектура обучающего курса ? Зачем нам был нужен маппинг "/changeMessage"? зачем мы расширяем @SendTo "/activity"? Это какие то "встроенные" дефолты? Я не понял - где мы настроили маппинг, чтобы использовать абсолютные пути при импорте? Ну хотя бы пару вступительных слов про сокеты, стомпы и пр. Как это все работает - у меня понимание процентов на 30-40, не более. Лайкну конечно, и пойду топтать гугл и ютюб. чтобы понять хотя бы процентов 70-80 урока.
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 (загружались из базы).
Если честно то для новичка только будет понятно как выйти а все остальное проходит быстро и хер понятно че к чему.
Не пользовался никогда. Спасибо
4:54 - не понимаю, как у тебя получилось использовать переменную типа BaseRequest в строчке 29, у меня пишет 'BaseRequest' is abstract; cannot be instantiated. Кроме того, даже если оставить как было SendMessage request, то в параметры никак не лезет переменная chatId типа long, т.к. там требуется тип String. Может что-то изменилось за пару лет в черном ящике и методы стали другими?
Самая имбовая часть мне кажется
Спасибо большое, все бы как ты объясняли. Лайк
Спасибо!!!
что делать,если выходит ошибка FluentToken.-, FluentToken.., FluentToken.COMMENT_LINE or FluentToken.Symbol expected, got '<' после перехода на ftl,вместо mustache
Очень крутая подача, за долгое время не видел столь крутых обзоров/туториалов на тек, респект от души а юмор залетает как дети в школу :)
Из 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
Охренеть ) Учу джаву 4 месяца уже, только только добрался до спринга. Думаю писал бы такое приложение неделю, а то и больше ) Скажи, Андрей, через сколько лет я так же смогу? 😌
Писал приложение пару-тройку дней в свободное от работы время) можешь поднять свой уровень до такого за пару лет в нормальном стартапе
Хороший понятный видос. качественный.
Нууууууууу, ребята, это твердый дизлайк. На лету мимоходом говорится про целый пласт сложнейших вещей, которые совершенно не относятся к Java и Spring Boot. Вы меня простите, но если уже делать курс на такой базе, нужно как то включать подачу тех знаний и логики, которые относятся ко всем упомянутым технологиям. Это не просто html, css, js, эти техники по значительности требуют не менее пристального изучения, чем Spring, а по объему - даже БОЛЬШЕГО. Смысла не понимаю так давать материал. С другой стороны, если кто уже владеет этими технологиями в совершенстве - неужели его устроит подача Спринга на таком уровне?! А кто не владеет - пойдет их изучать и вернется сюда через год, забыв уже все на свете. Конечно, можно откатиться на ранние версии и тупо повторить все за автором, но это не обучение, а ..... И все для того чтобы красоту навести? Зачем? Лучше закончить со спрингом, путь итог будет деревянным, но понятным и разобранным до основания. Путь мы бы видели на странице json ы сплошные. И отдельно разбирать уже украшения. Или отдельно пилить подробные видео про все упомянутые технологии и рекомендовать изучать их ДО данного курса сразу же, в описании. А тут все по верхам, я считаю. Никакого глубокого понимания. Все обо всем и ни о чем. Жаль. Придется уходить наверное, не нравится мне, как попугаю просто тупо копировать и вставлять.
Насколько WebFlux актуален сегодня при том что завезли виртуальные потоки?
Простите, я не понимаю, как это работает. А именно - мы просто указываем маппинг обработанный в контроллерею , как ресурс, и Vue компоненты подхватывают и нашу базу, и методы, которые даже называются по разному во Vue и в контроллере. Ну ладно , messages подхватываются, но методы? Мы ведь даже не указываем get, post, put, delete. И конечно, я не смог на лету все это адаптировать к Vue3, использую пока Vue 2. Потом буду думать как мигрировать. Пока не нашел нормального описания именно варианта с CDN во Vue3, большая часть материала касается приложений, у которых и серверная и клиентская часть на Vue. Если кто полезные ссылки даст - буду рад. Мне нравится этот вариант, так как для демонстрации два сервера городить не вижу смысла, а тут , как я понимаю, все работает на одном сервере - и фронт и бэк.
Спасибо) бомбезное видео. А у тебя есть видео где ты при написании сервиса, программы, приложения... работаешь с HashMap?
спасибо. только это походу для тех, кто уже работает разработчиком, а не изучает)
Спасибо отличная инструкция. Только "dd" и "x" это не совсем удаление, это вырезание. Потом вставить вырезанное можно клавишей "p".
А если был неправильно выполнен merge? 1) "revert -m 1" (ревертим merge) 2) "merge robotics..." (Пытаемся снова смерджить ветку, и получает already up to date, так как все коммиты достижимы) Как поступать в случае, если зафакапили merge (без переписывания истории)?
А нет видео где stomp но вместо фронта - postman?
Хороший урок, спасибо! Теперь лицензия стоит 800 баксов уже ахахаха
это просто жопа какая то. весь вечер исправлял ошибки..во первых надо было прописывать емейл и юзера... потом гит инит создал ветку мастер... а на сайте создалась ветка мейн... и начались танцы с бубнами... видео 6 мин..цуко весь вечер убил на исправления.
Хкрня
Спасибо за полезный контент
автор спасибо тебе большое!!!!!!!!!!!!!!ВИ это адская хня !!!я не смог выйти сукаааааааа
Прочитал как НЕГР
3 месяца учил основы Java. Сейчас вообще не понимаю зачем это делал, потому что из основ тут ничего нет! Вообще не понятно че происходит... Это фиаско, чувствую боль...
Так само собой. Он здесь фреймворк использует. Что ты собирался здесь понять? Ещё очень рано. Нужно много всего изучить, а потом изучить сам этот фреймворк, что бы на нём работать, если тебе именно это будет нужно, конечно.
Это называется "паравиртуализация"
Друзья! Я одного не понял - когда отредактировали MainController и в аргументы для "/add" вместо text и tag вставили @Valid Message message, как SPRING все равно понимает, что в post-запросе данные формы - это Message? По какому принципу парсит поля <input> из формы?
Продолжения не будет (
не факт)
Много воды!
Невероятный. 🙏
Видео для тех, кто уже что-то знает про стримы. Я вообще ничего не понял. Куда то летит, миллион всего объясняет. 0 шансов запомнить и тем более понять
Еммитер это типа паттерна фабрика?
Круто 🫠❤️
Спасибо, очень интересно!
А сейчас это уже не актуально?
Благодарю, добрый человек :) Огромный привет с 2024г )
Концовка - сделала мой день)))) Ахахахаха 🤣🤣🤣
Лучше использовать конечно инжект через конструктор в тестах вместо @Autowired
кайфовое видео. всё по делу
в метод @PostMapping("/") по сегодняшнему гайду спринга должен идти параметр @ModelAttribute Message message вместо прописывания каждого поля