По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Когда речь заходит о веб-фреймворках на Python, то можно смело сказать, что Django и Flask – это два самых популярных. Мы уже писали про фреймворк Django, так что теперь давайте посмотрим на его младшего (но не менее мощного) брата. Итак, что же такое Flask? Flask – это микофреймворк для разработчиков, который позволяет им быстро и просто создавать и масштабировать веб-приложения. Выяснение того, как они это делают, займет чуть больше времени. Для начала мы кратко рассмотрим основные способы использования Python веб-разработчиками в цифровых системах, а затем поговорим о самом микрофреймворке Flask. А далее мы рассмотрим некоторые плюсы и минусы его использования и сравним Flask с его более известным собратом Django. Как разработчики используют Python? Язык программирования Python – это область деятельности не только для ученых и аналитиков данных. Его гибкость – одна из ключевых причин, по которой огромное количество веб-разработчиков изучают его и профессионально используют во всех видах проектов. Преимущественно они используют его для создания мощных серверных веб-приложений, которые могут быстро обрабатывать данные. Они также используют его для таких областей, как сбор данных, машинное обучение и искусственный интеллект. Разработчикам нравится простота использования и эффективность Python, поскольку он позволяет создавать быстро загружаемые и безопасные веб-сайты. Еще до этапа развертывания – Python идеально подходит для проектирования и тестирования прототипов, позволяя выполнять итерации и разработку, быстро достигая финального этапа разработки готового продукта. Если вам нужны более конкретные примеры, то мы нашли некоторые из наиболее известных примеров использования Python от таких компаний, как Netflix, Uber и Spotify. На самом деле есть очень много преимуществ изучения и использования Python для веб-разработки. Когда речь заходит о разработке веб-приложения на Python, то тут есть много разных вариантов, но наверху этого списка находятся именно Django и Flask. А сейчас давайте продолжим и узнаем поподробнее о втором – о Flask. Что такое Flask? Flask входит в топ-20 самых востребованных веб-фреймворков согласно опросу Stack Overflow 2022 года – неплохо для микрофреймворка. Откуда такое признание? В основном от того, что для своей работы он не полагается на какие-либо другие инструменты или программные библиотеки. Flask, которому уже немного больше 11 лет, примерно того же возраста, что и более известный веб-фреймворк Django. Из-за того, что язык Python был назван в честь комедийной труппы Monty Python, то и весь проект Flask изначально задумывался как первоапрельская шутка. Однако Армин Ронахер, создатель, понял, что то, что задумывалось как шутка, может действительно превратиться во что-то реально полезное – подходящую основу для создания веб-приложений. Его название – это обыгрывание названия более раннего веб-фреймворка Bottle. Flask – это то, что известно как фреймворк WSGI. Оно произносится как «виски» и обозначает Web Server Gateway Interface (интерфейс шлюза веб-сервера). По сути, это способ для веб-серверов передавать запросы веб-приложениям или платформам. Flask использует для работы внешнюю библиотеку WSGI, а также шаблонизатор Jinja2. Это готовый фреймворк, что означает, что вы можете без проблем перейти на работу с ним – это одно из его основных преимуществ. Итак, теперь мы знаем, что такое Flask, а значит, пришло время посмотреть, как его используют разработчики. Преимущества и недостатки Flask Преимущества Flask: Масштабируемость Размер – это все, и статус Flask в качестве микрофреймворка означает, что вы можете использовать его для невероятно быстрого развития технического проекта, такого как веб-приложения. Если вы планируете создать приложение, которое будет начинаться с малого формата, но при этом будет иметь потенциал быстрого роста в том числе и в тех направлениях, которые вы еще не полностью проработали, то Flask – идеальный выбор для вас. Его простота использования и малое количество зависимостей позволяют ему работать бесперебойно даже при масштабировании. Гибкость Это основная функция Flask и одно из его самых больших преимуществ. Перефразируя один из принципов дзэн Python, простота лучше сложности, так как ее можно легко перераспределить и переместить. Это полезно не только с точки зрения того, что ваш проект можно легко продвигать в другом направлении, но это также гарантирует, что структура проекта не рухнет при изменении какой-либо ее части. Минималистичность Flask и его способность разрабатывать небольшие веб-приложения означают, что он даже более гибкий, чем Django. Легкость в использовании Как и в случае с Django, способность быстро ориентироваться помогает веб-разработчикам сосредотачиваться только на написании кода, а не на попытках разобраться, как и что работает. Микрофреймворк прост для понимания, и не только экономит веб-разработчикам их время и усилия, но и позволяет им максимально контролировать их код и все, что только можно. Простота Когда этот термин используется в отношении какого-либо инструмента или фреймворка, то речь идет о его конструкции – есть несколько составных частей, которые необходимо собирать и собирать повторно, и он не зависит от большого количества программных расширений для функционирования. Такая конструкция дает веб-разработчикам определенный уровень контроля. Flask также поддерживает модульное программирование, в котором его функциональность можно разделить на несколько взаимозаменяемых модулей. Каждый модуль действует как независимый строительный блок, который может выполнять какую-то часть функциональных возможностей. В общем это означает, что все составные части структуры являются гибкими, подвижными и тестируемыми сами по себе. Документация Согласно теории создателя о том, что «хороший план разработки документации на самом деле заставляет вас писать документацию», пользователи Flask могут найти большое количество структурированных примеров и рекомендаций. Это создает хорошие условия для того, чтобы разработчики использовали фреймворк, так как они могут легко ознакомиться с различными аспектами и возможностями инструмента. Документацию Flask можно найти на их официальном сайте. Недостатки Flask: Небольшое количество инструментов Конечно же есть и некоторые недостатки в простоте этого микрофреймворка. Главный из них заключается в том, что, в отличие от Django, в Flask нет такого большого количества различных инструментов. Это значит, что разработчикам придется вручную добавлять программные расширения, такие как библиотеки. А при добавлении большого количества таких расширений приложение может начать тормозить из-за большого количества запросов. Трудность ознакомления с большими приложениями Из-за того, что разработка приложения с использованием Flask может иметь множество различных тонкостей, веб-разработчик, пришедший к проекту на полпути, может столкнуться с трудностями во время ознакомления с тем, как оно было разработано. Модульная структура микрофреймворка, о которой мы упоминали ранее, может усложнять работу программистов, которым нужно ознакомиться с каждой составной частью. Затраты на техническое обслуживание Поскольку Flask является гибким с точки зрения использования технологий, с которыми он может взаимодействовать, то довольно часто компании, использующие Flask, несут дополнительные расходы на поддержку этих технологий. Например, если технология, взаимодействующая с вашим приложением, устареет или перестанет существовать, то компании придется искать новую технологию, которая будет также совместима с вашим приложением. Чем сложнее приложение, тем выше потенциальные затраты на обслуживание и внедрение. Flask vs Django Скорее всего, вы уже поняли, что эти двое много чем похожи. Все чаще они упоминаются в одном ряду. И Flask, и Django предназначены для того, чтобы разработчикам было легче начать работу с проектами, а также легче масштабировать их в приложения. Они оба просты в развертывании, оба очень просто проводят модульное тестирование и идут вместе с документацией. Предоставление веб-разработчикам возможности более продуктивно писать код именно на Python, а не на других языках, во многом объясняет их популярность. Опрос Python-разработчиков, проведенный JetBrains в 2021 году, показал, что Django и Flask находятся в тупиковой ситуации с точки зрения популярности. Так чем же они отличаются? Применение Полезный совет, позволяющий понять, что и когда использовать, заключается в следующем: Django подходит для больших проектов и для небольших, которые так и останутся ими, а Flask – для небольших приложений, у которых есть перспектива стать больше. Django – это монолит, что значит, что он старается быть полноценным универсальным механизмом для вас и ваших потребностей. Из-за такой своей требовательности это может оказаться не очень оптимально для некоторых разработчиков. В качестве альтернативы, как микрофреймворк, Flask может легко и гибко взаимодействовать с другими инструментами, даже с теми, с которыми вы изначально не планировали работать. С Django вам необходимо будет определить масштаб проекта заранее. Общественная поддержка Flask имеет гораздо меньшее и менее сплоченное сообщество пользователей в сравнении с Django, поэтому, если у вас возник тот или иной вопрос, то у вас гораздо меньше шансов найти ответ на форуме, так как меньше активных пользователей, которые обращаются за помощью. Простой способ проверить - зайти на главный веб-форум Stack Overflow. Проверка форума показала, что против 46 966 вопросов с тегом Flask выступают 273 775 вопросов с тегом Django. Это ни в коем случае не означает, что сообщество Flask полностью мертво. Это лишь значит, что это немного более молодой фреймворк, а, соответственно, и его сообщество. Безопасность В то время как Django может похвастаться отличными функциями аутентификации и входа в систему для пользователей, Flask не может себе такого позволить. Тем не менее, микрофреймворк поддерживает безопасные cookie-файлы на клиентской стороне. В целом, Django считается «полностью укомплектованным» фреймворком и более безопасным. Доступ к базе данных Еще одно ключевое отличие для разработчиков, работающих с базами данных, - насколько Django и Flask поддерживают к ним доступ, в основном объектно-реляционное управление (ORM - Object Relational Management). Объектно-реляционное управление позволяет API легко получать доступ к данным без необходимости писать SQL-команды. Django поддерживает ORM, что позволяет писать сложные запросы. А вот Flask-разработчикам, к сожалению, придется писать все свои SQL-операторы самостоятельно, что, конечно, может добавить лишней работы. Стоимость Flask более гибкий из-за его относительной поворотливости, тогда как Django в целом считается более дешевым в обслуживании с точки зрения эксплуатационных расходов. Мало того, что для работы с Flask требуется дополнительная поддержка из-за ряда технологий, с которыми он работает, так и разработчиков, имеющих опыт работы с ним, найти сложнее, чем тех, кто имел дело с Django. Если говорить о сравнении и принятии решения как предприятием, так и технической командой, что использовать и для какого проекта, то это действительно зависит от специфики и масштаба самого проекта. Но если вы веб-разработчик, который работает с Python, и пытается решить, с каким фреймворком ему лучше познакомиться, то почему бы не сразу с обоими? Знания и опыт развертывания проектов с использованием как Django, так и Flask могут значительно повысить ценность ваших навыков (и потенциально повысить вашу зарплату разработчика полного цикла). Итоги Итак, вот оно: введение в микрофреймворк Flask, включая то, как его использовать, а также плюсы и минусы. Крайне важно, чтобы технические команды знали и понимали, для каких проектов лучше всего подходит Flask, а какие проекты – это работа для более крупного веб-фреймворка Django. В любом случае, любой веб-разработчик, работающий с Python, должен знать, как работать хотя бы с одним из этих двух популярных инструментов.
img
Привет, мир! Говорим о том, что такое IP - адрес. Вообще, IP расшифровывается как Internet Protocol, но поверьте нам, даже в профессиональной среде, аббревиатуру не расшифровывает никто. IPшник, адрес, АйПи, ИПЭ, как угодно, но не INTERNET PROTOCOL. Погнали разбираться - вот вам пример из реальной жизни: Если нам нужно отправить письмо, то на конверте нужно указать куда его нужно отправить и от кого, приклеить марки, сходить на почту и постоять в очереди - без этого ничего не выйдет. C IP адресом все так же - это адрес компьютера, сервера или любой другой активной сетевой железки. Чтобы общаться с другими компьютерами и серверами нужно чтобы у него был уникальный идентификатор, чтобы понять, куда нужно слать данные, и как их получить обратно. Например, мы хотим зайти на сайт. Для этого нам нужно отправить письмо сайту, и сказать, что нам нужна его главная страница. Сайт получит это письмо, и вышлет нам страничку по адресу, указанному на конверте в поле отправитель. Видеопособие Почему он так странно выглядит? Компьютеры общаются нулями и единицами, которые называются битами. И на самом деле этот адрес выглядит как строка из 32 нулей и единиц. Нет - нет, именно так. Представьте себе комбинацию нулей и единиц - это двоичная система. Двоичная, потому что есть значения 1 и 0. И все, больше никаких. Авторы адресации подумали и поняли, что ввод 32 единиц и нулей мог бы привести к панической атаке системного администратора, и было принято решение переводить его в десятичную систему. Так же решили разбить это длинное число на 4 части, поставив 3 точки и в итоге мы получили 4 числа от 0 до 255, с которыми гораздо проще работать. Возможно, вы где - то видели IP адреса, которые длиннее и содержат в себе буквы. Это что тоже айпи адрес? Да, это тоже адрес, только другой версии. То, что мы уже обсудили - называется IPv4. То есть IP 4ой версии (да - да, они еще и по версии отличаются). С этой версий есть одна проблема - всего может существовать 4 294 967 296 адресов, что не хватит для всех устройств, особенно сейчас, когда адрес может быть даже у холодильника. Здесь уже мы используем число из 128 бит которое делим на 8 частей при помощи двоеточий и переводим их в шестнадцатеричную систему счисления, опять же для удобства. Это IPv6, то есть IP 6 версии. Принцип работы остается тем же, а адресов теперь доступно 10 в 28 степени: 79 228 162 514 264 337 593 543 950 336 (cемьдесят девять окталионов двести двадцать восемь септилионов сто шестьдесят два секстилиона пятьсот четырнадцать квинтиллионов двести шестьдесят четыре квадриллиона триста тридцать семь триллионов пятьсот девяносто три миллиарда пятьсот сорок три миллиона девятьсот пятьдесят тысяч триста тридцать шесть. Этого пока должно хватить. В чем разница между статическим и динамическим адресом? Она вытекает из названия - статический адрес не меняется у компьютера и всегда остается одним и тем же, в то время как динамический назначается на определенное время, затем заменяется другим. Зачем это нужно? Дело в том, что если вам нужно попасть на сайт, вам нужно знать его адрес, и если он изменится, то мы не можем его найти. Для этого нужны статические адреса. А вам, как посетителю сайта статический адрес не нужен, подойдет динамический, который вы напишете на конверте в поле отправителя. Так же можно называть IP адреса внутренними и внешними. В чем тут дело. Как мы уже знаем, в IPv4 у нас ограниченное количество адресов - на всех не хватает. А так еще в интернете нельзя иметь два одинаковых адреса, ведь в таком случае нельзя будет однозначно понять кому передавать данные. Но как дать возможность выходить в интернет всем, кто захочет? Переходить на 6 версию? Можно, но это дорого и долго. Тут нам на помощь приходит технология NAT - Network Address Translation, а точнее ее надстройка PAT - Port address translation, суть которой в том, что много устройств могут выходить в интернет с одним и тем же адресом. Но как такое возможно, если мы сказали что нельзя иметь два одинаковых адреса? Суть в том, что у вас есть ваш внутренний адрес, который выдает провайдер, с которым вы находитесь внутри локальной сети, а есть внешний адрес, который провайдер вам дает для выхода в интернет. И основная идея заключается в том, что несмотря на то, что у вас и у других пользователей одинаковые адреса, их можно отличить, благодаря тому, что к адресу добавляется порт, это уникальное значение после двоеточия, которое присваивает провайдер и которое является дополнительным идентификатором, позволяющим различать адреса. Это позволяет решать проблему с нехваткой адресов, и является дополнительным слоем безопасности. Могут ли вас вычислить по IP? Так что насчет вычисления по айпи? Стоит ли беспокоиться по поводу высказываний вашего оппонента в онлайн игре, который уверяет что у него есть брат программист, который сможет вас идентифицировать и найти? Не стоит. Ведь этот айпи адрес нужно сначала найти, но это будет внешний адрес, который есть у тысяч других компьютеров, а сопоставить внешний и внутренний адрес может только провайдер. Кстати, знаешь какой у тебя IP - адрес? А мы знаем 😇 Кликай по ссылке ниже, чтобы тоже узнать 👇 Узнать мой IP
img
GLBP (Gateway load Balancing Protocol) - это протокол, разработанный компанией Cisco, который обеспечивает распределение нагрузки на несколько роутеров, используя всего 1 виртуальный адрес. Этот протокол входит в группу FHRP, а теперь давайте напомню какие протоколы в неё входят. HSRP (Hot Standby Router Protocol) - проприетарный протокол, разработанный Cisco; VRRP (Virtual Router Redundancy Protocol) - свободный протокол, сделан на основе HSRP; GLBP (Gateway Load Balancing Protocol). GLBP обеспечивает балансировку трафика одновременно на несколько роутеров, когда HSRP и VRRP работал только один из 2х роутеров. Терминология протокола AVG (Active Virtual Gateway) - активный роутер, который занимается раздачей MAC адресов устройствам. Некий начальник над роутерами в сети GLBP . Это роль диспетчера, который указывает устройствам, как распределять трафик по средству раздачи им MAC адресов, когда приходит ARP запрос. То есть IP адрес у всех будет единый, а вот MAC адреса будут разные. AVF (Active Virtual Forwarder) - активный роутер, который пропускает через себя трафик. Роутер с ролью AVG только один может быть, а вот с ролью AVF любой, при этом AVG может быть и AVF одновременно. Настройка этого протокола такая же, как и любого протокола группы FHRP на интерфейсе (в данном случает interface e0/0) Теперь пройдемся по командам Router(config-if)# glbp 1 ip 192.168.0.254 //включение GLBP Router(config-if)# glbp 1 priority 110 //установка приоритета 110 (если приоритет будет выше остальных ,то он станет AVG по умолчанию 100) Router(config-if)# glbp 1 preempt //установит режим приемптинга для AVG ( работает также как и в HSRP, VRRP) Router(config-if)# glbp 1 weighting 115 //установить вес для AVF в 115 Router(config-if)# glbp 1 load-balancing host-depended | round-robin | weighted Для чего требуется вес? Для того, чтобы выбрать кто будет AVF. Чтобы при падении линка до провайдера мы могли передать эту роль кому-нибудь ещё. Далее рассмотрим механизм передачи: Router(config-if)# glbp 1 weighting 130 lower 20 upper 129 Команда установит вес для Forwarder в 130, а нижняя граница будет 20, верхняя 129. Если вес упадет до 19, то он перестанет быть AVF, а если вес возрастет выше 129 после падения, то он снова превратиться в AVF. По умолчанию lower равен 1, upper равен 100. Данная команда используется совместно с Track: Router(config)# track 1 interface e0/1 line-protocol Router(config)# int e0/0 Router(config-if)# glbp 1 weighting track 1 decrement 111 Как проверить стал ли роутер AVG? R2(config)#do show glbp Ethernet0/0 - Group 1 State is Active ... Смотрим, состояние Active, а это значит он и стал AVG. Взглянем на второй: R3(config-if)#do sh glbp Ethernet0/0 - Group 1 State is Standby ... Говорит о том, что он не стал AVG. При просмотре команды нужно обращать внимание на State is Active / Listen / Standby. Где AVG это Active, запасной Standby, а тот, кто в выборах не участвует Listen. То есть если роутер State is Active накроется, то его место займет маршрутизатор с состоянием State is Standby. При этом каждый роутер является AVF. 3 режима AVG Round Robin (по кругу) - это значит, что балансирует равномерно, раздавая каждому устройству новый MAC по списку, а как заканчивается список, начинает заново. Когда в сети просыпается устройство или ARP table устаревает, то у него нет mac шлюза по умолчанию. Он формирует ARP запрос, где запрашивает эти данные. Отвечает ему только AVG, который выдает виртуальные mac адреса за роутеры в группе glbp. Одному ПК он выдаст свой ,потому что он еще и AVF , следующему ПК - R3 mac-address выдаст ,следующему устройству R4 mac-address . Weighted (утяжеленный) - когда AVF имеет больший вес, то принимает большую нагрузку, чем остальные роутеры. Host dependent (Зависимое устройство) - присваивает постоянный MAC определенным устройствам. Допустим к нему обратился VPC10 за MAC адресом и AVG выдает его, а также запоминает, что ему выдает только этот адрес. Как это работает? Представим, что в нашей топологии: Роутер R3 (State is Listen) умрет, то тогда его клиентов возьмет любой из группы, либо R2, либо R4. Роутер R2 (State is Active) умрет, то тогда роль AVG займет роутер R4 (State is Standby), а также возьмет его клиентов (или распределит между R3/R4). R3 станет запасным AVG. Роутер R4 (State is Standby) умрет, то его клиентов возьмет один из R2/R3 и R3 (State is Listen) станет State is Standby. show glbp на разных роутерах R2(config-if)#do sh glbp Ethernet0/0 - Group 1 State is Active 1 state change, last state change 00:06:48 Virtual IP address is 192.168.0.254 Hello time 3 sec, hold time 10 sec Next hello sent in 2.176 secs Redirect time 600 sec, forwarder timeout 14400 sec Preemption disabled Active is local Standby is 192.168.0.3, priority 100 (expires in 8.576 sec) Priority 100 (default) Weighting 100 (default 100), thresholds: lower 1, upper 100 Load balancing: round-robin Group members: aabb.cc00.2000 (192.168.0.1) local aabb.cc00.3000 (192.168.0.2) aabb.cc00.4000 (192.168.0.3) There are 3 forwarders (1 active) Forwarder 1 State is Active 1 state change, last state change 00:06:37 MAC address is 0007.b400.0101 (default) Owner ID is aabb.cc00.2000 Redirection enabled Preemption enabled, min delay 30 sec Active is local, weighting 100 Forwarder 2 State is Listen MAC address is 0007.b400.0102 (learnt) Owner ID is aabb.cc00.3000 Redirection enabled, 599.104 sec remaining (maximum 600 sec) Time to live: 14399.104 sec (maximum 14400 sec) Preemption enabled, min delay 30 sec Active is 192.168.0.2 (primary), weighting 100 (expires in 9.216 sec) Forwarder 3 State is Listen MAC address is 0007.b400.0103 (learnt) Owner ID is aabb.cc00.4000 Redirection enabled, 598.592 sec remaining (maximum 600 sec) Time to live: 14398.592 sec (maximum 14400 sec) Preemption enabled, min delay 30 sec Active is 192.168.0.3 (primary), weighting 100 (expires in 10.016 sec) В данный момент я подключил 3 роутера в группу glbp 1 и если посмотреть на вывод, то он показывает отношение 1 роутера к другому. То есть R2 по отношению к R3 и R4 является active, а остальные listen . Если глянуть на R3 и R4 ,то картина будет с точностью наоборот. Это сделано для того, чтобы наблюдать, какой роутер взял на себя роль AVF в случае падения, тогда при падении один из Forwarder будет в состоянии Active. Режим preempt Этот режим, как и в других протоколах типа FHRP помогает роутеру настроить нужную роль. В GLBP это будет касаться AVG и AVF. Для AVG по умолчанию он отключен, а для AVF по умолчанию включен, с задержкой 30 секунд. preempt для AVG: R2(config)# int e0/0 R2(config-if)# glbp 1 preempt preempt для AVF: R2(config)# int e0/0 R2(config-if)# glbp 1 forwarder preempt delay minimum 60 Настройка таймеров Настройка интервалов в группе GLBP: R2(config-if)# glbp 1 timers 3 10 Настройка пароля //Аутентификация через md5 по хешу R2(config-if)#glbp 1 authentication md5 key-string CISCO //Аутентификация в открытом виде R2(config-if)#glbp 1 authentication text CISCO Диагностика R2# show glbp //показать общую информацию по протоколу группы FHRP R2# show glbp brief //показывает краткую таблицу по всем роутерам группы GLBP ---------------------------------------------------------------------------------------------------------------------------- R2#show glbp brief Interface Grp Fwd Pri State Address Active router Standby router Et0/0 1 - 110 Standby 192.168.0.254 192.168.0.4 local Et0/0 1 1 - Active 0007.b400.0101 local - Et0/0 1 2 - Listen 0007.b400.0102 192.168.0.2 - Et0/0 1 3 - Listen 0007.b400.0103 192.168.0.3 - Et0/0 1 4 - Listen 0007.b400.0104 192.168.0.4 - Важное В топологии GLBP может пропускать максимум 4 роутера, если подключить 5, то он попадет в таблицу GLBP, но пропускать через себя трафик не станет. А будет просто ждать, пока умрет какой-либо AVF.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59