Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Расскажите о regexp.
В PHP, регулярные выражения (регэкспы) представлены с помощью функций и операторов для работы с ними. Регулярные выражения представляют собой шаблоны, которые используются для поиска и/или замены текста по определенным правилам. Вот некоторые из основных функций и операторов для работы с регулярными выражениями в PHP:
preg_match(): Эта функция используется для проверки, соответствует ли заданный шаблон регулярному выражению.
preg_match_all(): Похожа на preg_match(), но находит все совпадения в тексте.
preg_replace(): Заменяет все вхождения шаблона регулярного выражения на заданную строку.
preg_split(): Разделяет строку на подстроки с помощью регулярного выражения в качестве разделителя.
preg_quote(): Экранирует все специальные символы в строке, чтобы они могли быть использованы в регулярном выражении без изменения их значения.
Это лишь базовые примеры использования регулярных выражений в PHP. Регулярные выражения очень мощный инструмент, и для их полного понимания рекомендуется ознакомиться с документацией PHP и углубиться в изучение регулярных выражений в целом.
В PHP, регулярные выражения (регэкспы) представлены с помощью функций и операторов для работы с ними. Регулярные выражения представляют собой шаблоны, которые используются для поиска и/или замены текста по определенным правилам. Вот некоторые из основных функций и операторов для работы с регулярными выражениями в PHP:
preg_match(): Эта функция используется для проверки, соответствует ли заданный шаблон регулярному выражению.
preg_match_all(): Похожа на preg_match(), но находит все совпадения в тексте.
preg_replace(): Заменяет все вхождения шаблона регулярного выражения на заданную строку.
preg_split(): Разделяет строку на подстроки с помощью регулярного выражения в качестве разделителя.
preg_quote(): Экранирует все специальные символы в строке, чтобы они могли быть использованы в регулярном выражении без изменения их значения.
Это лишь базовые примеры использования регулярных выражений в PHP. Регулярные выражения очень мощный инструмент, и для их полного понимания рекомендуется ознакомиться с документацией PHP и углубиться в изучение регулярных выражений в целом.
👍6😁1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
5 способов оптимизации производительности приложений Symfony
Symfony-приложения часто сталкиваются с медленной загрузкой и высокой нагрузкой на сервер. Основные причины — неэффективные запросы к базе данных, недостатки кэширования и не оптимизированные настройки. Вот как это исправить:
Оптимизация запросов к базе данных
Медленные запросы замедляют отклик приложения и создают нагрузку на сервер. Чтобы этого избежать:
🔸Запрашивайте только необходимые данные, а не всю таблицу.
🔸Добавляйте индексы на часто используемые поля.
🔸Используйте более быстрые типы соединений между таблицами, если связь данных гарантирована.
🔸Избегайте лишних запросов при работе с коллекциями данных. Это достигается загрузкой данных заранее.
🔸Обрабатывайте данные партиями, чтобы избежать перегрузки памяти.
Эти меры значительно ускоряют взаимодействие приложения с базой данных.
Кэширование для ускорения работы
Кэширование снижает нагрузку на сервер и ускоряет отклик приложения.
🔸Полное кэширование страниц позволяет сохранять их как статические файлы, чтобы серверу не приходилось каждый раз генерировать одно и то же содержимое.
🔸Кэширование часто используемых данных или запросов уменьшает обращения к базе данных.
🔸Выбор подходящего инструмента для кэширования зависит от потребностей приложения. Например, для локальных серверов подходит APCu, для распределенных систем — Redis.
Кроме того, при обновлении приложения не забывайте очищать и обновлять кэш, чтобы избежать конфликтов и устаревших данных.
Оптимизация настроек Symfony для production
Некоторые изменения в конфигурации позволяют заметно повысить производительность:
🔸В режиме production отключите отладку и сократите количество логов, чтобы снизить нагрузку на процессор.
🔸Включите PHP-кэширование (OPcache), чтобы ускорить выполнение скриптов за счет их предварительной компиляции.
🔸Настройте загрузчик классов, чтобы ускорить процесс запуска приложения.
Эти меры помогают снизить затраты на системные ресурсы и ускоряют загрузку страниц.
Анализ и исправление узких мест
Профилирование помогает выявить скрытые проблемы производительности.
🔸Используйте инструменты мониторинга для анализа ключевых метрик, таких как время отклика, использование памяти, количество запросов к базе данных и эффективность кэширования.
🔸Обратите внимание на самые популярные страницы и функции приложения, чтобы улучшить их в первую очередь.
Применяя эти данные, можно устранить «узкие места», которые тормозят работу приложения.
Управление статическими ресурсами
Эффективная работа с файлами CSS, JavaScript и изображениями значительно ускоряет загрузку страниц.
🔸Уменьшайте размер файлов через минификацию, чтобы ускорить их загрузку.
🔸Объединяйте файлы, чтобы сократить количество запросов к серверу.
🔸Используйте «ленивую загрузку» для изображений и других ресурсов, которые не нужны сразу.
🔸Для хранения и доставки ресурсов применяйте CDN, чтобы снизить нагрузку на сервер.
Эти меры заметно улучшают пользовательский опыт.
Symfony-приложения часто сталкиваются с медленной загрузкой и высокой нагрузкой на сервер. Основные причины — неэффективные запросы к базе данных, недостатки кэширования и не оптимизированные настройки. Вот как это исправить:
Оптимизация запросов к базе данных
Медленные запросы замедляют отклик приложения и создают нагрузку на сервер. Чтобы этого избежать:
🔸Запрашивайте только необходимые данные, а не всю таблицу.
🔸Добавляйте индексы на часто используемые поля.
🔸Используйте более быстрые типы соединений между таблицами, если связь данных гарантирована.
🔸Избегайте лишних запросов при работе с коллекциями данных. Это достигается загрузкой данных заранее.
🔸Обрабатывайте данные партиями, чтобы избежать перегрузки памяти.
Эти меры значительно ускоряют взаимодействие приложения с базой данных.
Кэширование для ускорения работы
Кэширование снижает нагрузку на сервер и ускоряет отклик приложения.
🔸Полное кэширование страниц позволяет сохранять их как статические файлы, чтобы серверу не приходилось каждый раз генерировать одно и то же содержимое.
🔸Кэширование часто используемых данных или запросов уменьшает обращения к базе данных.
🔸Выбор подходящего инструмента для кэширования зависит от потребностей приложения. Например, для локальных серверов подходит APCu, для распределенных систем — Redis.
Кроме того, при обновлении приложения не забывайте очищать и обновлять кэш, чтобы избежать конфликтов и устаревших данных.
Оптимизация настроек Symfony для production
Некоторые изменения в конфигурации позволяют заметно повысить производительность:
🔸В режиме production отключите отладку и сократите количество логов, чтобы снизить нагрузку на процессор.
🔸Включите PHP-кэширование (OPcache), чтобы ускорить выполнение скриптов за счет их предварительной компиляции.
🔸Настройте загрузчик классов, чтобы ускорить процесс запуска приложения.
Эти меры помогают снизить затраты на системные ресурсы и ускоряют загрузку страниц.
Анализ и исправление узких мест
Профилирование помогает выявить скрытые проблемы производительности.
🔸Используйте инструменты мониторинга для анализа ключевых метрик, таких как время отклика, использование памяти, количество запросов к базе данных и эффективность кэширования.
🔸Обратите внимание на самые популярные страницы и функции приложения, чтобы улучшить их в первую очередь.
Применяя эти данные, можно устранить «узкие места», которые тормозят работу приложения.
Управление статическими ресурсами
Эффективная работа с файлами CSS, JavaScript и изображениями значительно ускоряет загрузку страниц.
🔸Уменьшайте размер файлов через минификацию, чтобы ускорить их загрузку.
🔸Объединяйте файлы, чтобы сократить количество запросов к серверу.
🔸Используйте «ленивую загрузку» для изображений и других ресурсов, которые не нужны сразу.
🔸Для хранения и доставки ресурсов применяйте CDN, чтобы снизить нагрузку на сервер.
Эти меры заметно улучшают пользовательский опыт.
🥱5👍4
Пример HTTP-сервера на PHP с использованием файберов
PHP часто подвергается критике за отсутствие встроенных возможностей для создания конкурентных приложений. В версии 8.1 был добавлен класс
PHP часто подвергается критике за отсутствие встроенных возможностей для создания конкурентных приложений. В версии 8.1 был добавлен класс
Fiber
, который, согласно RFC, должен упростить создание конкурентных приложений. Однако, материалов, демонстрирующих использование данного функционала для построения приложений практически нет, напротив, говорится, что файберы — это функционал, предназначенный для использования разработчиками фреймворков и приводятся какие-то малоинформативные отрывки кода. В этой статье будет продемонстрирован концептуальный пример конкурентного приложения на PHP с использованием файберов.Хабр
Пример HTTP-сервера на PHP с использованием файберов
Платформа PHP часто подвергается критике за отсутствие встроенных возможностей для создания конкурентных приложений. В версии 8.1 был добавлен класс Fiber , который, согласно RFC , должен упростить...
👍8🔥1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Защита от CSRF в PHP
Подделка межсайтовых запросов (CSRF) — это уязвимость веб-безопасности, позволяющая злоумышленнику обманом заставить аутентифицированного пользователя выполнить нежелательные действия на сайте, на котором он в данный момент находится под своим логином. Атака осуществляется путем злоупотребления доверием сайта к браузеру пользователя.
Подделка межсайтовых запросов (CSRF) — это уязвимость веб-безопасности, позволяющая злоумышленнику обманом заставить аутентифицированного пользователя выполнить нежелательные действия на сайте, на котором он в данный момент находится под своим логином. Атака осуществляется путем злоупотребления доверием сайта к браузеру пользователя.
DEV Community
CSRF Protection in PHP
What is CSRF? Cross-Site Request Forgery (CSRF) is a web security vulnerability that...
👍2
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
❤1
Большой пополняемый список знаний, в который включены теории, законы, принципы, паттерны разработки и многое другое, что однозначно будет полезно знать каждому разработчику.
GitHub
GitHub - dwmkerr/hacker-laws: 🧠 Laws, Theories, Principles and Patterns for developers and technologists.
🧠 Laws, Theories, Principles and Patterns for developers and technologists. - dwmkerr/hacker-laws
👍3
Как передаются переменные (по значению или по ссылке)?
В PHP переменные могут передаваться как по значению, так и по ссылке.
По умолчанию, в PHP переменные передаются по значению. Это означает, что когда переменная передается в функцию или присваивается другой переменной, создается ее копия, и любые изменения, сделанные внутри функции или на другой переменной, не влияют на оригинальную переменную.
Однако, PHP также предоставляет возможность передавать переменные по ссылке, используя символ '&' перед переменной при ее передаче в функцию или присваивании другой переменной. Когда переменная передается по ссылке, функция или другая переменная работают с тем же экземпляром переменной, и изменения внутри функции или на другой переменной отражаются на оригинальной переменной.
#вопросы_с_собеседований
В PHP переменные могут передаваться как по значению, так и по ссылке.
По умолчанию, в PHP переменные передаются по значению. Это означает, что когда переменная передается в функцию или присваивается другой переменной, создается ее копия, и любые изменения, сделанные внутри функции или на другой переменной, не влияют на оригинальную переменную.
Однако, PHP также предоставляет возможность передавать переменные по ссылке, используя символ '&' перед переменной при ее передаче в функцию или присваивании другой переменной. Когда переменная передается по ссылке, функция или другая переменная работают с тем же экземпляром переменной, и изменения внутри функции или на другой переменной отражаются на оригинальной переменной.
#вопросы_с_собеседований
👍13🥱3
Xdebug, работающий с Docker и PHP 8.4, за одну минуту
Настройка Xdebug может показаться сложной, но на самом деле её можно выполнить быстро, особенно если использовать Docker. В этой статье показано, как за несколько минут настроить Xdebug в проекте на Laravel с использованием PHP 8.4 и Xdebug 3.4.0.
Настройка Xdebug может показаться сложной, но на самом деле её можно выполнить быстро, особенно если использовать Docker. В этой статье показано, как за несколько минут настроить Xdebug в проекте на Laravel с использованием PHP 8.4 и Xdebug 3.4.0.
Laravel News
Get Xdebug Working With Docker and PHP 8.4 in One Minute - Laravel News
Xdebug has a history of being complex to get going, but I am here to show you how to use it in under a minute with Docker in a Laravel project.
👍4❤2
💬 Пишите ли вы тесты на свой код?
❤️ — всегда пишу тесты, которые покрывают важные места
👍 — иногда пишу, зависит от проекта
🥱 — еще не разбирался с тестами
❤️ — всегда пишу тесты, которые покрывают важные места
👍 — иногда пишу, зависит от проекта
🥱 — еще не разбирался с тестами
👍83🥱60❤40🎉3👾2
🙇♂️ Отобрать одного разраба на стек PHP + Vanilla JS после нескольких десятков созвонов-собеседований — вот они, современные реалии.
Почему выпускники курсов присылают резюме пачками, но выхлоп от обучения собственных юристов компании оказывается выше, чем от собеседований по вакансии?
— рассказывает Виталий Квитковский, руководитель отдела разработки и DevOps.
Под катом вас ждет:
☑️ Кратко о структуре собеседования.
☑️ Разбор задач.
☑️ Чего обычно не хватает джунам и как это добрать?
☑️ Что такое базовое программирование?
☑️ Как этому научиться?
👉 Читать
Почему выпускники курсов присылают резюме пачками, но выхлоп от обучения собственных юристов компании оказывается выше, чем от собеседований по вакансии?
— рассказывает Виталий Квитковский, руководитель отдела разработки и DevOps.
Под катом вас ждет:
☑️ Кратко о структуре собеседования.
☑️ Разбор задач.
☑️ Чего обычно не хватает джунам и как это добрать?
☑️ Что такое базовое программирование?
☑️ Как этому научиться?
👉 Читать
👍5😁2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
❤2👍1😁1👾1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🍎 Подборка лучших статей «Библиотеки программиста» за ноябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
✌️🆚⚛️ Vite vs Create React App: почему разработчики массово переходят на новый инструмент
⚛️ 8 важнейших аспектов JavaScript, которые нужно освоить до изучения React
🔀 Команды git merge и git rebase: преимущества, недостатки и ключевые различия
👾🔍 Укрощение монстров: мониторинг и управление ресурсоемкими запросами в Django + PostgreSQL
🚀 Как ускорить распределенные системы: 8 стратегий снижения времени ожидания
🧪 Успешное тестирование: основы и передовые приемы Jest. Часть 1
👨💻🚀 Тест: насколько ты продвинутый разраб?
✌️🆚⚛️ Vite vs Create React App: почему разработчики массово переходят на новый инструмент
⚛️ 8 важнейших аспектов JavaScript, которые нужно освоить до изучения React
🔀 Команды git merge и git rebase: преимущества, недостатки и ключевые различия
👾🔍 Укрощение монстров: мониторинг и управление ресурсоемкими запросами в Django + PostgreSQL
🚀 Как ускорить распределенные системы: 8 стратегий снижения времени ожидания
🧪 Успешное тестирование: основы и передовые приемы Jest. Часть 1
👨💻🚀 Тест: насколько ты продвинутый разраб?
👍1
Оптимизированная ленивая загрузка в Symfony Doctrine для повышения производительности
Во время работы над проектом Symfony возникла проблема с производительностью из-за неожиданного поведения Doctrine. В одной из сущностей была настроена связь OneToOne с параметром
Проблема
Пример: сущность
Усложнённые запросы: ненужные операции JOIN увеличивали нагрузку на базу данных.
Избыточное использование памяти: данные загружались в память даже при их ненужности.
Замедление работы API: запросы, возвращающие списки магазинов, замедлялись из-за лишних данных.
Решение
1. Перепроектирование связи
Связь была преобразована из OneToOne в ManyToOne. Теперь
2. Обновление схемы базы данных
С помощью Doctrine Migrations была изменена структура базы данных: старый внешний ключ для связи OneToOne был удалён, и добавлен ключ для ManyToOne.
3. Корректировка запросов
Теперь детали магазина загружаются только по необходимости
4. Профилирование
С помощью инструментов Symfony была подтверждена оптимизация. Теперь связанные сущности не загружаются без явного запроса.
Результаты
🟢Скорость выполнения запросов: уменьшилась в среднем на 35%.
🟢Использование памяти: значительно сократилось, так как избыточные данные больше не загружаются.
🟢Время ответа API: улучшилось на 20–30% для запросов с большими объёмами данных.
👉Ссылка на Medium
Во время работы над проектом Symfony возникла проблема с производительностью из-за неожиданного поведения Doctrine. В одной из сущностей была настроена связь OneToOne с параметром
fetch="LAZY»
, чтобы загружать связанные данные только при необходимости. Однако Doctrine загружал связанные сущности заранее, что приводило к избыточной нагрузке.Проблема
Пример: сущность
Store
имела связь OneToOne с сущностью StoreDetail
, содержащей метаданные о магазине. Даже при включённой ленивой загрузке Doctrine автоматически добавлял JOIN, что влияло на производительность:Усложнённые запросы: ненужные операции JOIN увеличивали нагрузку на базу данных.
Избыточное использование памяти: данные загружались в память даже при их ненужности.
Замедление работы API: запросы, возвращающие списки магазинов, замедлялись из-за лишних данных.
Решение
1. Перепроектирование связи
Связь была преобразована из OneToOne в ManyToOne. Теперь
StoreDetail
ссылался на Store
, что позволило Doctrine корректно применять ленивую загрузку.2. Обновление схемы базы данных
С помощью Doctrine Migrations была изменена структура базы данных: старый внешний ключ для связи OneToOne был удалён, и добавлен ключ для ManyToOne.
3. Корректировка запросов
Теперь детали магазина загружаются только по необходимости
4. Профилирование
С помощью инструментов Symfony была подтверждена оптимизация. Теперь связанные сущности не загружаются без явного запроса.
Результаты
🟢Скорость выполнения запросов: уменьшилась в среднем на 35%.
🟢Использование памяти: значительно сократилось, так как избыточные данные больше не загружаются.
🟢Время ответа API: улучшилось на 20–30% для запросов с большими объёмами данных.
👉Ссылка на Medium
🥱10👍3🤔3❤1
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты