Обзор Symfony за 2023 год
Это обзор достижений Symfony в 2023 году и планы на 2024 год. В статье подчеркивается благодарность за поддержку сообщества и рассматриваются следующие ключевые моменты:
Релизы: Symfony выпустил три новых основных версии: Symfony 6.3 в мае и Symfony 6.4 (LTS) и Symfony 7.0 в ноябре. Также было опубликовано 58 обслуживаемых версий в восьми различных ветках. Требования к PHP были повышены до версии 8.2 для Symfony 7.0.
Блог и статьи: Было опубликовано 311 блогов, включая 49 статей «Новое в Symfony», поясняющих новые функции Symfony 6.3 и 6.4/7.0. Также было 52 публикации «Неделя Symfony».
События и конференции: Организовано четыре конференции, включая SymfonyCon в Брюсселе, на котором собралось более 1,200 человек. Заявлены планы на проведение конференций в 2024 году, включая SymfonyOnline, SymfonyLive Paris и SymfonyCon Vienna.
Symfony Components: Компоненты Symfony превысили 20 миллиардов загрузок в 2023 году. В этот год были выпущены новые компоненты, такие как Scheduler, Webhook and RemoteEvent, AssetMapper, а также новые пакеты для интеграции с приложениями, отправляющими электронные письма, SMS и др.
Другие важные новости: Введена сертификация Symfony 7, опубликован последний релиз Twig 2, Symfony завершил многолетнюю работу по добавлению всех типовых объявлений PHP в код Symfony, и другие события и обновления.
Это обзор достижений Symfony в 2023 году и планы на 2024 год. В статье подчеркивается благодарность за поддержку сообщества и рассматриваются следующие ключевые моменты:
Релизы: Symfony выпустил три новых основных версии: Symfony 6.3 в мае и Symfony 6.4 (LTS) и Symfony 7.0 в ноябре. Также было опубликовано 58 обслуживаемых версий в восьми различных ветках. Требования к PHP были повышены до версии 8.2 для Symfony 7.0.
Блог и статьи: Было опубликовано 311 блогов, включая 49 статей «Новое в Symfony», поясняющих новые функции Symfony 6.3 и 6.4/7.0. Также было 52 публикации «Неделя Symfony».
События и конференции: Организовано четыре конференции, включая SymfonyCon в Брюсселе, на котором собралось более 1,200 человек. Заявлены планы на проведение конференций в 2024 году, включая SymfonyOnline, SymfonyLive Paris и SymfonyCon Vienna.
Symfony Components: Компоненты Symfony превысили 20 миллиардов загрузок в 2023 году. В этот год были выпущены новые компоненты, такие как Scheduler, Webhook and RemoteEvent, AssetMapper, а также новые пакеты для интеграции с приложениями, отправляющими электронные письма, SMS и др.
Другие важные новости: Введена сертификация Symfony 7, опубликован последний релиз Twig 2, Symfony завершил многолетнюю работу по добавлению всех типовых объявлений PHP в код Symfony, и другие события и обновления.
Symfony
Symfony 2023 Year in Review (Symfony Blog)
A summary of the highlights and key accomplishments of the Symfony project in 2023.
👍10❤2
Как использовать cURL в PHP
сURL в PHP — инструмент, позволяющий выполнять запросы к другим веб-сайтам или серверам из кода PHP, подобно тому, как это делает веб-браузер или мобильное приложение. Описывается его применение для получения данных, отправки файлов и взаимодействия с API.
Здесь предоставляются пошаговые инструкции по использованию cURL в PHP, начиная с установки библиотеки libcurl, проверки активации cURL в PHP и написания простого примера cURL-запроса.
Далее приводятся примеры команд cURL в PHP для различных типов запросов, таких как GET, POST, сохранение данных в файл, базовая аутентификация, отправка JSON данных, использование заголовков и прокси.
В конце описываются преимущества использования cURL в PHP, такие как интеграция с веб-приложениями, автоматизированная обработка данных, обработка ошибок, динамическая настройка запросов и управление сеансами. Также упоминается Guzzle как современная альтернатива cURL в PHP.
сURL в PHP — инструмент, позволяющий выполнять запросы к другим веб-сайтам или серверам из кода PHP, подобно тому, как это делает веб-браузер или мобильное приложение. Описывается его применение для получения данных, отправки файлов и взаимодействия с API.
Здесь предоставляются пошаговые инструкции по использованию cURL в PHP, начиная с установки библиотеки libcurl, проверки активации cURL в PHP и написания простого примера cURL-запроса.
Далее приводятся примеры команд cURL в PHP для различных типов запросов, таких как GET, POST, сохранение данных в файл, базовая аутентификация, отправка JSON данных, использование заголовков и прокси.
В конце описываются преимущества использования cURL в PHP, такие как интеграция с веб-приложениями, автоматизированная обработка данных, обработка ошибок, динамическая настройка запросов и управление сеансами. Также упоминается Guzzle как современная альтернатива cURL в PHP.
DEV Community
How to use cURL in PHP
If you're working with PHP and need to get or send data from a website, cURL is the tool you'll need....
❤7😁6🌚1
DomPDF в Laravel 10
Здесь представлено пошаговое руководство по интеграции библиотеки domPDF в проект на Laravel. Описаны этапы создания нового проекта, установки пакета domPDF, настройки Laravel, публикации конфигурации, создания контроллера для обработки PDF, формирования Blade-представления для содержимого PDF, определения маршрута и тестирования приложения с использованием сервера разработки Laravel.
Также подчеркивается гибкость и возможности использования domPDF в Laravel для генерации динамичных PDF-документов, таких как счета или отчеты, с подробными настройками. Завершается руководство призывом к исследованию потенциала domPDF в проектах Laravel.
Здесь представлено пошаговое руководство по интеграции библиотеки domPDF в проект на Laravel. Описаны этапы создания нового проекта, установки пакета domPDF, настройки Laravel, публикации конфигурации, создания контроллера для обработки PDF, формирования Blade-представления для содержимого PDF, определения маршрута и тестирования приложения с использованием сервера разработки Laravel.
Также подчеркивается гибкость и возможности использования domPDF в Laravel для генерации динамичных PDF-документов, таких как счета или отчеты, с подробными настройками. Завершается руководство призывом к исследованию потенциала domPDF в проектах Laravel.
👍10🥱6❤1
Forwarded from Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
💣 Кем вы видите себя через 5 лет: как отвечать на странные и неудобные вопросы на собеседовании
7 самых распространенных вопросов, которые точно задавали каждому из вас.
Читать статью
7 самых распространенных вопросов, которые точно задавали каждому из вас.
Читать статью
👍4❤1
Как обрабатывать большие CSV-файлы в Laravel
📄 Существует эффективный способ обработки больших CSV-файлов в Laravel без ущерба производительности приложения. Вводится пакет Simple Excel от Spatie, который помогает управлять использованием памяти, возвращая LazyCollection и позволяя обрабатывать данные порциями.
🛠️ Здесь предлагается использовать Laravel Jobs для управления обработкой CSV и демонстрирует создание задачи «ImportCsv». Эта задача использует SimpleExcelReader для чтения CSV-файла, разбивки его на управляемые части и диспетчеризации другой задачи, «ImportProductChunk», для каждой части.
💼 Задача «ImportProductChunk» отвечает за вставку данных в базу данных и подчеркивает важность обеспечения уникальности, чтобы избежать обработки одних и тех же данных несколько раз.🚀
🔄 В общем, подход включает в себя разбиение CSV-файла на более мелкие части, диспетчеризацию задач для каждой части и эффективную обработку и вставку данных в базу данных, обеспечивая плавную и эффективную операцию без избыточного использования памяти.
📄 Существует эффективный способ обработки больших CSV-файлов в Laravel без ущерба производительности приложения. Вводится пакет Simple Excel от Spatie, который помогает управлять использованием памяти, возвращая LazyCollection и позволяя обрабатывать данные порциями.
🛠️ Здесь предлагается использовать Laravel Jobs для управления обработкой CSV и демонстрирует создание задачи «ImportCsv». Эта задача использует SimpleExcelReader для чтения CSV-файла, разбивки его на управляемые части и диспетчеризации другой задачи, «ImportProductChunk», для каждой части.
💼 Задача «ImportProductChunk» отвечает за вставку данных в базу данных и подчеркивает важность обеспечения уникальности, чтобы избежать обработки одних и тех же данных несколько раз.🚀
🔄 В общем, подход включает в себя разбиение CSV-файла на более мелкие части, диспетчеризацию задач для каждой части и эффективную обработку и вставку данных в базу данных, обеспечивая плавную и эффективную операцию без избыточного использования памяти.
Laravel News
How to process large CSV files with Laravel - Laravel News
Learn how to process large CSV files in Laravel without compromising memory and performance.
👍7😁3❤1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
❤1👍1
Тестирование абстрактных классов в PHP с использованием анонимных классов
Здесь обсуждается проблема тестирования функционала в абстрактных классах, на примере абстрактного класса с именем Vehicle и методом move(). Исследуются два основных подхода к тестированию: частичное мокирование и использование анонимных классов.
Рекомендуется избегать обширного мокирования, указывая на потенциальные проблемы при расширении кода. Вместо этого представлено использование анонимных классов для создания экземпляра абстрактного класса внутри тестового случая. Этот подход демонстрируется с использованием тестового фреймворка PEST, с примерами тестирования метода move() с разными сценариями.
Для повышения читаемости кода представлен хелпер-функция для создания экземпляров анонимного класса с заданной скоростью. Эта функция затем используется в нескольких тестовых случаях.
Здесь обсуждается проблема тестирования функционала в абстрактных классах, на примере абстрактного класса с именем Vehicle и методом move(). Исследуются два основных подхода к тестированию: частичное мокирование и использование анонимных классов.
Рекомендуется избегать обширного мокирования, указывая на потенциальные проблемы при расширении кода. Вместо этого представлено использование анонимных классов для создания экземпляра абстрактного класса внутри тестового случая. Этот подход демонстрируется с использованием тестового фреймворка PEST, с примерами тестирования метода move() с разными сценариями.
Для повышения читаемости кода представлен хелпер-функция для создания экземпляров анонимного класса с заданной скоростью. Эта функция затем используется в нескольких тестовых случаях.
👍4❤1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
👏4❤1
Использование памяти массива, классов и анонимных классов
🧪 В проведенных тестах сравнения эффективности использования памяти и производительности массивов и классов в PHP выявлены интересные результаты:
📊 В первом эксперименте, где создавались массивы и классы до исчерпания памяти, выяснилось, что классы демонстрируют более эффективное использование памяти. В частности, stdClass имела наименьший расход памяти, за ней следовали анонимные классы и классы с именами.
🔄 Также были проанализированы результаты на различных версиях PHP, выявив, что массивы становятся все более эффективными с появлением новых версий. В то время как классы сохраняют стабильность в отношении ресурсов, с небольшим увеличением использования памяти в PHP 8.2 из-за отсутствия динамических свойств.
⏱️ Во втором тесте, измерившем время доступа к значениям в массивах и объектах, обнаружено, что различия незначительны. Хотя производительность ассоциативных массивов оказалась немного ниже, эта разница была минимальна при миллионе итераций.
🔍 В итоге был сделан вывод, что классы обладают более эффективным использованием памяти по сравнению с массивами, что сопровождается улучшенной общей производительностью. Важно отметить, что различия в производительности являются микрооптимизациями. Однако несмотря на эффективность использования памяти классов, выделено моменты, когда массивы могут оставаться предпочтительными, особенно при стоимости преобразования, например, при работе с результатами баз данных или структурами JSON, где широко используются ассоциативные массивы.
🧪 В проведенных тестах сравнения эффективности использования памяти и производительности массивов и классов в PHP выявлены интересные результаты:
📊 В первом эксперименте, где создавались массивы и классы до исчерпания памяти, выяснилось, что классы демонстрируют более эффективное использование памяти. В частности, stdClass имела наименьший расход памяти, за ней следовали анонимные классы и классы с именами.
🔄 Также были проанализированы результаты на различных версиях PHP, выявив, что массивы становятся все более эффективными с появлением новых версий. В то время как классы сохраняют стабильность в отношении ресурсов, с небольшим увеличением использования памяти в PHP 8.2 из-за отсутствия динамических свойств.
⏱️ Во втором тесте, измерившем время доступа к значениям в массивах и объектах, обнаружено, что различия незначительны. Хотя производительность ассоциативных массивов оказалась немного ниже, эта разница была минимальна при миллионе итераций.
🔍 В итоге был сделан вывод, что классы обладают более эффективным использованием памяти по сравнению с массивами, что сопровождается улучшенной общей производительностью. Важно отметить, что различия в производительности являются микрооптимизациями. Однако несмотря на эффективность использования памяти классов, выделено моменты, когда массивы могут оставаться предпочтительными, особенно при стоимости преобразования, например, при работе с результатами баз данных или структурами JSON, где широко используются ассоциативные массивы.
🥱4👍3❤1
В чем разница между операторами DISTINCT и GROUP BY?
Операторы DISTINCT и GROUP BY в SQL используются для обработки уникальных значений, но они выполняют разные функции.
DISTINCT применяется к столбцам в операторе SELECT и возвращает уникальные значения в этом столбце.
Он удаляет дубликаты из результирующего набора.
GROUP BY также применяется к столбцам в операторе SELECT, но он используется для группировки строк по значениям в указанных столбцах.
Он позволяет применять агрегатные функции, такие как COUNT, SUM, AVG, и т.д., к каждой группе.
Таким образом, основное различие заключается в том, что DISTINCT просто возвращает уникальные значения из столбца, в то время как GROUP BY используется для группировки строк на основе значений столбца и применения агрегатных функций к этим группам.
Пример:
Допустим, у нас есть таблица «orders» с колонками «customer_id» и «total_price». Если мы хотим узнать общую сумму покупок для каждого клиента, мы бы использовали GROUP BY. Если же мы хотим получить уникальные идентификаторы клиентов, мы бы использовали DISTINCT
#вопросы_с_собеседования
Операторы DISTINCT и GROUP BY в SQL используются для обработки уникальных значений, но они выполняют разные функции.
DISTINCT применяется к столбцам в операторе SELECT и возвращает уникальные значения в этом столбце.
Он удаляет дубликаты из результирующего набора.
GROUP BY также применяется к столбцам в операторе SELECT, но он используется для группировки строк по значениям в указанных столбцах.
Он позволяет применять агрегатные функции, такие как COUNT, SUM, AVG, и т.д., к каждой группе.
Таким образом, основное различие заключается в том, что DISTINCT просто возвращает уникальные значения из столбца, в то время как GROUP BY используется для группировки строк на основе значений столбца и применения агрегатных функций к этим группам.
Пример:
Допустим, у нас есть таблица «orders» с колонками «customer_id» и «total_price». Если мы хотим узнать общую сумму покупок для каждого клиента, мы бы использовали GROUP BY. Если же мы хотим получить уникальные идентификаторы клиентов, мы бы использовали DISTINCT
#вопросы_с_собеседования
👍10❤1
🌐Здесь рассматривается эволюция протокола HTTP и возникающая потребность в обновлениях в реальном времени для веб-ресурсов.
🤔 Несмотря на популярность веба, стандартный протокол HTTP не предоставляет встроенной поддержки общения в реальном времени. Для решения этой проблемы были разработаны различные техники и протоколы, такие как Comet, Server-Sent Events, WebSocket и WebSub.
🌐 Затем внимание переходит к трём предложенным стандартам, представленным на IETF: Braid, PREP и Mercure.
🚀 Braid выделяется как наиболее амбициозный, предлагая комплексную структуру для синхронизации состояний между серверами и клиентами, включая управление версиями и разрешение конфликтов.
🌊 PREP, более скромное предложение, фокусируется на подписке на обновления и связано с сообществом Solid.
👏 В статье хвалят Braid и PREP, но отмечают их ограничения, особенно при использовании с HTTP/1.1.
💡 Автор вводит альтернативную идею, вдохновленную кодом 103 Early Hints, предлагая новый класс статуса (7XX) для отправки ответов после основного ответа. Этот подход направлен на улучшение эффективности и совместимости с HTTP/2 и HTTP/3.
🔄 Несмотря на инновации, представленные Braid и PREP, в статье признается сложность развертывания постоянных соединений в текущей веб-экосистеме.
🛣️ Затем представлен протокол Mercure как прагматичное решение, которое работает с существующими веб-стандартами, концентрируя обновления в одном URL или «хабе». Простота Mercure и его совместимость с различными существующими технологиями подчеркиваются, делая его практичным выбором для обновлений в реальном времени в текущем веб-пейзаже.
🤔 Несмотря на популярность веба, стандартный протокол HTTP не предоставляет встроенной поддержки общения в реальном времени. Для решения этой проблемы были разработаны различные техники и протоколы, такие как Comet, Server-Sent Events, WebSocket и WebSub.
🌐 Затем внимание переходит к трём предложенным стандартам, представленным на IETF: Braid, PREP и Mercure.
🚀 Braid выделяется как наиболее амбициозный, предлагая комплексную структуру для синхронизации состояний между серверами и клиентами, включая управление версиями и разрешение конфликтов.
🌊 PREP, более скромное предложение, фокусируется на подписке на обновления и связано с сообществом Solid.
👏 В статье хвалят Braid и PREP, но отмечают их ограничения, особенно при использовании с HTTP/1.1.
💡 Автор вводит альтернативную идею, вдохновленную кодом 103 Early Hints, предлагая новый класс статуса (7XX) для отправки ответов после основного ответа. Этот подход направлен на улучшение эффективности и совместимости с HTTP/2 и HTTP/3.
🔄 Несмотря на инновации, представленные Braid и PREP, в статье признается сложность развертывания постоянных соединений в текущей веб-экосистеме.
🛣️ Затем представлен протокол Mercure как прагматичное решение, которое работает с существующими веб-стандартами, концентрируя обновления в одном URL или «хабе». Простота Mercure и его совместимость с различными существующими технологиями подчеркиваются, делая его практичным выбором для обновлений в реальном времени в текущем веб-пейзаже.
Kévin Dunglas - Founder of Les-Tilleuls.coop (worker-owned cooperative). Creator of API Platform, Mercure.rocks, Vulcain.rocks and of some Symfony components.
Mercure, Braid, PREP… news about subscribing to HTTP resource updates - Kévin Dunglas
Introduction For 32 years now, the venerable HTTP protocol has been at the heart of the Web. This protocol enables "resources" (anything that can be named can be a resource, but these are often documents) to be retrieved from a server using their unique identifier:…
👍2❤1🔥1
Защита JPG-файлов от копирования с помощью Exif и IPTC-тегов
Существует проблема, когда тщательно созданные фотографии для статьи впоследствии классифицируются Яндексом как «малополезный контент». В течение года другие статьи, использующие украденные изображения, занимали лучшие позиции по SEO-запросам.
Для предотвращения подобных ситуаций автор предлагает использовать текстовые мета-теги в изображениях, такие как Exif и IPTC. Он рассматривает каждый из этих форматов и предоставляет примеры PHP-кода для чтения и записи соответствующих данных. Он также рекомендует использовать нейросети, фотостоки или стандартные изображения для избежания штрафов за нарушение авторских прав.
Существует проблема, когда тщательно созданные фотографии для статьи впоследствии классифицируются Яндексом как «малополезный контент». В течение года другие статьи, использующие украденные изображения, занимали лучшие позиции по SEO-запросам.
Для предотвращения подобных ситуаций автор предлагает использовать текстовые мета-теги в изображениях, такие как Exif и IPTC. Он рассматривает каждый из этих форматов и предоставляет примеры PHP-кода для чтения и записи соответствующих данных. Он также рекомендует использовать нейросети, фотостоки или стандартные изображения для избежания штрафов за нарушение авторских прав.
Хабр
Защита JPG-файлов от копирования с помощью Exif и IPTC-тегов
Всем привет! На связи Павел Стариков Fullstack-разработчик digital-агентства Webit. Представьте, вы потратили целый день на создание хороших фотографий для статьи на сайте. Выставили свет, поставили...
😁7👍5❤1🤔1🥱1
Согласно данным Upgraded Points, каждый седьмой сотрудник на удаленке продуктивно работают лишь 3-4 часа в день. Люди не возвращаются в офисы, потому что у них есть возможность отдыхать дома.
Как вы считаете, люди правда тратят по 3-4 часа на работу?
Как вы считаете, люди правда тратят по 3-4 часа на работу?
👍42🌚5🤔3🥱3❤1
Искусство валидации в Laravel
Это обзор системы валидации в Laravel.
Здесь подробно рассматриваются различные техники и функциональности валидации, начиная с основных принципов и заканчивая более сложными сценариями.
Вы узнаете, как осуществлять базовую валидацию форм, настраивать пользовательские сообщения об ошибках, работать с массивами, проводить уникальную валидацию для полей, обрабатывать даты, создавать условные правила валидации, работать с файлами и многим другим.
Это обзор системы валидации в Laravel.
Здесь подробно рассматриваются различные техники и функциональности валидации, начиная с основных принципов и заканчивая более сложными сценариями.
Вы узнаете, как осуществлять базовую валидацию форм, настраивать пользовательские сообщения об ошибках, работать с массивами, проводить уникальную валидацию для полей, обрабатывать даты, создавать условные правила валидации, работать с файлами и многим другим.
DEV Community
The Art of Validation in Laravel: A Comprehensive Guide
Hello, Laravel community! In the realm of web development, proper data validation is key to ensuring...
🥱6👍3❤1
#дайджест новостей по PHP за неделю:
🔎Laravel 10.40 — с методом ограничения числа, помощником в стиле APA, настройкой пути к ресурсам Vite и многим другим. — Команда Laravel выпустила версию 10.40 с методом ограничения числа, помощником по строкам регистра заголовков в стиле APA, настройкой пути к активам Vite и бмногим другим.
🔎Неделя Symfony #889 (8–14 января 2024 г.) — На этой неделе деятельность разработчиков была сосредоточена на исправлении ошибок во всех поддерживаемых и будущих версиях Symfony.
🔎Bagisto выпустили новое мобильное приложение с открытым исходным кодом для продавцов. — Bagisto теперь имеет мобильное приложение с открытым исходным кодом для торговцев. Это позволяет вам легко запустить собственное мобильное приложение для вашего магазина. Вы можете легко настроить важные части, такие как заголовок приложения, заставку, значок приложения и многое другое.
🔎Filament: чего ожидать в 2024 году.
🔎Laravel 10.40 — с методом ограничения числа, помощником в стиле APA, настройкой пути к ресурсам Vite и многим другим. — Команда Laravel выпустила версию 10.40 с методом ограничения числа, помощником по строкам регистра заголовков в стиле APA, настройкой пути к активам Vite и бмногим другим.
🔎Неделя Symfony #889 (8–14 января 2024 г.) — На этой неделе деятельность разработчиков была сосредоточена на исправлении ошибок во всех поддерживаемых и будущих версиях Symfony.
🔎Bagisto выпустили новое мобильное приложение с открытым исходным кодом для продавцов. — Bagisto теперь имеет мобильное приложение с открытым исходным кодом для торговцев. Это позволяет вам легко запустить собственное мобильное приложение для вашего магазина. Вы можете легко настроить важные части, такие как заголовок приложения, заставку, значок приложения и многое другое.
🔎Filament: чего ожидать в 2024 году.
👍3❤1
Создание автономных двоичных файлов PHP-приложений с использованием статического PHP CLI
🚀В статье рассматривается использование Static PHP CLI (SPC) для преобразования проектов на PHP в отдельные исполняемые двоичные файлы, предоставляя пошаговое руководство на примере Laravel Zero.
SPC автоматизирует компиляцию PHP SAPI в статические двоичные файлы с учетом расширений, что позволяет создавать один двоичный файл со всеми зависимостями и настройками.
💡 Преимущества:
Независимость от установки PHP.
Улучшенная переносимость.
Более широкие возможности распространения.
Процесс включает создание приложения Laravel Zero, построение его в виде PHAR, подготовку и установку SPC, скачивание необходимых пакетов и компиляцию статических двоичных файлов.
❗Хотя этот метод предоставляет преимущества, такие как отсутствие зависимостей от установки PHP, у него есть недостатки:
Трудоемкий процесс.
Большие размеры двоичных файлов.
Ограничения по изменению исходного кода после компиляции.
Принятие этого метода иллюстрируется примерами, такими как Swoole CLI, Hyperf, Webman, Laravel Herd и FrankenPHP.
🚀В статье рассматривается использование Static PHP CLI (SPC) для преобразования проектов на PHP в отдельные исполняемые двоичные файлы, предоставляя пошаговое руководство на примере Laravel Zero.
SPC автоматизирует компиляцию PHP SAPI в статические двоичные файлы с учетом расширений, что позволяет создавать один двоичный файл со всеми зависимостями и настройками.
💡 Преимущества:
Независимость от установки PHP.
Улучшенная переносимость.
Более широкие возможности распространения.
Процесс включает создание приложения Laravel Zero, построение его в виде PHAR, подготовку и установку SPC, скачивание необходимых пакетов и компиляцию статических двоичных файлов.
❗Хотя этот метод предоставляет преимущества, такие как отсутствие зависимостей от установки PHP, у него есть недостатки:
Трудоемкий процесс.
Большие размеры двоичных файлов.
Ограничения по изменению исходного кода после компиляции.
Принятие этого метода иллюстрируется примерами, такими как Swoole CLI, Hyperf, Webman, Laravel Herd и FrankenPHP.
🔥5❤2