Openbravo-rus.ru

Образование по русски
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Python разработчик обучение

Лучшие фреймворки Python для веб-разработки, которые подойдут начинающим

Python — один из самых популярных и простых для изучения языков программирования и применяется почти везде, в том числе в веб-разработке. Для него есть много фреймворков, часть которых не просто облегчает разработку, но и предоставляет инструменты, позволяющие буквально за пару дней поднять готовый сайт.

Такие фреймворки относятся к категории full stack. Они крутые, в них куча инструментов и всё включено, но это может сделать их тяжёлыми, медленными и негибкими. Кроме фулстек-фреймворков есть и другие, например микро- или асинхронные фреймворки.

Фулстек-фреймворки. Есть всё необходимое для создания приложения — архитектура MVC (Model-View-Controller), имплементация ORM, движок шаблонов, маршрутизация и всё остальное. Такие фреймворки годятся для любых задач, но для мелких проектов можно обойтись и чем-нибудь менее громоздким.

Микрофреймворки. Включают только базовые компоненты и предназначены для быстрой разработки относительно небольших проектов. В них может не быть, например, валидации форм или интерфейса для базы данных, так что что-то придётся дописывать или подключать из сторонних библиотек. Некоторые микрофреймворки легко масштабируются по мере необходимости.

Асинхронные фреймворки. Основной принцип — задачи не обязаны исполняться последовательно: следующая может начать считаться до того, как завершилась предыдущая. Поскольку обычно передача данных пользователю и ожидание его ответа требуют гораздо больше времени, чем собственно работа сервера, такие фреймворки не тратят время на ожидание. Это позволяет им обрабатывать огромное количество соединений одновременно.

Главный плюс фулстек-фреймворков в том, что всё, нужное для полноценного приложения, в них уже есть. Не нужно искать отдельные библиотеки для каждой мелкой задачи и думать о совместимости, поэтому даже начинающие смогут быстро собрать готовое работающее приложение. В этой статье мы расскажем о таких фреймворках.

Django

Высокоуровневый фреймворк, предназначенный для быстрой и эффективной разработки. Его архитектура выстроена так, чтобы максимально экономить ваше время и силы, а в будущем — время и деньги заказчиков. Основные принципы философии Django — DRY и rapid development — стимулируют переиспользование кода и уменьшают избыточность.

  • Контроль версий для баз данных (миграции).
  • Собственный движок шаблонов.
  • Объектно-реляционные отображения (ORM).
  • Маршрутизация URL.
  • Поддержка веб-серверов.
  • Поддержка аутентификации.
  • Поддержка интернационализации.

Плюсы

  • Масса библиотек. Базовую функциональность не нужно писать самому — многое уже написано, остаётся только импортировать соответствующие библиотеки. На качество библиотек Django обычно можно положиться.
  • Сообщество и документация. У Django подробная документация и дружелюбное сообщество, поэтому всегда можно разобраться, что как работает, или спросить у специалистов.
  • Масштабируемость. Если вы понятия не имеете, насколько сильно ваш проект вырастет и вырастет ли вообще (как это обычно и бывает со стартапами), Django позволяет начать с малого и масштабироваться по мере необходимости.

Минусы

  • Django из коробки не поддерживает WebSockets, поэтому он плохо подходит для работы в реальном времени.
  • Готовые библиотеки — это в целом хорошо, но часто они снижают гибкость.

Где используется?

  • Instagram — социальная сеть для обмена фотографиями и видео.
  • Spotify — музыкальная платформа, рекомендующая пользователям музыку в зависимости от их предпочтений.

Django — один из самых популярных фреймворков, многие веб-студии работают именно с ним, поэтому важно уметь его использовать, если вы собираетесь работать в сфере веб-технологий. Изучить его, а также другие необходимые веб-разработчику инструменты, можно на курсе SkillFactory.

Pyramid

Если хочется что-то более минималистичное, то вам может прийтись по вкусу Pyramid. Этот фреймворк подходит для проектов любого размера. В нём есть полезные фичи для создания сложных приложений или масштабирования изначально небольших сайтов под возросшую нагрузку.

  • Удобные инструменты для работы со статичными ассетами.
  • Предикаты и рендереры.
  • Генерация URL.

Плюсы

  • Гибкость и удобство кастомизации. Любой компонент фреймворка, будь то база данных или движок шаблонов, может быть заменён. Можно даже использовать несколько разных компонентов одновременно (например, подключить две разные базы данных).
  • Удобные Ajax-запросы. Благодаря системе декораторов и представлений можно отправлять XHR-запросы без дополнительных усилий со стороны разработчика.
  • Поддержка SQLAlchemy. SQLAlchemy обеспечивает удобную работу с базами данных даже для сложных запросов.

Минусы

  • Требует времени на развёртывание и подготовку к разработке.
  • Чтобы заниматься кастомизацией, надо хорошо разбираться в Pyramid.
  • Для простых приложений SQLAlchemy может быть чересчур громоздкой.

