Подводные камни хайповых решений (1)

RoadRunner ускоряем PHP без фреймворка

Наталья Воронина

Национальный каталог

Постараемся разобраться что же такое roadrunner
Ответим на вопрос возможно ли его использование без фремворков
Рассмотрим варианты ускорения современного php приложения
Взвесим плюсы и минусы перехода на roadrunner

Программный комитет ещё не принял решения по этому докладу

Внутренности PHP (1)

PHP generics

Я расскажу:
* о том, что полезно использовать типы даже в динамическом слаботипизированном PHP;
* какие есть проблемы с реализацей дженериков в нативном PHP через momonorphization, reification и type-erasure;
* своем опыте реализации дженериков на PHP.

Программный комитет ещё не принял решения по этому докладу

Асинхронные приложения и параллельная обработка (1)

PHP в асинхронном мире

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

Программный комитет ещё не принял решения по этому докладу

Системная борьба с legacy (2)

Protecting your legacy: how to survive and thrive with legacy systems

Níckolas Da Silva

ResearchGate

A talk about practical ways to tackle code quality, massive refactoring, testing and automatic documentation generation. I'll present open source tools, cases and insights.

I've worked with legacy systems written in PHP for 10 years, and the last 4 were dedicated to a 14-yo monolith, maintained by multiple teams and visited by millions of users per week.

In this talk I show different techniques and tools I used throughout my career that helped me modernising systems I worked with without losing my sanity.

We'll talk about how to:
- ship features without fearing massive failures;
- decommission code safely;
- perform massive refactorings;
- level up your documentation game with automated documentation generation;
- test legacy systems

As usual, I will also leave some important references such as articles and books.

Доклад принят в программу конференции

Как распилить монолит и не уйти в микросервисы

Рано или поздно большинство компаний с IT-проектами приходят в точку, где становится очевидной необходимость глобального рефакторинга этих проектов. Точку, когда задача сроком в 1 день выполняется 3-5-10 дней. И перед разработчиками встает вопрос: какую архитектурную модель выбрать? Самое популярное предложение - микросервисы. Но сегодня не о них: мы поговорим о том, как красиво выглядят вместе монолит и DDD.

Программный комитет ещё не принял решения по этому докладу

Лучшие практики (3)

Виртуализируй меня... полностью!

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

В докладе рассмотрим вопросы запуска современных PHP-приложений внутри контейнеров, особенности и нюансы, а также разберем типовые схемы работы с контейнерами PHP на уровне CI/CD процессов в компании.

Доклад принят в программу конференции

про ООП и то, как мы все дружно или не дружно шагаем не туда, создавай себе сложности

Иван Лещёв

ВКонтакте

Всё есть объект
Единственная метрика качества кода
Инкапсуляция - это не только то, о чём вы думали
Обмен сообщениями, а не прямой доступ
Наследование не нужно, но это не точно

Программный комитет ещё не принял решения по этому докладу

Чистая архитектура PHP приложения

Сергей Пантюшин

ООО ЭТП ГПБ

Наши классы, модули и компоненты не существуют сами по себе в приложении, а тесно связаны друг с другом. Из-за этого наше приложение становится сложным и его сложно поддерживать. Поговорим о зависимостях PHP приложения и как построить взаимодействие компонентов нашей системы. Разберем принцип инверсии зависимостей, слои архитектуры и как это помогает в тестировании.

Программный комитет ещё не принял решения по этому докладу

Производительность (1)

Как подготовить интернет магазин на 1С-Bitrix к черной пятнице

Ioffe Dmitriy

МКК Байбол

CMS 1c-Bitrix одна из самых популярных CMS и CRM в СНГ, поговорим с вами как его готовить и спокойно жить в Черную пятницу, обсудим основные проблемы и решения

Программный комитет ещё не принял решения по этому докладу

Другое (1)

Фаззим PHP интерпретатор структурным генератором кода

Тестировать языки программирования сложно. Полное покрытие почти не возможно и в компилятарах с рантаймами часто закрадываются баги, тесты на которые написать никто не догадался. Фаззинг компиляторов отличается от фаззинга функций, но сходства есть: мы подаём на вход условно случайные данные и смотрим, что произойдёт. Этот подход особенно хорош, если нам есть с чем попарно сравнить результаты исполнения сгенерированной программы. Здесь нам на помощь приходит KPHP.

В моём докладе я расскажу, как устроен фаззер phpsmith. О том, как он генерирует программы, какие баги может находить, а так же о том, что мы уже смогли найти и исправить с его помощью.

Программный комитет ещё не принял решения по этому докладу

Архитектура и масштабируемость (1)

Примеры разделения кода на модули

Многие пишут про желательность разделения проекта на независимые модули, слабосвязанные микросервисы, контексты DDD и так далее. Но мало кто находит и показывает это на примерах реальных проектов.

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

