Карта курса "Логгирование в Python" Карта на Patreon: www.patreon.com/posts/karta-kursa-v-32537851 Один из самых непонятных модулей в Python. Очень нужный, настолько нужный, что ни один проект без него не обходится, но крайне непонятный. Большая ошибка думать, что можно выполнить тестовое задание или проект для портфолио на github'e без использования системы логгирования. Разбираемся по шагам. 0. Введение (ua-cam.com/video/CSCRx5DVUDI/v-deo.html) 1. Архитектура модуля logging. Простой логгер
Остальной курс на патреоне. Рекомендую тем, кто действительно хочет стать питонистом, посетить и стать патроном Олега. Он очень старается там полно видео и годноты. Всем добра.
Раньше хотел, а теперь буду сильно думать. Времени требует прорву, а результата почти нет от таких серий. Тут в коментах есть такой andrey shevchenko - так может он сделает?
@@zaemiel ,сделайте,пжл) . Результат Ваших работ -это то ,что многие как я узнают очень полезные навыки/знания доступным языком. А насчет дураков,не обращайте на них внимания,им до Вас как пешком до луны,единственное что они умеют-изливаться желчью в комментах,очевидно из-за зависти.
надо сделать чтобы пользовательский логгер адаптер выводил строки с джейсоном. Коренной логгер выводит без проблем, но скрытое форматирование (implicit formatting) в адаптере не позволяет. Никак не разберусь в структуре этого модуля, что надо сделать, где копать. Круто, взял тир $10.)
У меня ЛОГИ как-то в разнобой с print() а не по порядку( порядку написания их в коде) выфводятся, причем постояно рандомная последовательность будто в коде async присутсвует, но без await, в чем проблемма?
Привет, Олег. Не забрасывай канал, объясняешь сложные вещи доступным языком. Стоит ли ожидать в будущем ролика Python Best Practices от тебя? Где бы ты рассказал о тонкостях языка, синтаксиса, как нужно писать, а как не стоит. Стараюсь всегда быть в курсе нового в мире Python и следующую строчку: logger.debug(f'Enter in the main() function: name = {name}') Я бы написал так: logger.debug(f'Enter in the main() function: {name = }')
Я как понял если приоритет сообщения ниже чем у обработчика (handler) то он его игнорирует. Так в тот же момент вы задали логеру urllib3 приоритет уровня 'CRITICAL' так же оно выше чем базовый логер, почему оно не вывелось
Неправильно поняли. В обработчик экземпляр LogRecord попадет только в том случае, если логгер пропустит. Уровень - это нижняя граница, все что ниже этого уровня - игнорируется.
Теперь понятно почему видео появляется не так часто, но я думаю, что чем больше и чаще вы будете выкладывать видео, тем меньше будете обращать внимание на пиратство
Глупость какая. Хауди Хо вначале снимал образовательные видео, а потом перестал. Теперь снимает видосы в стиле "11 легких способов стать". Вам понятно почему? Sorax вначале снимал видео, а потом перестал. Вообще. От слова совсем. Вам понятно почему?
Идею вашу можно переформулировать так: "Выходя на улицу (рынок, магазины) кладите в карманы деньжат побольше. Ничего, что карманники вас пощипают, вы больше кладите и не будете расстраиваться". Примерно так.
@@zaemiel Обратите внимание, если еще не видели, на канал "IT каждый день". У автора очень хороший код, но нет желание что-то разжевывать. Но Вам Олег, огромное спасибо, за то, что вы все подробно разбираете. СПАСИБО!
Привет.Нужна консультация.Написал код с 2 функциями, обе запускаются в режиме мультипроцессинга.Сначала вызывается первая функция которая создаёт процессы иногда вызывающие вторую функцию так же создающую процессы.Первые секунд 20, обе функции вызываются и функционируют как положено, но затем происходит непонятно что и вторая функция перестаёт вызываться и создавать процессы.При этом первая функция продолжает выводить логи работы, но только до того момента где она должна была запустить вторую функцию
Доброго времени суток.Хочу поблагодарить вас за столь прекрасный канал и материал.Также хотел бы узнать не планируете ли вы сделать серию скринкастов или может целый курс на Patreon по ООП в питоне?
Использование F строк для логирования - это дурной тон. Уровень логирования может изменится с DEBUG на ERROR а подстановка значений в F строки будет происходить не зависимо от уровня логирования. Получаются лишние накладные расходы.
@@zaemiel Я конечно могу понять что автоимпорт и автодополнение зло, но: - подсветка ошибок и расхождений от PEP 8 - рефакторинг - поиск использования - быстрый переход к функциям или классам - удобный плагин для Git - дебаг - встроенная консоль - конфигурации для запуска проектов - удобная синхронизация проекта с сервером - документация по функциям и классам по hotkey Все это работает из коробки (ничего настраивать и доустанавливать не нужно) и тупо экономит время
PyCharm выручает, когда работаешь с большим проектом. Если же пишешь небольшой скрипт - использовать IDE избыточно. Это тоже самое, что забивать гвоздь кувалдой, а не молоточком.
@Sergey. Кроме интроспекции кода все остальное есть везде. Многие пользуются только vim'ом и у них все отлично. И вроде бы для vim'а можно было настроить интроспекцию кода. И я их могу понять. По поводу экономии времени - это очень смешное замечание на самом деле. Прошу понять меня правильно, я не над вами смеюсь, а над самой идеей "экономии времени" и "эффективности". Настоящая экономия времени и эффективность требует сил и железной дисциплины, а не "IDE с плагином для git" (это просто собирательный образ штуки, которая сделает меня эффективным). Чтобы получить настоящую экономию и эффективность делаем следующее: - продаем текущий телефон и покапаем телефон с кнопками. - блокируем все сайты кроме: stackoverflow, djangoproject, github и других, которые нужны для работы. - удаляем игры - выбрасываем книги - находим себе место, где никто не будет дергать и отвлекать - "переезжаем" туда. - каждый божий день начинаем с планирования и завершаем с написания отчета. Одно только это освободит просто годы времени. Звучит как бред? Да. И естественно никто так делать не будет. И я тоже не делаю. Потому что это тяжело и такое не продашь. Нам всем удобнее рассуждать об эффективности "лежа на диване". Но я это все осознаю. Поэтому PyCharm мне не нужна. Самые эффективные мои рабочие моменты достигались тогда, когда я был полностью поглощен задачей. 100% концентрация - вот что тупо экономит время. И этому нужно учится. Вот что мне нужно.
@@zaemiel спасибо за развёрнутый и интересный ответ. Да другие IDE можно настроить, но я не видел удобнее инструмента для diff'а изменений файлов, чем в IDEA (PyCharm). Я частенько нахожу ошибки в проекте при просмотре дифа файлов при комите. А теперь вопрос, чем вы пользуетесь для diff'а?
Sup, guys! Надеюсь у вас все чётко. Если интересутесь python/js/web/whatever то заходите на сервер в discord discord.gg/Yu4w8Eu соберем компашку адекватных разработчиков будем вместе работать над проектами и помогать друг-другу. Абсолютно не важно, новичок или гуру - заходите, вы ничего не теряете (ну разве, что кроме лени, т.к. есть каналы где планируются совместные styding/working sessions и это супер как мотивирует) Группа multilang, т.е. есть возможность подтянуть английский с ребятами по всему миру :) Не стесняйтесь, будет весело и продуктивно)
к сожалению законодательная / законоисполнительная база в России способствует и стимулирует безнаказанное воровство не только контента, интеллектуальной собственности, но и любой другой чужой собственности, до которой у человека дотянулись руки. Вы, Олег, к сожалению находитесь на территории беспредела. Мне лично это горестно. Вы, на мой взгляд, имеете право за свой достойный труд получить достойное вознаграждение. А когда в реальности через какое-то время вы обнаружите, что вы его не получили, потому что оно разворовано случайными людьми, вы прекратите это начинание. А я и мне подобные продолжат скитания по интернету в поисках ценной информации. Мне горько и обидно уже сегодня. Народ, уважайте чужой труд, пожалуйста !
Вы сами построили свое государство, поддерживаете войну, участвуете в захвате чужих территорий, убийствах, грабежах, насилии и прочим близкому вам неподобству. Но хорошо то, что скрыть уже не получится и ваши поколения долгие годы будут нести искупление, а вы дальше пишите код и делайте вид что ничего не происходит вокруг. Еще хочется себя пожалеть что у вас там все несправедливо?
Автор, тебе респект. Контент топовый, видосы смотрю постоянно. Но чувак, ты пей воду перед тем как видео записываешь, либо подкрути частоты на микрофоне, либо чувствительность убавь, что бы чамканье слышно не было. Это пиз**ц как раздражает
@@zaemiel я рад, что ты смог найти свой дзен среди дистрибутивов. У меня не получается. Дольше всех Debian продержался >3 лет. В Mint стал cinnamon жрать 100% cpu после обновления( В идеале хотелось бы дистр с rolling release cycle но пока там больше настраиваешь систему, чем программируешь...
Карта курса "Логгирование в Python"
Карта на Patreon:
www.patreon.com/posts/karta-kursa-v-32537851
Один из самых непонятных модулей в Python.
Очень нужный, настолько нужный, что ни один проект без него не обходится, но крайне непонятный.
Большая ошибка думать, что можно выполнить тестовое задание или проект для портфолио на github'e без использования системы логгирования.
Разбираемся по шагам.
0. Введение (ua-cam.com/video/CSCRx5DVUDI/v-deo.html)
1. Архитектура модуля logging. Простой логгер
При переходе по ссылкам выдаёт 404(
@@viktornekrasov5024 нужно подписаться на Патреоне, тогда все заработает :)
Ссылка должна работать даже для незарегистрированных в Patreon посетителей.
@@viktornekrasov5024 В конце ссылки удалите ')' и всё будет работать.
Олег, можете помочь, прошел основы питона и ооп. Куд двигаться дальше? Путаюсь в плейлистах.
Олег где же ты? куда ушёл? ВЕРНИИИСЬ!
очень круто и подробно объясняется для самых маленьких ))))
очень круто
так подробно рассказываешь
все понятно
спасибо большое!!!
Олег, вы снимаете очень качественные видео уроки, и за это вам огромнейшее спасибо! Пожалуйста, вернитесь =)
Привет, когда же ждать продолжение твоих видео?
благодарю за столь содержательный и полезный контент. обязательно подпишусь в патроны!
Найкращий!
охренеть я бы лет двести самостоятельно по докам это курил
Олег огромное спасибо, вы лучший!!!
Еее, спасибо тебе за твой труд! Еще не посмотрел, зашел влепить лайк, гляну позже)
хаха, я тоже)
Так и не зашёл?
Спасибо большое, я только начинаю логировать, интересная тема
Спасибо, Олег! Благодаря Вам я теперь люблю модуль logging. С удовольствием подписался на Ваш Patreon и продолжаю изучение.
Ай ай ай хорошая работа олег.
Спасибо, дядя Олег.
После просмотра роликов о ивент лупе понимаю как круто автор копает)
Куда пропал ? Когда новые видео ?
Спасибо, давно хотел разобраться!
Спасибо) осень подробно)
Остальной курс на патреоне. Рекомендую тем, кто действительно хочет стать питонистом, посетить и стать патроном Олега. Он очень старается там полно видео и годноты. Всем добра.
Когда же выйдет следующее видео??
Здравствуйте. Мне очень нравятся ваши видеоуроки. Могу ли я узнать будут ли новые уроки по Flask?
смотрю ты записываешь ролики рано утром в пол седьмого, почему так рано? расскажи свой распорядок дня
Большое спасибо за это видео! Очень понятное объяснение модуля logging =))
Здравствуйте, будет ли курс по Django rest framework?
Олег, спасибо большое за такое четкое объяснение. Вы - большой молодец.
Олег, можете записать видео про Django restframework ?
Олег, большая просьба. Разберите тему объектно ориентированного программирования. Думаю, многим будет интересно
Посмотри на канале selfedu, там свежий и понятный плеист
@@pashakolosov3505 а чето нет Олега давно уже....Надеюсь что просто временно забил,а не чего такого серьезного!
Полезное видео, спасибо
Олег, день добрый. Подскажите с вами как-то связаться можно для консультации? Контактов не нашел ни тут, ни на патреоне :(
Олег, а скажите,пжл,а намечается ли курса по Django advanced ?
Раньше хотел, а теперь буду сильно думать. Времени требует прорву, а результата почти нет от таких серий.
Тут в коментах есть такой andrey shevchenko - так может он сделает?
@@zaemiel ,сделайте,пжл) . Результат Ваших работ -это то ,что многие как я узнают очень полезные навыки/знания доступным языком. А насчет дураков,не обращайте на них внимания,им до Вас как пешком до луны,единственное что они умеют-изливаться желчью в комментах,очевидно из-за зависти.
@@zaemiel ,а когда новые уроки(хотя бы примерные сроки) ?
блин, все так сложно... но мне нравится!)
Качественное объяснение, огромное спасибо!
надо сделать чтобы пользовательский логгер адаптер выводил строки с джейсоном. Коренной логгер выводит без проблем, но скрытое форматирование (implicit formatting) в адаптере не позволяет. Никак не разберусь в структуре этого модуля, что надо сделать, где копать.
Круто, взял тир $10.)
Добрый день, слышал у вас появился канал на английском, можете ссылку дать. Будет ли урок по Scrapy? Если нет, купил бы у вас курс
У меня ЛОГИ как-то в разнобой с print() а не по порядку( порядку написания их в коде) выфводятся, причем постояно рандомная последовательность будто в коде async присутсвует, но без await, в чем проблемма?
Спасибо!
Подскажите, где можно найти код реального проекта (например, того же телеграм-бота) с логированием?
сделай пожалуйста обзор на Django3 новые фичи и отличие от 2ой версии
Привет, Олег.
Не забрасывай канал, объясняешь сложные вещи доступным языком.
Стоит ли ожидать в будущем ролика Python Best Practices от тебя?
Где бы ты рассказал о тонкостях языка, синтаксиса, как нужно писать, а как не стоит.
Стараюсь всегда быть в курсе нового в мире Python и следующую строчку:
logger.debug(f'Enter in the main() function: name = {name}')
Я бы написал так:
logger.debug(f'Enter in the main() function: {name = }')
Aliaksandr Badretdzinau оппа) вот это поворот)
Спасибо.
>>> logger.degub(f'Enter in the main() function: {name = }')
И как? Работает?
Олег Молчанов Конечно. Не должно разве?
Надо пояснить тогда, что речь идёт только о 3.8
,@@yodapunishes f-string появились в Python 3.6.
Олег здравствуйте,скажите пожалуйста планируются ли на пэтреон новые ролики? когда ожидать?
А можно ли как-то убрать DEBUG:root: ?
Привет, у тебя есть видео уроки по ООП подходу?
Очень импонируют твои видео, спасибо тебе)
Добрый вечер,
Пока нет, но следующая серия будет по ООП.
@@zaemiel спасибо, лайк и совет друзьям уже сделал)
@@zaemiel Олеееег вернитесь. Вы мой краш, я ваш фанат, такой подачи нет ни у кого в русском сегменте! Мы вас очень ждем с ООП)!
@@Royalty645 у него есть канал на английском
Пожалуйста, сделай краткий курс по API VK и API INSTAGRAM на Python!!!
ua-cam.com/video/UjMZ7lTYvyI/v-deo.html
Я как понял если приоритет сообщения ниже чем у обработчика (handler) то он его игнорирует. Так в тот же момент вы задали логеру urllib3 приоритет уровня 'CRITICAL' так же оно выше чем базовый логер, почему оно не вывелось
Неправильно поняли. В обработчик экземпляр LogRecord попадет только в том случае, если логгер пропустит. Уровень - это нижняя граница, все что ниже этого уровня - игнорируется.
Теперь понятно почему видео появляется не так часто, но я думаю, что чем больше и чаще вы будете выкладывать видео, тем меньше будете обращать внимание на пиратство
Глупость какая.
Хауди Хо вначале снимал образовательные видео, а потом перестал. Теперь снимает видосы в стиле "11 легких способов стать". Вам понятно почему?
Sorax вначале снимал видео, а потом перестал. Вообще. От слова совсем. Вам понятно почему?
Идею вашу можно переформулировать так:
"Выходя на улицу (рынок, магазины) кладите в карманы деньжат побольше. Ничего, что карманники вас пощипают, вы больше кладите и не будете расстраиваться".
Примерно так.
@@zaemiel Обратите внимание, если еще не видели, на канал "IT каждый день". У автора очень хороший код, но нет желание что-то разжевывать.
Но Вам Олег, огромное спасибо, за то, что вы все подробно разбираете.
СПАСИБО!
Спасибо большое за наводку
Отличные курсы, и ролик про логгирование на высоте, планируете сделать курс посвященный нейросетям на Python3?
гляньте у Андрея Созыкина
@@yodapunishesНашёл, большое спасибо.
Да, я хочу сделать
Как работать с request если на сайте 5 редиректов
Привет.Нужна консультация.Написал код с 2 функциями, обе запускаются в режиме мультипроцессинга.Сначала вызывается первая функция которая создаёт процессы иногда вызывающие вторую функцию так же создающую процессы.Первые секунд 20, обе функции вызываются и функционируют как положено, но затем происходит непонятно что и вторая функция перестаёт вызываться и создавать процессы.При этом первая функция продолжает выводить логи работы, но только до того момента где она должна была запустить вторую функцию
Вторая функция в коде вызывается из первой с помощью pool1.starmap(function2, dict)
отличный урок! большое спасибо!
Эх. Неужели, ты забросил канал, а ведь всё так хорошо начиналось...
Доброго времени суток.Хочу поблагодарить вас за столь прекрасный канал и материал.Также хотел бы узнать не планируете ли вы сделать серию скринкастов или может целый курс на Patreon по ООП в питоне?
Да, я планирую. Следующая серия будет по ООП. Здесь на UA-cam выложу.
@@zaemiel Спасибо, ждем!!!
Олег, а что вы можете сказать про Loguru?
Выглядит интересно, но я не пробовал. Большие дяди (Django, requests и прочие) используют logging.
Использование F строк для логирования - это дурной тон. Уровень логирования может изменится с DEBUG на ERROR а подстановка значений в F строки будет происходить не зависимо от уровня логирования. Получаются лишние накладные расходы.
по атрибутам объектов LogRecord и словарю extra - в других видео. Здесь чисто демонстрационный пример.
Олег вернииииись ми без тебя никто
спасибо. Очень полезно
Мастер спорта!
Почему вы не используете pycharm?
а зачем?
@@zaemiel Я конечно могу понять что автоимпорт и автодополнение зло, но:
- подсветка ошибок и расхождений от PEP 8
- рефакторинг
- поиск использования
- быстрый переход к функциям или классам
- удобный плагин для Git
- дебаг
- встроенная консоль
- конфигурации для запуска проектов
- удобная синхронизация проекта с сервером
- документация по функциям и классам по hotkey
Все это работает из коробки (ничего настраивать и доустанавливать не нужно) и тупо экономит время
PyCharm выручает, когда работаешь с большим проектом. Если же пишешь небольшой скрипт - использовать IDE избыточно.
Это тоже самое, что забивать гвоздь кувалдой, а не молоточком.
@Sergey. Кроме интроспекции кода все остальное есть везде.
Многие пользуются только vim'ом и у них все отлично. И вроде бы для vim'а можно было настроить интроспекцию кода. И я их могу понять.
По поводу экономии времени - это очень смешное замечание на самом деле. Прошу понять меня правильно, я не над вами смеюсь, а над самой идеей "экономии времени" и "эффективности".
Настоящая экономия времени и эффективность требует сил и железной дисциплины, а не "IDE с плагином для git" (это просто собирательный образ штуки, которая сделает меня эффективным).
Чтобы получить настоящую экономию и эффективность делаем следующее:
- продаем текущий телефон и покапаем телефон с кнопками.
- блокируем все сайты кроме: stackoverflow, djangoproject, github и других, которые нужны для работы.
- удаляем игры
- выбрасываем книги
- находим себе место, где никто не будет дергать и отвлекать - "переезжаем" туда.
- каждый божий день начинаем с планирования и завершаем с написания отчета.
Одно только это освободит просто годы времени.
Звучит как бред? Да. И естественно никто так делать не будет. И я тоже не делаю.
Потому что это тяжело и такое не продашь. Нам всем удобнее рассуждать об эффективности "лежа на диване".
Но я это все осознаю. Поэтому PyCharm мне не нужна.
Самые эффективные мои рабочие моменты достигались тогда, когда я был полностью поглощен задачей. 100% концентрация - вот что тупо экономит время. И этому нужно учится. Вот что мне нужно.
@@zaemiel спасибо за развёрнутый и интересный ответ. Да другие IDE можно настроить, но я не видел удобнее инструмента для diff'а изменений файлов, чем в IDEA (PyCharm). Я частенько нахожу ошибки в проекте при просмотре дифа файлов при комите. А теперь вопрос, чем вы пользуетесь для diff'а?
Sup, guys! Надеюсь у вас все чётко. Если интересутесь python/js/web/whatever то заходите на сервер в discord discord.gg/Yu4w8Eu соберем компашку адекватных разработчиков будем вместе работать над проектами и помогать друг-другу.
Абсолютно не важно, новичок или гуру - заходите, вы ничего не теряете (ну разве, что кроме лени, т.к. есть каналы где планируются совместные styding/working sessions и это супер как мотивирует)
Группа multilang, т.е. есть возможность подтянуть английский с ребятами по всему миру :)
Не стесняйтесь, будет весело и продуктивно)
Ти лучший
thank you Oleg!!
создайте кнопку спансировать, спасибо за контент
А почему Вы не молчите?
thx
к сожалению законодательная / законоисполнительная база в России способствует и стимулирует безнаказанное воровство не только контента, интеллектуальной собственности, но и любой другой чужой собственности, до которой у человека дотянулись руки. Вы, Олег, к сожалению находитесь на территории беспредела. Мне лично это горестно. Вы, на мой взгляд, имеете право за свой достойный труд получить достойное вознаграждение. А когда в реальности через какое-то время вы обнаружите, что вы его не получили, потому что оно разворовано случайными людьми, вы прекратите это начинание. А я и мне подобные продолжат скитания по интернету в поисках ценной информации. Мне горько и обидно уже сегодня. Народ, уважайте чужой труд, пожалуйста !
Как же вы правы
Вы сами построили свое государство, поддерживаете войну, участвуете в захвате чужих территорий, убийствах, грабежах, насилии и прочим близкому вам неподобству. Но хорошо то, что скрыть уже не получится и ваши поколения долгие годы будут нести искупление, а вы дальше пишите код и делайте вид что ничего не происходит вокруг. Еще хочется себя пожалеть что у вас там все несправедливо?
@@mmospanenko вы это кто? ты сам-то откуда, зёма? из Таджикистана или из Педрушколендии? Чего тебе не сидится спокойно?
🗽
Автор, тебе респект. Контент топовый, видосы смотрю постоянно. Но чувак, ты пей воду перед тем как видео записываешь, либо подкрути частоты на микрофоне, либо чувствительность убавь, что бы чамканье слышно не было. Это пиз**ц как раздражает
Вернитесь(
Походу в минт 19.3 новый питон завезли, судя по f-string у Олега ))
это был mint 18.3 и Python 3.7.5. И его я использую сравнительно давно.
@@zaemiel я рад, что ты смог найти свой дзен среди дистрибутивов. У меня не получается. Дольше всех Debian продержался >3 лет. В Mint стал cinnamon жрать 100% cpu после обновления( В идеале хотелось бы дистр с rolling release cycle но пока там больше настраиваешь систему, чем программируешь...
@@eamarc да да да. целый день сидим и настраиваем. вот я например, перед тем как написать этот коммент, потратил час на настройку : )
Спасибо.
Очень интересно, но ничего не понятно!)
мозг кипит.
О!!! Как раз к стати, а то намутил прогу на овер 10 .py файлов. Ошибки принтами отлавливаю :(
Так себе, нужно было начать с того, зачем этот лог нужен
т.е. первое видео на эту тему вы не видели. Прескорбно.
ua-cam.com/video/CSCRx5DVUDI/v-deo.html
@@zaemiel а, ладно, вы как программист с нуля плейлист нумеруете))
в общем да. Нулевые у меня всегда введения, где нет практически никакой информации конкретно по теме. Поэтому они нулевые.
Было бы хорошо если вы говорили бы чуть выразительнее, а то мне кажется с такими темпами зрителям и подписчикам станет скучно
Поскорее бы. И я наконец займусь вплотную моим английским каналом, который тоже почему-то смотрят. Там я еще и с акцентом говорю.
@@zaemiel А не подскажете адрес канала на английском? В описании этого канала не нашёл.
логирование в русском языке пишется с одной "Г".
we want more video on javascript
No, we don't.
javascript is cancer
Вот это облом. Крайне неадекватно делать первое видео бесплатное, а потом отсылать в патрон.
Так что диз. и я пошел читать доку ....
мыло
Спасибо
Спасибо