May Code
May Code
- 10
- 97 353
Привет программистское комьюнити и не только.
На этом канале не будет фундаментальной информации которая поможет вам стать программистом, здесь вас не будут учить программировать с нуля, в этом месте можно просто расслабиться, взять чаек и посмотреть как автор кодит, изучает новые фреймворки (в том числе возможно сами что-то изучите, с чем ещё не встречались), так же принять участие в обсуждении тех или иных участков кода, или вообще обвинить автора в говнокоде) Впрочем думаю здесь будет интересно, возможно вы сможете выявить для себя какие-то фишки, или хитрости которые юзает автор, или вообще научить его своим. Я всегда открыт новым знаниям и готов делиться своими с остальными)
Ах да, информация о сущности Автор:
Меня зовут Влад, мне 22 года, я 5 года работаю Java программистом, из них 3 года очень плотно разрабатываю приложения на Spring+Java+PostgreSQL стеке, на этом канале планирую изучать новые технологии (Spring Reactive, GraphQL и прочую дичь). Ну что, May Code?)
Пікірлер
пушка в качестве стартового проекта, ты молодец, я много от тебя узнал, не прекращай пж
Постараюсь ;)
Отличная информация, но 4 часа меня добили. Подача и энтузиазм автора понравились, как он так выдерживает?)
Не знаю, сам в шоке как он это делает)
Дядя, ебашь дальше видеВо пожалуйста!
Начало было неплохое, но потом ппц наговнокодил)
Чел, ты реально лучший и очень четко все поясняешь и объясняешь, было бы здорово если бы ты вернулся.
Спасибо большое за контент! Смотрел на одном дыхании. Шутки, связанные с темой работы, зашли почти все)) Прикольно, что устраиваешь интерактив, бывает смотришь, задумаешься о чем то, и буквально 5-10 секунд и что-то пропустишь, а интерактив помогает быть в тонусе 🙂
@Column пишем, если не хотим чтоб в коде название переменных было например с нижним подчеркиванием. Нижнее подчеркивание я использую в названии колонок, но в коде кэмелкейс @Column(name = "total_hours") private Double totalHours; @Column(name = "hourly_rate") private Double hourlyRate; @Column(name = "total_salary") private Double totalSalary;
Разве по дефолту camelCase название поле не конвертируется в snake_case для БД? У нас требования чтобы был snake_case в БД и camelCase в коде, но я никогда не пишу @Column для переопределения имени.
будет ли что-нибудь новое?
Чтоб разработчик не знал что за вкладкой Structure скрывается, выглядит забавно А для того чтоб бликов не было есть занавески и шторы
спасибо за урок, объяснения и вправду понятные. Постараюсь усвоить весь плейлист
👍👍👍
Автор, какой же вы молодец. Вы не представляете как много вы сделали для людей. <3 Вы какой-то очень позитивный человек, успехов вам во всем!
Благодарю
Привет, а для чего используется метод saveAndFlush в классе TaskStateController, если мы не получаем обратно сохраненное значение из бд? (Например, в методах replaceOldTaskStatePosition и changeTaskStatePosition в некоторых местах достаточно использовать save?) Еще хотел спросить по поводу подхода маппинга сущностей в DTO, в данном случае используется фабрика + билдер. Насколько я знаю, для этого широко применяется MapStruct. Можешь пару слов рассказать, почему выбран именно первый подход здесь и в чем его преимущества перед MapStruct?
Про MapStruct - уже отвечал. Подход ручной конвертации гибок и всегда контролируется до мелочей. Мне так привычнее. По поводу saveAndFlush так просто не скажу, давно был стрим) Видимо мне надо было в рамках транзакции пропихнуть изменения в БД раньше, чем сама транзакция закончится
Понятно. Насколько я понял, MapStruct уместно использовать при большом кол-ве полей, чтобы не писать много кода.
Этот чел просто спас и дал много нужной инфы для разработки сайтов. Я участвую в кокурсе и разрабатываю свйт первый раз. Я раньше с плагинами для майна работал и теперь представьте какого это перейти из 3 часового проекта в глобал проект целой командой работы
А почему вместо factory классов не использовать MapStruct? Там же идет преобразование entity в dto, и мне кажется что лучше повесить аннотацию, чем каждый раз описывать логику руками.
Привычка все контролировать вручную. Так все механизмы конвертации становятся намного прозрачнее
Спасибо за видео, новички тебя не забудут :)
О май гад. Для тех кто не создаёт сервисы, предлагаю все приложение через один java файл реализовывать, даже в одном классе. То есть dto решил сделать, а логику транзакций совместил с обработкой http запросов. Я правильно понимаю, что если будут проверки безопасности, фильтры и прочее все стерпит контроллер ? Solid в помощь
Вы правы, на данный момент мой подход изменился. Но я изначально оговорился что мои тестовые примеры не требуют таких усложнений. Так же я сразу сообщил, что я показываю как это делаю я и это не является учебным примером.
Если не трудно, расскажи, повлияло ли высшее образование и знание английского языка на трудоустройство?
Все зависит от компании. В моем случае влиял больше мой личный опыт в разработке. Английский со временем подтягивается, потому что весь код на Английском)
благодарю)
про вечер пятницы угарнул)
А что там было?) Освяжи память))))
То, что нормальные люди в пятницу вечером идут отдыхать, а не писать микросервисы 😁
Мне кажется вместо создания дополнительных factories, легче создать конструктор в дто TaskDto(Task task), где принимать в качестве аргумента модель и на её основе билдить поля дтошки
Раньше так и было. Но если тебе нужна какая-то особая логика - включить в процесс сборки сторонние Бины, до запрашивать данные - в этом случае это не гибкий подход. Поэтому мы от этого подхода и ушли и стали делать классы-фабрики создания ДТО
понял спасибо@@maycode0
Надо поменять в названии "микросервис" на "сервис". Потому что новичков отталкивает, а остальных вводит в заблуждение, они ожидают что-то про микросервисную архитектуру и смотрят 4 часовое видео зря
Привет. Спасибо огромное за видео. Я сейчас смотрю первый стрим, но в планах уже есть просмотреть и все остальные. Очень помогает твое грамотное объяснение каждого шага и небольшие углубления. Очень тяжело двигаться без ментора, и твои видео стали просто отдушиной и позволяют двигаться вперед без упадка мотивации. Буду с нетерпением ждать новых видео, а пока продолжу смотреть!
нужно было в настройках в SDKs поменять на 11))
Узнал из данного материала больше чем из платных курсов по Spring’y, а ведь я посмотрел только один ролик всего лишь…. Продолжай в том же духе, дружище, отличная подача материала
Видео оч круто, но будет ли вторая часть? Почти 3 года уже прошло, но вижу автор почти на все комментарии отвечает P.S. Увидел, вроде в трансляциях должно что-то быть)
Хороший стрим, но я не могу понять почему ты всю логику пишешь в контроллерах. Возможно требование со стороны компаний, но когда я проходил обучение, нас учили писать логическую часть в Service, в отдельном классе. А далее вызывать ее в контроллерах. Таким образом мы не заполняем ее лишними вещами
Все верно. Ранее это не было принципиальным вопросом, но лучше писать в сервисах)
@@maycode0 Ясно)) Благодарю за стрим и вот вопрос, какой у тебя грейдинг и сколько лет опыта? Как долго ты учил Java, по курсам или сам?
@ElnazAusArdSkelig Java учил по книге Герберта Шилдта. Но до этого выучил C++ и перейти с него на Java было не сложно. Грейдинг - уже не знаю честно говоря, последний раз был мидл) Опыт работы - 5.5 лет
@ElnazAusArdSkelig Java выучил где-то за неделю, две. Но это после того как за месяца 3 изучил C++
@@maycode0 Ого,как интересно! Спасибо большое за ответ!
Ты на каждого юзера в чате создаешь отдельный топик, если у тебя будет >100 юзеров в >100 чатах, то это >100*100 топиков - ахтунг
укникальный топ контент! скажи а есть у тебя видео где несколь микросервисов вместе работают? спасибо за труд.
Только через RabbitMQ. Посмотри на канале
У меня вопрос по поводу Intelij idea.Вы тоже пробную версию абузите или через студент клейм как то, а может быть платите?
Раньше студентской пользовался, сейчас оплачиваю
@@maycode0 понял спасибо
смотрю уже пол часа на скорости 1,5 столько лишнего пиздежа. Только остальные положительные комменты заставляют смотреть дальше
Ничего не могу поделать, это формат живого общения, а не конспектированное видео:)
Согласен. Меня хватило на почти час и вырубил. Смотрел тоже из-за положительных комментов
Спасибо за контент, вопрос, спустя 2 года автор так же хейтит сервисы?))
Нэт) Автор вкурил когда они нужны, но использует пока так же редко, пока нет острой необхожимости
Если информация не слишком конфиденциальная, то хотелось бы узнать. Ты на работе выполняешь задачи похожей сложности, или они легче/сложнее?
Когда как, иногда бывают совсем простые и шаблонные, иногда бывают очень сложные и на подумать, разобраться с технологиями.
@@maycode0 спасибо за ответ. Когда запустишь следущий стрим? Много полезного из них узнаю)
@Wansery пока в поисках этого самого полезного) Крутить одно и то же смысла мало
а реактивное вы применяете на работе - flux mono?
53:20 Частенько раньше встречались на сайтах такие сговоры хитрых бэкендеров с фронтовиками, когда после удаления объекта обновляешь страницу, а он снова там)) Т.к. из-за глюка в бэкенде удаление не произошло, а фронт отрисовал удаление, не ориентируясь на подтверждение бэка)
Кодить на белой теме💀
Белая днем, темная вечером🎉
Вначале подумал что не будет ничего полезного, но за всю трансляцию нашёл столько прикольных микрофишек, в общем спасибо!
Здорово, если напишешь какие-то из них - буду благодарен!)
добрый день. Объясните плиз в чем тут вообще микросервис? Это обычный монолит
1:49:26 у меня таблицп не сгенерировалась что делать😅
А в пропертях приложения указано ddl-auto: update?
Тебе удалось решить проблему?
Transactional на уровне контроллера это конечно мем. А что не на уровне сразу сервиса?
Захотелось :)
Джун: - " Как ??? " Синьер: - "Я тебе щаз покажу, но ты просто не бойся" )))))))
Это какой таймкод?)
я ничего не изучил про микросервисов из твоего видео. Я проста патратил свои временны. Ты проста сделал маленький Rest api в течение 4 часов. Нет никакога микросервисе
А что такое микросервис в вашем понимании?)
:)
kzread.info/dash/bejne/fKJ8pZeQm5q5pbQ.html
kzread.infoJnHC5Wk7SuQ?feature=share&t=3175
Спасибо. Очень ценно
39:19
28:04
Автору большое спасибо за контент 👍 +подписка
Спасибо за видео! Весьма познавательно!
my vote for stream about testing!
Сорри, сперва подумал, что ты исползуеш Hystrıx как CB, а оказывается для батчинга. Но честно говоря ест странные моменты: 1. У тебя тут нет по сути никакого батчинга запросов(просто ты в первый раз зачем-то запрашивал у прайссервиса по одной сущности в то время, как у тебя уже был готовый эндпоинт запроса батчем всех цен(вот как раз на стороне прайссервиса и определяется можно ли осуществит батч запрос или нет, если бы там можно было получит толко одну цену то никакого батча ты бы не сделал)). 2. То что ты в реалности делаеш это просто асинхронную джобу через хистрикс - отсюда и возможност более быстрой обработки запросов с такими сервисами, где не предусмотрены настоящие батч запросы(сразу все в одном реквесте), толко через хистрикс эти джобы очен криво делаются, с обработкой кучи ненужных исключений и без обработки реално нужных. Ест же прекрасный сервис для этих целей Spring Batch - почему им не ползоватся, не понятно.. 3. Ну и вцелом так не исползуются инструменты (не разобравшис толком), ты просто первую попавшуюся библиотеку тулиш в код, даже не понимая толком как она работает, как ее настраиват, просто ознакомившис бегло с гетстартед. Это очен плохая практика. Стоит ознакамливатся с принципами работы того, что ты исползуеш, немного более терпеливо, - болше времени сэкономиш себе, исключив судорожные поиски в гугле причин отказа работы в будущем, и еще болше времени сэкономиш тому кто будет твои копипасты разбират в далнейшем. В целом код приятный, чистый более-менее (про замеры через currentTimemillis и обращение из контроллеров напрямую в репозиторий уже не буду ничего говорит, Бог таких людей сам покарает). И видео хорошо делаеш, смотрет приятно, рассказываеш интересно, толко не торопис, когда ознакамливаешся с технологией, за кадром разбирай новое деталнее и посвящай этому поболше времени, а то много где говориш не совсем корректные вещи P.S. сорри за ошибки - мягкий знак, сука, не работает на клаве какого-то хера))
1. Как это нет?) Согласен, без метода в PriceServic батчинг никак не организовать, но и без группировки данных в конечном сервисе батчинг тоже никак не сделать. То что я показывал - пример того как последовательно возникает проблема и как решается. 2. А чем это плохо? Это один из возможных инструментов, я не говорил что это Best Practice и все мои стримы - это пища для размышлений, они не ставят в задачу кого-то чему-то научить от и до, и если ты уважающий себя разработчик - ты не будешь копипастить) 3. Сложно адекватно думать непрерывно после 8 часов работы и 4 часа подряд обсуждая какие-то вещи на стриме. Я согласен, много было моментов в которых я говорил не совсем связанные вещи или некорректные (я так и говорил - что заговариваюсь уже), но поверьте мне - с хистриксом я провел чуть больше времени - чем написать что-то по гайду Get Started :) Но так как мы все реальные люди и запомнить все сразу невозможно, то естественно мы взываем к Гуглу и к документации в своих поисках и это в том числе нормальная практика. Просто не стоило все таки запускать стрим уставшим чтобы не нести чепушню иногда, с этим согласен. Насчет замеров не вижу ничего плохого, я просто добавил ясности тем, кто не понимает происходящего и причины из-за которой у нас появляется высокая задержка, указав что явно дело не в репозитории (конечно, такие профи как вы сразу поймут причину, но не только же вы меня смотрите:)). Можете подробнее направить куда капать в Spring Batch? Когда я смотрел в сторону этого инструмента я только понял то - что он для обработки пачек данных, но организацию асинхронного батчинга запросов, с возможностью ожидать результат на месте (в вызывающей функции, как было на стриме) я там не нашел.
На Hystrix в контексте батчинга меня навел мой начальник и после того, как я услышал слово батчинг, моментальная ассоциация с Spring Batch) Если есть пример как можно использовать Spring Batch в контексте того, как это использовалось на стриме - было бы шикарно.