0
JeyLie

otus Backend разработчик на PHP (2018)

Рекомендуемые сообщения

111.png

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

Более 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.

Спойлер

https://yadi.sk/d/HhLvte1b3ZHNNE

 

Поделиться сообщением


Ссылка на сообщение

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
0

  • Похожий контент

    • От JeyLie
      Темы первого модуля:

      Введение в алгоритмы, RAM-модель
      Студенты смогут оценивать сложность алгоритмов, ознакомятся с эмулятором RAM-машины.

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

      Простейшие структуры данных: массив, динамический массив, стек, очередь, списки, кучи
      Студенты ознакомятся с использованием и реализацией простейших структур данных.

      Алгебраические алгоритмы: алгоритм Евклида, быстрое возведение в степень, решето Эратосфена, быстрое вычисление чисел Фибоначчи
      Студенты ознакомятся с использованием и реализацией некоторых популярных алгебраических алгоритмов.

      Сортировка вставками, сортировка Шелла, сортировка выбором, пузырьковая сортировка
      Студенты освоят алгоритмы сортировки вставками, выбором, пузырьком, сортировку Шелла. По окончании занятия студенты смогут реализовывать и правильно применять данные алгоритмы.

      Сортировка слиянием, timsort
      Студенты освоят и смогут реализовать алгоритмы сортировки слиянием и timsort.

      Пирамидальная сортировка (heap sort), tree sort, очередь с приоритетами
      Студенты смогут реализовывать и применять пирамидальную сортировку, tree sort, очередь с приоритетами.

      Быстрая сортировка
      Студенты освоят алгоритм быстрой сортировки.

      Сортировка подсчетом, поразрядная сортировка, блочная сортировка (bucket sort)
      Студенты освоят и смогут реализовать сортировку подсчетом, поразрядную сортировку, блочную сортировку.

      Медианы и порядковые статистики
      Студенты научатся реализовывать алгоритмы для нахождения медианы и порядковых статистик.
       
    • От JeyLie
      Программа курса:
      Первый модуль
      Для разработки в области анализа данных необходимо понимать, как устроены основные алгоритмы, какая у них сложность и скорость работы, сколько требуется ресурсов для их успешной работы, область применимости.В первом модуле программы разбираются все базовые алгоритмы машинного обучения. Изучение проходит на сгенерированных данных, не требующих времени на преобразование и доработку. Разъясняется значение и влияние параметров алгоритмов на результат. Каждый этап обучения сопровождается наглядной визуализацией.Будут рассмотрены алгоритмы: линейная регрессия, логистическая регрессия, деревья решений, knn, SVM, k-means, EM, иерархическая кластеризация, DBScanВ результате слушатели уверенно освоят базовые алгоритмы анализа данных и инструменты для базового анализа данных на Python

      Занятие 1: Базовые инструменты анализа данных в Python. 
      Подготовка к курсу. Git, окружение Python. Обзор курса.
      Введение в Python, Numpy, Pandas, Sklearn. API Sklearn.
      Что такое DS, ML, классы решаемых задач.
      ДЗ
      Реализация библиотеки. Реализация библиотеки для подсчета статистик и преобразования датасетов в формате csv. Отработка инструментов для преобразования данных в pandas и sklearn.

      Занятие 2: Вводная в математические операции. 
      Интеграл, производная, их свойства, вероятность, плотность вероятности, мат.ожидание, дисперсия, ковариация, матричные вычисления, определитель, обратная матрица и т.п.

      Занятие 3: Визуализация 
      Визуализация на matplotlib, seaborn, plotly
      ДЗ
      Построение визуализаций по данным

      Занятие 4: Линейная регрессия 
      Математика линейной регрессии. Проблема многомерных пространств и переобучения на примере регрессии. Проблема разреженных данных. Регуляризация.
      Простая линейная регрессия на Python. Оценка качества регресcии. Проверка точности модели: обучающая и тестовая выборки. Обучающая и тестовая выборка, кросс-валидация.

      Занятие 5: Логистическая регрессия 
      Математика логистической регрессии. Мультиклассовая регрессия. Оценка качества логистической регрессии.
      Теория вероятностей: условные вероятности, теорема Байеса.
      Обучение регрессии, градиентный спуск. Регуляризация: L1, L2.
      ДЗ
      Реализация алгоритма логистической регрессии. Реализация алгоритма логистической регрессии на простых данных. Оценка качества, подбор параметров модели.

      Занятие 6: KNN, наивный байес 
      Метрики и расстояния между объектами: евклидова и другие.
      Обучение модели kNN. Ограничения.
      Метрики качества: accuracy, precision, recall, др.
      Алгоритм наивного байеса. Байесовский классификатор, Принцип Maximum A-Posteriori

      Занятие 7: kMeans, EM 
      Обучение без учителя. Алгоритмы кластеризации, области применения. k-means. Оценка качества обучения, ограничения и подбор алгоритма для задачи.
      Байесов подход к вероятности. Алгоритмы с lower-bound. Em алгоритм.
      ДЗ
      Реализация EM-алгоритма. Реализация EM-алгоритма на простых данных. Оценка качества кластеризации.

      Занятие 8: Иерархическая кластеризация, DB-Scan 
      Иерархическая кластеризация, DB-Scan. Optics. Спектральная кластеризация.

      Занятие 9: Feature engineering 
      Feature engineering. Статистический анализ данных, выбор фич на основе корреляции.
      ДЗ
      Преобразование набора данных и подбор фич.

      Занятие 10: Поиск выбросов в данных 
       
       
    • От JeyLie
      Вы узнаете:

      • Как мотивировать людей и вовлечь их в работу
      • Что такое команда и как повысить её производительность
      • Какой результат управленческой деятельности можно считать выдающимся
      • Как этого результата достичь
      • Чем должен заниматься руководитель, а чем нет
      • Как сокращать издержки в коммуникациях