Проходил 19 июля в 20:00

День открытых дверей
Backend разработчик на PHP

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

Хотите узнать, почему OTUS – больше, чем просто образовательный портал?
Как OTUS дает возможность стать частью сообщества профессионалов и сделать новый шаг по карьерной лестнице?
Почему учиться – не обязанность, а удовольствие и почему тесное сплетение теории и практики в обучении дает эффект синергии?
Приходите к нам на День Открытых Дверей. Формат проведения – онлайн – подключиться можно из любой точки мира!
Преподаватель
Евгений Волосатов

Запись

О курсе

Backend разработчик на PHP
50 000 ₽
Начало в феврале 2019 года
Более 80% сайтов всего мира используют PHP, что позволяет сказать, что он является лидирующим языком программирования для реализации веб-приложений. Высокая скорость разработки и простота эксплуатации, но при этом высокая производительность, позволяют использовать его в проектах любой степени сложности от простого сайта-визитки до крупной социальной сети. Изначально позиционирующийся как набор CGI-скриптов для отслеживания посещений веб-резюме Расмуса Лердорфа, язык PHP прошёл долгий ...
Программа курса
Модуль 1
General Knowledge
Модуль 2
Databases
Модуль 3
Developing
Модуль 4
Architecture & HighLoad
General Knowledge
Подготовка к курсу
Подготовимся к прохождению курса, вспомним Git и GitHub. Поговорим об истории развития PHP от PHP/FI до PHP7, узнаем, куда делся PHP6 и перейдём к внутреннему устройству интерпретатора. Затронем zval и garbage collector.
Домашние задания: 1
ДЗ
Четыре задания. В слаке опубликовано 4 задания.
Выполнить и отчитаться здесь о завершении каждого.
Написать, на сколько баллов вы оцениваете свою работу по каждому пункту, по 5 бальной системе.
Оценку поставить себе в google-docs ведомости PHP Homework.
Менеджеры пакетов
Продолжим узнавать устройство интерпретатора PHP, обсудим подходы к его конфигурированию. После этого перейдём к модулям и менеджерам пакетов, в частности, обсудим Zend Extensions, работу с PEAR и PECL, научимся собирать свой собственный PHAR. Отдельное внимание уделим менеджеру зависимостей composer. Поговорим об autoloading и SEMVER.
Домашние задания: 4
ДЗ
5. Модель памяти и Менеджер пакетов.. 5. Модель памяти и Менеджер пакетов.
1 модуль. 2 занятие. 5 задание. До 5 августа.

ЧТО НУЖНО СДЕЛАТЬ.
1. Прослушать первую часть лекции автора курса о модели памяти, с 1 по 36 минуту.
2. Прослушать вторую часть с 37 минуты до 1:50 про особенности работы с GIT.
3. И прослушать третью часть с 1:50 до конца про работу с Composer.
Ответить на вопросы:
4. Что нового вы узнали? Перечислите.
5. Что для вас показалось самым сложным?
6. Как эти знания вы сможете применить на практике?
7. Прочитайте ответы коллег, поставьте лайк и прокомментируйте их
работу отдельными сообщениями, сообщения начинайте с имени адресата.
8. Посчитайте сумму набранных баллов, зафиксируйте её в доксе и пришлите отчёт в чат с пр.

ЗАЧЕМ ЭТО ДЕЛАТЬ.
Артём рассказывает очень много полезного методического материала
и разных профессиональных штучек, которые сложно найти просто так.
Поэтому крайне рекомендую прослушать и проработать его лекцию.
Ответы на вопросы помогают произвести рефлексию и лучше осознать услышанное.
Просмотр ответов коллег и комментирование расширяет кругозор и способствует инсайтам.

КАК НАПИСАТЬ ОТЧЁТ
1. Какие разделы вы прослушали? 1-2-3
4. Ответ на 4 пункт.
5. Ответ на 5 пункт.
6. Ответ на 6 пункт.
7. Перечислить имена коллег, кому вы дали обратную связь.
8. Написать сумму набранных баллов.

СИСТЕМА ОЦЕНИВАНИЯ
+1 просмотрена первая часть лекции
+1 просмотрена вторая часть лекции
+1 просмотрена третья часть лекции
+1 написан ответ на 4 и 5 пункт
+1 написан ответ на 6 пункт
+5 оставлены комментарии 5 разным сокурсникам, по +1 за каждого
-3 минус балл за каждую просроченную неделю.
ДЗ
6. Подготовить Linux машину с РНР для следующей лекции.. 6. Подготовить Linux машину с РНР для следующей лекции.
1 модуль. 2 занятие. 6 задание. До 5 августа.

ЧТО НУЖНО СДЕЛАТЬ.
1. Обеспечить себе рабочее место на Linux системе.
2. Попрактиковаться в установке и настройке VirtualBox + Vagrant.
3. Попрактиковаться в установке и настройке Docker.
4. Прочитать ответы коллег, поставить лайк и прокомментировать их работу отдельными сообщениями, сообщения начинать с имени адресата.
5. Посчитать сумму набранных баллов, зафиксировать её в доксе, прислать отчёт в чат с пр.

