🔗 Ссылки: ⚡Полный курс по Node.js с нуля, с архитектурой и паттернами: purpleschool.ru/course/nodejs ⚡Курс по TypeScript и паттернам проектирования: purpleschool.ru/course/typescript
@@PurpleSchool И курсы у вас классные. Я уже прошел по Nest, прохожу по TS, и далее микросервисы и Node. Хотелось бы, конечно, увидеть по Angular еще. Сайт с курсами тоже оч нравится, как сделан.
Отличное видео! Спасибо! Понравилось про структурирование приложения. Очень интересно посмотреть на практическое применение DI. Жду с нетерпением продолжения!
17:00 а чего не сделать что-то типа const configService = new ConfigService(); export configService; в самом конфиг сервисе и все будуть брать один объект конфига.
Хммм, интересный подход. Я только одного никак не пойму - где обработчики ошибок?)) Насколько я понимаю все эти ctx.reply - это асинхронщина же. Понятно, что ни отрабатывают в рамках коллбэка и поэтому работают. Но, а где же try/catch? Может я чего то не понимаю конечно
Чтобы выделить логику получения переменных окружения. Скажем если мы захоти получить из стороннего сервиса, к примеру Vault, мы сможем просто в 1-м месте заменить реализация сервиса.
Ну, умоляю вас. Покажите как создавать wizard сцены с таким подходом. Я пробую у меня во-первых с typescript не дружит логика, во-вторых не могу его нормально зарегистрировать через middleware. Хотя по логике вещей чувствую, что какую-то микродеталь упускаю. Контекст ctx не имеет поля scene (а как следствие и enter), потому что не могу понять как зарегистрировать сцену.
Антон, спасибо за видео! 1) У вас есть возможность отключать подсказки в IDEA? Они сбивают когда смотрю в ваш код, там и так много текста и ещё подсказки добавляют. 2) Вы используете vim? Можете поделиться впечатлениями?) Долго учились? Как давно используете? Сильно ли выросла продуктивность? Это могло бы стать темой для видеоролика, но буду признателен и за текст тоже :)
Здравствуйте, Большое спасибо за это видео. Всё понятно. Для тестового задания не могу найти хорошую архитектуру папок, в интернете на эту тему практически ничего. Не могли бы Вы поделиться архитектурой, которую Вы использовали/используете?
Добрый день, хотелось бы спросить, а нормально ли в конструкторе делать какую-то логику, просто мне всегда казалось что это не очень хорошее для этого место
Привет. Спасибо за информативное видео! Можете снять ролик про ваш neovim сетап, какими плагинами пользуетесь ? Было бы интересно. Ну и бы ссылка на ваш сетап не помешало бы)
@@PurpleSchool вы уверены? Просто я пытаюсь развернуть бота, а мне Vercel пишет ошибка 500. Если я добавляю webhook в bot.launch, то работает, но не полностью
Предлагаю тему для видео: Иерархия для каталога на nestes set, вид хранения в sql бд и работа с ней вставка, перемещение по ветке, удаление + перерасчет связей. так же как его оптимально рисовать на фронте, нативный или реакт к примеру
@@PurpleSchool В общем глянул ролик, это супер нетипичный случай) практический пример бы рендерить из состояния.. А всё-таки реализацию классического иерархического дерева с использованием nested было бы любопытно посмотреть, потому что в интернете совсем мало о такой реализации контента
Слова громкие, типа "используем архитектурный подход", "инверсия зависимостей". Очень красиво получилось, так как там всего 1 команда. А когда будет много команд, когда будет состояние, то вот этот вот паттерн, который очень похож на middleware, будет источником лапши Более сложные боты имеют не просто состояние из 1 флага. Обычно бывает 10-20 usecase-ов, и очень сложные состояния, когда без конечного автомата не обойтись, Ваш вариант не уменьшает сложность, он лишь добавляет красивую абстракцию, которая течет уже с первых строк.
@@PurpleSchool О, да. Документация скудная и при поиске примеров приходится учитывать версию телеграфа. Это та ещё боль, если особо не разбираешься в api самой телеги. Когда-то пришлось потратить много нервов и времени при поиске рабочих реализаций в каналах по телеграфу
Мой первый опыт написания бота. За отсутствие DI, конечно, жирный минус, на этом моменте хотелось закрыть видео вообще. Но всё же спасибо, было интересно, попробовал, бот работает.
Здравствуйте, Антон. Записывая начало видео, Вы сидели на коленях перед камерой?) Просто относительно стола Вы находитесь очень низко (телевизор тоже низко как-то).
Видео "ни-о-чем")) Яркий пример перенагруженности логической конструкции. Кстати, этому подвержены все любители TypeScript и прочих "улучшалок". В итоге вы не код учитесь писать и разрабатывать алгоритмы взаимодействия, а учитесь использовать безчисленное количество этих самых улучшалок, тратя уйму времени.
То что вы назвали логической конструкцией, является архитектурой проекта. Можете писать без TS и в одном файле, но тогда забудьте о больших, поддерживаемых и масштабируемых проектах. И как раз «алгоритмы взаимодействия» между компонентами вашего проекта вы и должны прорабатывать.
@@PurpleSchool Это кто сказал забыть?.. что за чушь).. С чего вы это взяли? Люди пишут очень большие проекты прекрасно и с легкостью на нативе и без всяких улучшалок/"убыстрялок". Алгоритмы взаимодействия тут ни при чем, ваш TypeScript - всего лишь помошник для головожопых юнных кодеров не допускать ошибок с типизацией на ровном месте.
@@ledorub6682 Сразу видно, что вы не знаете, что такое TypeScript, и скорее всего не имели дело с большими проектами. А если и имели, то это код, написанный вами давно, в котором только вы знаете как всё работает.
@@АлексейСветинский ох и насмешил, сынок).. вы еще в школу не ходили - я уже разработкой занимался.. вижу что критика для вас неприемлема, поэтому лишь скажу - все улучшалки созданы с одной целью, ускорить процесс коммерческой разработки. Причем чтоб их освоить приходится тратить в разы больше времени, чем на синтаксис и основы построения алгоритмов, то есть на само программирование.
конфеты мишка косолапый хрустят так громко что плохо слышно что рассказывает автор. за те деньги что стоят курсы я могу купить много килограммов этих и других вкусных конфет. вот и выбрал лучше купить конфет, чем курсы. автор так увлекательно рассказывает, что я незаметно съел больше конфет чем предполагал.
@@PurpleSchool Правильно ли я понимаю, что человек, склонировавший этот репозиторий себе на компьютер, установивший nodejs пакеты и запустивший npm start получит ошибку из-за отсутствия .env файла. Не является ли это фатальным нарушением целостности?
@@David-Freeman получит ошибку. И конечно нарушением это не является, так как хранить любую приватную информацию на Git категорически нельзя в открытом виде. Более того env файл будет разный для локальной разработки, stage и прода. И человек для запуска должен собрать нужный себе.
@@PurpleSchool "человек для запуска должен собрать нужный себе." Откуда человек это знает? Откуда он должен знать, какие там параметры вообще? Вывод: .env должен присутствовать, но секретные данные должны быть заменены, скажем, звездочками.
@@David-Freeman он будет знать, так как вы работаете в одной команде. Структура env обычно описывается в инструкции по запуску в Readme, у вас же должна быть к репозиторий полная инструкция
🔗 Ссылки:
⚡Полный курс по Node.js с нуля, с архитектурой и паттернами: purpleschool.ru/course/nodejs
⚡Курс по TypeScript и паттернам проектирования: purpleschool.ru/course/typescript
Что за текстовый редактор? У вас. На видео
@@webdeveloper8826 Neovim
Спасибо, было полезно в качестве наглядного базового бота для вникающего в эту сферу.
Пожалуйста
@@PurpleSchool И курсы у вас классные. Я уже прошел по Nest, прохожу по TS, и далее микросервисы и Node. Хотелось бы, конечно, увидеть по Angular еще. Сайт с курсами тоже оч нравится, как сделан.
@@germanmanvelov спасибо! Старались сделать максимально удобную платформу.
Объяснение прекрасное.
Отдельный плюсик за чистоту речи )
Спасибо!
Есть сылка на гитхаб (код из видео)?
КАЙФФФФ!! Вы прям мысли читаете , везде на питоне боты (
Супер 👍
Дякую за відео🙏 Цікавий та корисний контент😃
👍
Cупер полезное видео! Спасибо вам)
Пожалуйста!
Отличное видео! Спасибо!
Понравилось про структурирование приложения.
Очень интересно посмотреть на практическое применение DI.
Жду с нетерпением продолжения!
Хорошо) так же можно глянуть у меня в курсе, разобрано детально
Топ контент подъехал очередной от Антохи 🔥🔥🔥
Спасибо!
Я бы посмотрел реализацию с архитектурой на NestJS
Буду иметь ввиду)
Когда будет видео как создавать сцены ?
Да, видео по логгированию было круто! Если можно, рассмотрите Pino, пожалуйста.
Почему bot в конструкторе Command имеет модификатор доступа public а не protected?
Согласен, protected было бы правильнее
@@PurpleSchool хорошее видео! и вообще на канале много полезного. спасибо!
Спасибо!
Буду рад, если добавите видео про то, как организовать работу со сценам (scenes)
17:00 а чего не сделать что-то типа const configService = new ConfigService(); export configService; в самом конфиг сервисе и все будуть брать один объект конфига.
Good job bro, I very like this structure!
Thanks!
Хммм, интересный подход. Я только одного никак не пойму - где обработчики ошибок?))
Насколько я понимаю все эти ctx.reply - это асинхронщина же. Понятно, что ни отрабатывают в рамках коллбэка и поэтому работают. Но, а где же try/catch?
Может я чего то не понимаю конечно
Подскажите, пожалуйста, для чего сделали сервис по чтению .env, почему нельзя просто читать переменные из него? не совсем поняла этот нюанс по видео
Чтобы выделить логику получения переменных окружения. Скажем если мы захоти получить из стороннего сервиса, к примеру Vault, мы сможем просто в 1-м месте заменить реализация сервиса.
Ну, умоляю вас. Покажите как создавать wizard сцены с таким подходом.
Я пробую у меня во-первых с typescript не дружит логика, во-вторых не могу его нормально зарегистрировать через middleware. Хотя по логике вещей чувствую, что какую-то микродеталь упускаю.
Контекст ctx не имеет поля scene (а как следствие и enter), потому что не могу понять как зарегистрировать сцену.
Я уже на середине ролика, но я не понимаю: а что мы делаем?
Какой функционал у бота будет?
У этого, кнопки и обработка событий, но это основа для бота, который вы можете сами доделать под себя.
Половина видео, какие-то обвязки над обвязками, абстракции, воюет с типизацией и тд
@@ИловМакс да, да. А по факту просто ставим лайк либо дизлайк ))
Интересный опыт был ) найти бы ещё примеры ) чтоб также с классами ) чтото гитхаб пока не особо балует )
У меня целый курс, где я показываю как строить архитектуру на классах: purpleschool.ru/course/nodejs
Антон, спасибо за видео!
1) У вас есть возможность отключать подсказки в IDEA? Они сбивают когда смотрю в ваш код, там и так много текста и ещё подсказки добавляют.
2) Вы используете vim? Можете поделиться впечатлениями?) Долго учились? Как давно используете? Сильно ли выросла продуктивность? Это могло бы стать темой для видеоролика, но буду признателен и за текст тоже :)
Привет!
Видео про vim: th-cam.com/video/Q1gIbPEStL0/w-d-xo.htmlsi=tM4SdDKaj5AMhgvz
@@PurpleSchool ого, вы прямо на опережение) Благодарю!
Здравствуйте, Большое спасибо за это видео. Всё понятно. Для тестового задания не могу найти хорошую архитектуру папок, в интернете на эту тему практически ничего. Не могли бы Вы поделиться архитектурой, которую Вы использовали/используете?
Привет! Мы активно рассматриваем её в курсе Node: purpleschool.ru/course/nodejs
Добрый день, хотелось бы спросить, а нормально ли в конструкторе делать какую-то логику, просто мне всегда казалось что это не очень хорошее для этого место
Если логика должна каждый раз выполняться при инициализации объекта, то нормально.
Привет. Спасибо за информативное видео! Можете снять ролик про ваш neovim сетап, какими плагинами пользуетесь ? Было бы интересно. Ну и бы ссылка на ваш сетап не помешало бы)
Всё на моем канале со ссылками: th-cam.com/video/4PzSNN45tcA/w-d-xo.html
@@PurpleSchool спасибо за ответ! Я в итоге нашёл ваше видео про AstroVim и скачал его. Довольно полезный конфиг, особенно для ленивых как я :D
А как данный проект развернуть на Vercel?
Как и любой проект на ноде
@@PurpleSchool вы уверены? Просто я пытаюсь развернуть бота, а мне Vercel пишет ошибка 500. Если я добавляю webhook в bot.launch, то работает, но не полностью
для архитектуры и поддержки надо вынести все значения для лайк/дислайк в enums а не прямо в функциях писать.
Да, верно
Спасибо! Много полезной информации👍
Пожалуйста!
не могу реализовать сцена кто то знает как ?
как можно избежать коллизий в callback данных? ("course_like", "course_dislike")
Не очень понял вопрос.
@@PurpleSchool В больших проектах может быть много похожих действий и случайно можно дать называние которое уже существует
Делать сцены, которые ограничивают набор доступных в текущий момент действий в зависимости от сцены
Тема для следующего видео: Визуализация архитектуры c4. Инструменты для проектирования. Правила проектирования
Я попробовал обычную сцену создать с таким подходом. Все, я сдаюсь. Одни ошибки
А как потом добавить новые команды?
Создать новый command и его подключить в app.ts в массив команд
Предлагаю тему для видео:
Иерархия для каталога на nestes set, вид хранения в sql бд и работа с ней вставка, перемещение по ветке, удаление + перерасчет связей. так же как его оптимально рисовать на фронте, нативный или реакт к примеру
У меня есть видео по отрисовке вложенных меню любой вложенности: th-cam.com/video/yLOOpANXP1E/w-d-xo.html&ab_channel=PurpleSchool%7CAntonLarichev
@@PurpleSchool В общем глянул ролик, это супер нетипичный случай) практический пример бы рендерить из состояния.. А всё-таки реализацию классического иерархического дерева с использованием nested было бы любопытно посмотреть, потому что в интернете совсем мало о такой реализации контента
Сегодня практике ради написал свое дерево на реакте, но с плоским списком. Для небольших структур самое то, но работа с ним конечно потная
Слова громкие, типа "используем архитектурный подход", "инверсия зависимостей".
Очень красиво получилось, так как там всего 1 команда.
А когда будет много команд, когда будет состояние, то вот этот вот паттерн, который очень похож на middleware, будет источником лапши
Более сложные боты имеют не просто состояние из 1 флага.
Обычно бывает 10-20 usecase-ов, и очень сложные состояния, когда без конечного автомата не обойтись, Ваш вариант не уменьшает сложность, он лишь добавляет красивую абстракцию, которая течет уже с первых строк.
Если ты думаешь что у Telegram плохая документация, значит ты просто не видел вк)
Я говорил про библиотеку Telegraf
@@PurpleSchool О, да. Документация скудная и при поиске примеров приходится учитывать версию телеграфа. Это та ещё боль, если особо не разбираешься в api самой телеги. Когда-то пришлось потратить много нервов и времени при поиске рабочих реализаций в каналах по телеграфу
у grammy чёткая дока
Да, глянул, неплохо
я фронт, решил для себя разобраться в беке на ноде и у меня возникает ощущение - как будто бы на разных языках пишем)
Все вполне похоже)
👍👍👍👍👍
👍
Мой первый опыт написания бота. За отсутствие DI, конечно, жирный минус, на этом моменте хотелось закрыть видео вообще. Но всё же спасибо, было интересно, попробовал, бот работает.
👏👍💥
👍
1650g tells a lot
Здравствуйте, Антон. Записывая начало видео, Вы сидели на коленях перед камерой?) Просто относительно стола Вы находитесь очень низко (телевизор тоже низко как-то).
Нет, это кресло мешок около телевизора)
Видео "ни-о-чем")) Яркий пример перенагруженности логической конструкции. Кстати, этому подвержены все любители TypeScript и прочих "улучшалок". В итоге вы не код учитесь писать и разрабатывать алгоритмы взаимодействия, а учитесь использовать безчисленное количество этих самых улучшалок, тратя уйму времени.
То что вы назвали логической конструкцией, является архитектурой проекта. Можете писать без TS и в одном файле, но тогда забудьте о больших, поддерживаемых и масштабируемых проектах. И как раз «алгоритмы взаимодействия» между компонентами вашего проекта вы и должны прорабатывать.
@@PurpleSchool Это кто сказал забыть?.. что за чушь).. С чего вы это взяли? Люди пишут очень большие проекты прекрасно и с легкостью на нативе и без всяких улучшалок/"убыстрялок". Алгоритмы взаимодействия тут ни при чем, ваш TypeScript - всего лишь помошник для головожопых юнных кодеров не допускать ошибок с типизацией на ровном месте.
@@ledorub6682 Сразу видно, что вы не знаете, что такое TypeScript, и скорее всего не имели дело с большими проектами. А если и имели, то это код, написанный вами давно, в котором только вы знаете как всё работает.
@@АлексейСветинский ох и насмешил, сынок).. вы еще в школу не ходили - я уже разработкой занимался.. вижу что критика для вас неприемлема, поэтому лишь скажу - все улучшалки созданы с одной целью, ускорить процесс коммерческой разработки. Причем чтоб их освоить приходится тратить в разы больше времени, чем на синтаксис и основы построения алгоритмов, то есть на само программирование.
@@ledorub6682 неадекват какой то
конфеты мишка косолапый хрустят так громко что плохо слышно что рассказывает автор. за те деньги что стоят курсы я могу купить много килограммов этих и других вкусных конфет. вот и выбрал лучше купить конфет, чем курсы. автор так увлекательно рассказывает, что я незаметно съел больше конфет чем предполагал.
За 1790 рублей думаю конфет будет не так уж много. Да и много сладкого вредно.
@@PurpleSchool у Вас курсы по цене конфет? а я думал десятки тысяч как у всех. надо посмотреть. спасибо за пояснение.
Да, для самостоятельного прохождения 1790. Если есть желание работать с наставником и код ревью 6350. И те и те цены для рынка досрочно приемлемы)
Зачем ты это написал? Теперь я хочу конфеты мишка косолапый.
@@just__did__it надеюсь у Вас получится из поесть.
"Не забудем добавить .env в .gitignore" - Это еще почему?
Потому что вы же не хотите, чтобы ваши приватные ключи или пароли от базы улетели в git и хранились в открытом виде?
@@PurpleSchool Правильно ли я понимаю, что человек, склонировавший этот репозиторий себе на компьютер, установивший nodejs пакеты и запустивший npm start получит ошибку из-за отсутствия .env файла. Не является ли это фатальным нарушением целостности?
@@David-Freeman получит ошибку. И конечно нарушением это не является, так как хранить любую приватную информацию на Git категорически нельзя в открытом виде. Более того env файл будет разный для локальной разработки, stage и прода. И человек для запуска должен собрать нужный себе.
@@PurpleSchool "человек для запуска должен собрать нужный себе." Откуда человек это знает? Откуда он должен знать, какие там параметры вообще?
Вывод: .env должен присутствовать, но секретные данные должны быть заменены, скажем, звездочками.
@@David-Freeman он будет знать, так как вы работаете в одной команде. Структура env обычно описывается в инструкции по запуску в Readme, у вас же должна быть к репозиторий полная инструкция