Где используется?

  • Charte.ca — онлайновый редактор графиков для неспециалистов.
  • Easy Blog Networks — хостинг-провайдер.
  • Substance-D — среда разработки веб-приложений.

TurboGears

TurboGears — опенсорсный фреймворк для быстрой разработки приложений, работающих с данными. Он поддерживает SQLAlchemy, Genshi, WebOb, and Repoze, так что TurboGears прекрасно подходит для любой системы, требующей хорошей поддержки баз данных.

  • Поддержка горизонтального секционирования данных.
  • Интеграция с джаваскриптовой библиотекой MochiKit.
  • Поддержка нескольких баз данных одновременно.
  • Поддержка архитектуры MVC.
  • ToscaWidgets.
  • Шаблоны PasteScript.
  • Валидация через FormEncode.

Плюсы

  • Гибкость. TurboGears можно использовать и как микрофреймворк для быстрого прототипирования, и как полноценный фулстек фреймворк для поддержки масштабных проектов.
  • Расширяемость. Можно создавать собственные плагины или дополнять функциональность имеющихся.

Минусы

  • У него так много возможностей для расширения, что в них легко запутаться.

Где используется?

  • Apache Allura — онлайн-платформа для управления репозиториями кода, созданная SourceForge.
  • Kamisons — сайт по продаже зонтов.

Flask

Flask — это WSGI-фреймворк, который подходит и для простых сайтов, и для сложных платформ. Он совместим со сторонними библиотеками и имеет множество расширений.

  • Быстрый встроенный дебаггер.
  • Встроенный dev-сервер.
  • Шаблоны Jinja2.
  • Поддержка REST-запросов.
  • Совместим с любой ORM.
  • Безопасные куки для управления сессией на клиенте.
  • Поддержка юнит-тестов.
  • Соответствует WSGI 1.0.
Читать еще:  Управление строительными проектами обучение

Плюсы

  • Понятный минималистичный фреймворк. Довольно легко разобраться, что именно происходит и какой процесс за что отвечает. Логика работы не меняется от версии к версии.
  • Быстрое прототипирование. Все инструменты, нужные для создания прототипа, работают прямо из коробки.

Минусы

  • Фреймворк относительно низкоуровневый, поэтому в нём надо сперва разобраться, да и требования к уровню программиста выше, чем у остальных. Если хочется не выяснять, что и как работает под капотом, а сразу делать сайты — лучше выбрать что-нибудь другое.

Где используется?

  • Rainist —онлайн-платформа для управления личными финансами.
  • Netflix — одна из крупнейших стриминговых платформ в мире.
  • Lyft — платформа для заказа такси и аренды транспорта.

Tornado

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

  • Есть свой механизм аутентификации, при необходимости можно подключить сторонние.
  • Поддержка переводов и локализации.
  • Работа в реальном времени.

Где используется?

  • Uploadcare — облачный сервис для работы с файлами.

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

Python и его фреймворки — только часть необходимых знаний веб-разработчика. Нужно ещё уметь работать с HTML, CSS, SQL и другими инструментами. Обо всем этом расскажут на курсе SkillFactory, после которого у вас будет базовый набор знаний и умений, чтобы начать работать веб-разработчиком.

Backend — Разработчик (Python) [id20771]

На данный момент в нашей компании открыта позиция Backend — разработчика.

У тебя будет возможность проявить себя в одном из ключевых проектов компании — лидера цифровой трансформации в промышленности. Компания стремится к созданию современных систем работы с информацией с использованием современных технологий и актуальных форматов взаимодействия.

Ты сможешь внести свой вклад в улучшение ключевых бизнес-процессов крупной производственной компании в составе команды профессионалов с богатым опытом в разработке продуктов. И самое важное — ты сможешь увидеть на практике результаты своего труда.

Мы — команда экспертов на стыке профессиональных компетенций в нефтяной отрасли и сфере разработки и менеджмента IT и цифровых решений. Мы — это экспертиза более 10 лет в нефтяной отрасли в компании Газпром нефть, а также более чем 10-летний опыт разработки, дизайна и менеджмента в компаниях сферы IT, среди которых: Яндекс, Яндекс.Деньги и Студия Артемия Лебедева.

В качестве площадки для демонстрации своих лучших качеств ты получишь современный офис в историческом центре Санкт-Петербурга с эргономичными рабочими местами и уютными зонами отдыха.

Что предстоит делать:

— Разрабатывать приложение с web-интерфейсом для анализа данных, моделирования процессов, поиска оптимальных решений на стеке технологий wеb-разработки на Python+React;

— Участвовать в проектировании серверной части приложения, разрабатывать микросервисные компоненты и их взаимодействие, механизмы описания моделей данных, использовать среды распределённых вычислений, разрабатывать API;