ЗАЧЕМ ЭТО ДЕЛАТЬ.
Мы переходим к разделу по работе в системе Linux.
Поэтому наша главная задача к следующему уроку -
чтобы у вас была рабочая машина на Linux с РНР.
Это можно сделать разными способами:
1. Установить на компьютер операционную систему,
2. Использовать VirtualBox и Vargrant.
3. Использовать Docker.
Профессионал должен знать разные способы достижения цели,
поэтому лучше всего попрактиковать разные подходы.

КАК НАПИСАТЬ ОТЧЁТ
1. Написать, какая система у вас приготовлена для работы.
2. Какие были сложности при установке Vagrant? приложите скриншот.
3. Какие были сложности при установке Docker, приложите скриншот.
4. Перечислить имена коллег, кому вы дали обратную связь.
5. Написать сумму набранных баллов.

СИСТЕМА ОЦЕНИВАНИЯ
+1 балл - у вас есть машина для экспериментов (даже если вы специально ничего не делали)
+2 балла - вы попрактиковались и установили VirtualBox и Vagrant.
+2 балла - вы попрактиковались и установили рабочее окружение через Docker.
+5 оставлены комментарии 5 разным сокурсникам, по +1 за каждого
-3 минус балл за каждую просроченную неделю.
ДЗ
7. Создать простой Composer-пакет.. 7. Создать простой Composer-пакет.
1 модуль. 2 занятие. 7 задание. До 5 августа.

ЧТО НУЖНО СДЕЛАТЬ
1. проработать материал 2 вебинара
2. создать свой собственный пакет,
3. загрузить его на гитхаб,
4. зарегистрировать в packagist
5. создать новый проект, который использует вашу библиотеку, как подключаемый модуль.
6. Подключить и протестировать модули сокурсников, приложить скриншот.
7. Посмотреть работы коллег и поставить им лайки.
8. Посчитать сумму набранных баллов, зафиксировать её в доксе, прислать отчёт в чат с пр.

ЗАЧЕМ ЭТО НУЖНО ДЕЛАТЬ
Чтобы потренироваться в создании и использовании пакетов.

СИСТЕМА ОЦЕНИВАНИЯ
+1 балл создан пакет
+1 балл загружен на гитхаб
+1 балл зарегистрирован в packagist
+1 балл протестирована работа в отдельной программе
+1 балл подключено не менее 2 модулей коллег
+5 оставлены комментарии 5 разным сокурсникам, по +1 за каждого
-3 минус балл за каждую просроченную неделю.

КАК НАПИСАТЬ ОТЧЁТ
1. Приложить ссылку своего проекта на github.
2. Написать полное имя своего пакета, с версией.
3. Приложить ссылку на скриншот с запуском своих и чужих модулей, чтобы был виден код, результат, composer.json
4. Указать количество лайков коллегам.
5. Написать сумму набранных баллов.

ДЗ
8. Создать полезный пакет и задействовать пакеты других.. 8. Создать полезный пакет и задействовать пакеты других.
1 модуль. 2 занятие. 8 задание. До 5 августа.

ЧТО НУЖНО СДЕЛАТЬ
1. Сформулировать простую, но полезную задачу, которую можно решить на РНР.
2. Создать класс для её решения и оформите в виде пакета
3. Загрузить на github и зарегистрировать в packagist
4. Создать в новой папке проект с демонстрацией использования вашего пакета и приложить скриншот.
5. Создать в новой папке демонстрацию работы пакета одного из сокурсников и приложить скриншот.
6. Прочитать ответы коллег, поставить лайк и прокомментировать их работу отдельными сообщениями, сообщения начинать с имени адресата.
7. Посчитать сумму набранных баллов, зафиксировать её в доксе, прислать отчёт в чат с пр.

ЗАЧЕМ ЭТО НУЖНО ДЕЛАТЬ
Чтобы закрепить процесс создания пакетов и создать первую полезную библиотеку на этом курсе.
Запуск программ коллег, просмотр их работ и комментирование расширяет кругозор и способствует инсайтам.

СИСТЕМА ОЦЕНИВАНИЯ
+1 балл за сформулированную задачу
+1 балл за созданный класс её решения
+1 балл за отправку на github и регистр. в packagist
+1 балл за скрин демонстрации работы вашего пакета
+1 балл за скрин демонстрации работы пакета сокурсника
+5 баллов за комментарии 5 разным сокурсникам, по +1 за каждого
-3 минус балл за каждую просроченную неделю.

КАК НАПИСАТЬ ОТЧЁТ
1. Сформулировать задачу, которую решает ваша библиотека.
2. Приложить ссылку своего проекта на github.
3. Написать полное имя своего пакета, с версией.
4. Приложить ссылку на скриншот с результатом запуска своего модуля и прокомментировать его.
5. Написать имя коллеги, какую задачу он решил и приложить скриншот запуска его пакета.
6. Перечислить имена коллег, кому вы дали обратную связь.
7. Написать сумму набранных баллов.
Linux
Перед запуском PHP сценариев в режиме CLI, обсудим необходимый минимум устройства Linux. Узнаем, что такое процессы и потоки, и чем они отличаются друг от друга. Поговорим о FHS, пользователях, группах и привилегиях. Начнём разбираться с утилитами из GNU Coreutils.
Домашние задания: 2
ДЗ
9 задание. История и команды Linux.. 1 модуль. 3 занятие. 9 задание. История и команды Linux. До 8 августа 23:59.

