День открытых дверей по курсу «PHP-разработчик» 21.05.2019 в 20:00 | OTUS
Скидки на курсы июня!
Только два дня! Пишите в чат, чтобы получить максимальную скидку ➞
Написать в чат

Курсы

Программирование
Web-разработчик на Python Разработчик на Spring Framework iOS Разработчик. Продвинутый курс v 2.0. PostgreSQL C# ASP.NET Core разработчик Разработчик C# Архитектор программного обеспечения Разработчик C++ MS SQL Server разработчик Android-разработчик. Базовый курс Архитектор высоких нагрузок Backend-разработчик на PHP Алгоритмы для разработчиков Team Lead 2.0 Python-разработчик. Базовый курс VOIP инженер Базы данных Разработчик Golang Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик голосовых ассистентов и чат-ботов Agile Project Manager в IT
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02
Проходил 21 мая 2019 года в 20:00

День открытых дверей
Всё о курсе «Backend разработчик на PHP»

День открытых дверей онлайн

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

Запись

О курсе

PHP-разработчик
60 000 ₽
5 месяцев
Начало 27 июля
  • Глубокое знакомство с библиотеками PHP и особенностями языка
  • Навыки проектирования приложений, работы с базами и файлами, веб-фронтендом
  • Привычку к хорошему и чистому коду
  • Владение тактиками по созданию высоконагруженных систем
Для реализации больших и долгосрочных проектов современному PHP-разработчику необходимо заботиться об архитектуре кода, применять паттерны проектирования, писать код в соответствии с принципами SOLID и поддерживать высокий code coverage своих unit-тестов. …
Программа курса
Модуль 1
Общие знания
Модуль 2
Базы данных
Модуль 3
Практики разработки
Модуль 4
Архитектуры и HighLoad-системы
Модуль 5
Проектный модуль
Общие знания
Модуль направлен на выравнивание имеющихся знаний для работы с курсом, а также расширения понимания окружения, возможностей языка PHP и теоретических основ.
Подготовка к курсу и инфраструктура ПО
0. Познакомиться
1. Организовать рабочее пространство.
2. Сравнить разные типы окружения
3. Научиться работать с простыми Docker-контейнерами
27 июля, 20:00 — 21:30
Linux
после занятия вы сможете:
выровнять знания в области Linux-based серверов.
3 августа, 20:00 — 21:30
Основы PHP. Консольный PHP
выровнять знания языка PHP
работать с консольным PHP
6 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Готовим окружение. К уроку 1.

1. Docker
1.1. Установить Docker себе на машину
1.2. С помощью Dockerfile настроить статический сайт (можно использовать nginx образ)

2. Виртуальные машины. Развернуть Homestead VM при помощи Vagrant и VirtualBox

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

----

К уроку 2

1. Написать консольное приложение (bash-скрипт), который принимает два числа и выводит их сумму в стандартный вывод.
Если предоставлены неверные аргументы (для проверки на число можно использовать регулярное выражение) вывести ошибку в консоль.

- числа для суммирования могут быть отрицательными и вещественными
- если Вы запускаете скрипты на базе Docker под Windows 10, то поведение функции sort по умолчанию отличается от стандартного в linux (числа сортируются как числа, а не как строки)

2. Имеется таблица следующего вида:

id user city phone
1 test Moscow 1234123
2 test2 Saint-P 1232121
3 test3 Tver 4352124
4 test4 Milan 7990923
5 test5 Moscow 908213

Таблица хранится в текстовом файле.

Вывести на экран 3 наиболее популярных города среди пользователей системы, используя утилиты Линукса.

Подсказка: рекомендуется использовать утилиты uniq, awk, sort, head.

----

К уроку 3

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
PHP WebServers
после занятия вы сможете:
выровнять знания о веб-серверах.
13 августа, 20:00 — 21:30
Сети, протоколы. Балансировка. Безопасность.
после занятия вы сможете:
обеспечивать понимание сетевого взаимодействия и отказоустойчивости.
обеспечивать безопасность кода и приложения.
17 августа, 20:00 — 21:30
Командная разработка
после занятия вы сможете:
производить код коллективно.
24 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Веб-серверы и логика. К уроку 4

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. Создать логику, размещаемую в двух контейнерах (server и client), объединённых общим volume. Скрипты запускаются в режиме прослушивания STDIN и обмениваются друг с другом вводимыми сообщениями через unix-сокеты.

----

К уроку 5

1. Приложение верификации email

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

2. Создать как минимум три машины/контейнера
2.1. Балансировщик nginx-upstream
2.2. Балансируемые бэкенды на nginx+php-fpm
Базы данных
Модуль нацелен на активное изучение вопросов выбора, применения и управления хранилищами в проектах, использующих PHP. Происходит тесное знакомство с СУБД PostgreSQL, рассматриваются различные NoSQL хранилища, а также вопросы тюнинга MySQL.
Основные понятия баз данных
после занятия вы сможете:
проанализировать знания о БД.
27 августа, 20:00 — 21:30
PostgreSQL для администратора
после занятия вы сможете:
проанализировать аспекты работы с СУБД.
31 августа, 20:00 — 21:30
PostgreSQL для разработчика
после занятия вы сможете:
организовывать логику на уровне данных.
3 сентября, 20:00 — 21:30
Как устроен PostgreSQL
после занятия вы сможете:
заглянуть под капот СУБД.
7 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Реляционные СУБД. К уроку 7

