Курсы

Курсы в разработке Подготовительные курсы
Работа в компаниях Компаниям Блог +7 499 110-61-65

Backend-разработчик на PHP

Современные инструменты и лучшие практики для глубокого понимания процесса разработки на PHP

Длительность

5 месяцев

Начало занятий

В ноябре

Продолжительность
5 месяцев, 4 академ. часа в неделю
Начало занятий
В ноябре
Что даст вам этот курс


  • Глубокое знакомство с библиотеками PHP и особенностями языка

  • Навыки проектирования приложений, работы с базами и файлами, веб-фронтендом

  • Привычку к хорошему и чистому коду

  • Владение тактиками по созданию высоконагруженных систем

Для реализации больших и долгосрочных проектов современному PHP-разработчику необходимо заботиться об архитектуре кода, применять паттерны проектирования, писать код в соответствии с принципами SOLID и поддерживать высокий code coverage своих unit-тестов. Но профессия PHP Backend Developer требует знаний не только языка PHP, а ещё знаний инструментов, таких как базы данных, очереди, кеш-сервера, без которых немыслимо современное веб-приложение.


41 работодатель

Практический выпускной проект в команде или в одиночку

Множество практических домашних заданий, охватывающих полный набор тем

Авторская программа

Проектная работа от компании партнера:

Система обработки входящих писем

Реализовать сервис, который читает входящую почту (Imap протокол) и обнаруживает письма соответствующие определенным шаблонам.
При обнаружении письма отправлять POST запрос на определенный адрес.

Преподаватели
Александр Пряхин
Игорь Саханков
Разработчик в Booking.com
Михаил Каморин
Илья Нуруллин
GS Software House
Никита Попов
Inspiritum
Василий Никонов
Профессиональный Партнёр

Технический директор E-Commerce проекта с бэкграундом разработки и технического обеспечения веб-приложений. В профессиональном программировании прошел долгий путь от Junior Developer до CTO.

Окончил факультет прикладной математики и физики МАИ (НИУ). Имеет преподавательский опыт в Московском Авиационном институте, а также на базе нескольких платформ дополнительного образования. Разработал различные обучающие курсы: от изучения языка PHP до построения масштабируемых систем и архитектур.



Навыки
Разработка Web-приложений
Кризис-менеджмент
Построение команд
Linux-based системы
PHP, Java, JS

Инженер-программист с более чем 6-летним опытом программирования.

Работал в крупных российских и заграничных компаниях. Являлся техническим руководителем и архитектором проекта для крупного банка.

Магистр по программе MSIT SE CMU Университета Иннополис. В настоящее время является разработчиком в Booking.com.

Закончил факультет вычислительной математики и кибернетики МГУ им. М. В. Ломоносова

Работаю team lead / senior PHP developer в ГК "Urban Intel". Разработал с командой движок поверх Laravel для RAD (rapid application development) на базе мета-программирования и кодогенерации, успешно применяем и расширяем его уже почти 3 года.

Программирую более 18 лет, 10 лет в B2B-разработке, опыт с PHP 7+ лет, с Laravel 3+ лет.

Опыт программирования: 10 лет, из них 6 лет коммерческой разработки.
Первые программы начал писать в 10 лет.
Работал в веб-студии LineApp в должности веб-разработчика, в банке Урал ФД в должности ведущего инженера-программиста, при этом решал очень разные задачи, включая продумывание и разработку архитектуры, администрирование серверов, разработку приложений, написание технической документации, разработку сложных SQL скриптов.
На данный момент работаю в интернациональной команде веб-разработчиков GS Software House.
Из последних проектов: https://yokl.ru/ - интернет-магазин с очень сложной системой ценообразования, https://aminos.ai/ - платформа для создания собственного чат-бота.
Основной стек:
PHP 5 & 7, Laravel 5, Vue 2, ECMAScript 2018 (JS), MySQL 5.7, Bootstrap 3 & 4, Semantic UI, jQuery.

PHP-разработчик в компании в Inspiritum, занимается контейнеризацией сервисов, автоматизацией задач, фильтрацией мобильного трафика, подключением к международным операторам. Знаком с современными решениями и технологиями: docker, clickhouse, postgresql, redis, rabbitmq. Участвовал как в создании проектов с нуля, так и в реализации крупных проектов.