ЧТО НУЖНО СДЕЛАТЬ.
1. Прослушать вебинар Артёма Пулявина.
A. 07:00 - 16:20 Прослушать про историю Linux.
B. 16:20 - 41:40 FHS - Стандарт иерархической файловой системы.
C. 41:40 - 1:03:00 - GNU Core Utils - Стандартные команды Linux
D. 1:03:00 - 1:36:00 - Пользователи. Группы. Привилегии.
2. Ответить на вопрос:
Что нового вы узнали из каждой части вебинара, перечислтие попунктно: A, B, C, D.
3. Не писать :) но прочитать ответы коллег и проставить им лайки.
4. Засечь потраченное время на выполнение задания.
5. Посчитать сумму набранных баллов, зафиксировать её в доксе.
5. Прислать написанный отчёт в чат с пр.

ЗАЧЕМ ЭТО ДЕЛАТЬ.
Артём рассказывает очень много полезного методического материала
и разных профессиональных штучек, которые сложно найти просто так.
Поэтому крайне рекомендую прослушать и проработать его лекцию.
Ответы на вопросы помогают произвести рефлексию и лучше осознать услышанное.

КАК НАПИСАТЬ ОТЧЁТ
1. Какие разделы вы прослушали? A, B, C, D.
2. Развёрнутый ответ на вопрос по каждому пункту.
3. Сколько лайков вы поставили.
4. Написать потраченное на выполнение урока время.
5. Написать сумму набранных баллов (обязательно!).

СИСТЕМА ОЦЕНИВАНИЯ
+1 просмотрена часть A лекции
+1 просмотрена часть B лекции
+1 просмотрена часть C лекции
+1 просмотрена часть D лекции
+3 написан ответ
+3 поставлены лайки 3+ разным сокурсникам, по +1 за каждого
-3 минус балл за каждую просроченную неделю.
ДЗ
10 задание. Консольная команда Sum.. 1 модуль. 3 занятие. 10 задание. Консольная команда Sum. Время выполнения: 1 час. Сдать до 8 августа 23:59.

ЧТО НУЖНО СДЕЛАТЬ.
1. проработать материал 3 вебинара
2. создать консольное приложение, используя фреймворк Symfony
3. зарегистрировать команду нахождения суммы и проверить работу
4. задействовать класс Sum, созданный на прошлом вебинаре
5. загрузить своё приложение на гитхаб и приложить ссылку
6. сделать скриншот с самым интересным кодом и примером запуска
7. Просмотреть работы коллег и проставить им лайки, можно задать пару вопросов
8. Засечь потраченное время на выполнение задания.
9. Посчитать сумму набранных баллов, зафиксировать её в доксе.
10. Прислать написанный отчёт в чат с пр.

ЗАЧЕМ ЭТО НУЖНО ДЕЛАТЬ.
Чтобы потренироваться в создании консольного приложения,
регистрации консольных комманд, повторном использовании кода.

СИСТЕМА ОЦЕНИВАНИЯ
+1 балл создано консольное приложение на Symfony
+1 балл создана команда sum и она работает
+1 балл для нахождения суммы использован пакет из 2 вебинара
+1 балл работа загружена на гитхаб и выложена ссылка
+1 балл создан скриншот с интересным кодом и примером запуска
+2 балла просмотрены работы коллег и проставлены лайки
+3 балла написаны комментарии 3 разным сокурсникам, по +1 за каждого
-3 минус балл за каждую просроченную неделю.

КАК НАПИСАТЬ ОТЧЁТ
1. Написать, что из перечисленного НЕ сделано,
2. Написать, что сделано дополнительно, сверх задания.
3. Приложить ссылку своего проекта на github.
4. Приложить сделанный скриншот.
5. Написать потраченное на выполнение урока время.
6. Написать сумму набранных баллов (обязательно!).
PHP in CLI
Немного коснёмся языка bash. Продолжим разбираться с утилитами из GNU Coreutils. Научимся использовать grep и xargs. Начнём запускать PHP скрипты из командной строки, научимся демонизировать процессы, а также использовать для запуска cron, screen и supervisord. Поговорим о IPC (pipe, shared memory, signals, unix sockets).
Домашние задания: 2
ДЗ
11 задание. Посмотреть запись вебинара про Linux.. 1 модуль. 4 занятие. 11 задание. Посмотреть запись вебинара про Linux.
Время выполнение до 3 часов. Сдать до 12 августа 23:59.

ЧТО НУЖНО СДЕЛАТЬ.
1. Прослушать вебинар Артёма Пулявина.
A. 04:00 - Переменные окружения
B. 15:00 - GNU Core Utils - Стандартные команды Linux
C. 46:00 - Процессы и потоки
D. 1:55:00 - Inter-Process Communication
E. 2:22:00 - Сокеты
2. Ответить на вопрос:
Что нового вы узнали из каждой части вебинара, перечислить попунктно: A, B, C, D, E.
3. Прочитать ответы коллег и проставить им лайки.
4. Засечь потраченное время на выполнение задания.
5. Посчитать сумму набранных баллов, зафиксировать её в доксе.
5. Прислать написанный отчёт в чат с пр.

ЗАЧЕМ ЭТО ДЕЛАТЬ.
Артём рассказывает очень много полезного методического материала
и разных профессиональных штучек, которые сложно найти просто так.
Поэтому крайне рекомендую прослушать и проработать его лекцию.
Ответы на вопросы помогают произвести рефлексию и лучше осознать услышанное.

КАК НАПИСАТЬ ОТЧЁТ
1. Какие разделы вы прослушали? A, B, C, D, E.
2. Написать развёрнутый ответ на вопрос по каждому пункту.
3. Сколько лайков вы поставили.
4. Написать потраченное на выполнение урока время.
5. Написать сумму набранных баллов (обязательно!).

СИСТЕМА ОЦЕНИВАНИЯ
+1 просмотрена часть A, B лекции
+1 просмотрена часть C лекции
+1 просмотрена часть D лекции
+1 просмотрена часть E лекции
+3 написан ответ
+3 поставлены лайки 3+ разным сокурсникам, по +1 за каждого
-3 минус балл за каждую просроченную неделю.
ДЗ
12 задание. Написать калькулятор по шаблону. Strategy. Покрыть его PHPUnit тестами.. 1 модуль. 4 занятие. 12 задание. Написать калькулятор по шаблону. Strategy. Покрыть его PHPUnit тестами. Время выполнения до 2 часов. Сдать до 12 августа 23:59.

ЧТО НУЖНО СДЕЛАТЬ.
1. проработать материал 4 вебинара
2. установить PHPStorm и настроить его работу с проектом на PHP7
3. создать контекст калькулятора с интерфейсом операций
4. реализовать классы стратегии для всех операций
5. написать скрипт для запуска калькулятора и проверить работу
6. установить PHPUnit
7. написать тестовые функции для всех операций
8. закоммитить все изменения, и отправить на гитхаб.
9. сделать скриншот результата
10. посмотреть работы коллег и поставить им лайки.
11. Засечь потраченное время на выполнение задания.
12. Посчитать сумму набранных баллов, зафиксировать её в доксе.
13. Прислать написанный отчёт в чат с пр.

ЗАЧЕМ ЭТО НУЖНО ДЕЛАТЬ.
Чтобы потренироваться в использовании шаблона проектирования Strategy.
Чтобы потренироваться в использовании модуля тестирования PHPUnit.

СИСТЕМА ОЦЕНИВАНИЯ
+1 балл PHPStorm установлен и используется
+1 балл созданы контекстные классы, интерфейс и классы-стратегий
+1 балл написан скрипт запуска калькулятора и проверена его работа
+1 балл установлен модуль PHPUnit
+1 балл написаны и запущенны функции тестирования
+1 балл зафиксированы изменения и размещены на github
+1 балл сделан и размещён скриншот вашей работы
+3 балла просмотрены работы коллег и проставлены лайки
-3 минус балл за каждую просроченную неделю.

КАК НАПИСАТЬ ОТЧЁТ
1. Написать, что из перечисленного НЕ сделано,
2. Написать, что сделано дополнительно, сверх задания.
3. Приложить ссылку своего проекта на github.
4. Приложить сделанный скриншот.
5. Написать потраченное на выполнение урока время.
6. Написать сумму набранных баллов (обязательно!).
Виртуализация и контейнеризация
Поговорим о подходах к виртуализации и паравиртуализации. Посмотрим на xen, kvm/qemu и перейдём к контейнеризации. Научимся работать с Docker и посмотрим как он работает внутри.
Домашние задания: 4
ДЗ
13 задание. Использование TCP/IP сокетов. Создание клиента и многопоточного сервера.. 1 модуль. 5 занятие. 12 задание. Использование TCP/IPсокетов.
Создание клиента и многопоточного сервера.
Время выполнения до 2 часов.
Сдать до 16 августа 23:59.

ЧТО НУЖНО СДЕЛАТЬ.

1. проработать материал 5 вебинара
2. поработать с программой telnet
3. создать на PHP клиента на сокетах
4. добавить считывание аргументов командной строки
5. создать на РНР сервер на сокетах
6. проверить совместную работу клиента и сервера
7. сделать сервер многопоточным и проверить работу
8. поэкспериментировать с закрытием дочерних процессов

A. посмотреть работы коллег и поставить им лайки.
B. Засечь потраченное время на выполнение задания.
C. Посчитать сумму набранных баллов, зафиксировать её в доксе.
D. Прислать написанный отчёт в чат с пр.

ЗАЧЕМ ЭТО НУЖНО ДЕЛАТЬ.
Чтобы получить опыт использования сокетов, потоков, сигналов, взаимодействия процессов.
Чтобы подготовиться к созданию своей клиент-серверной программы на РНР.

СИСТЕМА ОЦЕНИВАНИЯ
+1 балл за использование программы telnet
+1 балл за создание клиента на РНР сокетах
+1 балл за получение аргументов через функцию getopt()
+1 балл за создание сервера на РНР сокетах
+1 балл за использование fork() по примеру
+1 балл за эксперименты с зацикленными клиентами.
+1 балл за работу с программами ps, kill, htop
+1 балл за сделанный и размещённый скриншот вашей работы
+2 балла просмотрены работы коллег и проставлены лайки
до -3 баллов, вычитается по 1 баллу за каждую просроченную неделю.

КАК НАПИСАТЬ ОТЧЁТ
1. Написать, что из перечисленного НЕ сделано,
2. Написать, что сделано дополнительно, сверх задания.
3. Приложить сделанный скриншот.
4. Написать потраченное на выполнение урока время.
5. Написать сумму набранных баллов (обязательно!).
ДЗ
16 задание. Посмотреть запись вебинара Артёма про Docker. . 1 модуль. 5 занятие. 16 задание.
Посмотреть запись вебинара Артёма про Docker.
Время выполнение 3 часа.
Сдать до 22 августа 23:59.

ЧТО НУЖНО СДЕЛАТЬ.

1. проработать материал 5 вебинара
2. поработать с программой telnet
3. создать на PHP клиента на сокетах
4. добавить считывание аргументов командной строки
5. создать на РНР сервер на сокетах
6. проверить совместную работу клиента и сервера
7. сделать сервер многопоточным и проверить работу
8. поэкспериментировать с закрытием дочерних процессов

A. посмотреть работы коллег и поставить им лайки.
B. Засечь потраченное время на выполнение задания.
C. Посчитать сумму набранных баллов, зафиксировать её в доксе.
D. Прислать написанный отчёт в чат с пр.

ЗАЧЕМ ЭТО НУЖНО ДЕЛАТЬ.
Чтобы получить опыт использования сокетов, потоков, сигналов, взаимодействия процессов.
Чтобы подготовиться к созданию своей клиент-серверной программы на РНР.

СИСТЕМА ОЦЕНИВАНИЯ
+1 балл за использование программы telnet
+1 балл за создание клиента на РНР сокетах
+1 балл за получение аргументов через функцию getopt()
+1 балл за создание сервера на РНР сокетах
+1 балл за использование fork() по примеру
+1 балл за эксперименты с зацикленными клиентами.
+1 балл за работу с программами ps, kill, htop
+1 балл за сделанный и размещённый скриншот вашей работы
+2 балла просмотрены работы коллег и проставлены лайки
до -3 баллов, вычитается по 1 баллу за каждую просроченную неделю.

КАК НАПИСАТЬ ОТЧЁТ
1. Написать, что из перечисленного НЕ сделано,
2. Написать, что сделано дополнительно, сверх задания.
3. Приложить сделанный скриншот.
4. Написать потраченное на выполнение урока время.
5. Написать сумму набранных баллов (обязательно!).
ДЗ
15 творческое задание. Стратегическое консольное приложение с тестами.. 1 модуль. 5 занятие. 15 творческое задание.
Стратегическое консольное приложение с тестами. Сдать до 19 августа 23:59.

ЧТО НУЖНО СДЕЛАТЬ.

1. сформулировать задание, которое вы будете делать.
Выбрать такое задание, чтобы для его выполнения было бы
логичным использовать шаблон проектирования Strategy.
2. опубликовать своё задание в слаке, если будут вопросы - обсудить.
3. создать проект в виде composer-library, использовать git.
4. создать стратегические классы и контекст для своего задания.
5. написать модуль PHPUnit тестирования для своего проекта.
6. добавить проект в git, залить на github.
7. зарегистрировать в packagist и загрузить библиотеку в отдельную папку.
8. создать консольное приложение для запуска своей библиотеки.
9. консольное приложение загрузить на github.
10. сделать несколько скриншотов для демонстрации работы своего проекта.
11. записать видеообзор созданного проекта и загрузить его на youtube.
либо приготовиться защищать свою программу тренеру после занятия (до 5 минут).

A. посмотреть работы коллег и поставить им лайки.
B. Засечь потраченное время на выполнение задания.
C. Посчитать сумму набранных баллов, зафиксировать её в доксе.
D. Прислать написанный отчёт в чат с пр.

ЗАЧЕМ ЭТО НУЖНО ДЕЛАТЬ.
Чтобы уметь использовать все перечисленные технологии в комплексе.

СИСТЕМА ОЦЕНИВАНИЯ - 20 баллов
+1 балл за сформулированное и опубликованное задание в слаке до начала его выполнения.
+4 балла за созданную библиотеку и зарегистрированную в packagist.
+4 балла за наличие модулей тестирования.
+2 балла за наличие консольного приложения для запуска библиотеки.
+2 балла за наличие скриншотов
+4 балла за защиту своей программы тренеру после вебинара либо за наличие видеообзора.
+3 балла просмотрены работы коллег, проставлены лайки, написаны комментарии
до -6 баллов, вычитается по 2 балла за каждую просроченную неделю.

КАК НАПИСАТЬ ОТЧЁТ
1. Приложить сформулированное задание.
2. Написать, что из перечисленного НЕ сделано,
3. Написать, что сделано дополнительно, сверх задания.
4. Приложить сделанные скриншоты.
5. Если записан видеообзор - приложить ссылку.
Если нет - написать, после какого занятия будете защищать свою программу.
6. Написать потраченное на выполнение урока время.
7. Написать сумму набранных баллов (обязательно!).
ДЗ
14 задание. Полезное клиент-серверное приложение. . 1 модуль. 5 занятие. 14 задание.
Полезное клиент-серверное приложение.
Сдать до 19 августа 23:59.

ЧТО НУЖНО СДЕЛАТЬ.

1. выбрать любую задачу из ранее сделанных.
2. доработать серверный скрипт на приём запросов, обработку и отправку результата.
3. доработать клиентский скрипт для отправки запросов и получение результата.
4. при желании оформить клиент-серверные скрипты в виде классов.
5. размесить созданные скрипты на github.
6. сделать несколько скриншотов для демонстрации работы своего проекта.

A. посмотреть работы коллег и поставить им лайки.
B. Засечь потраченное время на выполнение задания.
C. Посчитать сумму набранных баллов, зафиксировать её в доксе.
D. Прислать написанный отчёт в чат с пр.

ЗАЧЕМ ЭТО НУЖНО ДЕЛАТЬ.
Чтобы уметь использовать все перечисленные технологии в комплексе.

СИСТЕМА ОЦЕНИВАНИЯ - 20 баллов
+3 балла за доработку серверного скрипта
+3 балла за доработку клиентского скрипта
+1 балла за создание скриншотов
+3 балла просмотрены работы коллег, проставлены лайки, написаны комментарии
до -3 баллов, вычитается по 1 баллу за каждую просроченную неделю.

КАК НАПИСАТЬ ОТЧЁТ
1. Приложить формулировку задания.
2. Написать, что из перечисленного НЕ сделано,
3. Написать, что сделано дополнительно, сверх задания.
4. Написать, оформлены ли клиент-серверные скрипты в виде классов.
5. Приложить сделанные скриншоты.
6. Написать потраченное на выполнение урока время.
7. Написать сумму набранных баллов (обязательно!).
Networking
Коснёмся нужных нам в работе тем о сетях. В частности, поговорим об OSI, остановимся на TCP/IP. Посмотрим, как устроена маршрутизация и коммутация, как работает ARP. Поговорим о DNS и SMTP и детально изучим HTTP.
FastCGI
Рассмотрим способы запуска PHP-сценариев для web. В частности, изучим протокол FastCGI. Детально обсудим возможности nginx и научимся его использовать. А также посмотрим, как устроены JavaServlets и WSGI.
Домашние задания: 1
ДЗ
Клиент для вашей библиотеки должен работать по протоколу HTTP.. Для этого, используя docker compose, вы создадите два контейнера, один с nginx, а второй с php-fpm и приложением, использующим библиотеку.
PHP WebServers
Изучим php-fpm и его связку с nginx. Поговорим о моделях обработки запросов веб-серверами (синхронно, асинхронно) и напишем свой маленький асинхронный web-сервер.
Домашние задания: 1
ДЗ
1 модуль. 8 занятие. 17 задание. Написать свой WebServer на PHP. 1 модуль. 8 занятие. 17 задание. Написать свой WebServer на PHP
Время выполнение до 2 часов. Сдать до 8 сентября 23:59.

ЧТО НУЖНО СДЕЛАТЬ.

1. проработать материал 8 вебинара
2. написать и проверить класс Response
3. написать и проверить класс Request
4. написать и проверить класс Server
5. создать запускаемый скрипт WebServer-a
6. проверить работу через телнет и/или браузер

A. посмотреть работы коллег и поставить им лайки.
B. Засечь потраченное время на выполнение задания.
C. Посчитать сумму набранных баллов, зафиксировать её в доксе.
D. Прислать написанный отчёт в чат с пр.

ЗАЧЕМ ЭТО НУЖНО ДЕЛАТЬ.
Чтобы получить опыт использования сокетов, потоков, сигналов, взаимодействия процессов.
Чтобы подготовиться к созданию своей клиент-серверной программы на РНР.

СИСТЕМА ОЦЕНИВАНИЯ

+1 балл за создание класса Response
+1 балл за создание класса Request
+1 балл за создание класса Server
+2 балл за создание рабочего WebServer-a
+2 балл за проверку его работы
+1 балл за сделанный и размещённый скриншот вашей работы
+2 балла просмотрены работы коллег и проставлены лайки
до -3 баллов, вычитается по 1 баллу за каждую просроченную неделю.

КАК НАПИСАТЬ ОТЧЁТ
1. Написать, что из перечисленного НЕ сделано,
2. Написать, что сделано дополнительно, сверх задания.
3. Приложить сделанный скриншот.
4. Написать потраченное на выполнение урока время.
5. Написать сумму набранных баллов (обязательно!).
Безопасность
Поговорим о безопасности. В частности, рассмотрим симметричные и ассиметричные алгоритмы шифрования AES, RSA, Blowfish. Digest-алгоритмы sha и md5. И детально рассмотрим TOP10 видов уязвимостей web-приложений по OWASP (в частности SQL-injections, XSS, CSRF).
Databases
Основные понятия баз данных
Обсудим модели данных и ранние подходы к организации данных, в частности, иерархические и сетевые базы данных. Научимся описывать концептуальные схемы предметной области при помощи ER-модели. Остановимся на реляционной модели и погрузимся в реляционную алгебру. Поговорим о SQL, его истории, стандартах и совместимости.
Домашние задания: 1
ДЗ
Необходимо спроектировать схему базы данных для одного из предложенных проектов.. Спроектировать базу данных, для планировщика задач (каких угодно на ваш выбор).
PostgreSQL для администратора
Полное погружение в PostgreSQL. Поговорим об администрации кластера, ролях, атрибутах, привилегиях, схемах, табличных пространствах и системном каталоге. Для всего этого изучим DDL.
Домашние задания: 1
ДЗ
Проработать материал. Просмотреть запись вебинара и повторить все практические операции.
Просмотреть запись вебинара Артёма.
PostgreSQL для разработчика
Продолжим изучение PostgreSQL, но уже в качестве клиентского разработчика. Изучим DML, поговорим о типах данных, функциях и операторах. Узнаем как устроены индексы и работают транзакции. Обсудим ACID, MVCC и уровни изоляции.
Домашние задания: 1
ДЗ
Футбольная база данных. Вам предоставлена Футбольная база данных группого тура чемпионата Мира по футболу 2018 года.
Придумайте и сформулируйте 10 вопросов по этой базе данных и составьте SQL запросы для нахождения ответов.
Приложите ссылку на файл с вопросами и запросами. Работы будут проверяться с обратной связью.
Как устроен PostgreSQL
Перестанем бояться чудодейственной магии PostgreSQL и детально разберём как база данных работает “под капотом”. В этом занятии будет буферный кеш, журнал упреждающей записи, контрольная точка, страницы и версии строк, LRU, снимки и блокировки, а также Vacuum. Используя EXPLAIN, посмотрим как PostreSQL выполняет запрос и попытаемся оптимизировать его выполнение.
Домашние задания: 1
ДЗ
2 модуль. 13 занятие. Индексы, XML и PHP.. Проработать вебинар.
Создать большую базу данных из XML файлов.
Создать РНР скрипт для генерации данных.
Создать/удалить индексы, проверить время выполнения запросов
Другие SQL-решения
Посмотрим на другие SQL-решения, в частности, сделаем детальный обзор возможностей MySQL и SQLite. Поговорим о колоночных базах данных на примере ClickHouse.
MongoDB
Рассмотрим not only SQL-решения на примере MongoDB. Познакомимся с CRUD операциями. Поговорим о Aggregation Pipeline и MapReduce. Поработаем с MongoDB из кода на PHP.
Домашние задания: 1
ДЗ
Приложение для анализа каналов на Youtube. Создать приложение для анализа каналов на Youtube:
1. Создать структуру/структуры хранения информации о канале и видео канала в mongoDB, описать в виде JSON с указанием типов полей. Описать какие индексы понадобятся в данной структуре?
2. Создать необходимые модели для добавления и удаления данных из коллекций
3. Реализовать класс статистики, который может возвращать:
- Суммарное кол-во лайков и дизлайков для канала по всем его видео
- Топ N каналов с лучшим соотношением кол-во лайков/кол-во дизлайков
4*. Можно создать паука, который будет ходить по Youtube и наполнять базу данными
Redis
Поговорим о Redis как о базе данных. Изучим типы данных и способы работы с ними из кода на PHP. Сравним Redis с Memcached.
Домашние задания: 1
ДЗ
Система хранения событий для аналитики. Аналитик хочет иметь систему со следующими возможностями:
1) Система должна хранить события, которые в последующем будут отправляться сервису событий
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
PHP и базы данных
Изучим все способы работы кода на PHP с изученными базами данных. Как дань истории будут показаны устаревшие драйверы, но остановимся на PDO. Рассмотрим ООП-подход для работы с базами данных. Научимся реализовать и применять такие паттерны как DAO, ActiveRecord, ORM, ODM. Поговорим об их плюсах и минусах.
Домашние задания: 1
ДЗ
Реализация одного из паттернов работы с хранилищем данных. Необходимо реализовать один из паттернов: Table Data Gateway, Raw Data Gateway, Active Record, DataMapper для произвольной таблицы. Паттерн должен содержать метод массового получения информации из таблицы, результат которого возвращается в виде коллекции.
Дополнительно можно использовать паттерн Identity Map для устранения дублирования объектов, ссылающихся на одну строку в БД или Lazy Load для отложенной загрузки связанных записей в таблице или коллекции.
Developing
Парадигмы программирования
Когда мы пишем код - мы придерживаемся какой-то парадигмы. В этом занятии мы обсудим различные парадигмы программирования и увидим, что не ООП-единым, на примере использования функциональной парадигмы. Посмотрим на функции высшего порядка, каррирование, замыкания и монады. После чего детально остановимся на ООП.
Архитектура кода
Погрузимся в архитектуру кода. UML, SOLID, SoC, DRY, KISS, YAGNI, DI и DI-контейнеры.
Design patterns
Рассмотрим часто встречающиеся проблемы при проектировании ООП-программ и, как способ их решения, шаблоны проектирования. Обсудим порождающие, структурные, поведенческие шаблоны, а также коснёмся шаблонов GRASP.
Практики хорошего кода
Поговорим о том, как писать хороший код, о принципах CQRS и Fluent interface. Обсудим coding styles и необходимость документирования кода. Рассмотрим PHP the Right way и стандарты из PHP-FIG.
Введение в тестирование
Поговорим о тестировании - его видах и какие проблемы призван решить каждый вид. В частности, обсудим acceptance, integration и unit тестирование. Узнаем, что такое test case и как он должен выглядеть. Научимся писать интеграционные тесты на codeception.
Домашние задания: 1
ДЗ
Разработанное ранее мини приложение необходимо покрыть unit-тестами, используя PHPUnit и добиться code coverage в минимум 70%
Unit-тестирование
Поговорим о том, что такое тестируемый код и как его писать. Научимся писать Unit-тесты с использованием PHPUnit. Поговорим об A-TRIP, TDD и Red-Green-Refactor. Рассмотрим идеологии CI/CD и запустим автоматический прогон наших тестов в Travis.
Алгоритмы. Начало
Поговорим об алгоритмах и структурах данных. Детально рассмотрим асимптотический анализ. Рассмотрим алгоритмы сортировки, в частности: сортировка Шелла, быстрая сортировка и сортировка слиянием. Изучим стек и очередь на примере реализаций из SPL. Детально рассмотрим связанные списки и способы их обхода.
Домашние задания: 1
ДЗ
Необходимо реализовать один из предложенных алгоритмов на деревьях..
Алгоритмы. Продолжение
Продолжим говорить об алгоритмах. Рассмотрим такие структуры данных как двоичные и сбалансированные деревья поиска. Обсудим хеш-таблицы и способы борьбы с коллизиями. Закончим алгоритмами на графах - поиск в ширину и алгоритм Дейкстры.
Architecture & HighLoad
Очереди
Рассмотрим асинхронный подход обработки данных на основе очередей. Разберём несколько стандартных сценариев использования очередей (отправка уведомлений, инвалидация кеша). Реализуем работу с очередями, используя различные инструменты (очереди на базе, Redis Pub/Sub, Gearman, Beanstalkd). Детально изучим протокол AMPQ и одну из его прикладных реализаций - RabbitMQ.
Домашние задания: 1
ДЗ
Используя мини-приложение, разработанное в прошлом модуле, необходимо реализовать Rest API с использованием очередей. Ваши клиенты будут отправлять запросы на обработку, а вы будете складывать их в очередь и возвращать номер запроса. В фоновом режиме вы будете обрабатывать запросы, а ваши клиенты периодически, используя номер запроса, будут проверять статус его обработки.
Проектирование API
Научимся проектировать API для web и mobile используя Rest и RPC-протоколы. Обсудим JSON, XML, Protocol Buffers. Детально остановимся на Rest и способе его описания, используя RAML. Получим представление о WebSockets.
Профилирование и логирование
Скрипт тормозит? Научимся находить узкие места, используя инструменты профилирования. Также детально обсудим логирование, чтобы понимать что делает наш скрипт. Затронем уровни логирования (по PSR-3), библиотеку Monolog и сбор логов в ELK.
Репликация
Получим полное представление о репликации: о её видах (Master-Slave, Master-Master), о способе синхронизации изменений (sync, async), о формате изменений (SBR, RBR), о модели передачи изменений (push, pull) и о том, как с этим работать на уровне PHP кода.
Шардинг
Поймём, что такое шардинг и когда его стоит применять. Обсудим виды шардинга (горизонтальный и вертикальный). Поговорим о перебалансировке и решардинге. Затронем партиционирование.
Кеширование
Поговорим зачем приложению нужен кеш. Рассмотрим Redis и Memcached в качестве кеш-серверов. Поговорим о кеш-тегах и инвалидации кеша.
Deploying
Обсудим возможные способы доставки вашего приложения в production-окружение - от ручного git pull до инструментов автоматизации этого процесса в лице (mina и capistrano).
Домашние задания: 1
ДЗ
Используя выбранный инструмент автоматического деплоя, необходимо реализовать автоматическую выкатку написанного ранее мини-приложения на собственный виртуальный сервер.
Командная разработка
Обсудим модели разработки программного обеспечения (итеративная, спиральная, каскадная). Подробно поговорим о гибких методологиях разработки, в частности SCRUM.

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

Евгений Волосатов
Профессиональный программист. Преподаватель языка Java в колледже.
Автор видеокурсов по C#, Java, PHP

20 лет опыта ведущим программистом в разных фирмах и опыта преподавания в университете, колледже. 6 лет опыта ведения вебинаров и создания видеокурсов

Три самых крупных завершенных проекта:
PHP. Служба знакомств в интернете - PHP, MySQL, FreeBSD, C/C++
C#. Программа расчёта заработной платы на АЭС - C#, MS-SQL Server
Java. Видеокурс создания игры Сапёр на Java: https://goo.gl/24DgBg

Статьи на Habrahabr:
Как я создавал методику изучения C# - habr.com/post/239825/
Об альтернативном образовании и про C# - habr.com/post/257957/
Изучение C# — Практический подход - habr.com/post/304142/

Участие в IT-конференциях в Литве, призовое место в конкурсе программирования InfoBalt, призовое место на республиканской олимпиаде по математике и информатике

С окончания школы в 1996 году постоянно преподавал информатику в университете, школе, на кружках, в ДДТ, на предприятиях, в колледже. С 2013 года ведет вебинары онлайн, записывает видеокурсы
https://www.VideoSharp.info/

В 2002 году закончил Вильнюсский государственный университет по специальности «Магистр математики и информатики», а в 2008 году по специальности «Учитель профессии»

«В детстве меня вдохновила "Занимательная ***" серия книг Я. И. Перельмана. Считаю своим призванием создать занимательную методику обучения программированию.»
Преподаватель курсов:

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

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