#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
👏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
Создание автоматизированного конвейера документации на PHP с помощью Autodocs и GitHub Actions
Библиотека Autodocs предназначена для упрощения создания высококастомизируемых автоматизированных документаций на основе шаблонов Markdown. Совместно с приложением Minicli, она предоставляет уровень абстракции и структуру, на основе которых можно создавать собственную фабрику документации.
Этот проект создан, чтобы облегчить процесс поддержки документации для Chainguard Images, который теперь поддерживает более тысячи страниц документации в рамках рабочего процесса на основе GitHub с запусками каждую ночь.
Страницы определяются как классы, следующие определенному интерфейсу. Источники данных могут быть загружены автоматически как JSON-файлы кэша, что облегчает распределенные настройки, где данные поступают из различных источников. Этот распределенный подход упрощает интеграцию Autodocs с существующими рабочими процессами и конвейерами, особенно при использовании GitHub Actions.
Также включено пошаговое руководство по созданию демонстрационного приложения Autodocs для генерации персональных README-страниц на GitHub. Она включает следующие шаги:
1️⃣Создание демонстрационного приложения Minicli.
2️⃣Настройка опций Autodocs.
3️⃣Регистрация службы Autodocs.
4️⃣Создание команды сборки.
5️⃣Создание страницы документации.
6️⃣Запуск демонстрационного процесса с использованием GitHub Actions (необязательно).
Библиотека Autodocs предназначена для упрощения создания высококастомизируемых автоматизированных документаций на основе шаблонов Markdown. Совместно с приложением Minicli, она предоставляет уровень абстракции и структуру, на основе которых можно создавать собственную фабрику документации.
Этот проект создан, чтобы облегчить процесс поддержки документации для Chainguard Images, который теперь поддерживает более тысячи страниц документации в рамках рабочего процесса на основе GitHub с запусками каждую ночь.
Страницы определяются как классы, следующие определенному интерфейсу. Источники данных могут быть загружены автоматически как JSON-файлы кэша, что облегчает распределенные настройки, где данные поступают из различных источников. Этот распределенный подход упрощает интеграцию Autodocs с существующими рабочими процессами и конвейерами, особенно при использовании GitHub Actions.
Также включено пошаговое руководство по созданию демонстрационного приложения Autodocs для генерации персональных README-страниц на GitHub. Она включает следующие шаги:
1️⃣Создание демонстрационного приложения Minicli.
2️⃣Настройка опций Autodocs.
3️⃣Регистрация службы Autodocs.
4️⃣Создание команды сборки.
5️⃣Создание страницы документации.
6️⃣Запуск демонстрационного процесса с использованием GitHub Actions (необязательно).
DEV Community
Creating an Automated Documentation Pipeline in PHP with Autodocs and GitHub Actions
In this tutorial, learn how to create an automated documentation pipeline in PHP with Autodocs, Minicli, and GitHub Actions
👍6❤1
Как построить SaaS за выходные
SaaS расшифровывается как «Software as a Service» (Программное обеспечение как услуга). Это модель предоставления программного обеспечения, при которой приложения предоставляются через интернет на основе подписки. Вместо того чтобы пользователи устанавливали и обновляли программное обеспечение на своих компьютерах, они получают к нему доступ через веб-браузер.
Это подробное руководство о том, как быстро создать SaaS-приложение за выходные. В нем подчеркивается использование существующих шаблонов и инструментов для ускорения процесса разработки, позволяя фокусироваться на бизнес-логике и маркетинге.
Основные этапы включают выбор технологического стека, создание бизнес-логики, настройку биллинга, разработку документации, создание стартовой страницы и выбор хостинга. В конце подчеркивается важность маркетинга и продаж для успешного внедрения программного продукта.
SaaS расшифровывается как «Software as a Service» (Программное обеспечение как услуга). Это модель предоставления программного обеспечения, при которой приложения предоставляются через интернет на основе подписки. Вместо того чтобы пользователи устанавливали и обновляли программное обеспечение на своих компьютерах, они получают к нему доступ через веб-браузер.
Это подробное руководство о том, как быстро создать SaaS-приложение за выходные. В нем подчеркивается использование существующих шаблонов и инструментов для ускорения процесса разработки, позволяя фокусироваться на бизнес-логике и маркетинге.
Основные этапы включают выбор технологического стека, создание бизнес-логики, настройку биллинга, разработку документации, создание стартовой страницы и выбор хостинга. В конце подчеркивается важность маркетинга и продаж для успешного внедрения программного продукта.
Arunas codes
How to build a SaaS in a weekend - Arunas codes
Have an idea? Want to get an MVP out quickly? Using existing tools we will build a fully-functioning SaaS in a single weekend!
👍4😁3❤1👾1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤖 Итоги недели в мире ИИ и обзоры новых сервисов
Мы написали статью на VC, которая основана на очередном выпуске нашей рассылки про последние новости и тенденции в мире ИИ. Залетайте и читайте!
👇 Ниже — мини-подборка из статьи 👇
📰 Новости
▫️ OpenAI объявила о запуске долгожданного магазина кастомных чат-ботов.
▫️ В Пасадене (штат Калифорния) открывается первая закусочная CaliExpress by Flippy, полностью управляемая ИИ.
▫️ NVIDIA выпустила модель для распознавания речи Parakeet, которая по всем показателям превосходит OpenAI Whisper.
▫️ Использование ИИ в совместном научном проекте Microsoft и Тихоокеанской северо-западной национальной лаборатории в течение недели помогло определить новый элемент, который поможет снизить на 70% использование лития в батареях. Без ИИ такое исследование заняло бы по меньшей мере 20 лет.
▫️ Компания ByteDance выпустила новую модель MagicVideo-V2 для генерации видео.
🛠 Инструменты
◾️ Auto Wiki — генерирует вики-документацию для GitHub репозиториев.
◾️ Code to Flow — визуализирует, анализирует и объясняет код, написанный на всех популярных языках и фреймворках.
◾️ Concepto — платформа для создания прототипов веб-приложений.
◾️ Afforai — выполняет суммаризацию, перевод и поиск по множеству документов.
◾️ Corgea — исправляет уязвимые фрагменты кода.
◾️ Jan — опенсорсный оффлайновый чат-бот.
◾️ Plus AI — плагин для Google Slides: делает профессиональные презентации, персональные и командные дашборды, любые отчеты.
🤙 Сделай сам
🔸 WikiChat — опенсорсный инструмент для коррекции галлюцинаций с помощью информации из Википедии.
🔸 Подробная шпаргалка и советы по созданию продвинутых RAG.
🔸 OpenVoice — опенсорный инструмент для мгновенного клонирования голоса.
🎓 Туториалы
🔹 Туториал по работе с новым API Query Pipelines показывает примеры создания простых линейных цепочек и сложных ациклических графов из модулей LlamaIndex.
🔹 Туториал по объединению LLM с помощью mergekit детально разбирает 4 основных метода объединения моделей.
#чтопроисходит
Мы написали статью на VC, которая основана на очередном выпуске нашей рассылки про последние новости и тенденции в мире ИИ. Залетайте и читайте!
📰 Новости
▫️ OpenAI объявила о запуске долгожданного магазина кастомных чат-ботов.
▫️ В Пасадене (штат Калифорния) открывается первая закусочная CaliExpress by Flippy, полностью управляемая ИИ.
▫️ NVIDIA выпустила модель для распознавания речи Parakeet, которая по всем показателям превосходит OpenAI Whisper.
▫️ Использование ИИ в совместном научном проекте Microsoft и Тихоокеанской северо-западной национальной лаборатории в течение недели помогло определить новый элемент, который поможет снизить на 70% использование лития в батареях. Без ИИ такое исследование заняло бы по меньшей мере 20 лет.
▫️ Компания ByteDance выпустила новую модель MagicVideo-V2 для генерации видео.
🛠 Инструменты
◾️ Auto Wiki — генерирует вики-документацию для GitHub репозиториев.
◾️ Code to Flow — визуализирует, анализирует и объясняет код, написанный на всех популярных языках и фреймворках.
◾️ Concepto — платформа для создания прототипов веб-приложений.
◾️ Afforai — выполняет суммаризацию, перевод и поиск по множеству документов.
◾️ Corgea — исправляет уязвимые фрагменты кода.
◾️ Jan — опенсорсный оффлайновый чат-бот.
◾️ Plus AI — плагин для Google Slides: делает профессиональные презентации, персональные и командные дашборды, любые отчеты.
🤙 Сделай сам
🔸 WikiChat — опенсорсный инструмент для коррекции галлюцинаций с помощью информации из Википедии.
🔸 Подробная шпаргалка и советы по созданию продвинутых RAG.
🔸 OpenVoice — опенсорный инструмент для мгновенного клонирования голоса.
🎓 Туториалы
🔹 Туториал по работе с новым API Query Pipelines показывает примеры создания простых линейных цепочек и сложных ациклических графов из модулей LlamaIndex.
🔹 Туториал по объединению LLM с помощью mergekit детально разбирает 4 основных метода объединения моделей.
#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🥰1
Headless eCommerce на Laravel: Погружение в модульную архитектуру
Рассказ о том, как поверх Laravel реализовать фреймворк для быстрой и гибкой разработки API продукта с модульной архитектурой.
Рассказ о том, как поверх Laravel реализовать фреймворк для быстрой и гибкой разработки API продукта с модульной архитектурой.
Хабр
Headless eCommerce на Laravel: Погружение в модульную архитектуру
Привет, Habr! Меня зовут Тальгат Хайруллов, я руководитель команды разработки в компании CS-Cart. В статье расскажу, как мы поверх Laravel реализовали фреймворк для быстрой и гибкой разработки API...
🥰3⚡2❤2🤔1
📝 Интеграция сторонних API с Http-фасадом в Laravel
В статье:
Подробное руководство по интеграции сторонних API в Laravel с использованием структуры пользовательских классов для запросов и клиентов. Упор на использовании фасада Http в Laravel для обеспечения последовательности, более простого тестирования и уменьшения зависимостей.
1️⃣Добавление конфигурации Google Books в Laravel:
🗝️ Хранение ключа API и URL в файле .env.
🛠️ Добавление конфигурации в файл config/services.php.
2️⃣Создание класса ApiRequest:
🚀 Класс для построения HTTP-запросов к API.
🛠️ Методы для установки HTTP-метода, URI, заголовков, параметров запроса и тела.
🌐 Статические методы для создания экземпляров ApiRequest для конкретных HTTP-методов.
3️⃣Создание абстрактного класса ApiClient:
🛠️ Абстрактный базовый класс для выполнения HTTP-запросов к API.
🚀 Предоставляет метод для отправки ApiRequest и методы для получения и авторизации базового запроса.
📘 Подклассы должны реализовать метод baseUrl для указания базового URL API.
4️⃣Реализация GoogleBooksApiClient:
🚀 Конкретная реализация базового класса ApiClient для API Google Books.
🛠️ Методы для получения базового URL и авторизации запроса для API Google Books.
5️⃣Создание действия для запроса книг по названию:
🚀 Класс действия (QueryBooksByTitle) для запроса книг по названию из API Google Books.
🌐 Использует GoogleBooksApiClient и ApiRequest для формирования и отправки запроса.
🔚 В конце представлен бонусный раздел по написанию тестов для классов ApiRequest, ApiClient и GoogleBooksApiClient с использованием Pest PHP, демонстрируя, как обеспечить правильную настройку и поведение этих классов.
В статье:
Подробное руководство по интеграции сторонних API в Laravel с использованием структуры пользовательских классов для запросов и клиентов. Упор на использовании фасада Http в Laravel для обеспечения последовательности, более простого тестирования и уменьшения зависимостей.
1️⃣Добавление конфигурации Google Books в Laravel:
🗝️ Хранение ключа API и URL в файле .env.
🛠️ Добавление конфигурации в файл config/services.php.
2️⃣Создание класса ApiRequest:
🚀 Класс для построения HTTP-запросов к API.
🛠️ Методы для установки HTTP-метода, URI, заголовков, параметров запроса и тела.
🌐 Статические методы для создания экземпляров ApiRequest для конкретных HTTP-методов.
3️⃣Создание абстрактного класса ApiClient:
🛠️ Абстрактный базовый класс для выполнения HTTP-запросов к API.
🚀 Предоставляет метод для отправки ApiRequest и методы для получения и авторизации базового запроса.
📘 Подклассы должны реализовать метод baseUrl для указания базового URL API.
4️⃣Реализация GoogleBooksApiClient:
🚀 Конкретная реализация базового класса ApiClient для API Google Books.
🛠️ Методы для получения базового URL и авторизации запроса для API Google Books.
5️⃣Создание действия для запроса книг по названию:
🚀 Класс действия (QueryBooksByTitle) для запроса книг по названию из API Google Books.
🌐 Использует GoogleBooksApiClient и ApiRequest для формирования и отправки запроса.
🔚 В конце представлен бонусный раздел по написанию тестов для классов ApiRequest, ApiClient и GoogleBooksApiClient с использованием Pest PHP, демонстрируя, как обеспечить правильную настройку и поведение этих классов.
DEV Community
Simplifying API Integration with Laravel's Http Facade
Building a reusable API request and client class I’ve been working a lot lately...
❤5
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии недели для джунов 👨🏻🏫
PHP Developer в Новые Технологии
Санкт-Петербург. Разработка, внедрение и сопровождение ПО.
Подробнее
Junior Backend разработчик в PROFFIT GO
Набережные Челны. Цифровая экосистема решений для управления автопарками.
Подробнее
Junior full-stack developer в SBX Group
Рязань. Разработка ПО.
Подробнее
PHP-программист в Intelsib
Новосибирск. Поисковое продвижение, контекстная реклама, поисковый аудит.
Подробнее
Junior Backend PHP разработчик в GILMARK
Москва. Интернет-маркетинговое агентство.
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии недели для джунов 👨🏻🏫
PHP Developer в Новые Технологии
Санкт-Петербург. Разработка, внедрение и сопровождение ПО.
Подробнее
Junior Backend разработчик в PROFFIT GO
Набережные Челны. Цифровая экосистема решений для управления автопарками.
Подробнее
Junior full-stack developer в SBX Group
Рязань. Разработка ПО.
Подробнее
PHP-программист в Intelsib
Новосибирск. Поисковое продвижение, контекстная реклама, поисковый аудит.
Подробнее
Junior Backend PHP разработчик в GILMARK
Москва. Интернет-маркетинговое агентство.
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
spb.hh.ru
Вакансия PHP Developer (Junior/Middle) в Санкт-Петербурге, работа в компании Новые Технологии (вакансия в архиве c 10 февраля 2024)
Зарплата: от 80000 до 150000 ₽. Санкт-Петербург. Требуемый опыт: 1–3 года. Полная занятость. Дата публикации: 07.02.2024.
❤9👍1
Как вы внедряете обучение в свою жизнь? Поделитесь опытом
Anonymous Poll
42%
Еле втискиваю обучение в расписание
7%
Кроме учёбы у меня нет других занятий
13%
Приходится отказываться от хобби
26%
Никак, пока не получается
6%
Я не хочу больше учиться(
6%
Свой вариант (напишу в комментариях)
Загрузка файлов напрямую с клиента на S3, не затрагивая файлы вашего Laravel-приложения.
Здесь обсуждается традиционный подход к обработке загрузки файлов в веб-приложениях, особенно в PHP и Laravel, где файлы обрабатываются сервером перед сохранением в службе хранения, такой как Amazon S3.
🔄 Предлагается альтернативный метод: файлы не касаются веб-сервера, а загружаются с клиента в S3.
Альтернативный подход включает следующие шаги:
1. Пользователь выбирает файл для загрузки.
2. JavaScript-клиент отправляет метаданные файла на бэкэнд.
3. Бэкэнд проверяет размер файла и тип контента, генерирует подписанный URL для ожидающего файла и отправляет его клиенту.
4. Клиент загружает файл напрямую в S3, используя подписанный URL.
5. После загрузки клиент уведомляет бэкэнд, что файл успешно загружен.
6. Бэкэнд создает необходимые записи в базе данных, связанные с загруженным файлом.
💻 Предоставлены кодовые фрагменты, включая объект значения SignedUrl и класс для генерации URL в S3. Также демонстрируется, как интегрировать эту логику в контроллер Laravel для обработки загрузки файлов.
💾Бэкэнд дополнительно рассматривается с точки зрения проверки метаданных файла, создания соответствующих моделей Eloquent и перемещения файлов из временных в постоянные каталоги в S3.
Здесь обсуждается традиционный подход к обработке загрузки файлов в веб-приложениях, особенно в PHP и Laravel, где файлы обрабатываются сервером перед сохранением в службе хранения, такой как Amazon S3.
🔄 Предлагается альтернативный метод: файлы не касаются веб-сервера, а загружаются с клиента в S3.
Альтернативный подход включает следующие шаги:
1. Пользователь выбирает файл для загрузки.
2. JavaScript-клиент отправляет метаданные файла на бэкэнд.
3. Бэкэнд проверяет размер файла и тип контента, генерирует подписанный URL для ожидающего файла и отправляет его клиенту.
4. Клиент загружает файл напрямую в S3, используя подписанный URL.
5. После загрузки клиент уведомляет бэкэнд, что файл успешно загружен.
6. Бэкэнд создает необходимые записи в базе данных, связанные с загруженным файлом.
💻 Предоставлены кодовые фрагменты, включая объект значения SignedUrl и класс для генерации URL в S3. Также демонстрируется, как интегрировать эту логику в контроллер Laravel для обработки загрузки файлов.
💾Бэкэнд дополнительно рассматривается с точки зрения проверки метаданных файла, создания соответствующих моделей Eloquent и перемещения файлов из временных в постоянные каталоги в S3.
crnkovic.me
Uploading files directly from client to S3 without files ever touching your Laravel application - Josip Crnković
If your web application allows users to upload files, there are a few things to consider and be aware of before deploying file uploads to production...
👍10❤1