— Работать над качеством программных компонент (рефакторинг и оптимизация кода, сode review);

— Разрабатывать интеграционные и функциональные тесты;

— Дорабатывать инструменты и процессы обеспечения жизненного цикла ПО.

Наши ожидания:

— Высшее техническое образование;

— Опыт практического программирования на Python, знание современной экосистемы Python (backend);

— Умение читать и понимать чужой код, справляться с техническим долгом и проводить рефакторинг;

— Опыт работы в среде linux, знание инструментов и процессов

— Опыт использования современных практик и инструментов разработки, включая devops практики, issue tracking, DVCS, автоматической сборки и тестирования, и т.д.

— Практика ответственности за релиз на всех этапах жизненного цикла;

— Понимание принципов масштабирования и построения высоконагруженных систем;

— Опыт работы в области разработке ПО не менее 3 лет;

— Практика работы в команде.

Рассматриваются как плюс:

— Знания в области теории вероятности, математической статистики, теории оптимизации, линейной алгебры;

-Опыт практического программирования go, с++, java;

— Опыт написания промышленного ПО;

— Опыт продуктовой разработки;

— Опыт работы по agile (Scrum, Kanban, SAFe);

Reverse shell на Python. Осваиваем навыки работы с сетью на Python на примере обратного шелла

Содержание статьи

Существует два низкоуровневых протокола, по которым передаются данные в компьютерных сетях, — это UDP (User Datagram Protocol) и TCP (Transmission Control Protocol). Работа с ними слегка различается, поэтому рассмотрим оба.

Протокол UDP предназначен для передачи пакетов от одного узла к другому без гарантии доставки. Пакет данных обычно состоит из двух частей. В одной — управляющая информация, в том числе данные отправителя и получателя, а также коды ошибок. В другой — пользовательская информация, то есть сообщение, которое передается.

Важно здесь то, что UDP не гарантирует доставку пакета (правильнее говоря, датаграммы) указанному узлу, так как между отправителем и получателем не установлен канал связи. Ошибки и потери пакетов в сетях случаются сплошь и рядом, и это стоит учитывать (или в определенных случаях, наоборот, не стоит).

Читать еще:  Управление it проектами обучение

Протокол TCP тоже доставляет сообщения, но при этом гарантирует, что пакет долетит до получателя целым и невредимым.

Переходим к практике

Писать код мы будем на современном Python 3. Вместе с Python поставляется набор стандартных библиотек, из которого нам потребуется модуль socket. Подключаем его.

Дальше мы договоримся, что у нас есть сервер и клиент, где клиентом обычно будет наш компьютер, а сервером — удаленный. В реальности все это условности, и речь может идти о любых двух компьютерах (в том числе виртуальных машинах) или даже просто двух процессах, запущенных локально. Важно только то, что код по разные стороны будет разным.

На каждой из сторон первым делом создаем экземпляр класса socket и устанавливаем для него две константы (параметры).

Используем UDP

Сначала создадим место для обмена данными.

Мы создали объект s , который является экземпляром класса socket. Для этого мы вызвали метод из модуля socket с именем socket и передали ему два параметра — AF_INET и SOCK_DGRAMM . AF_INET означает, что используется IP-протокол четвертой версии. При желании можно использовать IPv6. Во втором параметре для наших целей мы можем указать одну из двух констант: SOCK_DGRAMM или SOCK_STREAM . Первая означает, что будет использоваться протокол UDP. Вторая — TCP.

Сторона сервера

Далее код различается для стороны сервера и клиента. Рассмотрим сначала сторону сервера.

Здесь s.bind((‘127.0.0.1’, 8888)) означает, что мы резервируем на сервере (то есть на нашей же машине) адрес 127.0.0.1 и порт 8888. На нем мы будем слушать и принимать пакеты информации. Здесь стоят двойные скобки, так как методу bind() передается кортеж данных — в нашем случае состоящий из строки с адресом и номера порта.

Далее метод recv() объекта s прослушивает указанный нами порт (8888) и получает данные по одному килобайту (поэтому мы задаем размер буфера 1024 байта). Если на него присылают датаграмму, то метод считывает указанное количество байтов и они попадают в переменную result .

Далее идет всем знакомая функция print() , в которой мы выводим сообщение Message: и декодированный текст. Поскольку данные в result — это текст в кодировке UTF-8, мы должны интерпретировать его, вызвав метод decode(‘utf-8’) .

Ну и наконец, вызов метода close() необходим, чтобы остановить прослушивание 8888-го порта и освободить его.

Таким образом, сторона сервера имеет следующий вид:

Сторона клиента

Здесь все гораздо проще. Для отправки датаграммы мы используем метод класса socket (точнее, нашего экземпляра s ) под названием .sendto() :

У метода есть два параметра. Первый — сообщение, которое ты отправляешь. Буква b перед текстом нужна, чтобы преобразовать символы текста в последовательность байтов. Второй параметр — кортеж, где указаны IP машины-получателя и порт, который принимает датаграмму.

Таким образом, сторона клиента будет выглядеть примерно так:

Тестируем

Для тестирования открываем две консоли, одна у нас будет работать сервером, другая — клиентом. В каждой запускаем соответствующую программу.

Вывод на стороне сервера

На стороне клиента мы ничего увидеть не должны, и это логично, потому что мы ничего и не просили выводить.

Для теста мы передавали сообщение от одного порта другому порту на нашей же машине, но если запустить эти скрипты на разных компьютерах и на стороне клиента указать правильный IP, то все будет работать точно так же.

Используем TCP

Пришло время познакомится с TCP. Точно так же создаем класс s , но в качестве второго параметра будем использовать константу SOCK_STREAM .

Сторона сервера

Снова резервируем порт, на котором будем принимать пакеты:

Дальше появляется незнакомый нам ранее метод listen() . С его помощью мы устанавливаем некую очередь для подключенных клиентов. Например, с параметром .listen(5) мы создаем ограничение на пять подключенных и ожидающих ответа клиентов.

Делаем бесконечный цикл, в котором будем обрабатывать запросы от каждого нового клиента, находящегося в очереди.

Страшновато? Начнем по порядку. Сначала мы создаем обработчик исключения KeyboardInterrupt (остановка работы программы с клавиатуры), чтобы сервер работал бесконечно, пока мы что-нибудь не нажмем.

Метод accept() возвращает пару значений, которую мы помещаем в две переменные: в addr будут содержаться данные о том, кто был отправителем, а client станет экземпляром класса socket . То есть мы создали новое подключение.

Теперь посмотрим вот на эти три строчки:

В них мы останавливаем прослушивание и освобождаем порт, только если сами остановим работу программы. Если прерывания не произошло, то выполняется блок else :

Здесь мы сохраняем пользовательские данные в переменную result, а функцией print() выводим на экран сообщение, которое нам отправлял клиент (предварительно превратив байты в строку Unicode). В результате сторона сервера будет выглядеть примерно так:

Сторона клиента

Со стороной клиента опять же все обстоит проще. После подключения библиотеки и создания экземпляра класса s мы, используя метод connect() , подключаемся к серверу и порту, на котором принимаются сообщения:

Далее мы отправляем пакет данных получателю методом send() :

В конце останавливаем прослушивание и освобождаем порт:

Код клиента будет выглядеть примерно так:

Тестируем

Запустим в двух разных консолях код сервера и код клиента. На выходе мы должны получить примерно то же самое, что и с протоколом UDP.

Читать еще:  Как называется вид машинного обучения который основан

Вывод на стороне сервера

Успех! Поздравляю: теперь тебе открыты большие возможности. Как видишь, ничего страшного в работе с сетью нет. И конечно, не забываем, что раз мы эксперты в ИБ, то можем добавить шифрование в наш протокол.

В качестве следующего упражнения можешь попробовать, например, написать чат на несколько персон, как на скриншоте.

Самодельный чат, вид со стороны сервера

Применяем знания на практике

Я дважды участвовал в InnoCTF, и работа с сокетами в Python очень пригождается при решении задач на взлом. По сути, все сводится к тому, чтобы очень много раз парсить поступающие данные с сервера InnoCTF и правильно их обрабатывать. Данные могут абсолютно любыми. Обычно это математические примеры, разные уравнения и прочее.

Для работы с сервером я использую следующий код.

Здесь мы сохраняем байтовые данные в переменную data , а потом преобразуем их из кодировки ASCII в строчке st = data.decode(«ascii») . Теперь в переменной st у нас хранится то, что нам прислал сервер. Отправлять ответ мы можем, только подав на вход строковую переменную, поэтому обязательно используем функцию str() . В конце у нее символ переноса строки — n . Далее мы все кодируем в UTF-8 и методом send() отправляем серверу. В конце нам обязательно нужно закрыть соединение.

Делаем полноценный reverse shell

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

При этом добавить нам нужно только вызов функции subprocess . Что это такое? В Python есть модуль subprocess, который позволяет запускать в операционной системе процессы, управлять ими и взаимодействовать с ними через стандартный ввод и вывод. В качестве простейшего примера используем subprocess, чтобы запустить блокнот:

Здесь метод call() вызывает (запускает) указанную программу.

Переходим к разработке шелла. В данном случае сторона сервера будет атакующей (то есть наш компьютер), а сторона клиента — атакованной машиной. Именно поэтому шелл называется обратным.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Python разработчик обучение

u041fu0440u0435u043au0440u0430u0441u043du0430u044f u043au043eu043cu0430u043du0434u0430 u0438u0437 u041bu043eu043du0434u043eu043du0430, u043fu043eu0434u0434u0435u0440u0436u0438u0432u0430u0435u043cu0430u044f u043eu0447u0435u043du044c u0441u0435u0440u044cu0451u0437u043du044bu043cu0438 u0438u043du0432u0435u0441u0442u043eu0440u0430u043cu0438, u0438u0449u0435u0442 u043au043eu043bu043bu0435u0433u0443-u0440u0430u0437u0440u0430u0431u043eu0442u0447u0438u043au0430 u0434u043bu044f u0443u0434u0430u043bu0451u043du043du043eu0439 u0440u0430u0431u043eu0442u044b u043du0430 u043fu043eu0441u0442u043eu044fu043du043du043eu0439 u043eu0441u043du043eu0432u0435.

u041au0430u043a u0438u043du0436u0435u043du0435u0440-u043fu0440u043eu0433u0440u0430u043cu043cu0438u0441u0442 u0432 u0441u043eu0441u0442u0430u0432u0435 u0440u0430u0441u043fu0440u0435u0434u0435u043bu0451u043du043du043eu0439 u043au043eu043cu0430u043du0434u044b, u0432u044b u0431u0443u0434u0435u0442u0435 u0440u0430u0431u043eu0442u0430u0442u044c u0441u043eu0432u043cu0435u0441u0442u043du043e u0441 u0438u0441u0441u043bu0435u0434u043eu0432u0430u0442u0435u043bu044fu043cu0438 u0441u0442u0430u0442u0438u0441u0442u0438u0447u0435u0441u043au0438u0445 u0434u0430u043du043du044bu0445 u0438 machine learning u0438u0437 u041au0435u043cu0431u0440u0438u0434u0436u0441u043au043eu0433u043e u0443u043du0438u0432u0435u0440u0441u0438u0442u0435u0442u0430.

u041au043eu043cu0430u043du0434u0430 u0440u0435u0448u0430u0435u0442 u043fu0440u043eu0431u043bu0435u043cu044b u043cu0430u0441u0448u0442u0430u0431u0438u0440u043eu0432u0430u043du0438u044f u0438 u0441u043eu0437u0434u0430u0451u0442 u043du0430u0434u0451u0436u043du0443u044e u043fu043bu0430u0442u0444u043eu0440u043cu0443, u0433u0434u0435 u0432u0430u0448 u043eu043fu044bu0442 u043cu043eu0436u0435u0442 u0431u044bu0442u044c u043fu0440u0438u043cu0435u043du0451u043d u0441u043eu0437u0434u0430u043du0438u0438 u043fu0440u0438u043bu043eu0436u0435u043du0438u0439 SaaS, BigData u0438 Deep Learning.

u0427u0442u043e u0432u0430u0436u043du043e u0434u043bu044f u0434u0430u043du043du043eu0439 u043fu043eu0437u0438u0446u0438u0438:

  • u0421u0435u0440u044cu0451u0437u043du044bu0439 u043eu043fu044bu0442 u0440u0430u0437u0440u0430u0431u043eu0442u043au0438 u041fu041e, u0437u043du0430u043du0438u0435 u043au043bu0430u0441u0441u0438u0447u0435u0441u043au0438u0445 u0430u043bu0433u043eu0440u0438u0442u043cu043eu0432, u043fu043eu043du0438u043cu0430u043du0438u0435 u043fu0440u0438u043du0446u0438u043fu043eu0432 u0440u0430u0431u043eu0442u044b u043eu043fu0435u0440u0430u0446u0438u043eu043du043du044bu0445 u0441u0438u0441u0442u0435u043c u0438 u0441u0435u0442u0435u0439.
  • u0412u043bu0430u0434u0435u043du0438u0435 Java, Scala, Kotlin, Python.
  • u041fu043eu043du0438u043cu0430u043du0438u0435 u0436u0438u0437u043du0435u043du043du043eu0433u043e u0446u0438u043au043bu0430 u0440u0430u0437u0440u0430u0431u043eu0442u043au0438 u043fu0440u043eu0434u0443u043au0442u0430.

u0422u0430u043au0436u0435 u0431u0443u0434u0435u0442 u043fu043bu044eu0441u043eu043c:

  • u0417u043du0430u043du0438u0435 Agile, Lean, Scrum.
  • u0418u043du0442u0435u0440u0435u0441 u043a u043eu0431u043bu0430u0441u0442u044fu043c Data Engineering and Deep Learning.
  • u0411u0430u0437u043eu0432u044bu0435 u0437u043du0430u043du0438u044f u043cu0430u0442u0435u043cu0430u0442u0438u0447u0435u0441u043au043eu0439 u0441u0442u0430u0442u0438u0441u0442u0438u043au0438 u0438 u043cu0430u0448u0438u043du043du043eu0433u043e u043eu0431u0443u0447u0435u043du0438u044f.

Python разработчик обучение

