Web-приложение на низком уровне: сокеты и роутинг
HTML-код
- Опубликовано: 29 сен 2024
- Мои курсы:
Boosty:
boosty.to/omol...
Patreon:
/ karty-vsekh-41011404
Пишем эскиз веб-фреймворка на Python на низком уровне.
Смотрим на работу с сокетами, на то, как осуществляется маршрутизация (роутинг) запроса от клиента (браузера) на сервере, генерируем ответ сервера (заголовки и тело).
Составляем представление о том, как Django и Flask обрабатывают запросы и осуществляют роутинг "под капотом".
** ИСХОДНЫЙ КОД **
Основных проектов доступен в Patreon:
/ iskhodnyi-kod-26640469
***
_____
Поддержите канал!
🔷 Для донатов. Всегда очень признателен за это:
www.donational...
Thumbnail photo:
Author: Maria Ly
Source: www.flickr.com...
License: Creative Commons 2.0
Олега спасибо за видео. Пожалуйста продолжайте делать видео. Они одни из лучших в рунете. Вы отличный преподаватель.
Подписываюсь под каждым словом!
Спасибо :)
Поддерживаю. Отличная подача информации.
you all probably dont give a damn but does anybody know a method to log back into an Instagram account??
I was stupid forgot the password. I love any tips you can give me
@Brodie Onyx instablaster :)
Офигеть - свой Flask за 39 мин)
Олег, огромное спасибо. Не в первый раз выручаете своими видео. Было бы здорово, если вы бы рассказали о том, как на низах работают flask-login, flask-security. Сессии, куки, безопасность, токены и т.п. Нет проблем с использованием этих штук, но думаю многим было бы интересно и полезно узнать о том, как это работает на низах. Спасибо!
Отличная идея!
Олег, присоединяюсь к предложению Ивана - расскажите как логины и безопасность работают на низах, создание своего yet-another-flask без этих знаний совсем никак ;))
+
+
Ваще крутяк, перешел по призыву автора с Основ ассинхронности ruclips.net/video/ZGfv_yRLBiY/видео.html не пожалел от слова совсем, к тому же изучаю Django
Непонятный момент. Пишем SOL_SOCKET для server_socket. Ясно же, что мы для него обозначаем опцию, раз пишем server_socket=. Какие ещё бывают ситуации? 17:23
Обалдеть, я давно искал информацию от том как на низком уровне обрабатываются запросы, а тут все в одном видео собрано да и еще и на русском. Браво, премного благодарен вам!!!
Прочитал как "переменные благодарны вам"...
Пойду посплю.
Подобных руководств не где не встречал!
Спасибо
какой тайм аут на полторы минуты на 16.51 ? нужно было посмотреть список процессов и занятых (tcp) портов. Убить процесс который слушает занятый 5000 порт. из Скрипта вы не вышли а отключились (отпочковались) от его ввода/вывода и провалились в консоль (в bash в родителя скрипта)
почему не могу ставить несколько лайков под видео?
Олег спасибо большое за видео. Прошел ваши уроки на патриоте по логированию, парсингу и ООП. Ваша подача материала десять из десяти.
Жаль что вы больше не выпускаете видео.
Чувак ты крут, спасибо тебе. Буду рад если ты расскажешь про асинхроный фреймворки. типо aioHttp tornado и.т.д.
Спасибо. Да, когда-нибудь я до них доберусь
Самое главное видео на тему обработки URL-запросов во всём ютубе
А как общаются браузер(клиент) и сервер с помощью http протокола? Наш сервер по сути же не умеет работать с http, лишь с TCP
Олег, если бы не вы... я бы крышей поехал! Столько моментов в процессе изучения python были непонятны ( как не гуглил ) и только ваши видео плавно, интересно и максимально доступно доносили до меня понимание! Спасибо большое за ваш труд и талант объяснить сложные вещи очень простым языком! Каждый раз когда открываю ваше видео, сначала ставлю лайк, а потом смотрю)
Спасибо за контент! Я правильно понимаю, что в целом можно выделить в этом видео 2 части: 1 часть - создаем субъект на сервере (web-сокет на стороне сервера), который будет прослушивать порт, принимать данные 2 часть- делаем так, чтобы субъект на сервере, возвращал http-ответ и код состояние в зависимости от полученного htttp-запроса ?
У меня программа эта работает секунд 5, а затем просто ошибка IndexError: list index out of range
Хотелось бы понять как можно передать данные из формы ...
В питоновскую функцию
ОЧЕНЬ нужная инфа, на любом собесе пригодится
Что называется человек понимает то, что объясняет!
Спасибо! Как всегда, очень доходчиво.
Подскажите пожалуйста, что нужно знать, чтобы понимать о чём идёт речь.
Я просто в шоке!!!
Потрясающий урок!! Ничего прежде не видел на youtube подобного. Очень интересная тема!!! Автору огромное спасибо.
Молодцом! Не то что гикбрейнсы, скилбоксы, яндексы и прочее хуё-моё.
Я начал у вас асинхронность смотреть, понял, что не знаю о сокетах. Сейчас картина стала вырисовывается, большое благодарю!
Очень крутой видос! Сенкъю вери мач!!
Осталось прикрутить асинхронность и будет фласк
Спасибо большое! Вы молодец! Хорошо преподаете, все понятно, четко и по делу.
Олег, я вас уважаю, вы хороший профессионал своего дела ! У вас есть платный курс по парсингу сайтов, я уверен что он высочайшего качества, мне его очень хотелось бы приобрести, но к сожалению из-за тотальной нищеты, я не смог оплатить даже столь скромную сумму за ваш титанический труд, по этому я его "спёр" с ближайшего торрента за что и каюсь перед вами, но обещаю как только начну "зашибать" деньги как Python разработчик я обязательно оплачу его со временем в двойне ...
А пока от всей души прошу прощения !
Ну что ж.... зато честно. Желаю вам терпения и успеха.
"тотальной нищеты", понимаю тебя бро, удачи. Олег - спасибо, как всегда
@Олег Молчанов, удалили бы вы этот коммент, а-то многие так и полезут на торренты.
В момент когда автор открыл меню пуск (13:58) я потянулся к кнопке ескейп потому что подумал что это у меня окрылось меню, лол
Олег, вернитесь на Ютуб))) у вас отличные видео
Отличное видео! Спасибо большое! Лично мне хотелось бы узнать больше о сокетах и их использования не только в веб сервисах, но и например в играх на python))
Самые лучшие видео с объяснениями что я видел
Мне очень понравилось, многое прояснилось
Спасибо за урок, очень полезно для понимания работы фреймворков
Хочу заметить, что время 7 утра!
Исходный код , ссылка - не работает!
На 37:05 вы удалили отправку заголовка.
написал сервер и клиент на сокетах. при попытке отправить пустую строку с клиента сервер продолжает ожидать входящих данных, т.е. судя по всему метод socket.send() не отправляет пустую строку. почему так происходит? что делать, если мне нужно отправить пустую строку и чтобы сервер ее обработал?
Олег, спасибо большое за видео! Очень чётко и понятно.
Спасибо, Олег! Вы лучший, потому что подробно и доходчиво объясняете любые мелочи. Этим не могут похвастаться 90 процентов онлайн преподавателей. Часто после своих платных курсов приходилось пересматривать ваш контент 😁 удачи вам и продолжайте в том же духе!
if not method == 'GET':
почему нельзя
if methof != 'GET':
можно
Очень доступная подача, спасибо большое)
Олег спасибо за ваш труд, пожалуйста продолжайте
автор спасибо за видео!
укажу некоторые неточности. Ты не совсем правильно описываешь условия. not method == smth должно быть method != smth а так-же not url in lst должно быть url not in lst
"должно быть" - это вам приснилось.
Отличный видос
какой же каеф!!!
Классное объяснение
грамотная речь
Ох, я уж думал, сейчас будем распаковывать IP-пакет и писать TCP-хэндшэйк)))
Видео интересное, спасибо, посмотрел целиком и воспроизвёл)
ПОТРЯСАЮЩЕ!!! Спасбо, Олег, превосходная подача материала. Очень интересно!
Очень интересно, Олег! Большое спасибо, так локанично, быстро (но в достататочном уровне полно) дать понимание того как работают веб-фреиймворки - это гениально!
Спасибо! Очень крутое видео. Узнал много полезного!
При запуске кода, через какое-то время браузер, видимо, отправляет пустой запрос и из-за этого в коде функции parse_request возникает ошибка: IndexError: list index out of range
В каком видео подробнее рассматривается "чтение" запросов? Прикрепляйте, пожалуйста, если упоминаете.
Алгоритмы ютуба радуют. Я знал, что это видео существует, но руки не доходили до него добраться. И тут оно на главной у меня.
А как же обрабатывается POST запрос? Method, action мы получили.. А как же получит данные из форм например?
Большое спасибо за урок!
Подскажите, пожалуйста, 1 вещь.
В html файле есть тег link с ссылкой на .css файл, который лежит в той же папке. При попытке перейти на страницу сервера, то загружается только html файл, а потом сервер падает с ошибкой "KeyError: '/style.css'" при этом в DevTools видно GET запрос на localhost:5000/style.css. Аналогичное падение происходит спустя пару минут посл запуска, т.к. браузер почему-то делает GET запрос за файлом favicon.ico, хотя в коде и намека на него не было. Пользуюсь последним Google Chrome.
Метод get_content() модифицировал - удалил условия проверки кода ответа. В теле этого метода у меня единственная строка return URLS[url]()
Большое спасибо!
perfect
Большое человеческое спасибо. Не подскажете материала конкретно по модулю Socket?
чувак у меня ошибка server_socket.bind(("loclalhost", 5000)) IndentationError: unindent does not match any outer indentation level
"loclalhost ??? может localhost?
надеюсь, вы давно разобрались, что проблема была в отступах)
@@Xobotyara оооооо да чел ебать ору сейчас я программист на С и Линукс api бля за год такой прорыв спасибо хахаэаээ
Всем привет!
Отличный видос, все толково, все по делу, так держать!
Теперь пару слов у кого винда и кто пытался написать (и вывести) html файл с кириллицей.
И у вас ничего не получилось а в браузере вы увидели кракозябры?
идем в файл views.py
когда вы читаете файл надо принудительно указывать кодировку, т.е. :
with open('templates/index.html', encoding="utf-8") as template:
должно получиться!
Подскажите, что за аддон к mozilla, по open HttpRequester ничего не ищется...
Классно, спасибо. Концовка с урлами и темлпейтс шикарная.
Большое спасибо за видео. Спустя 4ре года все еще актуально и... действительно лучшая подача, что встречал.
Жаль что со всеми санкциями до патреона проблематично достучаться.
Жаль, что Олег с ютуба ушёл. После таких видео действительно начинаешь верить во что-то)
Поясните пожалуйста сказанное 20:26 - 20:37. Как я понял открыть страницу в двух браузерах одновременно не получится. Почему? и как это исправить. Работают же другие сайты нормально.
смею предположить что ответ лежит в видео об асинхронном программировании
Очень понравилось, спасибо большое! Всегда интересно поковыряться на низком уровне
Большое спасибо, только начал вникать в тему серверного программирования, из-за чего не мог найти ответы на некоторые интересующие меня вопросы, которые я получил здесь :3
Очень внятно и доходчиво. Спасибо!
Автор, спасибо большое, сразу видно что делаете от души и с большим посылом!
спасибо
Спасибо! Это лучшее объяснение, которое я встречал.
Спасибо, Олег! Как всегда круто!
Очень крутое видео
Спасибо большое
Олег как понимаю вы запустили веб сервер? А в каком месте кода это?
Спасибо огромное! Очень доступно. Теперь материалы по тому-же джанго воспринимать куда легче.
Огромное спасибо за урок.Вы очень хороший преподаватель,теперь буду стараться постоянно смотреть ваши уроки!
Отличный урок, все предельно понятно обьясненено. Лайк :c
Здравствуйте, спасибо за видео. Объясните пожалуйста как в html шаблоны передавать данные?)
Отличное видео, все понятно. Спасибо!
Стало понятнее, что происходит под капотом у фреймворков.
Спасибо.
Видео достаточно информативны :) Но вот вопрос... Является ли верным разделение кода на такое кол-во функций? Это же затрудняет чтение кода. Приходится бегать глазами по функциям и смотреть, что в них происходит
вы хотите делать одну функцию, которая делает все?
Я просто codegolf предпочитаю, поэтому и интересуюсь. Является ли разделение на оч много функций верным решением?
PS по-моему, одна функция тоже не вариант. Скорее, нужно что-то среднее.
PS1 в основном сижу на соревновательных платформах, где ценится лаконичность кода, поэтому плохо понимаю что хорошо в продакшне, а что плохо :)
Это вопрос о целях.
Зачем вам нужно программирование?
Для чего вы его используете?
Если цели у нас с вами разные, то и процесс их достижения - тоже может быть разным. Это с одной стороны.
А с другой стороны, если вы не видите проблему, то для вас ее нет. И в этом случае любой ответ, который вы получите - не будет иметь никакого смысла до тех пор, пока вы не упретесь в проблему.
Представьте, что вам нужно будет поддерживать код, который вы написали, изменять его, рефакторить, добавлять новые фичи, писать тесты. Как вы будете это делать? Как вы сможете написать тесты для функций, которые делают много чего сразу?
Мы даже не берем во внимание понятие цикломатической сложности таких функций. Хотя, наверное, стоило бы.
Если необходимость делить код на функции... на, так сказать, UNIX-WAY-функции, которые делают только одну вещь и делают ее очень хорошо, для вас не очевидна, то делайте так как считаете нужным. Существование проблемы должно быть очевидным.
Спасибо за развернутый ответ.
Круто. Буду пересматривать просто для удовольствия.
Огромное спасибо, много полезного для себя подчеркнул
очень хороший ролик. Спасибо, вы хорошо объясняете
Почему у нас в техе нет таких преподов?! (потому что там не хватит таких денег, чтоб вам заплатить)
Респект тебе за хороший английский, за детальное разъяснение и просто за то, что ты есть)
Очень многое стало на своим места, спасибо большое!
Спасибо большое! Были проблемы но я справился
Без этого видоса я бы ещё очень долго вникал в устройство Flask, огромное спасибо Олег =)
Спасибо, все просто и понятно рассказано.
Огромное спасибо за подробный разбор данной темы!
Супер. Лайк, подписка!
Автор, спасибо тебе огромное!
це було корисно, дякую за урок)
Насколько же всё понятно!!! Спасибо!
как же сложно(
не сдавайся, потихоничку разбирайся и разберешься
Spasibo vam bolshoe!
Спасибо огромное за труды. Жаль что Вы не продолжаете делится опытом и знаниями.
есть англоязычный канал у Олега, поищите Red Eyed Coder Club
Автор, на сколько успешно и гибко можно писать инет магазины, crm и подробное на питоне? Сравнимо с JS?
Вопрос, мягко говоря, очень странный. Что значит "гибко" и "успешно"? На Python можно реализовать все, что только в голову взбредет, так же как и на JS.
Супер!