Idempotency — что это такое и как это может помочь нашим API в Laravel?
При разработке API идемпотентность — это важное понятие, о котором нужно знать. Если API поддерживает идемпотентность, клиент передает уникальный ключ для каждого запроса, который сервер использует, чтобы избежать повторной обработки запросов, отправленных несколько раз.
Это помогает избежать, например, проблем с многократной обработкой платежей или повторной отправкой форм, когда у пользователя нестабильное подключение. Этот концепт поддерживается в одних из самых популярных SDK от таких компаний, как Stripe, Paypal, Amazon и Shopify.
В этом посте мы рассмотрим конкретные преимущества, которые идемпотентность приносит нашим API, а также представим пакет, который позволяет легко добавить поддержку идемпотентности в любой Laravel API!
https://www.conroyp.com/articles/what-is-idempotency-add-to-laravel-apis
👉 @php_lib
При разработке API идемпотентность — это важное понятие, о котором нужно знать. Если API поддерживает идемпотентность, клиент передает уникальный ключ для каждого запроса, который сервер использует, чтобы избежать повторной обработки запросов, отправленных несколько раз.
Это помогает избежать, например, проблем с многократной обработкой платежей или повторной отправкой форм, когда у пользователя нестабильное подключение. Этот концепт поддерживается в одних из самых популярных SDK от таких компаний, как Stripe, Paypal, Amazon и Shopify.
В этом посте мы рассмотрим конкретные преимущества, которые идемпотентность приносит нашим API, а также представим пакет, который позволяет легко добавить поддержку идемпотентности в любой Laravel API!
https://www.conroyp.com/articles/what-is-idempotency-add-to-laravel-apis
👉 @php_lib
Как проверить, пуста ли коллекция Laravel?
Как веб-разработчику на Laravel, вам часто придется работать с коллекциями, массивами PHP и массивами JavaScript. Одна из распространенных задач, с которой я сталкиваюсь регулярно, — это проверка, пусты ли эти структуры или нет.
Если вы похожи на меня, то, вероятно, вы пытались взаимодействовать с классом Collection так, как если бы это был массив (случайно или намеренно). Хотя в большинстве случаев это возможно, существует одна распространенная «ловушка», о которой нужно знать, чтобы избежать багов в вашем коде! На самом деле, я написал эту статью потому, что сам попался на эту ловушку и потратил немало времени, пытаясь понять, что происходит.
https://ashallendesign.co.uk/blog/how-to-check-if-a-laravel-collection-is-empty
👉 @php_lib
Как веб-разработчику на Laravel, вам часто придется работать с коллекциями, массивами PHP и массивами JavaScript. Одна из распространенных задач, с которой я сталкиваюсь регулярно, — это проверка, пусты ли эти структуры или нет.
Если вы похожи на меня, то, вероятно, вы пытались взаимодействовать с классом Collection так, как если бы это был массив (случайно или намеренно). Хотя в большинстве случаев это возможно, существует одна распространенная «ловушка», о которой нужно знать, чтобы избежать багов в вашем коде! На самом деле, я написал эту статью потому, что сам попался на эту ловушку и потратил немало времени, пытаясь понять, что происходит.
https://ashallendesign.co.uk/blog/how-to-check-if-a-laravel-collection-is-empty
👉 @php_lib
Профайлинг Laravel приложений с XDebug и PHPStorm
Привет, меня зовут Ваня, я работаю PHP-разработчиком в Санкт-Петербургском электротехническом университете ЛЭТИ. Профайлинг приложений важный этап перед релизом ресурсоёмкой фичи, везде трубят про удобную отладку PHP-приложений при помощи XDebug и PHPStorm, однако напрочь забывают про замеры времени операций, которые, порой, превышают те самые 3 секунды, которые пользователь будет ждать на странице. Если у Вас есть метод API, который долго работает, самое время его проверить профайлером XDebug, а PHPStorm поможет красиво визуализировать и изучить файл профиля.
Я не буду писать про настройку XDebug вместе с Docker контейнером и Laravel Sail, потому что про это есть тонна статей, в том числе и на русском. Однако, эта статья предполагает, что у Вас есть настроенный XDebug в связке с PHPStorm в Docker контейнере или другой среде.
https://habr.com/ru/articles/788946/
👉 @php_lib
Привет, меня зовут Ваня, я работаю PHP-разработчиком в Санкт-Петербургском электротехническом университете ЛЭТИ. Профайлинг приложений важный этап перед релизом ресурсоёмкой фичи, везде трубят про удобную отладку PHP-приложений при помощи XDebug и PHPStorm, однако напрочь забывают про замеры времени операций, которые, порой, превышают те самые 3 секунды, которые пользователь будет ждать на странице. Если у Вас есть метод API, который долго работает, самое время его проверить профайлером XDebug, а PHPStorm поможет красиво визуализировать и изучить файл профиля.
Я не буду писать про настройку XDebug вместе с Docker контейнером и Laravel Sail, потому что про это есть тонна статей, в том числе и на русском. Однако, эта статья предполагает, что у Вас есть настроенный XDebug в связке с PHPStorm в Docker контейнере или другой среде.
https://habr.com/ru/articles/788946/
👉 @php_lib
Введение в PHPCTL
В первые годы многие люди использовали решения вроде LAMP, WAMP, XAMPP и т.д. Для тех, кто не знаком с тем временем, это были наборы инструментов, которые включали Apache, MySQL и PHP, и их устанавливали как любое другое приложение с помощью знаменитого подхода "Далее, далее, далее...".
Со временем люди перестали использовать подобные инструменты, особенно с появлением встроенного веб-сервера в PHP, поэтому больше нет необходимости настраивать веб-сервер, такой как Apache или Nginx.
Кроме того, появилась и закрепилась еще одна концепция — использование контейнеров, которые стали очень популярны благодаря инструменту Docker (хотя есть и другие среды выполнения).
https://leocavalcante.notion.site/Introduction-to-PHPCTL-aec7224730e245ff889a89d65a4fbe07
👉 @php_lib
В первые годы многие люди использовали решения вроде LAMP, WAMP, XAMPP и т.д. Для тех, кто не знаком с тем временем, это были наборы инструментов, которые включали Apache, MySQL и PHP, и их устанавливали как любое другое приложение с помощью знаменитого подхода "Далее, далее, далее...".
Со временем люди перестали использовать подобные инструменты, особенно с появлением встроенного веб-сервера в PHP, поэтому больше нет необходимости настраивать веб-сервер, такой как Apache или Nginx.
Кроме того, появилась и закрепилась еще одна концепция — использование контейнеров, которые стали очень популярны благодаря инструменту Docker (хотя есть и другие среды выполнения).
https://leocavalcante.notion.site/Introduction-to-PHPCTL-aec7224730e245ff889a89d65a4fbe07
👉 @php_lib
This media is not supported in your browser
VIEW IN TELEGRAM
💡Советы и хитрости PhpStorm - Store Window Layout
Вам не нравится адаптировать положение окон инструментов при каждом новом проекте? (например, дерево файлов слева направо).
Вы можете сохранить их.
👉 @php_lib
Вам не нравится адаптировать положение окон инструментов при каждом новом проекте? (например, дерево файлов слева направо).
Вы можете сохранить их.
👉 @php_lib
Gemini API PHP Client
Клиент Google Gemini API для PHP позволяет вам использовать модель искусственного интеллекта Gemini.
Установка
Базовая генерация текста
https://github.com/gemini-api-php/client
👉 @php_lib
Клиент Google Gemini API для PHP позволяет вам использовать модель искусственного интеллекта Gemini.
Установка
composer require gemini-api-php/client
Базовая генерация текста
use GeminiAPI\Client;
use GeminiAPI\Resources\Parts\TextPart;
$client = new Client('GEMINI_API_KEY');
$response = $client->geminiPro()->generateContent(
new TextPart('PHP in less than 100 chars'),
);
print $response->text();
// PHP: A server-side scripting language used to create dynamic web applications.
// Easy to learn, widely used, and open-source.
https://github.com/gemini-api-php/client
👉 @php_lib
PHP. Как увеличить потребление памяти в 3 и более раз при работе с массивами
Известно, что PHP активно использует механизм copy-on-write. Это означает, что при попытке внутри функции что-то записать в переданные ей параметры, вначале будет сделана копия этой переменной, а уж затем в неё что-то запишется. Такая же ситуация наблюдается с итерацией массива с помощью foreach. Отсюда следует, что вам потребуется увеличить количество памяти для создания копии переменной и времени (ресурсов ЦП), чтобы всё это проделать. Т.е. возникнет пауза, прежде чем PHP перейдёт к следующей строчке вашей программы.
https://habr.com/ru/articles/746868/
👉 @php_lib
Известно, что PHP активно использует механизм copy-on-write. Это означает, что при попытке внутри функции что-то записать в переданные ей параметры, вначале будет сделана копия этой переменной, а уж затем в неё что-то запишется. Такая же ситуация наблюдается с итерацией массива с помощью foreach. Отсюда следует, что вам потребуется увеличить количество памяти для создания копии переменной и времени (ресурсов ЦП), чтобы всё это проделать. Т.е. возникнет пауза, прежде чем PHP перейдёт к следующей строчке вашей программы.
https://habr.com/ru/articles/746868/
👉 @php_lib
Показываем статистику в реальном времени с Laravel Volt
Для реализации этой возможности нам необходим метод отслеживания активных пользователей. Одним из вариантов является запись активных пользователей в таблицу базы данных. Каждая запись будет содержать идентификатор пользователя и временную метку, когда он был активен. Затем можно проверить активность за последние 5 минут или за любой другой желаемый промежуток времени. Другой способ заключается в наличии столбца "last_login_at" в таблице пользователей. Третий вариант - использование сервера web-sockets для получения подсчета активных пользователей в реальном времени.
В данной статье я остановлюсь на использовании Redis. Я люблю Redis за то, что это простая база данных in-memory, но при этом очень мощная. Я уже использовал этот метод, и он способен масштабироваться до тысяч и даже миллионов пользователей.
https://ahmedash.dev/blog/laravel-core-bits/volt-live-users-stats/
👉 @php_lib
Для реализации этой возможности нам необходим метод отслеживания активных пользователей. Одним из вариантов является запись активных пользователей в таблицу базы данных. Каждая запись будет содержать идентификатор пользователя и временную метку, когда он был активен. Затем можно проверить активность за последние 5 минут или за любой другой желаемый промежуток времени. Другой способ заключается в наличии столбца "last_login_at" в таблице пользователей. Третий вариант - использование сервера web-sockets для получения подсчета активных пользователей в реальном времени.
В данной статье я остановлюсь на использовании Redis. Я люблю Redis за то, что это простая база данных in-memory, но при этом очень мощная. Я уже использовал этот метод, и он способен масштабироваться до тысяч и даже миллионов пользователей.
https://ahmedash.dev/blog/laravel-core-bits/volt-live-users-stats/
👉 @php_lib
🚨 Совет по безопасности Livewire: Всегда выполняйте авторизацию своих действий! 🔒
Никогда не доверяйте пользовательскому вводу — всегда проверяйте права доступа перед выполнением важных операций. Если вы уже используете Gates и Policies, работа с Livewire покажется вам привычной! 🏡💪
#Laravel #Livewire
👉 @php_lib
Никогда не доверяйте пользовательскому вводу — всегда проверяйте права доступа перед выполнением важных операций. Если вы уже используете Gates и Policies, работа с Livewire покажется вам привычной! 🏡💪
#Laravel #Livewire
👉 @php_lib
Полезная статистика по Laravel: Доля рынка Laravel и тенденции развития в 2024 году
https://techjury.net/blog/laravel-statistics/
👉 @php_lib
https://techjury.net/blog/laravel-statistics/
👉 @php_lib
This media is not supported in your browser
VIEW IN TELEGRAM
Бесплатное IT-образование в 2024
Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления
Выбирайте нужное и подписывайтесь:
👩💻 С/С++: @Cpportal
📱 GitHub: @git_developer
🤓 Книги айти: @portalToIT
👩💻 Golang: @juniorGolang
👩💻 PHP: @PHPortal
👩💻 Моб. разработка: @MobDev
👩💻 Java: @Java_Iibrary
👩💻 Frontend: @FrontendPortal
⚙️ Backend: @BackendPortal
👩💻 Python: @PythonPortal
👩💻 C#: @KodBlog
🖥 Базы Данных & SQL: @SQL
👩💻 Разработка игр: @GameDevgx
👩💻 DevOps: @loose_code
🖥 Data Science: @DataSciencegx
🤔 Хакинг & ИБ: @cybersecinform
🐞 Тестирование: @QAPortal
📱 Маркетинг: @MarketingPortal
🖥 Дизайн: @PortalToDesign
➡️ Сохраняйте себе, чтобы не потерять
Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления
Выбирайте нужное и подписывайтесь:
🐞 Тестирование: @QAPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
PHP: путешествие от «Hello World» до фреймворков
PHP — это довольно популярный язык программирования. Много лет в интернете можно услышать утверждение, что PHP умирает. Однако язык до сих пор жив и активно используется. Если вы занимаетесь выбором языка для изучения в 2024 году, возможно, вам стоит обратить внимание на другие языки программирования, у языка появилось много достойных и более популярных конкурентов. Но если вы, всё-таки, решились и начали осваивать PHP, то этот материал для вас.
https://habr.com/ru/articles/854488/
👉 @php_lib
PHP — это довольно популярный язык программирования. Много лет в интернете можно услышать утверждение, что PHP умирает. Однако язык до сих пор жив и активно используется. Если вы занимаетесь выбором языка для изучения в 2024 году, возможно, вам стоит обратить внимание на другие языки программирования, у языка появилось много достойных и более популярных конкурентов. Но если вы, всё-таки, решились и начали осваивать PHP, то этот материал для вас.
https://habr.com/ru/articles/854488/
👉 @php_lib
Хабр
PHP: путешествие от «Hello World» до фреймворков
PHP — это довольно популярный язык программирования. Много лет в интернете можно услышать утверждение, что PHP умирает. Однако язык до сих пор жив и активно используется. Если вы занимаетесь выбором...
Совет по Laravel 💡
Преобразуйте свои массивы в коллекции, чтобы получить доступ ко всем полезным функциям для работы с вашими данными.
👉 @php_lib
Преобразуйте свои массивы в коллекции, чтобы получить доступ ко всем полезным функциям для работы с вашими данными.
👉 @php_lib
Как измерить производительность в приложениях Laravel
В данной статье предлагают практические стратегии для оптимизации работы приложений на Laravel. В ней рассматриваются типичные проблемы, такие как N+1 запросы, отсутствие индексов в базе данных и неэффективное использование ресурсов в API. Автор объясняет, как выявлять и исправлять эти проблемы с помощью инструментов, таких как eager loading, использование метода
https://martinjoo.dev/how-to-measure-performance-in-laravel-apps
👉 @php_lib
В данной статье предлагают практические стратегии для оптимизации работы приложений на Laravel. В ней рассматриваются типичные проблемы, такие как N+1 запросы, отсутствие индексов в базе данных и неэффективное использование ресурсов в API. Автор объясняет, как выявлять и исправлять эти проблемы с помощью инструментов, таких как eager loading, использование метода
whenLoaded
в ресурсах и правильная индексация. В статье подчеркивается важность управления запросами к базе данных и приводятся примеры для облегчения применения этих методов на практике.https://martinjoo.dev/how-to-measure-performance-in-laravel-apps
👉 @php_lib
⚡️Трансляция главного зала HighLoad++ 2024: спикеры из VK, Яндекс, hh.ru, Сбер и других компаний!
🖐️ Подключайтесь к открытой трансляции бесплатно.
HighLoad++ 2024 — это конференция, которая определяет будущее высоконагруженных систем. 2 и 3 декабря 2024 года все желающие могут бесплатно посмотреть онлайн-трансляцию главного зала. Это стало возможно благодаря поддержке генерального партнера конференции — VK.
Среди спикеров:
🔹 Денис Дерюгин (VK, ВКонтакте): расскажет об эволюции хранилища ВКонтакте за 18 лет.
🔹 Алексей Николаевский (Яндекс): представит сравнение транзакций в Apache Kafka и YDB.
🔹 Владимир Комаров (СберТех): расскажет о геораспределённых транзакциях, их теории и практическом применении.
🔹 Станислав Кондратьев (hh.ru): поделится опытом выделения микросервиса из 15-летнего монолита.
Приятного просмотра!
#реклама
О рекламодателе
🖐️ Подключайтесь к открытой трансляции бесплатно.
HighLoad++ 2024 — это конференция, которая определяет будущее высоконагруженных систем. 2 и 3 декабря 2024 года все желающие могут бесплатно посмотреть онлайн-трансляцию главного зала. Это стало возможно благодаря поддержке генерального партнера конференции — VK.
Среди спикеров:
🔹 Денис Дерюгин (VK, ВКонтакте): расскажет об эволюции хранилища ВКонтакте за 18 лет.
🔹 Алексей Николаевский (Яндекс): представит сравнение транзакций в Apache Kafka и YDB.
🔹 Владимир Комаров (СберТех): расскажет о геораспределённых транзакциях, их теории и практическом применении.
🔹 Станислав Кондратьев (hh.ru): поделится опытом выделения микросервиса из 15-летнего монолита.
Приятного просмотра!
#реклама
О рекламодателе
Laravel Clockwork: Подробный обзор отладки, профилирования и лучших практик
Автор подробно рассматривает инструмент для отладки и профилирования Laravel Clockwork. Она объясняет, как установить и настроить Clockwork, а также как интегрировать его с расширением для Chrome для анализа запросов и их производительности. Описываются различные вкладки в Clockwork, такие как запросы, база данных, логи, сессии и маршруты. В статье также проводится сравнение с другими инструментами, такими как Laravel Telescope и Laravel Debugbar. Это руководство поможет улучшить производительность и устранить узкие места в приложениях Laravel.
https://qirolab.com/posts/laravel-clockwork-a-deep-dive-into-debugging-profiling-skills-and-best-practices-1705314512
👉 @php_lib
Автор подробно рассматривает инструмент для отладки и профилирования Laravel Clockwork. Она объясняет, как установить и настроить Clockwork, а также как интегрировать его с расширением для Chrome для анализа запросов и их производительности. Описываются различные вкладки в Clockwork, такие как запросы, база данных, логи, сессии и маршруты. В статье также проводится сравнение с другими инструментами, такими как Laravel Telescope и Laravel Debugbar. Это руководство поможет улучшить производительность и устранить узкие места в приложениях Laravel.
https://qirolab.com/posts/laravel-clockwork-a-deep-dive-into-debugging-profiling-skills-and-best-practices-1705314512
👉 @php_lib
Совет по Laravel 💡
Данные загружаются быстрее, если целевое значение является целым числом.
Используйте
👉 @php_lib
Данные загружаются быстрее, если целевое значение является целым числом.
Используйте
𝘄𝗵𝗲𝗿𝗲𝗜𝗻𝘁𝗲𝗴𝗲𝗿𝗜𝗻𝗥𝗮𝘄()
вместо метода 𝘄𝗵𝗲𝗿𝗲𝗜𝗻()
, чтобы быстрее загружать данные, когда целевое значение является целым числом.👉 @php_lib
Совет по Laravel 💡
Знаете ли вы... Во время итерации в цикле foreach внутри цикла будет доступна переменная
👉 @php_lib
Знаете ли вы... Во время итерации в цикле foreach внутри цикла будет доступна переменная
$loop
. Эта переменная предоставляет доступ к некоторым полезным битам информации.👉 @php_lib
Как реализовать простую очередь в Symfony
Symfony - это популярный PHP-фреймворк, который предоставляет множество функций и компонентов для создания веб-приложений. Одним из таких компонентов является компонент Messenger, который позволяет отправлять и получать сообщения между различными частями вашего приложения или между различными приложениями. В этой статье мы рассмотрим, как использовать компонент Messenger для реализации простой системы очередей, используя Redis в качестве транспортного уровня.
1️⃣Установка необходимых пакетов: Используйте Composer для установки компонента Symfony Messenger и адаптера Redis.
2️⃣Настройка транспорта: Настройте подключение к серверу Redis в файле .env, указав расположение сервера и желаемое имя очереди.
3️⃣Создание сообщения и обработчика: Используйте команды Symfony console для создания классов сообщения и соответствующего обработчика. Эти классы представляют данные для отправки и логику, которая будет выполнена при получении сообщения.
4️⃣Маршрутизация сообщения к транспорту: Настройте компонент Messenger для связывания класса сообщения с желаемым транспортом в файле messenger.yaml.
5️⃣Отправка сообщения: Используйте службу MessageBusInterface для отправки сообщений из различных частей приложения, таких как контроллеры или службы.
6️⃣Получение сообщения: Используйте команду messenger:consume, чтобы запустить рабочий процесс, прослушивающий указанный транспорт и выполняющий соответствующий обработчик. Можно запускать несколько рабочих процессов параллельно для увеличения пропускной способности.
https://dev.to/daniyaljavani/how-to-implement-a-simple-queue-in-symfony-530a
👉 @php_lib
Symfony - это популярный PHP-фреймворк, который предоставляет множество функций и компонентов для создания веб-приложений. Одним из таких компонентов является компонент Messenger, который позволяет отправлять и получать сообщения между различными частями вашего приложения или между различными приложениями. В этой статье мы рассмотрим, как использовать компонент Messenger для реализации простой системы очередей, используя Redis в качестве транспортного уровня.
1️⃣Установка необходимых пакетов: Используйте Composer для установки компонента Symfony Messenger и адаптера Redis.
2️⃣Настройка транспорта: Настройте подключение к серверу Redis в файле .env, указав расположение сервера и желаемое имя очереди.
3️⃣Создание сообщения и обработчика: Используйте команды Symfony console для создания классов сообщения и соответствующего обработчика. Эти классы представляют данные для отправки и логику, которая будет выполнена при получении сообщения.
4️⃣Маршрутизация сообщения к транспорту: Настройте компонент Messenger для связывания класса сообщения с желаемым транспортом в файле messenger.yaml.
5️⃣Отправка сообщения: Используйте службу MessageBusInterface для отправки сообщений из различных частей приложения, таких как контроллеры или службы.
6️⃣Получение сообщения: Используйте команду messenger:consume, чтобы запустить рабочий процесс, прослушивающий указанный транспорт и выполняющий соответствующий обработчик. Можно запускать несколько рабочих процессов параллельно для увеличения пропускной способности.
https://dev.to/daniyaljavani/how-to-implement-a-simple-queue-in-symfony-530a
👉 @php_lib