u041cu044b — u043du0435u0431u043eu043bu044cu0448u0430u044f u0440u0430u0441u043fu0440u0435u0434u0435u043bu0435u043du043du0430u044f u043au043eu043cu0430u043du0434u0430, u043au043eu0442u043eu0440u0430u044f u0437u0430u043du0438u043cu0430u0435u0442u0441u044f u0438u043du0442u0435u0440u0435u0441u043du044bu043cu0438, u043du0435u0441u0442u0430u043du0434u0430u0440u0442u043du044bu043cu0438 u0438 u043fu0435u0440u0441u043fu0435u043au0442u0438u0432u043du044bu043cu0438 u043fu0440u043eu0435u043au0442u0430u043cu0438 u0432 u0441u0444u0435u0440u0435 u0432u0435u0431 u043fu0440u0438u043bu043eu0436u0435u043du0438u0439, u043cu0430u0448u0438u043du043du043eu0433u043e u043eu0431u0443u0447u0435u043du0438u044f, u0440u0435u043au043eu043cu0435u043du0434u0430u0442u0435u043bu044cu043du044bu0445 u0441u0438u0441u0442u0435u043c u0438 u0431u043eu043bu044cu0448u0438u0445 u0434u0430u043du043du044bu0445. u041cu044b u043fu043eu043du0438u043cu0430u0435u043c, u0447u0442u043e u0437u0430 u0431u043bu0438u0436u0430u0439u0448u0438u0435 3 u0433u043eu0434u0430 u043cu0438u0440 u0441u0438u043bu044cu043du043e u0438u0437u043cu0435u043du0438u0442u0441u044f, u0431u043bu0430u0433u043eu0434u0430u0440u044f u043du043eu0432u044bu043c u043au043bu0430u0441u0441u0430u043c u0442u0435u0445u043du043eu043bu043eu0433u0438u0439, u043fu043eu044du0442u043eu043cu0443 u0446u0435u043bu0438u043cu0441u044f u0441u0442u0430u0442u044c u0442u0435u043cu0438, u043au0442u043e u0437u0430u0434u0430u0435u0442 u043cu043eu0434u0443 u0438 u0434u0435u043bu0430u0435u0442 u043fu0440u043eu0434u0443u043au0442u044b, u0440u0435u0448u0430u044eu0449u0438u0435 b2b u0438 b2c u0437u0430u0434u0430u0447u0438 u0434u043bu044f u043du0430u0448u0438u0445 u043bu044eu0431u0438u043cu044bu0445 u043au043bu0438u0435u043du0442u043eu0432 u0438 u043fu043eu043bu044cu0437u043eu0432u0430u0442u0435u043bu0435u0439.

u041cu044b u043fu0440u0438u0434u0435u0440u0436u0438u0432u0430u0435u043cu0441u044f u043fu043eu0434u0445u043eu0434u0430 u043a u0440u0430u0437u0440u0430u0431u043eu0442u043au0435 u043au0430u043a u0432 Telegram: u0431u043eu043bu044cu0448u0438u0435 u043fu0440u043eu0434u0443u043au0442u044b u0434u0435u043bu0430u0435u0442 u043cu0430u043bu0435u043du044cu043au0430u044f, u043du043e u043au043eu043cu043fu0435u0442u0435u043du0442u043du0430u044f u043au043eu043cu0430u043du0434u0430. u0412 u043du0430u0448u0435u0439 u0414u041du041a u0434u0435u043bu0430u0442u044c u043fu0440u043eu0434u0443u043au0442u044b u043au0430u0447u0435u0441u0442u0432u0435u043du043du043e u0438 u0443u0434u043eu0431u043du043e u0434u043bu044f u043au043eu043du0435u0447u043du043eu0433u043e u043fu043eu043bu044cu0437u043eu0432u0430u0442u0435u043bu044f. u041cu044b u0443u0432u0435u0440u0435u043du044b, u0447u0442u043e u0445u043eu0440u043eu0448u0430u044f u043eu0431u0449u0430u044f u043au0430u0440u0442u0438u043du0430 u0441u043eu0441u0442u043eu0438u0442 u0438u0437 u043cu043du043eu0436u0435u0441u0442u0432u0430 u043fu0440u043eu0440u0430u0431u043eu0442u0430u043du043du044bu0445 u043cu0435u043bu043au0438u0445 u0434u0435u0442u0430u043bu0435u0439.

