- 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.
Скачать: Скрытая информация :: Авторизуйтесь для просмотра »
Скрытая информация :: Авторизуйтесь для просмотра »
По окончании курса слушатели получат полное представление о разработке больших и высоконагруженных веб-приложений, полученные знания позволят слушателю уверенно решать задачи разработки коммерческих приложений.
Более 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.
Скачать: Скрытая информация :: Авторизуйтесь для просмотра »