Python и разработка простого веб-приложения, использующего технологии машинного обучения
Тот, кто занимается машинным обучением (Machine Learning, ML), обычно, реализуя различные проекты, выполняет следующие действия: сбор данных, их очистка, разведочный анализ данных, разработка модели, публикация модели в локальной сети или в интернете. Вот хорошее видео, в котором можно узнать подробности об этом.
Жизненный цикл проекта в сфере машинного обучения
Этап публикации модели завершает жизненный цикл ML-проектов. Он так же важен для дата-сайентистов и специалистов по машинному обучению, как и другие этапы. Обычные подходы к публикации моделей предусматривают использование универсальных фреймворков, таких, как Django или Flask. Главные проблемы тут заключаются в том, что для применения подобных инструментов требуются особые знания и навыки, и в том, что работа с ними может потребовать немалых затрат времени.
Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать о том, как, используя Python-библиотеки streamlit, pandas и scikit-learn, создать простое веб-приложение, в котором применяются технологии машинного обучения. Он говорит, что размер этого приложения не превышает 50 строк. Статья основана на этом видео, которое можно смотреть параллельно с чтением. Инструменты, которые будут здесь рассмотрены, кроме прочего, позволяют ускорить и упростить развёртывание ML-проектов.
Обзор модели, определяющей вид цветка ириса
Сегодня мы создадим простое веб-приложение, использующее технологии машинного обучения. Оно будет классифицировать цветки ириса из выборки Фишера, относя их к одному из четырёх видов: ирис щетинистый (iris setosa), ирис версиколор (iris versicolor), ирис виргинский (iris virginica). Возможно, вы уже видели множество ML-примеров, построенных на основе этого знаменитого набора данных. Но, надеюсь, то, что я тут буду рассматривать ещё один такой пример, вам не помешает. Ведь этот набор — он как «lorem ipsum» — классический бессмысленный текст-заполнитель, который вставляют в макеты страниц.
Нам, чтобы построить модель и опубликовать её где-нибудь, понадобятся библиотеки streamlit, pandas и scikit-learn. Взглянем на общую схему проекта. Он будет состоять из двух больших частей: фронтенд и бэкенд.
Во фронтенд-части приложения, а именно, на веб-странице, будет боковая панель, находящаяся слева, в которой можно будет вводить входные параметры модели, которые связаны с характеристиками цветков ириса: длина лепестка (petal length), ширина лепестка (petal width), длина чашелистика (sepal length), ширина чашелистика (sepal width). Эти данные будут передаваться бэкенду, где предварительно обученная модель будет классифицировать цветки, используя заданные характеристики. Фактически, речь идёт о функции, которая, получая характеристики цветка, возвращает его вид. Результаты классификации отправляются фронтенду.
В бэкенд-части приложения то, что ввёл пользователей, сохраняется в датафрейме, который будет использоваться в виде тестовых данных для модели. Потом будет построена модель для обработки данных. В ней будет применяться алгоритм «случайный лес» из библиотеки scikit-learn. И наконец, модель будет применена для классификации данных, введённых пользователем, то есть — для определения вида цветка. Кроме того, вместе со сведениями о виде цветка, будут возвращаться и данные о прогностической вероятности. Это позволит нам определить степень достоверности результатов классификации.
Установка библиотек
Разработка веб-приложения
Теперь напишем код приложения. Проект у нас довольно скромный. Он состоит из менее чем 50 строк кода. А если точнее — то их тут всего 48. Если же этот код «уплотнить», избавившись от комментариев и пустых строк, то размер текста программы сократится до 36 строк.
Разбор кода
Теперь разберём этот код.
▍Импорт библиотек
▍Формирование боковой панели
▍Создание модели
Получение сведений о виде цветка с помощью обученной модели.
Получение сведений о прогностической вероятности.
▍Формирование основной панели
Данный код описывает второй подзаголовок основной панели. В этом разделе будут выведены данные о видах цветков.
Вывод третьего подзаголовка для раздела, в котором будет находиться результат классификации.
Выводим заголовок четвёртого (и последнего) раздела основной панели. Здесь будут представлены данные о прогностической вероятности.
Вывод данных о прогностической вероятности.
Запуск веб-приложения
Если всё идёт как надо, через некоторое время вы должны увидеть следующее:
То, что вы увидите, будет похоже на следующий рисунок.
Скриншот веб-приложения для классификации цветков ириса. Если щёлкнуть по стрелке, находящейся в левом верхнем углу окна, расположенного в верхней части рисунка, будет открыта боковая панель
Итоги
Можете себя поздравить: только что вы создали веб-приложение, в котором используются технологии машинного обучения. Вы вполне можете упомянуть подобное приложение в своём портфолио ML-проектов, а если хотите, можете опубликовать его на своём веб-сайте (правда, вы, вполне возможно, решите построить собственную модель, используя другие данные).
Пользуетесь ли вы библиотекой streamlit?
Создаём веб при помощи Python
Вопреки распространенному мнению, Python полезен не только для обработки данных и скриптов. Посмотрите на рейтинг портала HotFrameworks.com, и вы увидите, что пятый по популярности веб-фреймворк создан для работы с Python.
Python и веб-разработка
При разработке веб-приложения Python в основном используется для обработки бэк-энд и маршрутизации, где в роли конкурентов у него PHP и Ruby. Веб-страницы все равно необходимо отображать с использованием HTML и CSS, а функциональная часть фронтэнда по-прежнему выполняется на JavaScript. Если вам интересен этот язык, то рекомендуем начать его изучения с бесплатного интенсива по основам Python.
В зависимости от того, какой фреймворк Python вы используете, взаимодействия могут существенно упрощаться. Например, Django имеет систему шаблонов для написания специальных HTML-файлов, которые могут вставлять код Python и взаимодействовать с данными из бэк-энда.
Такой тип взаимодействия называется full-stack фреймворком. С его помощью вы можете работать с системами, обрабатывающими HTTP-запросы, хранилищами баз данных, шаблонами веб-страниц, запросами маршрутизации и т. д. С другой стороны, есть и не full-stack фреймворки, которые также называют микрофреймворками, которые обрабатывают только базовую логику. А для сторонних работ они должны быть объединены со сторонними базами данных, шаблонизаторами и т. д.
В общем, full-stack фреймворки имеют более крутые кривые обучения и заставляют вас принимать множество решений относительно структуры, но предоставляют все, что вам нужно. Микрофреймворки могут быть изучены в кратчайшие сроки и являются более гибкими, но вам, скорее всего, каждый раз придётся изобретать велосипед.
Python против других языков
Если вы следите за текстами в нашем блоге, то уже имеете представление о популярных JavaScript-фреймворках, например, React или Angular. Они стремительно развиваются, особенно среди новичков. Многие думают: «Если мне нужен JavaScript для внешнего интерфейса, почему бы не использовать JavaScript для back-end?» И это действительно имеет смысл. А взгляните на PHP — он существует уже много десятилетий, его окружает большое количество документации, он востребован. Тоже вполне себе логичный вариант для back-end.
Большинство актуальных задач веба вы можете решить с использованием любого языка. Единственное, что действительно важно — это то, насколько удобно вам лично его использовать. Если язык вам не подходит, вы просто изучите другой и продолжите своё дело.
Но отказаться от Python вам будет очень непросто, ведь для любви к нему есть минимум 5 причин.
Python и фреймворки
Чтобы заняться веб-разработкой с использованием Python, вам следует серьезно рассмотреть возможность использования одного из следующих фреймворков. Каждый из них по-своему хорош, проверен временем и тысячами программистов. Поэтому будьте уверены, что существенных проблем с официальной поддержкой, сообществами или документацией не возникнет.
Django — пожалуй, самый известный и популярный фреймворк для веб-разработки с использованием Python. Он поставляется с десятками встроенных модулей, прекрасно собранных и безупречно взаимодействующих друг с другом. Сначала вам потребуется немного времени, чтобы понять алгоритм создания веб-приложений, освоить внутренние структуры на Django. Но как только вы поймёте что к чему, быстрая разработка не станет проблемой. И да, если вы хотите работать веб-разработчиком на Python, знание Django — часто единственный путь.
Главный плюс Django — с его помощью ваше приложение очень хорошо масштабируется. По мере того, как в процессе разработки оно будет становится все больше и больше, с Django вам будет куда проще поддерживать организованность, чем с любым другим Python-фреймворком. Кстати, Django — фреймворк с открытым исходным кодом, со всеми вытекающими.
Flask — микрофреймворк, в некотором роде являющийся полном противоположностью Django. Он будет прост и понятен новичку, но обеспечит лишь базовый уровень возможностей, в то время как основную функциональность на себя должны будут взять сторонние интегрированные компоненты. Соответственно полного погружения в предмет Flask вам не подарит, лишь общее представление.
То есть если вы знаете, как и что вам необходимо использовать для реализации задумки, то Flask может стать тем минимальным клеем, что соберёт все воедино. Но если у вас нет ни опыта работы, ни понимания того, как должно функционировать будущее приложение, то Flask — далеко не лучший выбор.
Pyramid — это некий компромиссе между Django и Flask. Данный фреймворк не так функционален, как Django, и не так упрям, как Flask, но прост, удобен и вполне достаточен для организации большинства веб-приложений. Здесь есть большая библиотека официальных и неофициальных плагинов, с помощью которых вы сможете реализовать все задумки для вашего проекта.
Python и реальная жизнь
Если вы дочитали текст до данного раздела, то наверняка хотите увидеть реальные примеры веб-применения Python. Что ж, загибайте пальцы или открывайте новые закладки, кому как удобно: YouTube, Instagram, DropBox, Google, Reddit, Pinterest, FireFox, NASA, Quora и многие-многие другие. Да, где-то Python используется лишь частично, где-то и вовсе его стараются заменять более новыми языками, но влияние на веб у змеиного языка по-прежнему очень велико.
Python и обучение
Теперь остаётся лишь один вопрос: «Где обучиться?». С этим, к счастью, на нашем портале проблем никаких. Хотите — приобретайте целую профессию «Программист Python», хотите лишь отдельный курс «Python. Уровень 1» или «Python. Уровень 2», а хотите просто заручитесь помощью хорошей книги, например из списка «8 книг по Python для начинающих».
Пускай это прозвучит немного пафосно, но мы живём в золотой век веб-разработки. Веб-технологии никогда не были такими изысканными и гибкими, как сегодня. Если вы хотите создать качественный веб-сайт или веб-приложение, вы без труда найдёте массу инструментов для реализации любых своих задумок. И один из них — Python.
Вопреки распространенному мнению, Python полезен не только для обработки данных и скриптов. Посмотрите на рейтинг портала HotFrameworks.com, и вы увидите, что пятый по популярности веб-фреймворк создан для работы с Python.
Python и веб-разработка
При разработке веб-приложения Python в основном используется для обработки бэк-энд и маршрутизации, где в роли конкурентов у него PHP и Ruby. Веб-страницы все равно необходимо отображать с использованием HTML и CSS, а функциональная часть фронтэнда по-прежнему выполняется на JavaScript. Если вам интересен этот язык, то рекомендуем начать его изучения с бесплатного интенсива по основам Python.
В зависимости от того, какой фреймворк Python вы используете, взаимодействия могут существенно упрощаться. Например, Django имеет систему шаблонов для написания специальных HTML-файлов, которые могут вставлять код Python и взаимодействовать с данными из бэк-энда.
Такой тип взаимодействия называется full-stack фреймворком. С его помощью вы можете работать с системами, обрабатывающими HTTP-запросы, хранилищами баз данных, шаблонами веб-страниц, запросами маршрутизации и т. д. С другой стороны, есть и не full-stack фреймворки, которые также называют микрофреймворками, которые обрабатывают только базовую логику. А для сторонних работ они должны быть объединены со сторонними базами данных, шаблонизаторами и т. д.
В общем, full-stack фреймворки имеют более крутые кривые обучения и заставляют вас принимать множество решений относительно структуры, но предоставляют все, что вам нужно. Микрофреймворки могут быть изучены в кратчайшие сроки и являются более гибкими, но вам, скорее всего, каждый раз придётся изобретать велосипед.
Python против других языков
Если вы следите за текстами в нашем блоге, то уже имеете представление о популярных JavaScript-фреймворках, например, React или Angular. Они стремительно развиваются, особенно среди новичков. Многие думают: «Если мне нужен JavaScript для внешнего интерфейса, почему бы не использовать JavaScript для back-end?» И это действительно имеет смысл. А взгляните на PHP — он существует уже много десятилетий, его окружает большое количество документации, он востребован. Тоже вполне себе логичный вариант для back-end.
Большинство актуальных задач веба вы можете решить с использованием любого языка. Единственное, что действительно важно — это то, насколько удобно вам лично его использовать. Если язык вам не подходит, вы просто изучите другой и продолжите своё дело.
Но отказаться от Python вам будет очень непросто, ведь для любви к нему есть минимум 5 причин.
Python и фреймворки
Чтобы заняться веб-разработкой с использованием Python, вам следует серьезно рассмотреть возможность использования одного из следующих фреймворков. Каждый из них по-своему хорош, проверен временем и тысячами программистов. Поэтому будьте уверены, что существенных проблем с официальной поддержкой, сообществами или документацией не возникнет.
Django — пожалуй, самый известный и популярный фреймворк для веб-разработки с использованием Python. Он поставляется с десятками встроенных модулей, прекрасно собранных и безупречно взаимодействующих друг с другом. Сначала вам потребуется немного времени, чтобы понять алгоритм создания веб-приложений, освоить внутренние структуры на Django. Но как только вы поймёте что к чему, быстрая разработка не станет проблемой. И да, если вы хотите работать веб-разработчиком на Python, знание Django — часто единственный путь.
Главный плюс Django — с его помощью ваше приложение очень хорошо масштабируется. По мере того, как в процессе разработки оно будет становится все больше и больше, с Django вам будет куда проще поддерживать организованность, чем с любым другим Python-фреймворком. Кстати, Django — фреймворк с открытым исходным кодом, со всеми вытекающими.
Flask — микрофреймворк, в некотором роде являющийся полном противоположностью Django. Он будет прост и понятен новичку, но обеспечит лишь базовый уровень возможностей, в то время как основную функциональность на себя должны будут взять сторонние интегрированные компоненты. Соответственно полного погружения в предмет Flask вам не подарит, лишь общее представление.
То есть если вы знаете, как и что вам необходимо использовать для реализации задумки, то Flask может стать тем минимальным клеем, что соберёт все воедино. Но если у вас нет ни опыта работы, ни понимания того, как должно функционировать будущее приложение, то Flask — далеко не лучший выбор.
Pyramid — это некий компромиссе между Django и Flask. Данный фреймворк не так функционален, как Django, и не так упрям, как Flask, но прост, удобен и вполне достаточен для организации большинства веб-приложений. Здесь есть большая библиотека официальных и неофициальных плагинов, с помощью которых вы сможете реализовать все задумки для вашего проекта.
Python и реальная жизнь
Если вы дочитали текст до данного раздела, то наверняка хотите увидеть реальные примеры веб-применения Python. Что ж, загибайте пальцы или открывайте новые закладки, кому как удобно: YouTube, Instagram, DropBox, Google, Reddit, Pinterest, FireFox, NASA, Quora и многие-многие другие. Да, где-то Python используется лишь частично, где-то и вовсе его стараются заменять более новыми языками, но влияние на веб у змеиного языка по-прежнему очень велико.
Python и обучение
Теперь остаётся лишь один вопрос: «Где обучиться?». С этим, к счастью, на нашем портале проблем никаких. Хотите — приобретайте целую профессию «Программист Python», хотите лишь отдельный курс «Python. Уровень 1» или «Python. Уровень 2», а хотите просто заручитесь помощью хорошей книги, например из списка «8 книг по Python для начинающих».
Введение в создание веб-приложений на Python
В создании веб-приложений часто требуется использование различных фреймворков. В данной статье речь пойдет именно о них.
С помощью фреймворков разработка больших надежных обслуживаемых веб-приложений становится намного проще. Также она уберегает разработчиков от повторного написания одного и того же кода снова и снова.
С помощью фреймворка вы можете реализовать большинство этих функций.
Например, фреймворк Flask не поддерживает базы данных. Для их использования потребуется отдельный модуль. А вот фреймворк Django по умолчанию поддерживает базы данных.
Зачем использовать фреймворки при создании веб-приложений?
Зачастую у нас нет времени на решение тех проблем, которые были решены до нас. И тут на помощь приходят фреймворки. С другой стороны, если вы опытный веб-разработчик, фреймворк может предоставлять не весь спектр функций, который требуется.
Какие существуют фреймворки Python?
Django и Flask – самые популярные веб-фреймворки. Однако ознакомиться с другими фреймворками не помешает.
Вот некоторые из них:
Django
Доступ к базе данных осуществляется через объектно-реляционное преобразование: вы определяете свои модели данных в Python, и Django начинает работать с реляционными системами управления базами данных (СУБД). Однако, если вам нужно, вы можете написать свои собственные SQL-запросы в Django. Также в этом фреймворке поддерживается маршрутизация URL-адресов.
Если вы хотите узнать о Django побольше, прочтите это.
Знаете ли вы, что такие сайты, как NASA, BitBucket и Pinterest были написаны с помощью Django?
Flask
Flask очень прост и интуитивно понятен:
Платформа поддерживает маршрутизацию URL-адресов, шаблоны (с Jinja2), управление сеансами и имеет некоторые фишки в области безопасности.
Если вы хотите узнать о Flask побольше, прочтите это.
Знаете ли вы, что изначально Flask был придуман как первоапрельская шутка?
CGI: пишем простой сайт на Python. Часть 1: Hello world
Сегодня я расскажу про то, как написать Hello world, как CGI-скрипт.
Настройка локального сервера
В Python уже есть встроенный CGI сервер, поэтому его настройка элементарна.
Для запуска из консоли (для любителей linux-систем). Запускать нужно из той папки, где мы хотим работать:
Для сидящих на Windows чуть проще будет запуск Python файла (заметьте, что он должен находиться в той же папке, в которой мы планируем работать!):
Теперь откройте браузер и в адресной строке наберите localhost:8000
Если у вас примерно такая же картина, значит, у вас все заработало!
Hello world
Теперь в той папке, где мы запустили сервер, создаём папку cgi-bin (у меня она уже создана).
В этой папке создаём скрипт hello.py со следующим содержимым:
Первая строка говорит о том, что это Python скрипт (CGI-скрипты можно не только на Python писать).
Вторая строка печатает заголовок. Он обозначает, что это будет html файл (бывает ещё css, javascript, pdf и куча других, и браузер различает их по заголовкам).
Третья строка (просто символ новой строки) отделяет заголовки от тела ответа.
Четвёртая печатает Hello world.
Теперь переходим на localhost:8000/cgi-bin/hello.py
Если у вас не работает, проверьте, установлены ли права на выполнение.
Также в консоли запущенного сервера появляются сообщения об ошибках. Например, убрал скобочку и обновил страницу:
В следующей части мы рассмотрим обработку данных форм и cookies.
Python и веб-разработка: краткое руководство
Jun 22 · 7 min read
За последние несколько лет популярность Python резко возросла, и он даже превзошел Java. С развитием машинного обучения, анализа данных и веб-приложений многие разработчики стали чаще использовать данный язык программирования, так как он обладает множеством полезных библиотек, простым синтаксисом и мобильностью. Без сомнения, сейчас наиболее подходящее время, чтобы научиться работать с Python.
Итак, в данной статье мы ответим на следующие вопросы:
Веб-разработка — что это?
Почему Python подходит для веб-разработки?
Преимущества разработки веб-приложений в Python:
Другие языки программирования для веб-разработки:
Веб-фреймворки Python
Что такое фреймворки и почему они так важны? Веб-фреймворк — это набор пакетов и модулей, состоящих из предварительно написанного стандартизированного кода. Таким образом, код обеспечивает разработку веб-приложений, делая этот процесс быстрее и проще, а программы более надежными и масштабируемыми. Другими словами, фреймворки уже обладают встроенными компонентами, которые упрощают вашу работу над проектом.
Веб-фреймворки Python используются только в бэкенде для серверных технологий, помогая в маршрутизации URL-адресов, HTTP-запросах, доступе к базам данных и веб-безопасности. Фреймворк не считается обязательным, однако мы рекомендуем использовать его, так как он поможет разработать сложные приложения за достаточно короткое время.
Какие веб-фреймворки Python наиболее популярны?
Django — это быстрый, безопасный и масштабируемый веб-фреймворк Python, который предлагает высокий уровень и открытый исходный код. Django обладает мощной поддержкой сообщества и подробной документацией.
Фреймворк включает комплексный пакет, в котором вы получите панель управления, интерфейс базы данных и структуру каталога после создания приложения. Кроме того, он включает большое количество функций, поэтому вам не придется добавлять отдельные библиотеки. Аутентификация пользователей, механизм шаблонов, маршрутизация, миграция схемы базы данных и т.д. — все это примеры возможностей, которые предлагает фреймворк.
Django отличается гибкостью. Он позволяет работать как с минимально жизнеспособным продуктами, так и с более развитыми компаниями. Instagram, Dropbox, Pinterest и Spotify — все эти компании также используют Django.
Flask считается микрофреймворком, который представляет минималистичный веб-фреймворк. Но по сравнению с Django он не обладает такими функциями, как механизм веб-шаблонов, авторизация учетной записи и аутентификация.
Flask отличается простотой в использовании. Поэтому вы можете добавить расширения и библиотеки, которые вам нужны при написании кода.
Идея Flask заключается в том, что данная платформа предоставляет только компоненты, необходимые для создания приложения. Некоторые функции включают встроенный сервер разработки, отправку запросов Restful, обработку Http-запросов и многое другое. Flask также является распространенным и мощным веб-фреймворком, поскольку он используется крупными компаниями, такими как Netflix, Linkedin и Uber.
Другие известные фреймворки
Возможно, вы зададите вопрос — какой же фреймворк стоит выбрать? Но мы не сможем дать вам однозначный ответ. Для начала, оцените свой уровень веб-разработчика. Если вы обладаете большим опытом, то стоит отдать предпочтение продвинутым программам. Однако, если вы начинающий разработчик, то попробуйте использовать фреймворк со встроенной технической поддержкой, например Django.
Кроме того, спросите себя, хотите ли вы создать «основополагающую» кодовую базу или же сформировать её основы? Если вы предпочитаете первый вариант, то стоит использовать Django, а если второй, то Flask. Но стоит отметить, что оба инструмента обладают одинаковой функциональностью.
Библиотеки Python для веб-разработки
Ниже представлено несколько полезных библиотек Python для веб-разработки:
Дорожная карта для веб-разработки с использованием Python
Шаг 1:HTML + CSS
В начале веб-разработки стоит изучить HTML и CSS, которые являются основой обучения при создании сайтов. Гораздо важнее научиться структурировать адаптивные статические страницы, чтобы начать свой путь веб-разработки. Также полезно узнать про такие понятия, как Интернет, HTTP, браузер, DNS, хостинг и многое другое.
Вы можете также изучить такие CSS-фреймворки, как Materialize или Bootstrap. Они значительно ускорят вашу работу.
Шаг 2: Javascript
Следующий шаг, который необходимо сделать — это изучить Vanilla Javascript. Вам стоит ознакомиться с такими базовыми концепциями, как типы данных, переменные, общие соглашения, работа со строками, арифметика, управляющие операторы, циклы и т.д. Знание этих основ упростит применение Javascript к коду на стороне клиента.
Шаг 3: DOM & jQuery
Затем вам стоит научиться управлять еще одной библиотекой Javascript — jQuery. С ее помощью процесс манипулирования DOM станет гораздо проще. Теперь у вас есть представление о том, как создать динамические страницы.
Фронтенд-фреймворк
Для создания функционального веб-приложения с полным стеком рекомендуется изучать фронтенд-фреймворк. Такой навык часто является обязательным требованием при найме front-end или full-stack разработчика.
Шаг 4: Python
Теперь перейдем к бэкенду. Прежде чем приступить к манипуляциям с DOM, необходимо знать основы Python и Javascript. Эти базовые знания подготовят вас к Django. Изучение Python не вызывает трудностей, так как многие концепции напоминают Javascript.
Шаг 5: База данных Django +
С помощью Django вы сможете настроить бэкенд-среду и сформировать бизнес-логику. Вам также стоит узнать о том, как создать запросы, изучить базу данных SQLite и CRUD- функцию. В таком случае, вы сможете разработать приложение с полным стеком.
Как создать первое веб-приложение в Python
Запустите приложение Flask «hello world» в качестве введения в веб-фреймворки Python
Установка Flask
Первое, что необходимо сделать — это установить Flask. В зависимости от вашей версии Python, вам придется использовать pip или pip3.
Приложение Flask
Затем, создайте файл под названием hello.py со следующим кодом:
Заключение
Теперь вы имеете представление о том, как использовать Python для веб-разработки. Однако обучение на этом не заканчивается. Поэтому продолжайте искать надежные ресурсы, онлайн-курсы и практические проекты, чтобы улучшить свои навыки.