u041cu044b u0438u0449u0435u043c u043du043eu0432u043eu0433u043e u0443u0447u0430u0441u0442u043du0438u043au0430 #middle #senior u0432 u043du0430u0448u0443 u0443u0434u0430u043bu0435u043du043du0443u044e u043au043eu043cu0430u043du0434u0443, u0447u0442u043eu0431u044b u043du0430u0440u0430u0441u0442u0438u0442u044c u043fu0440u043eu0434u0443u043au0442u0438u0432u043du043eu0441u0442u044c. u0418u0434u0435u0430u043bu044cu043du044bu0439 u043au0430u043du0434u0438u0434u0430u0442 u0443u0436u0435 u0443u043cu0435u0435u0442 u0440u0430u0431u043eu0442u0430u0442u044c u0432 u0443u0434u0430u043bu0435u043du043du043eu043c u0440u0435u0436u0438u043cu0435. u041fu043eu0440u0442u0440u0435u0442 u0438u0434u0435u0430u043bu044cu043du043eu0433u043e u043au0430u043du0434u0438u0434u0430u0442u0430: u043eu0441u0442u0440u043eu0443u043cu043du044bu0439, u0441u043cu044bu0448u043bu0435u043du044bu0439, u0441u0430u043cu043eu0441u0442u043eu044fu0442u0435u043bu044cu043du044bu0439, u0438u043du0438u0446u0438u0430u0442u0438u0432u043du044bu0439, u0434u043eu0431u0440u044bu0439 u0438 u0432u0435u0441u0435u043bu044bu0439 u0447u043bu0435u043d u043au043eu043cu0430u043du0434u044b. u0421 u0443u0434u043eu0432u043eu043bu044cu0441u0442u0432u0438u0435u043c u043fu043eu0440u0430u0431u043eu0442u0430u0435u043c u0441 u043au0430u043du0434u0438u0434u0430u0442u043eu043c u0438u0437 u0440u0435u0433u0438u043eu043du043eu0432, u0442u0430u043a u043au0430u043a u0432u0435u0440u0438u043c, u0447u0442u043e u043bu0443u0447u0448u0438u0435 u0443u043cu044b u0440u0430u0441u0441u0440u0435u0434u043eu0442u043eu0447u0435u043du044b u043fu043e u0432u0441u0435u0439 u0420u043eu0441u0441u0438u0438.

u0412 u0441u0432u043eu044e u043eu0447u0435u0440u0435u0434u044c u043eu0431u0435u0449u0430u0435u043c u0441u0442u0430u0431u0438u043bu044cu043du044bu0439 u0438 u0445u043eu0440u043eu0448u0438u0439 u0444u0438u043du0430u043du0441u043eu0432u044bu0439 u0434u043eu0445u043eu0434, u0437u0430u0431u043eu0442u0443, u0438u043du0442u0435u0440u0435u0441u043du044bu0435 u043fu0440u043eu043au0430u0447u0438u0432u0430u044eu0449u0438u0435 u043fu0440u043eu0435u043au0442u044b, u0434u043eu0441u0442u043eu0439u043du044bu0445 u043fu0440u043eu0444u0435u0441u0441u0438u043eu043du0430u043bu043eu0432-u043au043eu043bu043bu0435u0433, u0432u043bu0438u044fu0442u0435u043bu044cu043du044bu0435 u043fu0440u043eu0435u043au0442u044b u043du0430 u0441u043eu0432u0440u0435u043cu0435u043du043du044bu0439 u043cu0438u0440, u0433u0438u0431u043au0443u044e u043cu0435u0442u043eu0434u043eu043bu043eu0433u0438u044e u0440u0430u0431u043eu0442u044b u0438 u0432u0437u0430u0438u043cu043eu0434u0435u0439u0441u0442u0432u0438u044f u043au043eu043cu0430u043du0434u044b.

u0422u0440u0435u0431u043eu0432u0430u043du0438u044f u043a u043au0430u043du0434u0438u0434u0430u0442u0443:

  • u041eu043fu044bu0442 u043au043eu043cu043cu0435u0440u0447u0435u0441u043au043eu0439 u0440u0430u0437u0440u0430u0431u043eu0442u043au0438 u043du0435 u043cu0435u043du0435u0435 1 u0433u043eu0434u0430;
  • u0413u043eu0442u043eu0432u043du043eu0441u0442u044c u043fu0440u043eu0434u0435u043cu043eu043du0441u0442u0440u0438u0440u043eu0432u0430u0442u044c u043fu0440u0435u0434u044bu0434u0443u0449u0438u0439 u043eu043fu044bu0442 (u0440u0435u043fu043eu0437u0438u0442u043eu0440u0438u0438, u0434u043eu043au0443u043cu0435u043du0442u0430u0446u0438u044f);
  • u041eu0442u043bu0438u0447u043du043eu0435 u0437u043du0430u043du0438u0435 u0441u043eu0432u0440u0435u043cu0435u043du043du044bu0445 u043fu043eu0434u0445u043eu0434u043eu0432 u0432 u0440u0430u0437u0440u0430u0431u043eu0442u043au0435 u043du0430 Python 3.X;
  • u0423u0432u0435u0440u0435u043du043du044bu0435 u0437u043du0430u043du0438u044f u043fu043e u0432u0437u0430u0438u043cu043eu0434u0435u0439u0441u0442u0432u0438u044e u0441 SQL/MongoDB
  • u041fu043eu043du0438u043cu0430u043du0438u0435 u043eu0440u0433u0430u043du0438u0437u0430u0446u0438u0438 REST API;
  • u041fu043eu043du0438u043cu0430u043du0438u0435 u0432u0437u0430u0438u043cu043eu0434u0435u0439u0441u0442u0432u0438u044f u043au043bu0438u0435u043du0442-u0441u0435u0440u0432u0435u0440u043du044bu0445 u043fu0440u0438u043bu043eu0436u0435u043du0438u0439
  • u041fu043eu043du0438u043cu0430u043du0438u0435 u0430u043bu0433u043eu0440u0438u0442u043cu043eu0432 u0438 u0441u0442u0440u0443u043au0442u0443u0440 u0434u0430u043du043du044bu0445
  • u0412u043bu0430u0434u0435u043du0438u0435 u0438u043du0441u0442u0440u0443u043cu0435u043du0442u0430u043cu0438 u043au043eu043du0442u0440u043eu043bu044f u0432u0435u0440u0441u0438u0439 u0438 u043fu0440u0430u043au0442u0438u043au0430u043cu0438 u0441u043eu0432u043cu0435u0441u0442u043du043eu0439 u0440u0430u0431u043eu0442u044b u0441 u043au043eu0434u043eu043c (git, Gitlab);

