Андрей, спасибо огромное!! Все работает. Это просто клад!!
@ИльяКорнев-ф4х4 жыл бұрын
Один из самых любимых каналов
@InverserPro5 жыл бұрын
Просто восторг! Отличный кодинг. Благодарю!
@ivsergey51505 жыл бұрын
Огромное спасибо, все на высоте. Так держать
@timuris58205 жыл бұрын
molodez, otlichie video! da eshe 2019 god, vse po novim technologiyam :)
@ВадимШох-п5щ4 жыл бұрын
Поработал тестировщиком и выявил у себя несколько багов)) В целом, на работоспособность они почти не влияют, но неприятно. 1) Сокеты у меня видимо работают не совсем корректно. Новые сообщения и комментарии у второго пользователя появляются только при обновлении страницы. Правда, Сарафан у меня открыт в 2 разных браузерах (хром и огнелис). 2) Появился неприятный баг (причем появился, когда я в обоих аккаунтах вышел и зашел снова в Сарафан): При добавлении записи в хроме вылетают ошибки: POST localhost:9000/message 500 Uncaught (in promise) Response {url: "/message", ok: false, status: 500, statusText: "", headers: Headers, …} Что интересно: потом страницу обновишь - сообщение появляется и ошибки пропадают. 3) Когда редактируешь запись, после нажатия кнопки Save пропадают комментарии к этой записи. Потом нажимаю обновить и комментарии снова появляются. 4) Если обновить страницу после добавления нескольких комментариев к записи, меняется сортировка (порядок отображения) комментариев. Причем загадочным образом. Комментарии начинают отображаться рандомно, без привязки к времени добавления (и не в алфавитном порядке, если кто-то так подумал). Если я добавляю еще 1 коммент и обновляю страницу - сортировка снова меняется. Чудеса) 5) Невозможно добавить большое сообщение или большой комментарий. Дебаггер выдает такую ошибку: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(255). В хроме выходят 2 такие ошибки: POST localhost:9000/message 500 Uncaught (in promise) Response {url: "/message", ok: false, status: 500, statusText: "", headers: Headers, …} 6) Каждый пользователь может редактировать и удалять чужие сообщения. Не знаю, может это и не баг, пишу как есть. 7) При нажатии на кнопку «SUBSCRIBE» текст кнопки по идее должен поменяться на «UNSUBSCRIBE». У меня не меняется почему-то. 8) При запуске приложения в консоли Gradle выходит ворнинг: WARN 13681 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 9) Практически при каждом действии в консоли Gradle выходит ворнинг такого содержания: WARN 13681 --- [nio-9000-exec-1] o.h.h.internal.ast.QueryTranslatorImpl : HHH000104: firstResult/maxResults specified with collection fetch; applying in memory! 10) Еще вываливается часто такой ворнинг: WARN 13681 --- [nio-9000-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: failed to lazily initialize a collection of role: vadimshokh.sarafan.domain.User.subscriptions, could not initialize proxy - no Session; nested exception is com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role: vadimshokh.sarafan.domain.User.subscriptions, could not initialize proxy - no Session (through reference chain: vadimshokh.sarafan.domain.Message["author"]→vadimshokh.sarafan.domain.User["subscriptions"]→org.hibernate.collection.internal.PersistentSet[0]→vadimshokh.sarafan.domain.User["subscriptions"])] Если кто-то сталкивался с чем-то похожим, буду рад помощи. Скорее всего я из-за своей криворукости где-то забыл какой-то метод или аннотацию добавить. Если сам пофиксю баги, отпишусь сюда.
@ВадимШох-п5щ4 жыл бұрын
Посмотрел 20 видео. Оп, а там как раз баги фиксятся))) Фууух, такое облегчение. А то я уже весь стэковерфло перевернул
@dmitrysomsin21174 жыл бұрын
Спасибо за урок!
@Name-mm2kx5 жыл бұрын
Спасибо большое!
@antondoronin12615 жыл бұрын
Как всегда 🔥!
@GoPetr Жыл бұрын
Я мотивирую тебя)))
@lumea-arboris5 жыл бұрын
спасибо за видео, но у меня появился вопрос, если у нас например будут боевые условия(прод) и например будет 1миллион пользователей, база данных скорее всего не выдержит таких манипуляций с ентитиграфом как для Users и Messages с Comments? Мне кажется что это bad way, хранить такую инфу в бд и доставать ее таким же образом. Что мне приходит в голову, как можно снизить нагрузку на бд: 1) Добавлять кэширование на бэке. Но вот с комментариями и подписками - х3. Нам нужно будет, после добавления кэша например на коменты и подписки, реализовать метод протухания и тут получается ситуация, когда приходится реализовать сложный многоуровневый кэш, но из-за многих действий/собыий пользователей, кэш становится не эффективный 2) Скорее всего более правильный подход вынести все комьюнити(лайки, подписки, комменты) в отдельную таблицу в базе данных, потом прикручиваем noSQL, например elasticSearch и дублировать сохранение комьюнити после записи в бд - еще и в эластик и всю выборку делать через elasticSearch. Что думаешь по поводу этого? Мне кажется это интересный вопрос)
@alexandrguravskiy99855 жыл бұрын
Крутотень )
@kunnilinux5 жыл бұрын
Не могли бы вы рассказать в двух словах об этом методе гет 7:11 и поподробнее о кеше юзеров (как реализовывается на практике и как работает)? Заранее спасибо
@vova_ike5 жыл бұрын
Спасибо за видео)
@NoNameEtcDot5 жыл бұрын
спасибо за видос!
@ivankurilov58703 жыл бұрын
При таком условии в UserLink.vue для пользователей unknown работать не будет, так как у таких пользователей нет id, в этом месте приложение падает с ошибкой пока в поиске как починить:)
@jaydee86335 жыл бұрын
Есть подозрение, что сломалось добавление и редактирование Message. И user_subscriptions не заводится
@letsCodeDru5 жыл бұрын
Оп-па... Я могу)) проверю, как руки дойдут)
@jaydee86335 жыл бұрын
Если подписывается два человека, то при запросе профиля в массиве subscribers одна запись приходит объектом, вторая запись идентификатором. В итоге SUBSCRIBE/UNSUBSCRIBE отображается некорректно. И почему-то пока не переопределил toString() для User, постоянно валился SOF error в итоге сессия отваливалась и lazy loading не отрабатывал. Ну и на заметку тем, кто на MySQL все это делает: у меня выскакивала ошибка об ограничении длины первичного ключа в 1000 байт, а Hibernate предлагал автоматом сделать колонки в таблице user_subscriptions varchar(255). Пришлось табличку создавать руками с колонками с типом varchar(100)
@alexandrguravskiy99855 жыл бұрын
@@jaydee8633 а почему вместо 3х === не поставить 2 == так же можно ? тогда отображается корректно или так неправильно?
@ELISEY_OSADCHY Жыл бұрын
@@jaydee8633 Знаю, что уже прошло 4 года, но всё же, ты решил проблему когда одна запись приходит обьектом, а вторая идентификатором? А то хочется чтобы было всё нормально, а в инете всё перерыл, ничего нет...
@jaydee8633 Жыл бұрын
@@ELISEY_OSADCHY прям заинтересовали, завтра попробую поискать этот проект у себя. Попробую воспроизвести ошибку. А мои рекомендации, приведенные выше не помогли? Хотя я даже и не помню, что там такое могло сломаться 😁
@СергейХроменков-к8о5 жыл бұрын
Видео полезно и познавательно, но, по-моему, отвалилось редактирование сообщений. Если отключим наши ws и просто проверим работоспособность приложения, то изменение сообщений не работает. Вижу два пути решения: 1) на стороне бэка: при изменении сообщения в copyProperties, добавить ignorePropertires: "creationDate","comments","author" при этом - логично добавить проверку: изменился ли автор: author 2) на стороне фронта: в updateMessageMutation мы не вырезаем и вставляем полученное сообщение, а просто изменяем полученный текст msg по найденному индексу Еще раз отмечу, что видео очень полезно и с нетерпением жду следующих =)
@maxleonov78015 жыл бұрын
СПАСИБО
@andreyguzik26755 жыл бұрын
Чеширский лайк
@kunnilinux5 жыл бұрын
Немного не согласен, что некоторые методы контроллеров у вас содержат бизнес-логику, это вроде работа сервисов
@akame67474 жыл бұрын
А почему бьет такие ошибки? Id приходит не null вроде 1) [Vue warn]: Error in render: "TypeError: Cannot read property 'id' of null" found in ---> at src/main/resources/static/js/components/UserLink.vue at src/main/resources/static/js/components/messages/MessageRow.vue at src/main/resources/static/js/pages/MessageList.vue at src/main/resources/static/js/pages/App.vue и TypeError: Cannot read property 'id' of null 2) Если в application properties не добавить spring.profiles.active=dev то все падает 3) при переходе в профиль GET localhost:8080/user 404
@akame67474 жыл бұрын
в 1 похоже проблема с
@akame67474 жыл бұрын
можно экранировать user.id так: в computed добавить метод userId() { return this.user ? String(this.user.id) : 'null' }
@АнтонНарижный-ъ7ф2 жыл бұрын
@@akame6747 Получилось решить все эти проблемы?
@AnnaSmirnova14 жыл бұрын
У кого-то были сложности с UserLink.vue? [Vue warn]: Error in render: "TypeError: Cannot read property 'id' of null" found in ---> at src/main/resources/static/js/components/messages/UserLink.vue at src/main/resources/static/js/components/messages/MessageRow.vue at src/main/resources/static/js/pages/MessageList.vue at src/main/resources/static/js/pages/App.vue
@frolakatov78264 жыл бұрын
у меня такое было, потому что с самого начала курса тянулись посты без авторства.
@AnnaSmirnova14 жыл бұрын
@@frolakatov7826 у вас получилось найти в чем причина?
@frolakatov78264 жыл бұрын
@@AnnaSmirnova1 я же написал, у меня было дело в постах без авторов) author == null, поэтому и не достучаться до author.id, который мы хотим получить для динамической ссылки в каждом посте.
@AnnaSmirnova14 жыл бұрын
@@frolakatov7826 спасибо есть идеи где искать
@АнтонНарижный-ъ7ф2 жыл бұрын
@@AnnaSmirnova1 Получилось решить эту проблему?
@borismatashin58914 жыл бұрын
топ
@ilindev5 жыл бұрын
Привет! Покажи как делать авторизацию VK. Думаю многим будет полезно! Спасибо! Отличный канал!
@Ivan-oy9ub4 жыл бұрын
thanks!
@СергейВолков-ф1м5 жыл бұрын
Отправка через веб сокеты накрылись или это только только у меня?
@СергейВолков-ф1м5 жыл бұрын
в main.js нужно поменять на if (profile) { connect() }
@Mrandrewgolovko5 жыл бұрын
@@СергейВолков-ф1м Заменил. Не помогло(((
@karfogengroup8072 жыл бұрын
Если у кого-то не работает отписка то это связан с @equalsandhashcode. Если lombok не настроен то надо генерировать вручную equals и hashcode