Пишем полезного Telegram бота на Golang | Урок #4 - EventProcessor, Storage

  Рет қаралды 12,739

Николай Тузов — Golang

Николай Тузов — Golang

Күн бұрын

В этом уроке мы разберемся с API для взаимодействия с telegram-ботом и напишем модуль clients/telegram, который будет выполнять функции клиента для этого API.
Ссылка на итоговый проект на гитхабе: github.com/JustSkiv/read-advi...
На коммиты по урокам не разбито, так как изначально собирался записать один большой урок.
Картинка на превью добавлена с разрешения её автора, за что ему большое спасибо.
Его профиль на Хабре: habr.com/ru/users/oWart/
Тайм-коды:
00:00 Вступление
00:15 Начинаем писать Fetcher и Processor
04:47 Почему отложили EventProcessor
04:57 Создаем Storage
07:02 Реализация интерфейса Storage: files
07:27 Метод files/storage.Save()
09:48 Метод page.Hash(): создание хэша страницы
12:06 Функция files/fileName()
12:45 Доделываем метод files/storage.Save()
15:04 Метод files/storage.PickRandom()
18:14 Метод files/storage.Remove()
19:01 Метод files/storage.IsExists()
20:22 Заключение

Пікірлер: 41
@seldomhappy
@seldomhappy 2 жыл бұрын
Был очень удивлен, что есть такой контент в открытом доступе. По поводу пользовательских типов, с удовольствием бы посмотрел видео
@nikolay_tuzov
@nikolay_tuzov 2 жыл бұрын
В открытом доступе есть много хорошего контента =)
@shokhrukhdavlatmamadov1619
@shokhrukhdavlatmamadov1619 Жыл бұрын
@@nikolay_tuzov здравстуйте! Спасибо Вам за ваши видеоролики! Хотел спросить, видео по пользовательским типам вышло-таки, или нет?
@Irina-bn4my
@Irina-bn4my Жыл бұрын
Спасибо за такие уроки) очень полезно видеть такие примеры хорошего кода)
@Randych
@Randych 2 ай бұрын
Что классно в бобре - ты можешь открыть видео пятилетней давности и с большим шансом там будет актуальный контент.
@user-pt4iz2py6k
@user-pt4iz2py6k 2 жыл бұрын
Очень рад, что мощному и хвалёному процессору - эдакому мачо-вышибале от мира данного проекта, пришлось подвинуться в сторону и отдать львинную долю ролика формированию Стоража (вперёд Стораж!) Как говорится: НИКТО НЕ СДВИНЕТСЯ С МЕСТА, ПОКА МАЛЫШ СТОРАЖ НЕ СДЕЛАЕТ СВОИ ДЕЛА (ˆˆ) Нравится, что повествование идёт цельно - доходим до определённого этапа, когда нам нужно дописать функциональность к уже существующим сущностям - топаем и пишем, а не так, что сначала расписали всю начинку сущности и потом просто дёргаем, и никто, кроме автора уже и не понимает зачем? что там делается? почему именно здесь и сейчас?... Нет, тут по другому - и это радует) Было озвучено предложение по созданию ролика посвящённого gob (стоп, мы подошли из-за угла...) - голосую и плюсую за появление данного ролика, да и в принципе роликов по стандартным библиотекам (может быть, аля рубрика - Очумелые пакеты - где ведущий показывает возможности и область применения пакета стандартной библиотеки в нормальных/предполагаемых условиях, а потом хоба - и использует его в какой-то дичи - и такой, мол - "а оно ведь и так умеет - не костенейте мозгами, го-воины...(братцы, друзья - кому что больше нравится)". Но в целом это так - мысли по древу) P.S. Радует умелая вставка картинок - они не избыточны, всегда к месту и выполняют главную свою работу - заставляют улыбнуться, донести мозгу - что это не только работа, но весело и занимательно - и он такоооой - ЛАааааадно ужжж, пиши на своём галанге! P.S.S. В общем, спасибо за урок, и дальнейших успехов!
@nikolay_tuzov
@nikolay_tuzov 2 жыл бұрын
Как обычно, спасибо большое за такой развёрнутый фидбэк =) Про gob отметил у себя.
@user-rd4ph1oh3x
@user-rd4ph1oh3x Жыл бұрын
Спасибо за урок, пробовал сам методы для начала делать, а потом смотреть как ты это делаешь) Очень хороший опыт, кстати)
@svetlana4427
@svetlana4427 2 жыл бұрын
Большое спасибо за интересные уроки!
@nikolay_tuzov
@nikolay_tuzov 2 жыл бұрын
^_^
@stylizedworld8601
@stylizedworld8601 2 жыл бұрын
Радует что видео часто выходят. Уже есть планы что будет дальше после бота?
@nikolay_tuzov
@nikolay_tuzov 2 жыл бұрын
Да, планы есть. Во-первых, я ещё не закончил с серией уроков по архиватору, и планирую довести это до конца. После этого попробую отдельные видео записывать, не сериями. Какие-то интересные вещи, которые касаются Go. Например, интерфейсы, context, конкурентность, reflection, atomic, какие-то вопросы оптимизации и т.п.
@ironbo2770
@ironbo2770 2 жыл бұрын
Николай, спасибо за подробные уроки! Круто было бы увидеть разбор server side, на каком-нибудь фреймворка типа echo и без него, с применение DI.
@nikolay_tuzov
@nikolay_tuzov 2 жыл бұрын
Спасибо =) Не очень понял, что имеется ввиду под "разбором server side". Пример написания какого-нибудь API-сервиса с фреймворком и без?
@ironbo2770
@ironbo2770 2 жыл бұрын
@@nikolay_tuzov да, верно) P. S. Плюс с авторизацией по токену или сессией в куках) Реально мало полноценной и подробной инфи для начинающих (на русском языке).
@nikolay_tuzov
@nikolay_tuzov 2 жыл бұрын
Окей, понятно) Да, можно что-то подобное сделать.
@user-wt8yi2wn4h
@user-wt8yi2wn4h Жыл бұрын
Здравствуйте, спасибо за уроки. Хотелось бы поподробнее услышать про алиас для типа int 2:36
@AlexTomashevich
@AlexTomashevich Жыл бұрын
супер, очень понравилось, только по скорости не успеваю, приходится останавливаться и мотать)
@nikolay_tuzov
@nikolay_tuzov 11 ай бұрын
Да, была такая проблемка, в новых роликах исправился
@MsAidahar
@MsAidahar 2 жыл бұрын
крутые видосы
@Sanchellios
@Sanchellios 6 ай бұрын
Офигенный урок, Николай))
@asari999
@asari999 2 ай бұрын
11:10 а почему не сделать слайс из юзеров для пэйджа? тогда все страницы будут в 1 экземпляре и их можно будет хранить в 1 месте. 12:09 ещё вопрос почему func (s Storage) Save() а не func (s *Storage) Save() ?
@Shindos-Kopernik
@Shindos-Kopernik 7 ай бұрын
в методе PickRandom переменная file осталась подчеркнута красным, что то не так с кодом
@jimshtepa5423
@jimshtepa5423 11 ай бұрын
почему save и remove возвращают ошибку а не, например, сохраненную ссылку или айди удаленной ссылки?
@damirmirasov3785
@damirmirasov3785 Жыл бұрын
4:01 Можно назвать Dispatcher
@jimshtepa5423
@jimshtepa5423 11 ай бұрын
почему когда реализуем defer используем дополнительно func а не сразу e.WrapIf?
@AiratZa
@AiratZa 5 ай бұрын
чтобы присвоить значение err. e.WrapIf просто возвращает его, а не обновляет
@hatman8626
@hatman8626 3 ай бұрын
Николай, у тебя кто нибудь проходит код ревью?))
@nikolay_tuzov
@nikolay_tuzov 3 ай бұрын
В каком смысле? На работе у нас есть командное код-ревью, любой MR ревьюит вся команда, как правило. То есть, и я смотрю код коллег, и они мой.
@Randych
@Randych 2 ай бұрын
8:20 по-моему винде уже давно всё равно какие слеши ей кормить.
@MrAlexPop69
@MrAlexPop69 2 ай бұрын
а в чем принципиальное отличие этих двух строк? defer func() { _ = f.Close() }() defer f.Close()
@MrAlexPop69
@MrAlexPop69 2 ай бұрын
в первом случае мы явно игнорируем ошибку возвращаемую методом Close?
@deniss5034
@deniss5034 Жыл бұрын
так и не понял, какая, в данном случае, полезная нагрузка у интерфейса Storage?
@alqueswan7164
@alqueswan7164 Жыл бұрын
Автор с такой легкостью пользуется возможностями IDE не уделяя внимание тому что не у всех стоит это IDE хотя бы потому что оно платное, и легким движением руки генерирует половину кода и изменений в нем, очевидно, ехидно понимая, что после всех этих автоматических преобразований код записанный за ним вручную по видео не заработает. Или не понимает. Про автоматически генерящийся import я уже упоминал в комментах под предыдущими роликами. Теперь автоматическое переименовывание переменной. Отличный ход. Мы все ближе к тому что код не заработает. Я понимаю, что можно сходить на Git и скачать итоговый код, но разобраться в коде, который уже написан, в разы сложнее, чем в том коде который ты написал своими руками создавая последовательно его структуру. Это момент обучения. Автор, явно, упускает этот момент. Все очень быстро, круто, клево, но в итоге вангую ничего не заработает.
@nikolay_tuzov
@nikolay_tuzov Жыл бұрын
Справедливое замечание. Я прекрасно понимаю, что не у всех стоит GoLand. Но, с другой стороны, тот же VSCode не намного хуже по функционалу, а местами и лучше. И он бесплатный. В любом случае, я всегда стараюсь держать баланс между понятностью и динамичностью. Если я буду переименовывать каждую переменную отдельно руками, ролик станет очень скучным. Но и понятностью не пренебрегаю - в предыдущих роликах я прямо на монтаже вырезал существенные куски, и люди писали что непонятно откуда что берётся, я это учёл и стал меньше вырезать. По поводу сгенерированного когда - он ведь всегда представлен на экране. Не все ли равно - напечатал я его у вас на глазах или сгенерировал автоматически? Можно нажать на паузу и почитать, если требуется
@alqueswan7164
@alqueswan7164 Жыл бұрын
@@nikolay_tuzov иногда все настолько быстро, что найти момент где сгенерированный код есть и пол экрана не перекрыто всплывающими подсказками очень трудно. И у меня VSCode и он почему то ничего не дописывает и импорт не генерирует. Может версия какая то. В целом ничего не меняйте, подача отличная. В конечном итоге все равно придется идти за кодом в Git.
@DigneZzZ
@DigneZzZ Жыл бұрын
@@alqueswan7164 могу скинуть статью как GoLand активировать )
@DigneZzZ
@DigneZzZ Жыл бұрын
На самом деле соглашусь. Все настолько молниеносно рассказывается и пишется, что "понять с нуля" ну прям не возможно. А те кто пишут и воспринимают с такой же скоростью, способны на аналогичные действия самостоятельно :( Поэтому фраза из первого урока "Я хочу чтобы вы научились делать и сами могли дальше совершенствовать" (или типа того) - немного не укладывается в формат подачи ) Но за видео конечно спасибо!
@nikolay_tuzov
@nikolay_tuzov Жыл бұрын
@@DigneZzZ а что конкретно непонятно? Приходи в наш чатик, обсудим. Если что-то непонятно, я или кто-то из ребят поможет: t.me/+WyjmnP6la_QyYjAy
Пишем полезного Telegram бота на Golang | Урок #5 - пишем EventProcessor
25:55
Чистая архитектура проекта на Golang
58:22
Олег Козырев
Рет қаралды 33 М.
WHY IS A CAR MORE EXPENSIVE THAN A GIRL?
00:37
Levsob
Рет қаралды 20 МЛН
Универ. 13 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:07:11
Комедии 2023
Рет қаралды 3,5 МЛН
Китайка и Пчелка 4 серия😂😆
00:19
KITAYKA
Рет қаралды 3,6 МЛН
Меняла стек в IT 7 раз - делюсь опытом!
34:49
IT-Собеседница
Рет қаралды 20 М.
Пишем TELEGRAM бота на GO
13:48
Хауди Хо™ - Просто о мире IT!
Рет қаралды 59 М.
Why #Go Interfaces? / #Golang Interfaces Tutorial
9:41
defer panic
Рет қаралды 31 М.
Как на самом деле устроен тип Map в Golang? | Golang под капотом
34:33
Из PHP в Go или как уйти втуда и невернуться
23:36
Дамп чердачины
Рет қаралды 3,3 М.
WHY IS A CAR MORE EXPENSIVE THAN A GIRL?
00:37
Levsob
Рет қаралды 20 МЛН