Курс Backend PHP разработки
Мы открыли бесплатный курс по Backend PHP-разработке — и я хочу рассказать, почему это важно для нас В MediaTen мы давно хотели поделиться тем опытом, который накопили за годы работы. Не поверхностным обзором «что такое PHP», а настоящим глубоким материалом — от устройства памяти и zval до DDD, шардирования баз данных и мутационного тестирования.
Получилось 43 урока, 5 разделов, 30+ часов контента: — PHP: внутренности языка, OPcache, генераторы, корутины, асинхронность — ООП: Reflection API, принцип Лисков, композиция vs наследование — Архитектура: SOLID, DDD, паттерны проектирования, IoC, UseCase — Базы данных: нормализация, оконные функции, репликация, шардирование, оптимизация запросов — Тестирование: TDD и мутационное тестировани
Курс полностью бесплатный. Без регистрации, без «купи продвинутый тариф». Просто заходишь и впитываешь. Видеоуроки, разбор кода, PDF-презентации к каждому занятию.
Подойдёт тем, кто начинает путь в backend, и тем, кто уже работает на позиции junior/middle и хочет систематизировать знания и выйти на новый уровень. Мы делаем это для развития PHP-сообщества. Потому что сильные разработчики — это сильная индустрия.
Ссылка на курс: https://mediaten.ru/education/backend
P.S. Скоро планируем выпустить курс по Frontend-разработке (Vue, Nuxt, React) — подписывайтесь, чтобы не пропустить.
· 20.02
А зачем к примеру знать про zval? Мне за десятилетие ни разу не пригодилось. Писал свой php модуль на Си и всё, бекендеры этого не делают.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 24.02
Ну тут субьективный вопрос, многие даже не знают про память и как ее разгружать. А есть разработчики, которые даже код не писали ;)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 24.02
Так я и спрашиваю зачем знать про то как внутри интерпретатора память устроена? А как разгружать даже разрабы php движка не знают. Php создан чтобы умирать
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 26.02
А тут все просто. Для того чтоб написать производительное приложение нужно понимать как работает память (хотя бы базовое устройство, какая структура меньше занимает памяти итд). В противном случае получаются приложение которые пишет каждый второй программист не задумываясь что это может работать быстрее и кушать меньше ресурсов. В итоге если идея приложения удачная, оно расширяется. Растет функционал и объем данных с которыми нужно работать (количество пользователей несколько миллионов и постоянно растет). В результате код написанный Жуниором, который считает себя мидлом или даже синьором начинает кушать много ресурсов. Мощность сервера начинает "жать" как костюм, который был куплен на выпускной. Как решение увеличивают мощность сервера, это проще и быстрее. Со временем все повторяется. И сервер наш уже стоит очень приличных денег. Далее джуниор который синьор начинает делить все на разные сервера итд, а вот было бы у него больше знаний проект до сих пор мог бы успешно жить на старом сервере. Вернемся к zval. К одному из возможных примеров, а их можно привести не мало. Зная о нем мы можем проанализировать контейнер с помощью xdebug_debug_zval() и понять куда ссылается та или иная переменная и понять почему при том же unset память не высвободилась и вероятно мы получили где-то циклическую ссылку что привело в утечке памяти что особенно критично будет в долгоиграющих процессах. А PHP умирает каждую секунду и по "многу" раз, процесс то завершился. И даже не в рамках процесса, например, в прошлом году вышла версия PHP 8.5 (каждый год выходит новая), а вот 8.1 приняла статус "End of life" (официальная поддержка его закончилась)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 26.02
Знание сколько какой тип переменной занимает не помешает однозначно. А в остальном не убедили. Разрастание потребления возникает чаще от алгоритмических ошибок, когда тянем всё что нужно и не нужно.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 26.02
Сам я как разработчик на С++ для микроконтроллеров цену памяти очень хорошо знаю. И производительность cpu тоже.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 26.02
"Разрастание потребления возникает чаще от алгоритмических ошибок, когда тянем всё что нужно и не нужно." - вот в этом и проблема. А именно в том что это не единственная причина, хотя многие думают именно так. Это возникает из-за не правильной работы с данными. Если развивать тему zval до zend_string и zend_ulong всего лишь один элемент массива со строковым ключом добавленный в массив с целочисленными ключами займет в два раза больше памяти. А ведь многие строят такие коллекции где добавляют строковый ключ в коллекцию для хранения там количества элементов. И таких моментов по работе с памятью масса, если их не брать во внимание то можно получить проблему.
При модификации массива который обрабатываем с помощью foreach можно получить увеличение памяти в 3 раза, хотя данные условно остались те же. Это конечно мелочи, и память в дальнейшем будет высвобождена (если конечно циклических ссылок по глупости не сделали), но иногда знать и понимать как что работает очень нужно...
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён