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

Комментарии • 174

  • @MrFlexihopper
    @MrFlexihopper 6 лет назад +148

    Олега спасибо за видео. Пожалуйста продолжайте делать видео. Они одни из лучших в рунете. Вы отличный преподаватель.

    • @mi3089
      @mi3089 6 лет назад +3

      Подписываюсь под каждым словом!

    • @zaemiel
      @zaemiel  6 лет назад +14

      Спасибо :)

    • @timuzlov4711
      @timuzlov4711 4 года назад

      Поддерживаю. Отличная подача информации.

    • @brodieonyx9629
      @brodieonyx9629 3 года назад

      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

    • @matiascarmelo8365
      @matiascarmelo8365 3 года назад

      @Brodie Onyx instablaster :)

  • @konstantin9888
    @konstantin9888 6 лет назад +39

    Офигеть - свой Flask за 39 мин)

  • @vanya15369
    @vanya15369 6 лет назад +48

    Олег, огромное спасибо. Не в первый раз выручаете своими видео. Было бы здорово, если вы бы рассказали о том, как на низах работают flask-login, flask-security. Сессии, куки, безопасность, токены и т.п. Нет проблем с использованием этих штук, но думаю многим было бы интересно и полезно узнать о том, как это работает на низах. Спасибо!

    • @zaemiel
      @zaemiel  6 лет назад +10

      Отличная идея!

    • @alekseytsurkan618
      @alekseytsurkan618 6 лет назад +3

      Олег, присоединяюсь к предложению Ивана - расскажите как логины и безопасность работают на низах, создание своего yet-another-flask без этих знаний совсем никак ;))

    • @vovergg
      @vovergg 6 лет назад

      +

    • @neohoft1935
      @neohoft1935 5 лет назад

      +

  • @googleadmin4749
    @googleadmin4749 3 года назад +2

    Ваще крутяк, перешел по призыву автора с Основ ассинхронности ruclips.net/video/ZGfv_yRLBiY/видео.html не пожалел от слова совсем, к тому же изучаю Django

  • @iomoio3897
    @iomoio3897 4 года назад +2

    Непонятный момент. Пишем SOL_SOCKET для server_socket. Ясно же, что мы для него обозначаем опцию, раз пишем server_socket=. Какие ещё бывают ситуации? 17:23

  • @valentyn3621
    @valentyn3621 4 года назад +10

    Обалдеть, я давно искал информацию от том как на низком уровне обрабатываются запросы, а тут все в одном видео собрано да и еще и на русском. Браво, премного благодарен вам!!!

    • @Bloody_River
      @Bloody_River 2 года назад +2

      Прочитал как "переменные благодарны вам"...
      Пойду посплю.

  • @АндрейШепшелей
    @АндрейШепшелей 6 лет назад +14

    Подобных руководств не где не встречал!

    • @zaemiel
      @zaemiel  6 лет назад +1

      Спасибо

  • @ВладиславГришин-ш7ш
    @ВладиславГришин-ш7ш 4 года назад +1

    какой тайм аут на полторы минуты на 16.51 ? нужно было посмотреть список процессов и занятых (tcp) портов. Убить процесс который слушает занятый 5000 порт. из Скрипта вы не вышли а отключились (отпочковались) от его ввода/вывода и провалились в консоль (в bash в родителя скрипта)

  • @vladosovichoru3933
    @vladosovichoru3933 5 лет назад +2

    почему не могу ставить несколько лайков под видео?

  • @Nfix106
    @Nfix106 2 года назад +3

    Олег спасибо большое за видео. Прошел ваши уроки на патриоте по логированию, парсингу и ООП. Ваша подача материала десять из десяти.
    Жаль что вы больше не выпускаете видео.

  • @Небагафича-ф9л
    @Небагафича-ф9л 6 лет назад +7

    Чувак ты крут, спасибо тебе. Буду рад если ты расскажешь про асинхроный фреймворки. типо aioHttp tornado и.т.д.

    • @zaemiel
      @zaemiel  6 лет назад +6

      Спасибо. Да, когда-нибудь я до них доберусь

  • @MrJet84
    @MrJet84 Год назад +1

    Самое главное видео на тему обработки URL-запросов во всём ютубе

  • @crunchfall5499
    @crunchfall5499 7 месяцев назад

    А как общаются браузер(клиент) и сервер с помощью http протокола? Наш сервер по сути же не умеет работать с http, лишь с TCP

  • @illuminat6240
    @illuminat6240 Год назад +2

    Олег, если бы не вы... я бы крышей поехал! Столько моментов в процессе изучения python были непонятны ( как не гуглил ) и только ваши видео плавно, интересно и максимально доступно доносили до меня понимание! Спасибо большое за ваш труд и талант объяснить сложные вещи очень простым языком! Каждый раз когда открываю ваше видео, сначала ставлю лайк, а потом смотрю)

  • @syd6358
    @syd6358 10 месяцев назад

    Спасибо за контент! Я правильно понимаю, что в целом можно выделить в этом видео 2 части: 1 часть - создаем субъект на сервере (web-сокет на стороне сервера), который будет прослушивать порт, принимать данные 2 часть- делаем так, чтобы субъект на сервере, возвращал http-ответ и код состояние в зависимости от полученного htttp-запроса ?

  • @АлександрРоманов-х4ц9ф

    У меня программа эта работает секунд 5, а затем просто ошибка IndexError: list index out of range

  • @everyone-nobody777
    @everyone-nobody777 2 года назад

    Хотелось бы понять как можно передать данные из формы ...
    В питоновскую функцию

  • @ivan_inanych
    @ivan_inanych Год назад

    ОЧЕНЬ нужная инфа, на любом собесе пригодится

  • @РоманОрлов-м7й
    @РоманОрлов-м7й 4 года назад +2

    Что называется человек понимает то, что объясняет!

  • @nucluster
    @nucluster 3 года назад +2

    Спасибо! Как всегда, очень доходчиво.

  • @WolfKrugerr
    @WolfKrugerr Год назад

    Подскажите пожалуйста, что нужно знать, чтобы понимать о чём идёт речь.

  • @ДмитрийСергеев-л6г
    @ДмитрийСергеев-л6г 2 года назад +1

    Я просто в шоке!!!
    Потрясающий урок!! Ничего прежде не видел на youtube подобного. Очень интересная тема!!! Автору огромное спасибо.

  • @xewuss3750
    @xewuss3750 2 года назад

    Молодцом! Не то что гикбрейнсы, скилбоксы, яндексы и прочее хуё-моё.

  • @chimchimsterschannel161
    @chimchimsterschannel161 Год назад +1

    Я начал у вас асинхронность смотреть, понял, что не знаю о сокетах. Сейчас картина стала вырисовывается, большое благодарю!

  • @pfk9025
    @pfk9025 2 года назад

    Очень крутой видос! Сенкъю вери мач!!

  • @koshakpoc2876
    @koshakpoc2876 Год назад

    Осталось прикрутить асинхронность и будет фласк

  • @iliyabondar5151
    @iliyabondar5151 5 лет назад +2

    Спасибо большое! Вы молодец! Хорошо преподаете, все понятно, четко и по делу.

  • @winterfox8319
    @winterfox8319 6 лет назад +3

    Олег, я вас уважаю, вы хороший профессионал своего дела ! У вас есть платный курс по парсингу сайтов, я уверен что он высочайшего качества, мне его очень хотелось бы приобрести, но к сожалению из-за тотальной нищеты, я не смог оплатить даже столь скромную сумму за ваш титанический труд, по этому я его "спёр" с ближайшего торрента за что и каюсь перед вами, но обещаю как только начну "зашибать" деньги как Python разработчик я обязательно оплачу его со временем в двойне ...
    А пока от всей души прошу прощения !

    • @zaemiel
      @zaemiel  6 лет назад +4

      Ну что ж.... зато честно. Желаю вам терпения и успеха.

    • @johnsmith-yk5vz
      @johnsmith-yk5vz 6 лет назад

      "тотальной нищеты", понимаю тебя бро, удачи. Олег - спасибо, как всегда

    • @-Alexey-
      @-Alexey- 4 года назад

      @Олег Молчанов, удалили бы вы этот коммент, а-то многие так и полезут на торренты.

  • @myortv_
    @myortv_ 2 года назад

    В момент когда автор открыл меню пуск (13:58) я потянулся к кнопке ескейп потому что подумал что это у меня окрылось меню, лол

  • @MrNagios
    @MrNagios 3 года назад

    Олег, вернитесь на Ютуб))) у вас отличные видео

  • @tigran6838
    @tigran6838 6 лет назад +2

    Отличное видео! Спасибо большое! Лично мне хотелось бы узнать больше о сокетах и их использования не только в веб сервисах, но и например в играх на python))

  • @l7l7l7lful
    @l7l7l7lful Год назад

    Самые лучшие видео с объяснениями что я видел

  • @maxshibanov818
    @maxshibanov818 Год назад

    Мне очень понравилось, многое прояснилось

  • @СергейЗеленов-з1ы
    @СергейЗеленов-з1ы 3 года назад +1

    Спасибо за урок, очень полезно для понимания работы фреймворков

  • @ZenLebowski
    @ZenLebowski 6 месяцев назад

    Хочу заметить, что время 7 утра!

  • @delafdelaf
    @delafdelaf Год назад

    Исходный код , ссылка - не работает!

  • @kimsanov
    @kimsanov 2 года назад

    На 37:05 вы удалили отправку заголовка.

  • @wasd1338
    @wasd1338 Год назад

    написал сервер и клиент на сокетах. при попытке отправить пустую строку с клиента сервер продолжает ожидать входящих данных, т.е. судя по всему метод socket.send() не отправляет пустую строку. почему так происходит? что делать, если мне нужно отправить пустую строку и чтобы сервер ее обработал?

  • @ebaluga11
    @ebaluga11 4 года назад +1

    Олег, спасибо большое за видео! Очень чётко и понятно.

  • @СергейГригорьев-г8у7я

    Спасибо, Олег! Вы лучший, потому что подробно и доходчиво объясняете любые мелочи. Этим не могут похвастаться 90 процентов онлайн преподавателей. Часто после своих платных курсов приходилось пересматривать ваш контент 😁 удачи вам и продолжайте в том же духе!

  • @incorping4517
    @incorping4517 Год назад

    if not method == 'GET':
    почему нельзя
    if methof != 'GET':

  • @tarassavchenko2317
    @tarassavchenko2317 4 года назад +1

    Очень доступная подача, спасибо большое)

  • @alexeyantoshin3433
    @alexeyantoshin3433 4 года назад +1

    Олег спасибо за ваш труд, пожалуйста продолжайте

  • @vitaliisipchenko7568
    @vitaliisipchenko7568 5 лет назад +1

    автор спасибо за видео!
    укажу некоторые неточности. Ты не совсем правильно описываешь условия. not method == smth должно быть method != smth а так-же not url in lst должно быть url not in lst

    • @zaemiel
      @zaemiel  5 лет назад +4

      "должно быть" - это вам приснилось.

  • @akimovvadim4736
    @akimovvadim4736 2 года назад

    Отличный видос

  • @rayrayray4653
    @rayrayray4653 8 месяцев назад

    какой же каеф!!!

  • @vandriichuk
    @vandriichuk 2 года назад

    Классное объяснение

  • @ophay-q9u
    @ophay-q9u 2 года назад

    грамотная речь

  • @mcdebugger
    @mcdebugger 9 месяцев назад

    Ох, я уж думал, сейчас будем распаковывать IP-пакет и писать TCP-хэндшэйк)))
    Видео интересное, спасибо, посмотрел целиком и воспроизвёл)

  • @maximgubanov6625
    @maximgubanov6625 2 года назад

    ПОТРЯСАЮЩЕ!!! Спасбо, Олег, превосходная подача материала. Очень интересно!

  • @ДмитрийРаннев-л1у
    @ДмитрийРаннев-л1у 5 лет назад +1

    Очень интересно, Олег! Большое спасибо, так локанично, быстро (но в достататочном уровне полно) дать понимание того как работают веб-фреиймворки - это гениально!

  • @bekaryukovmv
    @bekaryukovmv 5 лет назад +1

    Спасибо! Очень крутое видео. Узнал много полезного!

  • @СергейЗеленов-з1ы
    @СергейЗеленов-з1ы 3 года назад

    При запуске кода, через какое-то время браузер, видимо, отправляет пустой запрос и из-за этого в коде функции parse_request возникает ошибка: IndexError: list index out of range

  • @serjunulanov1903
    @serjunulanov1903 2 года назад

    В каком видео подробнее рассматривается "чтение" запросов? Прикрепляйте, пожалуйста, если упоминаете.

  • @user-maximilianno
    @user-maximilianno 4 месяца назад

    Алгоритмы ютуба радуют. Я знал, что это видео существует, но руки не доходили до него добраться. И тут оно на главной у меня.

  • @ИгорьСоболев-у5ф
    @ИгорьСоболев-у5ф 4 года назад

    А как же обрабатывается POST запрос? Method, action мы получили.. А как же получит данные из форм например?

  • @ByteMod
    @ByteMod 5 лет назад

    Большое спасибо за урок!
    Подскажите, пожалуйста, 1 вещь.
    В html файле есть тег link с ссылкой на .css файл, который лежит в той же папке. При попытке перейти на страницу сервера, то загружается только html файл, а потом сервер падает с ошибкой "KeyError: '/style.css'" при этом в DevTools видно GET запрос на localhost:5000/style.css. Аналогичное падение происходит спустя пару минут посл запуска, т.к. браузер почему-то делает GET запрос за файлом favicon.ico, хотя в коде и намека на него не было. Пользуюсь последним Google Chrome.
    Метод get_content() модифицировал - удалил условия проверки кода ответа. В теле этого метода у меня единственная строка return URLS[url]()
    Большое спасибо!

  • @0xsadcat92
    @0xsadcat92 5 лет назад +1

    perfect

  • @geenstack4301
    @geenstack4301 5 лет назад

    Большое человеческое спасибо. Не подскажете материала конкретно по модулю Socket?

  • @АбулкаирБебра
    @АбулкаирБебра 5 лет назад +1

    чувак у меня ошибка server_socket.bind(("loclalhost", 5000)) IndentationError: unindent does not match any outer indentation level

    • @Xobotyara
      @Xobotyara 4 года назад

      "loclalhost ??? может localhost?

    • @vulnerable_content
      @vulnerable_content 4 года назад +1

      надеюсь, вы давно разобрались, что проблема была в отступах)

    • @АбулкаирБебра
      @АбулкаирБебра 4 года назад

      @@Xobotyara оооооо да чел ебать ору сейчас я программист на С и Линукс api бля за год такой прорыв спасибо хахаэаээ

  • @namesirname9642
    @namesirname9642 6 лет назад

    Всем привет!
    Отличный видос, все толково, все по делу, так держать!
    Теперь пару слов у кого винда и кто пытался написать (и вывести) html файл с кириллицей.
    И у вас ничего не получилось а в браузере вы увидели кракозябры?
    идем в файл views.py
    когда вы читаете файл надо принудительно указывать кодировку, т.е. :
    with open('templates/index.html', encoding="utf-8") as template:
    должно получиться!

  • @kavabangaungava
    @kavabangaungava 5 лет назад

    Подскажите, что за аддон к mozilla, по open HttpRequester ничего не ищется...

  • @viktorsokolov8153
    @viktorsokolov8153 Год назад

    Классно, спасибо. Концовка с урлами и темлпейтс шикарная.

  • @d-sem
    @d-sem Год назад

    Большое спасибо за видео. Спустя 4ре года все еще актуально и... действительно лучшая подача, что встречал.
    Жаль что со всеми санкциями до патреона проблематично достучаться.

  • @ФилиппНикуленко
    @ФилиппНикуленко 2 года назад

    Жаль, что Олег с ютуба ушёл. После таких видео действительно начинаешь верить во что-то)

  • @oxidizerby
    @oxidizerby 4 года назад

    Поясните пожалуйста сказанное 20:26 - 20:37. Как я понял открыть страницу в двух браузерах одновременно не получится. Почему? и как это исправить. Работают же другие сайты нормально.

    • @САМГАДсамгадович
      @САМГАДсамгадович 4 года назад

      смею предположить что ответ лежит в видео об асинхронном программировании

  • @kaktusdono
    @kaktusdono 4 года назад

    Очень понравилось, спасибо большое! Всегда интересно поковыряться на низком уровне

  • @jeb_7749
    @jeb_7749 3 года назад

    Большое спасибо, только начал вникать в тему серверного программирования, из-за чего не мог найти ответы на некоторые интересующие меня вопросы, которые я получил здесь :3

  • @user-buser_eto_ja
    @user-buser_eto_ja Год назад

    Очень внятно и доходчиво. Спасибо!

  • @ivankyrychenko2000
    @ivankyrychenko2000 6 лет назад +1

    Автор, спасибо большое, сразу видно что делаете от души и с большим посылом!

    • @zaemiel
      @zaemiel  6 лет назад

      спасибо

  • @antistress_pro
    @antistress_pro 2 года назад

    Спасибо! Это лучшее объяснение, которое я встречал.

  • @it_is_muchomor
    @it_is_muchomor 2 года назад

    Спасибо, Олег! Как всегда круто!

  • @leomysky
    @leomysky 3 года назад

    Очень крутое видео
    Спасибо большое

  • @АнтонАлександрович-с1и

    Олег как понимаю вы запустили веб сервер? А в каком месте кода это?

  • @Noomeron1
    @Noomeron1 3 года назад

    Спасибо огромное! Очень доступно. Теперь материалы по тому-же джанго воспринимать куда легче.

  • @respecktpro2954
    @respecktpro2954 4 года назад

    Огромное спасибо за урок.Вы очень хороший преподаватель,теперь буду стараться постоянно смотреть ваши уроки!

  • @kalik54
    @kalik54 4 года назад

    Отличный урок, все предельно понятно обьясненено. Лайк :c

  • @РатмирАйдемиров-с5ч

    Здравствуйте, спасибо за видео. Объясните пожалуйста как в html шаблоны передавать данные?)

  • @deskentunhuman3336
    @deskentunhuman3336 2 года назад

    Отличное видео, все понятно. Спасибо!

  • @StasVasin
    @StasVasin 4 года назад

    Стало понятнее, что происходит под капотом у фреймворков.
    Спасибо.

  • @TdadadT9
    @TdadadT9 6 лет назад +1

    Видео достаточно информативны :) Но вот вопрос... Является ли верным разделение кода на такое кол-во функций? Это же затрудняет чтение кода. Приходится бегать глазами по функциям и смотреть, что в них происходит

    • @zaemiel
      @zaemiel  6 лет назад

      вы хотите делать одну функцию, которая делает все?

    • @TdadadT9
      @TdadadT9 6 лет назад

      Я просто codegolf предпочитаю, поэтому и интересуюсь. Является ли разделение на оч много функций верным решением?
      PS по-моему, одна функция тоже не вариант. Скорее, нужно что-то среднее.
      PS1 в основном сижу на соревновательных платформах, где ценится лаконичность кода, поэтому плохо понимаю что хорошо в продакшне, а что плохо :)

    • @zaemiel
      @zaemiel  6 лет назад +7

      Это вопрос о целях.
      Зачем вам нужно программирование?
      Для чего вы его используете?
      Если цели у нас с вами разные, то и процесс их достижения - тоже может быть разным. Это с одной стороны.
      А с другой стороны, если вы не видите проблему, то для вас ее нет. И в этом случае любой ответ, который вы получите - не будет иметь никакого смысла до тех пор, пока вы не упретесь в проблему.
      Представьте, что вам нужно будет поддерживать код, который вы написали, изменять его, рефакторить, добавлять новые фичи, писать тесты. Как вы будете это делать? Как вы сможете написать тесты для функций, которые делают много чего сразу?
      Мы даже не берем во внимание понятие цикломатической сложности таких функций. Хотя, наверное, стоило бы.
      Если необходимость делить код на функции... на, так сказать, UNIX-WAY-функции, которые делают только одну вещь и делают ее очень хорошо, для вас не очевидна, то делайте так как считаете нужным. Существование проблемы должно быть очевидным.

    • @TdadadT9
      @TdadadT9 6 лет назад

      Спасибо за развернутый ответ.

  • @dmitrytsmyh5971
    @dmitrytsmyh5971 5 лет назад

    Круто. Буду пересматривать просто для удовольствия.

  • @aleksandr666
    @aleksandr666 4 года назад

    Огромное спасибо, много полезного для себя подчеркнул

  • @nktpfn
    @nktpfn 4 года назад

    очень хороший ролик. Спасибо, вы хорошо объясняете

  • @ЕвгенийСкореев
    @ЕвгенийСкореев 5 лет назад

    Почему у нас в техе нет таких преподов?! (потому что там не хватит таких денег, чтоб вам заплатить)

  • @alexeysilver3139
    @alexeysilver3139 5 лет назад

    Респект тебе за хороший английский, за детальное разъяснение и просто за то, что ты есть)

  • @mechnotech
    @mechnotech 2 года назад

    Очень многое стало на своим места, спасибо большое!

  • @sadel9171
    @sadel9171 4 года назад

    Спасибо большое! Были проблемы но я справился

  • @BLVCKxSONNET
    @BLVCKxSONNET 5 лет назад

    Без этого видоса я бы ещё очень долго вникал в устройство Flask, огромное спасибо Олег =)

  • @ivanaaa6049
    @ivanaaa6049 2 года назад

    Спасибо, все просто и понятно рассказано.

  • @vladimirkulakov6126
    @vladimirkulakov6126 2 года назад

    Огромное спасибо за подробный разбор данной темы!

  • @yaroslav6145
    @yaroslav6145 4 года назад

    Супер. Лайк, подписка!

  • @РоманСергеевич-э6ю
    @РоманСергеевич-э6ю 3 года назад

    Автор, спасибо тебе огромное!

  • @mariiaburda2981
    @mariiaburda2981 2 года назад

    це було корисно, дякую за урок)

  • @origindevelopdev18
    @origindevelopdev18 4 года назад

    Насколько же всё понятно!!! Спасибо!

  • @dims8736
    @dims8736 2 года назад

    как же сложно(

    • @wanwight5593
      @wanwight5593 2 года назад

      не сдавайся, потихоничку разбирайся и разберешься

  • @kolobroadgh8532
    @kolobroadgh8532 3 года назад

    Spasibo vam bolshoe!

  • @sergeykarandeev4303
    @sergeykarandeev4303 2 года назад

    Спасибо огромное за труды. Жаль что Вы не продолжаете делится опытом и знаниями.

    • @avbolshakov
      @avbolshakov 2 года назад +1

      есть англоязычный канал у Олега, поищите Red Eyed Coder Club

  • @АлександрФедченко-л6ю

    Автор, на сколько успешно и гибко можно писать инет магазины, crm и подробное на питоне? Сравнимо с JS?

    • @zaemiel
      @zaemiel  5 лет назад

      Вопрос, мягко говоря, очень странный. Что значит "гибко" и "успешно"? На Python можно реализовать все, что только в голову взбредет, так же как и на JS.

  • @СергейБорисов-в6ю
    @СергейБорисов-в6ю 6 лет назад +1

    Супер!