Ранее работал в GlobeXY и Drom.ru, создавал микросервисы, дорабатывал виджеты и логику на серверах, разрабатывал внутренние проекты компании в сотрудничестве с мобильным разработчиком.

Обучал студентов в качестве репетитора, преподавал высшую математику, MySQL, C++, C#. Окончил Национальный исследовательский Томский политехнический университет по специальности «Прикладная математика и информатика».

Заместитель начальника ИТ-отдела в компании «Профессиональный Партнёр»

Опытный PHP-разработчик и апологет системного подхода. Специализируется на автоматизации внутренних бизнес-процессов в финансовом секторе. Решает задачи формализации и описания процессов, а также проектирования, хранения и обработки данных.

Занимался PHP-разработкой в связке с PostgreSQL. Есть интересный опыт по обработке OpenData.

Одно из направлений профессиональной деятельности — офлайн- и онлайн-преподавание.

Александр
Пряхин
Игорь
Саханков
Михаил
Каморин
Илья
Нуруллин
Никита
Попов
Василий
Никонов
Преподаватели
Александр Пряхин

Технический директор E-Commerce проекта с бэкграундом разработки и технического обеспечения веб-приложений. В профессиональном программировании прошел долгий путь от Junior Developer до CTO.

Окончил факультет прикладной математики и физики МАИ (НИУ). Имеет преподавательский опыт в Московском Авиационном институте, а также на базе нескольких платформ дополнительного образования. Разработал различные обучающие курсы: от изучения языка PHP до построения масштабируемых систем и архитектур.



Навыки
Разработка Web-приложений
Кризис-менеджмент
Построение команд
Linux-based системы
PHP, Java, JS

Игорь Саханков
Разработчик в Booking.com
Инженер-программист с более чем 6-летним опытом программирования.

Работал в крупных российских и заграничных компаниях. Являлся техническим руководителем и архитектором проекта для крупного банка.

Магистр по программе MSIT SE CMU Университета Иннополис. В настоящее время является разработчиком в Booking.com.

Михаил Каморин
Закончил факультет вычислительной математики и кибернетики МГУ им. М. В. Ломоносова

Работаю team lead / senior PHP developer в ГК "Urban Intel". Разработал с командой движок поверх Laravel для RAD (rapid application development) на базе мета-программирования и кодогенерации, успешно применяем и расширяем его уже почти 3 года.

Программирую более 18 лет, 10 лет в B2B-разработке, опыт с PHP 7+ лет, с Laravel 3+ лет.

Илья Нуруллин
GS Software House
Опыт программирования: 10 лет, из них 6 лет коммерческой разработки.
Первые программы начал писать в 10 лет.
Работал в веб-студии LineApp в должности веб-разработчика, в банке Урал ФД в должности ведущего инженера-программиста, при этом решал очень разные задачи, включая продумывание и разработку архитектуры, администрирование серверов, разработку приложений, написание технической документации, разработку сложных SQL скриптов.
На данный момент работаю в интернациональной команде веб-разработчиков GS Software House.
Из последних проектов: https://yokl.ru/ - интернет-магазин с очень сложной системой ценообразования, https://aminos.ai/ - платформа для создания собственного чат-бота.
Основной стек:
PHP 5 & 7, Laravel 5, Vue 2, ECMAScript 2018 (JS), MySQL 5.7, Bootstrap 3 & 4, Semantic UI, jQuery.

Никита Попов
Inspiritum
PHP-разработчик в компании в Inspiritum, занимается контейнеризацией сервисов, автоматизацией задач, фильтрацией мобильного трафика, подключением к международным операторам. Знаком с современными решениями и технологиями: docker, clickhouse, postgresql, redis, rabbitmq. Участвовал как в создании проектов с нуля, так и в реализации крупных проектов.

Ранее работал в GlobeXY и Drom.ru, создавал микросервисы, дорабатывал виджеты и логику на серверах, разрабатывал внутренние проекты компании в сотрудничестве с мобильным разработчиком.