u0411u043eu043bu044cu0448u0438u043c u043fu043bu044eu0441u043eu043c u0431u0443u0434u0435u0442:

  • u041eu043fu044bu0442 u0440u0430u0437u0440u0430u0431u043eu0442u043au0438 u0441u043bu043eu0436u043du043eu0439 u0430u0440u0445u0438u0442u0435u043au0442u0443u0440u044b
  • u041du0430u043bu0438u0447u0438u0435 u0431u0430u0437u043eu0432u044bu0445 u043du0430u0432u044bu043au043eu0432 u0440u0430u0431u043eu0442u044b u0432 u043au043eu043cu0430u043du0434u0435
  • u041fu043eu043du0438u043cu0430u043du0438u0435 frontend u0442u0435u0445u043du043eu043bu043eu0433u0438u0439 u0438 u0438u0445 u0432u0437u0430u0438u043cu043eu0434u0435u0439u0441u0442u0432u0438u0435 u0441 API
  • u0423u043cu0435u043du0438u0435 u043fu0435u0440u0435u043du0438u043cu0430u0442u044c u0447u0443u0436u043eu0439 u043eu043fu044bu0442 u0438 u0434u0435u043bu0438u0442u044cu0441u044f u0441u0432u043eu0438u043c u0441 u043au043eu043bu043bu0435u0433u0430u043cu0438;
  • Docker/Docker-Compose, Celery, RabbitMQ
  • u0418u043du0442u0435u0440u0435u0441 u0438u043bu0438 u0443u043cu0435u043du0438u0435 u0440u0430u0431u043eu0442u044b u0441 ML u0444u0440u0435u0439u043cu0432u043eu0440u043au0430u043cu0438 PyTorch u0438 TensorFlow
  • u0412u0437u0430u0438u043cu043eu0434u0435u0439u0441u0442u0432u0438u0435 u0438 u0441u0431u043eu0440 u0434u0430u043du043du044bu0445 u0441u043e u0441u0442u043eu0440u043eu043du043du0438u0445 API u0441u0438u0441u0442u0435u043c

u0427u0442u043e u043du0430u0434u043e u0431u0443u0434u0435u0442 u0434u0435u043bu0430u0442u044c:

  • u0412u0437u0430u0438u043cu043eu0434u0435u0439u0441u0442u0432u043eu0432u0430u0442u044c u0441 u043au043eu043cu0430u043du0434u043eu0439 u0440u0430u0437u0440u0430u0431u043eu0442u0447u0438u043au043eu0432
  • u0420u0430u0437u0440u0430u0431u043eu0442u043au0430 u043du043eu0432u044bu0445 u043fu0440u043eu0435u043au0442u043eu0432 (u0432 u043eu0441u043du043eu0432u043du043eu043c u0438u0441u043fu043eu043bu044cu0437u0443u0435u043c u0430u0441u0438u043du0445u0440u043eu043du043du044bu0435 u043cu0438u043au0440u043eu0444u0440u0435u0439u043cu0432u043eu0440u043au0438, u0432 u0447u0430u0441u0442u043du043eu0441u0442u0438 sanic)
  • u0412u043du043eu0441u0438u0442u044c u0441u0432u043eu0439 u0432u043au043bu0430u0434 u0432 u0440u0430u0437u0432u0438u0442u0438u0435 u043fu0440u043eu0435u043au0442u043eu0432
  • u041fu043eu0441u0442u043eu044fu043du043du043e u043eu0431u0443u0447u0430u0442u044cu0441u044f u0438 u0441u043eu0432u0435u0440u0448u0435u043du0441u0442u0432u043eu0432u0430u0442u044cu0441u044f
Ссылка на основную публикацию
Adblock
detector