Спроектируйте схему данных для системы управления кинотеатром
* Кинотеатр имеет несколько залов, в каждом зале идет несколько разных сеансов, клиенты могут купить билеты на сеансы
* Спроектировать базу данных для управления кинотеатром
* Задокументировать с помощью логической модели
* Написать DDL скрипты
* Написать SQL для нахождения самого прибыльного фильма

----

К уроку 9

Спроектировать EAV-хранение для базы данных кинотеатра
4 таблицы: фильмы, атрибуты, типы атрибутов, значения.
Типы атрибутов и соответствующие им атрибуты (для примера):
- рецензии (текстовые значения) - рецензии критиков, отзыв неизвестной киноакадемии ...
- премия (заменяется при печати баннеров и билетов на изображение, логическое значение) - оскар, ника ...
- "важные даты" даты (при печати - наименование атрибута и значение даты, тип дата) - мировая премьера, премьера в РФ ...
- служебные даты (используются при планировании, тип дата) - дата начала продажи билетов, когда запускать рекламу на ТВ ...
View сборки служебных данных в форме (три колонки):
- фильм, задачи актуальные на сегодня, задачи актуальные через 20 дней
View сборки данных для маркетинга в форме (три колонки):
- фильм, тип атрибута, атрибут, значение (значение выводим как текст)

----

К уроку 10

Подготовить список из 6 основных запросов к БД, разработанной на предыдущих занятиях. Целесообразно выбрать 3 "простых" (задействована 1 таблица), 3 "сложных" (агрегатные функции, связи таблиц).
Скрипт для наполнения основных таблиц БД тестовыми данными.
Заполнить таблицы, увеличив общее количество строк текстовых данных до 10000.
Провести анализ производительности запросов к БД, сохранить планы выполнения.
Заполнить таблицы, увеличив общее количество строк текстовых данных до 10000000.
Провести анализ производительности запросов к БД, сохранить планы выполнения.
На основе анализа запросов и планов предложить оптимизации (индексы, структура, параметры и др.), выполнить их, сравнить результат (планы выполнения).
Другие SQL-решения
после занятия вы сможете:
посмотреть на рынок хранилищ.
10 сентября, 20:00 — 21:30
Redis
после занятия вы сможете:
использовать один из самых популярных инструментов кэширования в web.
14 сентября, 20:00 — 21:30
MySQL и форки
после занятия вы сможете:
применять MySQL.
17 сентября, 20:00 — 21:30
PHP и базы данных
объединять код и данные
повысить уровень общения кода с БД
отвязать код от конкретной БД
работать с БД как с абстракцией
21 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
NoSQL, работа PHP с хранилищем. К уроку 11

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

----

К уроку 14

Необходимо реализовать один из паттернов: Table Data Gateway, Raw Data Gateway, Active Record, DataMapper для произвольной таблицы. Паттерн должен содержать метод массового получения информации из таблицы, результат которого возвращается в виде коллекции.
Дополнительно можно использовать паттерн Identity Map для устранения дублирования объектов, ссылающихся на одну строку в БД или Lazy Load для отложенной загрузки связанных записей в таблице или коллекции.
Практики разработки
Модуль изучает всевозможные правила, рекомендации и практики, применяемые в современной разработке: начиная от именования переменных и заканчивая паттернами и алгоритмами, студенты знакомятся с правильной организацией кода PHP-приложений.
Парадигмы программирования
после занятия вы сможете:
использовать фундаментальные принципами построения приложений.
24 сентября, 20:00 — 21:30
Архитектура кода
после занятия вы сможете:
использовать принципы построения взаимодействия сущностей в коде.
28 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Анализ кода. Выберите один из своих проектов
Проведите анализ на предмет соответствия изученным принципам.
Предложите свои варианты исправления.
Design patterns. Часть 1
улучшить понимание паттернов проектирования кода.
1 октября, 20:00 — 21:30
Design patterns. Часть 2
находить в коде паттерны
понимать и применять их
Домашние задания: 1
ДЗ
Паттерны проектирования. 1. Выберите пять из 12 паттернов:
1.1. Абстрактная фабрика
1.2. Адаптер
1.3. Декоратор
1.4. Инверсия зависимости
1.5. Фабричный метод
1.6. Итератор
1.7. Маппер
1.8. Наблюдатель
1.9. Прокси
1.10. Прототип
1.11. Стратегия
1.12. Посетитель

2. Запросите задачи у преподавателя
3. Реализуйте паттерн на базе предложенного кода.
Практики хорошего кода
после занятия вы сможете:
проанализировать понятие "хорошего кода".
5 октября, 20:00 — 21:30
Введение в тестирование
после занятия вы сможете:
объяснить, почему тестирование - залог крепкого сна команды разработки.
8 октября, 20:00 — 21:30
Unit-тестирование
после занятия вы сможете:
рассмотреть один из аспектов автоматического тестирования.
12 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Разработка кейсов тестирования. 1. Скачать файл с заданием https://drive.google.com/file/d/1yAtmj9DE2yFeGh26WxDwr42j7RVbB_PI/view?usp=sharing
2. Внутри файла содержится задача, результат выполнения задачи необходимо сохранить в md-файл или doc-файл.
3. Полученный файл выложить в git, Google Drive или любой другой файлообменник
4. Ссылку на файл прислать в чат с преподавателем
Практикум по тестированию
применение разноуровневых тестов на практике
работа вместе с преподавателем
Алгоритмы
получить фундаментальные знания о классических алгоритмах
использовать деревья, графы и алгоритмы их обработки.
15 октября, 20:00 — 21:30
Архитектуры и HighLoad-системы
Модуль посвящён расширению приложения, его отказоустойчивости, вариантам организации взаимодействия с другими приложениями, а также способам доставки функциональности до Production.
Профилирование, логирование и мониторинг
анализировать работу приложения
строить системы наблюдения за приложениями и серверами
22 октября, 20:00 — 21:30
Очереди. Часть 1
после занятия вы сможете:
использовать основной инструмент работы асинхронных отказоустойчивых приложений - очереди.
26 октября, 20:00 — 21:30
Очереди. Часть 2
настраивать RabbitMQ
использовать встроенные механизмы RabbitMQ
работать с Apache Kafka
Проектирование API
после занятия вы сможете:
объяснить, что такое API и зачем он нужен
29 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
API. Необходимо реализовать Rest API с использованием очередей.
Ваши клиенты будут отправлять запросы на обработку, а вы будете складывать их в очередь и возвращать номер запроса.
В фоновом режиме вы будете обрабатывать запросы, а ваши клиенты периодически, используя номер запроса, будут проверять статус его обработки.

Разрешается
- Использование Composer-зависимостей
- Использование микрофреймворков (Lumen, Silex и т.п.)
Репликация
после занятия вы сможете:
использовать важный инструмент обеспечения отказоустойчивости БД.
2 ноября, 20:00 — 21:30
Шардинг
после занятия вы сможете:
усиливать отказоустойчивость хранилищ.
5 ноября, 20:00 — 21:30
Кеширование
после занятия вы сможете:
усилить знания о кэшировании в Highload-системах.
9 ноября, 20:00 — 21:30
Deploy приложений
после занятия вы сможете:
объяснить понятия деплоя и сборок.
12 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Скрипт деплоя. Используя выбранный инструмент автоматического деплоя, необходимо реализовать автоматическую выкатку написанного ранее мини-приложения на собственный виртуальный сервер.
Практикум по разворачиванию приложений
создавать пайплайны деплоя
настраивать бесшовную доставку ПО
Site Reliability Engineering
после занятия вы сможете:
использовать best practices обеспечения производительности и отказоустойчивости.
16 ноября, 20:00 — 21:30
Проектный модуль
Заключительный месяц курса посвящен проектной работе. Свой проект — это то, что интересно писать слушателю. То, что можно создать на основе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

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

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

Преподаватель

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

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

Навыки:
- разработка Web-приложений;
- кризис-менеджмент;
- построение команд;
- Linux-based системы;
- PHP, Java, JS.
Преподаватель курсов:
PHP-разработчик

F.A.Q.: Наиболее часто задаваемые вопросы:

Нужно ли оплачивать обучение до Дня открытых дверей, если я хочу гарантированно попасть в группу?
Да, мы рекомендуем заранее оплатить обучение, чтобы гарантированно попасть в группу. В период проведения Дня открытых дверей резко возрастает количество желающих обучаться, поэтому может случиться так, что к окончанию Дня открытых дверей мест в группе не останется
Кто будет проводить День открытых дверей?
Проводить День открытых дверей будет преподаватель курса.
Как принять участие в Дне открытых дверей?
Для того, чтобы принять участие в Дне открытых дверей, оставьте свой e-mail в поле регистрации на мероприятие. Перед началом Дня открытых дверей мы пришлем вам ссылку, пройдя по которой, вы сможете присоединиться к вебинару.
Какие вопросы будем обсуждать на Дне открытых дверей?
На дне открытых дверей мы поговорим о проекте OTUS (о программе курса, почему мы не принимаем в группы новичков, почему учиться у нас интересно, но сложно), карьерных перспективах выпускников (почему вероятность карьерного роста у лучших студентов стремится к 100%), учебном процессе (оплатах, оценке знаний, сертификатах и прочих аспектах). Также ведущий мероприятия с радостью ответит на все ваши вопросы.
🎁 Дарим сертификаты на скидку!
Запишитесь на июньскую трансляцию интересного вам дня открытых дверей и участвуйте в Акции ➞