Обучал студентов в качестве репетитора, преподавал высшую математику, MySQL, C++, C#. Окончил Национальный исследовательский Томский политехнический университет по специальности «Прикладная математика и информатика».

Василий Никонов
Профессиональный Партнёр
Заместитель начальника ИТ-отдела в компании «Профессиональный Партнёр»

Опытный PHP-разработчик и апологет системного подхода. Специализируется на автоматизации внутренних бизнес-процессов в финансовом секторе. Решает задачи формализации и описания процессов, а также проектирования, хранения и обработки данных.

Занимался PHP-разработкой в связке с PostgreSQL. Есть интересный опыт по обработке OpenData.

Одно из направлений профессиональной деятельности — офлайн- и онлайн-преподавание.

Необходимые знания

- Опыт разработки на PHP от одного года или опыт разработки на другом языке от 3 лет (приветствуются любые языки ООП).
- Знание основных структур данных и алгоритмов, принципов ООП, опыт работы с базами данных и понимание основ веб-разработки облегчат прохождение курса для программиста, но не являются обязательными.
Процесс обучения
Продолжительность курса 5 месяцев, четыре из которых - обучение, а на пятом учащиеся разделятся на команды и будут реализовывать микросервис, используя гибкие методологии разработки.

Формат проведения занятий - 2 раза в неделю по 2 академических часа (1.5 астрономических часа) и 4 академических часа на домашнюю работу в неделю.
Программа обучения
Модуль 1
General Knowledge
Модуль 2
Databases
Модуль 3
Developing
Модуль 4
Architecture & HighLoad
Модуль 5
Проектный модуль
General Knowledge
Тема 1: Подготовка к курсу
познакомиться
Тема 2: Виртуализация, контейнеры и облачные вычисления
организация рабочего пространства
Домашние задания: 1
1 Docker, виртуализация и облака
Цель: Учимся работать с инфраструктурой
Тема 3: Linux
выровнять знания в области Linux-based серверов
Домашние задания: 1
1 Bash-скрипты
Цель: Учимся писать скрипты
Тема 4: Основы PHP
выровнять знания языка PHP
Домашние задания: 1
1 Готовим окружение
1. Необходимо установить любое расширение через pecl и через make (xdebug, redis)
- прислать скриншот команды pecl list, где должно значиться расширение + вывод функции `php -i | grep "ваше расширение"`
- прислать вывод команды make, т.е. `make > make_output.txt` + вывод функции `php -i | grep "ваше расширение"`
2. Необходимо создать свой пакет, и выложить в git и/или на packagist.org
- прислать команду для клонирования с гита
- прислать команду для установки через composer
3. Создать Docker-образ для работы
Необходимо создать образ, который будет включать:
- образ php, берем с https://hub.docker.com/_/php/
- необходимые утилиты (git, curl, wget, grep...)
- установленный composer
- установленные расширения redis, memcached, pecl_http, pdo_pgsql
Тема 5: PHP in CLI
научиться работать с консольным PHP
Домашние задания: 1
1 Сокеты
Написать два PHP скрипта, который запускаются на одной машине и обмениваются сообщениями через unix-сокеты
Тема 6: PHP WebServers
выровнять знания о веб-серверах
Домашние задания: 1
1 Простое веб-приложение в docker
1. Используя Docker, вы описали сборку двух контейнеров – один с nginx, второй – с php-fpm и вашим кодом.
Используя docker-compose вы запускаете оба контейнера.
Контейнер с nginx пробрасывает 80 порт на вашу хостовую машину и ожидает соединений.
Клиент соединяется, и шлёт следующий HTTP-запрос:

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 48

string=(()()()()))((((()()()))(()()()(((()))))))

String - это POST-параметр, который можно проверять:
1.1. [ обязательно ] На длину и непустоту
1.2. [ по желанию ] На корректность кол-ва открытых и закрытых скобок

Все запросы с динамическим содержимым (*.php) nginx, используя директиву fastcgi_pass, проксирует в контейнер с php-fpm и вашим кодом.
Nginx должен обрабатывать запросы не обращая внимания на директиву Host. После обработки,
• если строка корректна, то пользователю возвращается ответ 200 OK, с информационным текстом, что всё хорошо;
• если строка некорректна, то пользователю возвращается ответ 400 Bad Request, с информационным текстом, что всё плохо.