Доклад принят в программу конференции

OpenSource (2)

Аспектно-ориентированное программирование - родина PHP-слонов

Для многих из нас aспектно-ориентированное программирование - это что-то абстрактно-академическое. Между тем, оно уже давно широко применяется в практической PHP-разработке - чаще всего в виде аннотаций к методам и классам, и им можно пользоваться, не зная ничего о его теоретических основах. Тем не менее, знание базовых концепций и возможных способов реализации aспектно-ориентированного программирования его использованию из готовых библиотек - не помешает , а вот помочь - очень даже может. Например, чтобы элегантно внедрить в код нужную во всей программе функцию или даже написать свою библиотеку, реализующую эту парадигму.

Программный комитет ещё не принял решения по этому докладу

Повышаем гибкость кода с помощью оценки цикломатической сложности и модульных тестов

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

Программный комитет ещё не принял решения по этому докладу

API: REST, SOAP и другие (1)

Тестирование REST API

Хранение, инструменты, запуск, метрики и отчеты о тестах

Программный комитет ещё не принял решения по этому докладу

Реальный опыт (7)

Внедрение мутационного тестирования в существующий проект

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

Доклад принят в программу конференции

Тестирование на бэкенде. Пирамида, моки, покрытие.

Все мы знаем насколько важны тесты. Также все мы хоть раз в какой-нибудь статье, презентации или книжке видели пирамиду тестирования, где в качестве уровней выступают различные виды тестов, такие как функциональные, интеграционные и unit-тесты. Везде описаны бенефиты, которые можно получить, правильно выстроив пирамиду тестирования. Однако на практике, зачастую, трудно разобраться, чем отличается один вид тестов от другого, в каком случае стоит написать unit, а в каком интеграционный или может вообще функциональный? А сколько тестов стоит написать на одну фичу? А нужно ли 100% покрытие кода? В этом всем еще предстоит разобраться…

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

Программный комитет ещё не принял решения по этому докладу

Прогулки по небинарным деревьям: пишем инструменты и решаем задачи

Мой доклад о том, как на базе пары интерфейсов написать мощный инструмент для работы с небинарными деревьями, которые частенько встречаются в предметных областях.

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

Вооружившись полученным инструментом, мы рассмотрим решение одной интересной задачи о построении персональной версии дерева фильтров в соответствии с хитрыми правами доступа.

Программный комитет ещё не принял решения по этому докладу

Как стать супергероем PHP

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

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

В этом докладе мы пройдем путь от новичка до кодера производственного уровня.

Программный комитет ещё не принял решения по этому докладу

Как мы делали поиск по картинкам и виджет "похожие товары"

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

Программный комитет ещё не принял решения по этому докладу

Php the right way на фрилансе

- Фриланс как помощь малому бизнесу?
- Почему важно помогать малому бизнесу?
- Как взращивать новых коллег?
- Как прокачиваться во время фриланса?
- Фриланс опыт это приговор? Как смотрят на фриланс опыт работодатели?
- Есть на фрилансе адекватные проекты?
- Премущества фриланса?
- Недостатки фриланса?
- Развитие soft skills.

Программный комитет ещё не принял решения по этому докладу

Прикладное автоматное программирование. Как построить чат-бота и не погрязнуть в ветвлениях.

В процессе поиска работы соискатели тратят время на общение с рекрутерами, которое — давайте будем откровенны, — далеко не всегда приводит к желаемому результату. А что если автоматизировать эту рутину? Мы задались этим вопросом и решили создать HR-бота, который поможет соискателям и рекрутерам упростить взаимодействие, не отвлекаться на звонки и решить все вопросы в мессенджере.
В докладе на примере нашего сервиса расскажу, что такое автоматное программирование, плюсы и минусы парадигмы, а так же как она поможет в решении проблем роста сложности и постоянного изменения сценариев бота, с которыми мы столкнулись во время разработки.

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

Доклад принят в программу конференции

Фреймворки и библиотеки (2)

Laravel "на максималках"

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

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

Laravel считается фрэймворком с "тяжёлым" bootstrap'ом, однако его можно значительно ускорить и даже полностью исключить необходимость bootstrap'а на каждый запрос.

Программный комитет ещё не принял решения по этому докладу

Модульный Laravel, или как собрать фичу в кучу

1. Структура файлов, генерируемая при создании Laravel-проекта, проблематична для проектов сложнее набора CRUD-ов. Файлы складываются по типам, и при работе с одной фичей приходится перелопатить несколько папок. Необходимость частичного выделения функционала в отдельный сервис превращается в головную боль.
2. Предлагается новый feature-based подход, основывающийся на группировке кода и шаблонов по фичам.
3. Для реализации этого подхода докладчиком создана библиотека, о которой речь также пойдёт в выступлении.

Программный комитет ещё не принял решения по этому докладу