Гайд по мягкому удалению в Laravel
🔄 Мягкие удаления в веб-приложениях позволяют удалять данные без их окончательного удаления из базы данных. Вместо этого устанавливается флаг, указывающий, что данные были удалены, что позволяет их восстановить при необходимости. В Laravel мягкие удаления реализуются с использованием столбца deleted_at с отметкой времени.
👍 Преимущества мягких удалений включают восстановление данных, аналитические цели и двухэтапный процесс удаления для дополнительной верификации. Однако они могут привести к увеличению размера базы данных, случайному запросу удаленных данных и потенциальным проблемам с конфиденциальностью данных.
🛠️ Чтобы реализовать мягкие удаления в Laravel, вы используете трейт SoftDeletes в вашей модели и добавляете столбец deleted_at в таблицу базы данных. Модели мягких удалений могут быть восстановлены или окончательно удалены с использованием предоставленных методов.
🧪 Тестирование софт-удалений включает в себя проверку правильности софт-удаления, восстановления или окончательного удаления моделей, а также проверку запросов на исключение или включение софт-удаленных моделей в зависимости от задуманного. Необходимо быть осторожным с использованием фасада DB, чтобы избежать случайного запроса софт-удаленных данных.
🔄 Мягкие удаления в веб-приложениях позволяют удалять данные без их окончательного удаления из базы данных. Вместо этого устанавливается флаг, указывающий, что данные были удалены, что позволяет их восстановить при необходимости. В Laravel мягкие удаления реализуются с использованием столбца deleted_at с отметкой времени.
👍 Преимущества мягких удалений включают восстановление данных, аналитические цели и двухэтапный процесс удаления для дополнительной верификации. Однако они могут привести к увеличению размера базы данных, случайному запросу удаленных данных и потенциальным проблемам с конфиденциальностью данных.
🛠️ Чтобы реализовать мягкие удаления в Laravel, вы используете трейт SoftDeletes в вашей модели и добавляете столбец deleted_at в таблицу базы данных. Модели мягких удалений могут быть восстановлены или окончательно удалены с использованием предоставленных методов.
🧪 Тестирование софт-удалений включает в себя проверку правильности софт-удаления, восстановления или окончательного удаления моделей, а также проверку запросов на исключение или включение софт-удаленных моделей в зависимости от задуманного. Необходимо быть осторожным с использованием фасада DB, чтобы избежать случайного запроса софт-удаленных данных.
DEV Community
A guide to soft deletes in Laravel
This article was originally written by Ashley Allen on the Honeybadger Developer Blog. There may be...
❤4👍2🔥2😁1
#дайджест новостей по PHP за неделю:
🔎Выпущены PHP 8.2.18, PHP 8.3.6 & PHP 8.1.28 — Команда разработчиков PHP объявляет о немедленной доступности PHP 8.2.18, PHP 8.3.6 и PHP 8.1.28. Это релиз безопасности.
🔎Команда Laravel выпустила v11.4 — с новым фасадом исключений, поддержкой Enum в методе Collection::mapinto() и многое другое.
🔎Basset — альтернативный способ загрузки ассетов CSS & JS
🔎Неделя Symfony #902 (8-14 апреля 2024 г.)
🔎Выпущены PHP 8.2.18, PHP 8.3.6 & PHP 8.1.28 — Команда разработчиков PHP объявляет о немедленной доступности PHP 8.2.18, PHP 8.3.6 и PHP 8.1.28. Это релиз безопасности.
🔎Команда Laravel выпустила v11.4 — с новым фасадом исключений, поддержкой Enum в методе Collection::mapinto() и многое другое.
🔎Basset — альтернативный способ загрузки ассетов CSS & JS
🔎Неделя Symfony #902 (8-14 апреля 2024 г.)
👍3🔥2❤1
Глубокое погружение в оптимальные настройки PHP-FPM
Настройки PHP-FPM часто игнорируются обычными разработчиками, но становятся критически важными по мере роста приложений и возникновения проблем с производительностью.
Раздел по устранению неполадок советует проверять журналы PHP-FPM на предупреждения о настройке max_children, которая определяет максимальное количество дочерних процессов, которые PHP-FPM может породить. Также выделяется важность контроля за потреблением памяти, который можно отслеживать с помощью команд, таких как htop или free -hl.
Настройка менеджера процессов включает выбор между статическим, динамическим и по требованию, каждый из которых имеет свои компромиссы в потреблении памяти и отзывчивости. В статье объясняется, как рассчитать подходящее значение max_children на основе доступных ресурсов сервера и как настраивать другие связанные параметры.
Проведение тестирования различных вариантов менеджера процессов рекомендуется с использованием ApacheBench, с результатами, показывающими неожиданные различия в производительности между статическим, динамическим и по требованию настройками. Кроме того, в статье обсуждаются дополнительные параметры, такие как slowlog для отслеживания медленных запросов и параметры аварийного перезапуска для обработки отказов процессов.
Настройки PHP-FPM часто игнорируются обычными разработчиками, но становятся критически важными по мере роста приложений и возникновения проблем с производительностью.
Раздел по устранению неполадок советует проверять журналы PHP-FPM на предупреждения о настройке max_children, которая определяет максимальное количество дочерних процессов, которые PHP-FPM может породить. Также выделяется важность контроля за потреблением памяти, который можно отслеживать с помощью команд, таких как htop или free -hl.
Настройка менеджера процессов включает выбор между статическим, динамическим и по требованию, каждый из которых имеет свои компромиссы в потреблении памяти и отзывчивости. В статье объясняется, как рассчитать подходящее значение max_children на основе доступных ресурсов сервера и как настраивать другие связанные параметры.
Проведение тестирования различных вариантов менеджера процессов рекомендуется с использованием ApacheBench, с результатами, показывающими неожиданные различия в производительности между статическим, динамическим и по требованию настройками. Кроме того, в статье обсуждаются дополнительные параметры, такие как slowlog для отслеживания медленных запросов и параметры аварийного перезапуска для обработки отказов процессов.
👍12
Настраиваем Windows WSL для локальной разработки Laravel
В этой небольшой статье рассказывается, как правильно настроить WSL в Windows 11 для локальной разработки Laravel-приложения. Мы собираемся установить php, mysql, nginx и composer, а также отредактировать файл hosts в самом Windows.
В этой небольшой статье рассказывается, как правильно настроить WSL в Windows 11 для локальной разработки Laravel-приложения. Мы собираемся установить php, mysql, nginx и composer, а также отредактировать файл hosts в самом Windows.
Хабр
Настраиваем Windows WSL для локальной разработки Laravel
Всем привет! В этой небольшой статье я очень сжато расскажу, как правильно настроить WSL в Windows 11 для локальной разработки Laravel-приложения. Мы собираемся установить php, mysql, nginx и...
❤10👍5🥱5
Какая система типов используется в PHP? Опишите плюсы и минусы.
В PHP используется динамическая система типов, что означает, что тип переменной определяется во время выполнения программы и может изменяться в процессе работы. Вот некоторые плюсы и минусы такой системы типов:
Плюсы:
✔️Гибкость: Динамическая типизация делает PHP очень гибким языком программирования, позволяя быстро писать и изменять код.
✔️Простота использования: Не нужно явно объявлять типы переменных, что упрощает написание кода, особенно для новичков.
✔️Легкость внесения изменений: Поскольку типы переменных могут быть изменены в любой момент, изменение структуры данных или логики программы может быть более легким и менее разрушительным.
✔️Меньше кода: Нет необходимости явно приводить типы или выполнять проверки на соответствие типов, что может сократить объем кода.
Минусы:
❗Потенциальные ошибки времени выполнения: Поскольку типы определяются во время выполнения, ошибки, связанные с несоответствием типов, могут возникнуть только во время выполнения программы, что может затруднить их обнаружение и отладку.
❗Уменьшение производительности: Проверка типов во время выполнения может негативно сказаться на производительности приложения, особенно в больших и сложных проектах.
❗Меньшая надежность: Поскольку типы переменных могут изменяться во время выполнения, это может привести к неожиданному поведению программы и усложнить ее понимание и поддержку.
❗Трудности в документации и отладке: Из-за динамической типизации может быть сложно определить типы переменных и их ожидаемое поведение, что может затруднить документирование кода и отладку ошибок.
#вопросы_с_собеседований
В PHP используется динамическая система типов, что означает, что тип переменной определяется во время выполнения программы и может изменяться в процессе работы. Вот некоторые плюсы и минусы такой системы типов:
Плюсы:
✔️Гибкость: Динамическая типизация делает PHP очень гибким языком программирования, позволяя быстро писать и изменять код.
✔️Простота использования: Не нужно явно объявлять типы переменных, что упрощает написание кода, особенно для новичков.
✔️Легкость внесения изменений: Поскольку типы переменных могут быть изменены в любой момент, изменение структуры данных или логики программы может быть более легким и менее разрушительным.
✔️Меньше кода: Нет необходимости явно приводить типы или выполнять проверки на соответствие типов, что может сократить объем кода.
Минусы:
❗Потенциальные ошибки времени выполнения: Поскольку типы определяются во время выполнения, ошибки, связанные с несоответствием типов, могут возникнуть только во время выполнения программы, что может затруднить их обнаружение и отладку.
❗Уменьшение производительности: Проверка типов во время выполнения может негативно сказаться на производительности приложения, особенно в больших и сложных проектах.
❗Меньшая надежность: Поскольку типы переменных могут изменяться во время выполнения, это может привести к неожиданному поведению программы и усложнить ее понимание и поддержку.
❗Трудности в документации и отладке: Из-за динамической типизации может быть сложно определить типы переменных и их ожидаемое поведение, что может затруднить документирование кода и отладку ошибок.
#вопросы_с_собеседований
❤10
В Symfony инструкции не всегда достаточны, но Symfony имеет интеграцию с Doctrine ORM, что круто! 🎉
🛠️ Проблема:
Как выполнить запросы к БД на основе данных формы?
📋 Решение:
Предлагается использовать объект типа DTO (DataTransferObject), созданный на основе данных формы, чтобы передавать структурированные данные в методы запросов. Это делает код более надежным и предсказуемым.💼
Далее показывается пример создания формы и обработки данных из неё в контроллере Symfony. Автор использует созданный объект DTO для передачи данных в метод запроса репозитория.
Затем переходим к рассмотрению метода findByFilter в репозитории событий (EventRepository). Этот метод выполняет запрос к базе данных на основе данных из формы, применяя различные фильтры в зависимости от выбранных пользователем параметров. Автор обсуждает компактность и эффективность этого метода, а также его возможность повторного использования благодаря отделению от остального кода.🛠️
🔧 Преимущества:
Код становится более читаемым и надежным 📖
Запросы становятся короткими, эффективными и переиспользуемыми 💪
Можно выполнять стандартные проверки кода на SQL-запросах 👨💻
Короткие, эффективные и переиспользуемые запросы к БД — круто! 🚀
🛠️ Проблема:
Как выполнить запросы к БД на основе данных формы?
📋 Решение:
Предлагается использовать объект типа DTO (DataTransferObject), созданный на основе данных формы, чтобы передавать структурированные данные в методы запросов. Это делает код более надежным и предсказуемым.💼
Далее показывается пример создания формы и обработки данных из неё в контроллере Symfony. Автор использует созданный объект DTO для передачи данных в метод запроса репозитория.
Затем переходим к рассмотрению метода findByFilter в репозитории событий (EventRepository). Этот метод выполняет запрос к базе данных на основе данных из формы, применяя различные фильтры в зависимости от выбранных пользователем параметров. Автор обсуждает компактность и эффективность этого метода, а также его возможность повторного использования благодаря отделению от остального кода.🛠️
🔧 Преимущества:
Код становится более читаемым и надежным 📖
Запросы становятся короткими, эффективными и переиспользуемыми 💪
Можно выполнять стандартные проверки кода на SQL-запросах 👨💻
Короткие, эффективные и переиспользуемые запросы к БД — круто! 🚀
🥱7👍3❤2
Почему FilamentPHP — это хорошее решение для создания CMS
В жизни каждого PHP-разработчика рано или поздно настаёт момент, когда его просят написать корпоративный сайт, новостной портал или очередной интернет-магазин.
Конечно, в этом случае можно взять готовое решение вроде Bitrix. Однако порой эти огромные комбайны оказываются действительно слишком уж огромными, и для управления тремя с половиной табличками проще написать свое решение.
В жизни каждого PHP-разработчика рано или поздно настаёт момент, когда его просят написать корпоративный сайт, новостной портал или очередной интернет-магазин.
Конечно, в этом случае можно взять готовое решение вроде Bitrix. Однако порой эти огромные комбайны оказываются действительно слишком уж огромными, и для управления тремя с половиной табличками проще написать свое решение.
Хабр
Почему FilamentPHP — это хорошее решение для создания CMS
Привет, Хабр! Меня зовут Егор Черненок, я работаю PHP-разработчиком в AGIMA . В этой статье расскажу вам о FilamentPHP. В документации говорится , что это набор красивых Fullstack-компонентов для...
🥱13❤3
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤2
4 сайта с бесплатными шаблонами для Laravel
HTMLrev: Огромная коллекция бесплатных HTML-шаблонов, в том числе множество для панелей управления Laravel. Часто обновляются и позволяют легко просматривать по категориям.
Creative Tim: Известный своими готовыми к использованию шаблонами, Creative Tim предоставляет UI-киты, административные панели и системы дизайна для нескольких архитектур, включая Laravel. Их шаблоны поставляются с высококачественным кодом и документацией.
ThemeSelection: Предлагает как бесплатные, так и платные UI-киты и шаблоны панелей управления. Хотя доступно всего несколько бесплатных вариантов, они отличаются замечательным качеством и сравнимы с премиальными пакетами.
JustBoil: JustBoil специализируется на шаблонах панелей управления для различных библиотек, включая Bulma и Tailwind. Их бесплатные шаблоны профессионально разработаны, написаны и документированы, предлагая множество компонентов для создания панелей управления.
HTMLrev: Огромная коллекция бесплатных HTML-шаблонов, в том числе множество для панелей управления Laravel. Часто обновляются и позволяют легко просматривать по категориям.
Creative Tim: Известный своими готовыми к использованию шаблонами, Creative Tim предоставляет UI-киты, административные панели и системы дизайна для нескольких архитектур, включая Laravel. Их шаблоны поставляются с высококачественным кодом и документацией.
ThemeSelection: Предлагает как бесплатные, так и платные UI-киты и шаблоны панелей управления. Хотя доступно всего несколько бесплатных вариантов, они отличаются замечательным качеством и сравнимы с премиальными пакетами.
JustBoil: JustBoil специализируется на шаблонах панелей управления для различных библиотек, включая Bulma и Tailwind. Их бесплатные шаблоны профессионально разработаны, написаны и документированы, предлагая множество компонентов для создания панелей управления.
🔥10⚡2👍2🌚2❤1
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
🔍💼 Исследование рынка: 8 наиболее востребованных языков программирования в 2024 году
Результаты исследования рынка IT-вакансий, проведенного DevJobsScanner. Были проанализированы 14 миллионов объявлений и выявлены 8 наиболее востребованных языков программирования.
Читать статью
#почитать
Результаты исследования рынка IT-вакансий, проведенного DevJobsScanner. Были проанализированы 14 миллионов объявлений и выявлены 8 наиболее востребованных языков программирования.
Читать статью
#почитать
❤1
💬Расскажите, какой из своих проектов вы могли бы назвать бесполезным? Или поделитесь примером такого проекта, который наблюдали со стороны.
Ждём вас в комментариях👇
#интерактив
Ждём вас в комментариях👇
#интерактив
😁9
Как создать LLM чат на WebSocket с помощью llama.cpp
Туториал описывает процесс настройки функционала чата с использованием Large Language Model (LLM) в веб-приложении.
Туториал описывает процесс настройки функционала чата с использованием Large Language Model (LLM) в веб-приложении.
PHP Resonance Framework
How to Create LLM WebSocket Chat with llama.cpp?
Learn how to setup a WebSocket server and create basic chat with an open source LLM.
❤3
Что такое «PHP Extension Community Library» (PECL), и как её использовать для расширения функциональности PHP?
Библиотека сообщества расширений PHP (PECL) служит репозиторием для PHP-расширений. PHP-расширения представляют собой модули, написанные на C, которые могут быть динамически загружены в PHP для предоставления дополнительной функциональности. Эти расширения могут взаимодействовать с PHP на более низком уровне, чем обычные скрипты PHP, позволяя разработчикам использовать системные ресурсы, взаимодействовать с базами данных и выполнять другие задачи, которые могут быть более эффективно реализованы на языке более низкого уровня.
Цель PECL заключается в предоставлении централизованного места для разработчиков, где они могут делиться и распространять PHP-расширения. Это гарантирует, что разработчики PHP могут легко находить, устанавливать и использовать расширения для расширения возможностей PHP.
Чтобы использовать PECL для расширения функциональности PHP, обычно следуют следующим шагам:
Установка PECL: Убедитесь, что PECL установлен на вашей системе. Обычно он поставляется вместе с установками PHP, но в зависимости от вашей конфигурации может потребоваться установить его отдельно.
Поиск расширений: Просмотрите веб-сайт PECL или используйте команду pecl search, чтобы найти расширения, предоставляющие необходимую функциональность.
Установка расширений: После того как вы нашли нужное расширение, вы можете установить его с помощью команды pecl install, за которой следует имя расширения.
Включение расширения: После установки расширения вам нужно включить его в файле конфигурации PHP (php.ini). Вы можете сделать это вручную, добавив строку вроде extension=имя_расширения.so в файл php.ini, или с помощью команды phpenmod, если вы используете систему с хранилищем расширений и приложений PHP (PEAR)
Перезапуск веб-сервера: После включения расширения необходимо перезапустить веб-сервер (например, Apache или Nginx), чтобы изменения вступили в силу.
Тестирование расширения: Наконец, вы можете протестировать функциональность, предоставляемую расширением, в ваших PHP-скриптах. Вы можете использовать функции или классы расширения, как это указано в его документации.
#вопросы_с_собеседований
Библиотека сообщества расширений PHP (PECL) служит репозиторием для PHP-расширений. PHP-расширения представляют собой модули, написанные на C, которые могут быть динамически загружены в PHP для предоставления дополнительной функциональности. Эти расширения могут взаимодействовать с PHP на более низком уровне, чем обычные скрипты PHP, позволяя разработчикам использовать системные ресурсы, взаимодействовать с базами данных и выполнять другие задачи, которые могут быть более эффективно реализованы на языке более низкого уровня.
Цель PECL заключается в предоставлении централизованного места для разработчиков, где они могут делиться и распространять PHP-расширения. Это гарантирует, что разработчики PHP могут легко находить, устанавливать и использовать расширения для расширения возможностей PHP.
Чтобы использовать PECL для расширения функциональности PHP, обычно следуют следующим шагам:
Установка PECL: Убедитесь, что PECL установлен на вашей системе. Обычно он поставляется вместе с установками PHP, но в зависимости от вашей конфигурации может потребоваться установить его отдельно.
Поиск расширений: Просмотрите веб-сайт PECL или используйте команду pecl search, чтобы найти расширения, предоставляющие необходимую функциональность.
Установка расширений: После того как вы нашли нужное расширение, вы можете установить его с помощью команды pecl install, за которой следует имя расширения.
Включение расширения: После установки расширения вам нужно включить его в файле конфигурации PHP (php.ini). Вы можете сделать это вручную, добавив строку вроде extension=имя_расширения.so в файл php.ini, или с помощью команды phpenmod, если вы используете систему с хранилищем расширений и приложений PHP (PEAR)
Перезапуск веб-сервера: После включения расширения необходимо перезапустить веб-сервер (например, Apache или Nginx), чтобы изменения вступили в силу.
Тестирование расширения: Наконец, вы можете протестировать функциональность, предоставляемую расширением, в ваших PHP-скриптах. Вы можете использовать функции или классы расширения, как это указано в его документации.
#вопросы_с_собеседований
👍10
Пользовательские настройки в приложениях Symfony с JBtronics/Settings-Bundle
Это руководство по использованию пакета jbtronics/settings-bundle в Symfony для управления настройками приложения. Основная идея заключается в том, что параметры настроек организованы вокруг классов, что обеспечивает типобезопасность и удобство разработки.
Это руководство по использованию пакета jbtronics/settings-bundle в Symfony для управления настройками приложения. Основная идея заключается в том, что параметры настроек организованы вокруг классов, что обеспечивает типобезопасность и удобство разработки.
DEV Community
User-configurable settings in Symfony applications with jbtronics/settings-bundle (Part 1)
Symfony offers vast configuration possibilities using container parameters and environment variables....
❤2