2. Развернуть на двухконтейнерном окружении (nginx+php-fpm) базовую установку Laravel.
https://laravel.com/docs/5.8/installation
Тема 7: Сети, протоколы. Балансировка
обеспечить понимание сетевого взаимодействия и отказоустойчивости
23 сентября, 20:00 — 21:30
Лектор: Александр Пряхин
Домашние задания: 1
1 Работа с Web-серверами
1. Приложение верификации email

1.1. Реализовать приложение (сервис/функцию) для верификации email.
1.2. Реализация будет в будущем встроена в более крупное решение.
1.3. Минимальный функционал - список строк, которые необходимо проверить на наличие валидных email.
1.4. Валидация по регулярным выражения и проверке DNS mx записи, без полноценной отправки письма-подтверждения.

2. Создать как минимум три машины/контейнера
2.1. Балансировщик nginx-upstream
2.2. Балансируемые бэкенды на nginx+php-fpm
Тема 8: Безопасность
обеспечение безопасности кода и приложения
26 сентября, 20:00 — 21:30
Лектор: Александр Пряхин
Домашние задания: 1
1 Сканер уязвимостей (OpenVAS)
Установить сканер уязвимостей OpenVAS (использовать готовые сборки или собрать самостоятельно).
Просканировать свои проекты.
Результат работы сканера в PDF в чат по ДЗ.
Если найдены уязвимости - внести исправления (код, настройки). Повторное сканирование, результат работы сканера в PDF в чат по ДЗ.
Рекомендуем использовать на регулярной основе.

Если своего проекта нет, то выбираем сайт (желательно что-то небольшое - там больше вероятность что-то найти), и строим отчёт с рекомендациями.
Тема 9: Командная разработка
научиться производить код коллективно
30 сентября, 20:00 — 21:30
Лектор: Александр Пряхин
Databases
Тема 1: Основные понятия баз данных
выравниваем знания о БД
3 октября, 20:00 — 21:30
Домашние задания: 1
1 Необходимо спроектировать схему базы данных для одного из предложенных проектов.
Спроектировать базу данных, для планировщика задач (каких угодно на ваш выбор).
Тема 2: PostgreSQL для администратора
углубляемся в аспекты работы с СУБД
7 октября, 20:00 — 21:30
Тема 3: PostgreSQL для разработчика
научиться организовывать логику на уровне данных
10 октября, 20:00 — 21:30
Домашние задания: 1
1 Продолжаем работать с базами данных
1. Вам предоставлена Футбольная база данных группого тура чемпионата Мира по футболу 2018 года.
Придумайте и сформулируйте 10 вопросов по этой базе данных и составьте SQL запросы для нахождения ответов.
Приложите ссылку на файл с вопросами и запросами. Работы будут проверяться с обратной связью.

2. EAV-хранение для базы данных кинотеатра
Тема 4: Как устроен PostgreSQL
заглянуть под капот СУБД
14 октября, 20:00 — 21:30
Домашние задания: 1
1 Индексы, XML и PHP.
Создать большую базу данных из XML файлов.
Создать РНР скрипт для генерации данных.
Создать/удалить индексы, проверить время выполнения запросов
Тема 5: Другие SQL-решения
посмотреть на рынок хранилищ
17 октября, 20:00 — 21:30
Тема 6: MongoDB
углубляемся в NoSQL
21 октября, 20:00 — 21:30
Тема 7: Redis
изучаем один из самых популярных инструментов кэширования в web
24 октября, 20:00 — 21:30
Домашние задания: 1
1 Навыки работы с NoSQL
1. Создать приложение для анализа каналов на Youtube:
1.1. Создать структуру/структуры хранения информации о канале и видео канала в mongoDB, описать в виде JSON с указанием типов полей. Описать какие индексы понадобятся в данной структуре?
1.2. Создать необходимые модели для добавления и удаления данных из коллекций
1.3. Реализовать класс статистики, который может возвращать:
- Суммарное кол-во лайков и дизлайков для канала по всем его видео
- Топ N каналов с лучшим соотношением кол-во лайков/кол-во дизлайков
1.4*. Можно создать паука, который будет ходить по Youtube и наполнять базу данными

