[OTUS] Backend разработчик на PHP (2018)

  • Автор темы I AM
  • 1741
  • Обновлено
  • 17, Jul 2018
  • #1
OTUS Backend разработчик на PHP (2018)
Скрытая информация :: Авторизуйтесь для просмотра »


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

Более 80% сайтов всего мира используют PHP, что позволяет сказать, что он является лидирующим языком программирования для реализации веб-приложений.

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

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

Но профессия PHP Backend Developer требует знаний не только языка PHP, а ещё знаний инструментов, таких как базы данных, очереди, кеш-сервера, без которых немыслимо современное веб-приложение.
Содержание:
Модуль 1. General Knowledge 1. Подготовка к курсу Подготовимся к прохождению курса, вспомним Git и GitHub.

Поговорим об истории развития PHP от PHP/FI до PHP7, узнаем, куда делся PHP6 и перейдём к внутреннему устройству интерпретатора.

Затронем zval и garbage collector. 2. Менеджеры пакетов Продолжим узнавать устройство интерпретатора PHP, обсудим подходы к его конфигурированию.

После этого перейдём к модулям и менеджерам пакетов, в частности, обсудим Zend Extensions, работу с PEAR и PECL, научимся собирать свой собственный PHAR.

Отдельное внимание уделим менеджеру зависимостей composer.

Поговорим об autoloading и SEMVER. 3. Linux Перед запуском PHP сценариев в режиме CLI, обсудим необходимый минимум устройства Linux.

Узнаем, что такое процессы и потоки, и чем они отличаются друг от друга.

Поговорим о FHS, пользователях, группах и привилегиях.

Начнём разбираться с утилитами из GNU Coreutils. 4. PHP in CLI Немного коснёмся языка bash.

Продолжим разбираться с утилитами из GNU Coreutils.

Научимся использовать grep и xargs.

Начнём запускать PHP скрипты из командной строки, научимся демонизировать процессы, а также использовать для запуска cron, screen и supervisord.

Поговорим о IPC (pipe, shared memory, signals, unix sockets). 5. Виртуализация и контейнеризация Поговорим о подходах к виртуализации и паравиртуализации.

Посмотрим на xen, kvm/qemu и перейдём к контейнеризации.

Научимся работать с Docker и посмотрим как он работает внутри. 6. Networking Коснёмся нужных нам в работе тем о сетях.

В частности, поговорим об OSI, остановимся на TCP/IP. Посмотрим, как устроена маршрутизация и коммутация, как работает ARP.

Поговорим о DNS и SMTP и детально изучим HTTP. 7. FastCGI Рассмотрим способы запуска PHP-сценариев для web.

В частности, изучим протокол FastCGI.

Детально обсудим возможности nginx и научимся его использовать.

А также посмотрим, как устроены JavaServlets и WSGI. 8. PHP WebServers Изучим php-fpm и его связку с nginx.

Поговорим о моделях обработки запросов веб-серверами (синхронно, асинхронно) и напишем свой маленький асинхронный web-сервер. 9. Алгоритмы.

Начало Поговорим об алгоритмах и структурах данных.

Детально рассмотрим асимптотический анализ.

Рассмотрим алгоритмы сортировки, в частности: сортировка Шелла, быстрая сортировка и сортировка слиянием.

Изучим стек и очередь на примере реализаций из SPL.

Детально рассмотрим связанные списки и способы их обхода. 10. Алгоритмы.

Продолжение Продолжим говорить об алгоритмах.

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

Обсудим хеш-таблицы и способы борьбы с коллизиями.

Закончим алгоритмами на графах - поиск в ширину и алгоритм Дейкстры.
Модуль 2. Databases 11. Основные понятия баз данных Обсудим модели данных и ранние подходы к организации данных, в частности, иерархические и сетевые базы данных.

Научимся описывать концептуальные схемы предметной области при помощи ER-модели.

Остановимся на реляционной модели и погрузимся в реляционную алгебру.

Поговорим о SQL, его истории, стандартах и совместимости. 12. PostgreSQL для администратора Полное погружение в PostgreSQL.

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

Для всего этого изучим DDL. 13. Redis Поговорим о Redis как о базе данных.

Изучим типы данных и способы работы с ними из кода на PHP.

Сравним Redis с Memcached. 14. MongoDB Рассмотрим not only SQL-решения на примере MongoDB.

Познакомимся с CRUD операциями.

Поговорим о Aggregation Pipeline и MapReduce.

Поработаем с MongoDB из кода на PHP. 15. PostgreSQL для разработчика Продолжим изучение PostgreSQL, но уже в качестве клиентского разработчика.

Изучим DML, поговорим о типах данных, функциях и операторах.

Узнаем как устроены индексы и работают транзакции.

Обсудим ACID, MVCC и уровни изоляции.

16. Как устроен PostgreSQL

Перестанем бояться чудодейственной магии PostgreSQL и детально разберём как база данных работает “под капотом”. В этом занятии будет буферный кеш, журнал упреждающей записи, контрольная точка, страницы и версии строк, LRU, снимки и блокировки, а также Vacuum.

Используя EXPLAIN, посмотрим как PostreSQL выполняет запрос и попытаемся оптимизировать его выполнение. 17. Другие SQL-решения Посмотрим на другие SQL-решения, в частности, сделаем детальный обзор возможностей MySQL и SQLite.

Поговорим о колоночных базах данных на примере ClickHouse. 18. PHP и базы данных Изучим все способы работы кода на PHP с изученными базами данных.

Как дань истории будут показаны устаревшие драйверы, но остановимся на PDO.

Рассмотрим ООП-подход для работы с базами данных.

Научимся реализовать и применять такие паттерны как DAO, ActiveRecord, ORM, ODM.

Поговорим об их плюсах и минусах.
Модуль 3. Developing 19. Парадигмы программирования Когда мы пишем код - мы придерживаемся какой-то парадигмы.

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

Посмотрим на функции высшего порядка, каррирование, замыкания и монады.

После чего детально остановимся на ООП. 20. Архитектура кода Погрузимся в архитектуру кода.

UML, SOLID, SoC, DRY, KISS, YAGNI, DI и DI-контейнеры. 21. Design patterns Рассмотрим часто встречающиеся проблемы при проектировании ООП-программ и, как способ их решения, шаблоны проектирования.

Обсудим порождающие, структурные, поведенческие шаблоны, а также коснёмся шаблонов GRASP. 22. Практики хорошего кода Поговорим о том, как писать хороший код, о принципах CQRS и Fluent interface.

Обсудим coding styles и необходимость документирования кода.

Рассмотрим PHP the Right way и стандарты из PHP-FIG. 23. Введение в тестирование Поговорим о тестировании - его видах и какие проблемы призван решить каждый вид.

В частности, обсудим acceptance, integration и unit тестирование.

Узнаем, что такое test case и как он должен выглядеть.

Научимся писать интеграционные тесты на codeception. 24. Unit-тестирование Поговорим о том, что такое тестируемый код и как его писать.

Научимся писать Unit-тесты с использованием PHPUnit.

Поговорим об A-TRIP, TDD и Red-Green-Refactor.

Рассмотрим идеологии CI/CD и запустим автоматический прогон наших тестов в Travis. 25. Безопасность Поговорим о безопасности.

В частности, рассмотрим симметричные и ассиметричные алгоритмы шифрования AES, RSA, Blowfish.

Digest-алгоритмы sha и md5. И детально рассмотрим TOP10 видов уязвимостей web-приложений по OWASP (в частности SQL-injections, XSS, CSRF).
Модуль 4. Architecture & HighLoad 26. Кеширование Поговорим зачем приложению нужен кеш.

Рассмотрим Redis и Memcached в качестве кеш-серверов.

Поговорим о кеш-тегах и инвалидации кеша. 27. Очереди Рассмотрим асинхронный подход обработки данных на основе очередей.



Разберём несколько стандартных сценариев использования очередей (отправка уведомлений, инвалидация кеша). Реализуем работу с очередями, используя различные инструменты (очереди на базе, Redis Pub/Sub, Gearman, Beanstalkd). Детально изучим протокол AMPQ и одну из его прикладных реализаций - RabbitMQ.

28. Репликация

Получим полное представление о репликации: о её видах (Master-Slave, Master-Master), о способе синхронизации изменений (sync, async), о формате изменений (SBR, RBR), о модели передачи изменений (push, pull) и о том, как с этим работать на уровне PHP кода.

29. Профилирование и логирование

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

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

Затронем уровни логирования (по PSR-3), библиотеку Monolog и сбор логов в ELK. 30. Проектирование API Научимся проектировать API для web и mobile используя Rest и RPC-протоколы.

Обсудим JSON, XML, Protocol Buffers.

Детально остановимся на Rest и способе его описания, используя RAML.

Получим представление о WebSockets.
Скачать: Скрытая информация :: Авторизуйтесь для просмотра »


I AM


Рег
23 Jul, 2011

Тем
49554

Постов
57426

Баллов
552966
Тем
49554
Комментарии
57426
Опыт
552966

Интересно