2. Аналитик хочет иметь систему со следующими возможностями:
2.1. Система должна хранить события, которые в последующем будут отправляться сервису событий
2.2. События характеризуются важностью (аналитик готов выставлять важность в целых числах)
2.3. События характеризуются критериями возникновения. Событие возникает только если выполнены все критерии его возникновения. Для простоты все критерии заданы так: <критерий>=<значение>

Таким образом предположим, что аналитик заносит в систему следующие события:
{
priority: 1000,
conditions: {
param1 = 1
},
event: {
::event::
},
},
{
priority: 2000,
conditions: {
param1 = 2,
param2 = 2
},
event: {
::event::
},
},
{
priority: 3000,
conditions: {
param1 = 1,
param2 = 2
},
event: {
::event::
},
},

От пользователя приходит запрос:
{
params: {
param1 = 1,
param2 = 2
}
}

Под этот запрос подходят первая и третья запись, т.к. в них обеих выполнены все условия, но приоритетнее третья, так как имеет больший priority.

Написать систему, которая будет уметь:
1) добавлять новое событие в систему хранения событий
2) очищать все доступные события
3) отвечать на запрос пользователя наиболее подходящим событием
4) использовать для хранения событий redis
Тема 8: PHP и базы данных
объединяем код и данные
28 октября, 20:00 — 21:30
Домашние задания: 1
1 Реализация одного из паттернов работы с хранилищем данных
Необходимо реализовать один из паттернов: Table Data Gateway, Raw Data Gateway, Active Record, DataMapper для произвольной таблицы. Паттерн должен содержать метод массового получения информации из таблицы, результат которого возвращается в виде коллекции.
Дополнительно можно использовать паттерн Identity Map для устранения дублирования объектов, ссылающихся на одну строку в БД или Lazy Load для отложенной загрузки связанных записей в таблице или коллекции.
Developing
Тема 1: Парадигмы программирования
познакомиться с фундаментальными принципами построения приложений
7 ноября, 20:00 — 21:30
Тема 2: Архитектура кода
знакомство с принципами построения взаимодействия сущностей в коде
11 ноября, 20:00 — 21:30
Тема 3: Design patterns
узнать или улучшить понимание паттернов проектирования кода
14 ноября, 20:00 — 21:30
Тема 4: Практики хорошего кода
чуть ближе подойти к понятию "хорошего кода"
18 ноября, 20:00 — 21:30
Домашние задания: 1
1 Анализ своих проектов
Выберите один из своих проектов
Проведите анализ на предмет соответствия изученным принципам.
Предложите свои варианты исправления.
Тема 5: Введение в тестирование
узнать, почему тестирование - залог крепкого сна команды разработки
21 ноября, 20:00 — 21:30
Домашние задания: 1
1 None
Разработанное ранее мини приложение необходимо покрыть unit-тестами, используя PHPUnit и добиться code coverage в минимум 70%
Тема 6: Unit-тестирование
чуть глубже рассмотрим один из аспектов автоматического тестирования
25 ноября, 20:00 — 21:30
Тема 7: Алгоритмы. Начало
получить фундаментальные знания о классических алгоритмах
28 ноября, 20:00 — 21:30
Тема 8: Алгоритмы. Продолжение
узнать о деревьях, графах и алгоритмах их обработки
2 декабря, 20:00 — 21:30
Домашние задания: 1
1 Паттерны и алгоритмы
1. Паттерны
1.1. Спроектируйте систему классов для работы с заказами и скидками
1.2. Заказ может быть разных типов (b2b, b2c, например)
1.3. Заказ привязан к клиенту
1.4. Заказ состоит из 1 и более товаров
1.5. Товары упаковываются в 1 и более посылок
1.6. К финальной стоимости заказа могут применять различные скидки (купоны, бесплатные товары, бесплатная доставка)
1.7. У заказа есть службы доставки со своей стоимостью услуги

2. Алгоритмы
2.1. Реализуйте алгоритм хранения Nested Sets
Architecture & HighLoad
Тема 1: Профилирование и логирование
учимся анализировать работу приложения
19 декабря, 20:00 — 21:30
Тема 2: Очереди
изучить основной инструмент работы асинхронных отказоустойчивых приложений - очереди
12 декабря, 20:00 — 21:30
Домашние задания: 1
1 API
Используя мини-приложение, разработанное в прошлом модуле, необходимо реализовать Rest API с использованием очередей. Ваши клиенты будут отправлять запросы на обработку, а вы будете складывать их в очередь и возвращать номер запроса. В фоновом режиме вы будете обрабатывать запросы, а ваши клиенты периодически, используя номер запроса, будут проверять статус его обработки.
Тема 3: Проектирование API
узнать, что такое API и зачем он нужен
16 декабря, 20:00 — 21:30
Тема 4: Репликация
изучить важный инструмент обеспечения отказоустойчивости БД
23 декабря, 20:00 — 21:30
Тема 5: Шардинг
усиливаем отказоустойчивость хранилищ
26 декабря, 20:00 — 21:30
Тема 6: Кеширование
усилить знания о кэшировании в Highload-системах
30 декабря, 20:00 — 21:30
Тема 7: Deploying
познакомиться с понятиями деплоя и сборок
9 января, 20:00 — 21:30
Домашние задания: 1
1 Скрипт деплоя
Используя выбранный инструмент автоматического деплоя, необходимо реализовать автоматическую выкатку написанного ранее мини-приложения на собственный виртуальный сервер.
Тема 8: Site Reliability Engineering
узнать о best practices обеспечения производительности и отказоустойчивости
13 января, 20:00 — 21:30
Проектный модуль
Заключительный месяц курса посвящен проектной работе. Свой проект — это то, что интересно писать слушателю. То, что можно создать на основе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

Проект должен стать примером кода, который можно показывать потенциальным работодателям.

Например:
1. Система для обучения работы на PHP (аналог CodeAcademy + HackerRank)
2. Bot в телеграмм, позволяющий найти перелеты/отели
3. Анализ GitHub на наличие интересных проектов (рост коммитов, звездочек). Как продолжение поиск лучших контрибьютеров
4. Создать масштабируемую новостную ленту с множеством интеграций
5. Свой проект
Тема 1: Консультация по проектам
Обсуждение тем проектов, вопросы и ответы
16 января, 20:00 — 21:30
Домашние задания: 1
1 Проект
Тема 2: Презентация проектов
Подведение итогов курса и презентация реализованных проектов
10 февраля, 20:00 — 21:30
Выпускной проект
Заключительный месяц курса посвящен проектной работе. Свой проект — это то, что интересно писать слушателю. То, что можно создать на основе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

Проект должен стать примером кода, который можно показывать потенциальным работодателям.

Например:
1. Система для обучения работы на PHP (аналог CodeAcademy + HackerRank)
2. Bot в телеграмм, позволяющий найти перелеты/отели
3. Анализ GitHub на наличие интересных проектов (рост коммитов, звездочек). Как продолжение поиск лучших контрибьютеров
4. Создать масштабируемую новостную ленту с множеством интеграций
5. Свой проект
Прошедшие открытые вебинары по курсу
Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.
Окружение веб-приложений: виртуальные машины, контейнеры, облачные решения
Александр Пряхин
Разработка высоконагруженных систем на PHP
Игорь Саханков
После обучения вы
- получите полное представление о разработке больших и высоконагруженных веб-приложений
- получите материалы по всем занятиям (видеозаписи занятий, презентации, примеры кодов)
- существенно повысите свою компетенцию в сфере разработки на PHP
- научитесь разрабатывать коммерческие приложения самостоятельно и в команде
- получите сертификат об окончании курса
- получите приглашение пройти собеседование в компаниях-партнерах (в случае успешного обучения на курсе)
Дата выдачи сертификата: 21 мая 2020 года
Ваш сертификат

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «Backend-разработчик на PHP»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018г.

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «Backend-разработчик на PHP»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018г.