Оптимизация ответов API в Laravel с помощью DTO
🔍 Рассмотрим процесс создания и тестирования интеграций с API в Laravel, используя DTO для отображения данных. Начнем с анализа примера ответа от API Google Books при поиске книги «The Ferryman». Затем создадим необходимые DTO для отображения основных и вложенных данных, таких как информация о книге и ссылки на изображения.✅
🛠️ Предложены методы тестирования, включая предотвращение фактических HTTP-запросов в тестах и создание помощников для генерации фальшивых ответов от API. Каждый этап разработки и тестирования иллюстрируется кодом на языке PHP и тестами с использованием фреймворка Pest.
🔍 Рассмотрим процесс создания и тестирования интеграций с API в Laravel, используя DTO для отображения данных. Начнем с анализа примера ответа от API Google Books при поиске книги «The Ferryman». Затем создадим необходимые DTO для отображения основных и вложенных данных, таких как информация о книге и ссылки на изображения.✅
🛠️ Предложены методы тестирования, включая предотвращение фактических HTTP-запросов в тестах и создание помощников для генерации фальшивых ответов от API. Каждый этап разработки и тестирования иллюстрируется кодом на языке PHP и тестами с использованием фреймворка Pest.
DEV Community
Streamlining API Responses in Laravel with DTOs
A comprehensive guide for creating custom Data Transfer Objects (DTOs) to enhance readability,...
👍5
Профайлинг Laravel приложений с XDebug и PHPStorm
Здесь рассказывается о важности профилирования приложений перед выпуском ресурсоемкой функциональности и о том, как часто забывают замерять время операций, которые могут превышать ожидание пользователя. Автор, Ваня, PHP-разработчик из Санкт-Петербургского электротехнического университета ЛЭТИ, делится опытом использования XDebug и PHPStorm для удобной отладки PHP-приложений и профилирования их производительности.
Также подробно описывается настройка XDebug, включая изменение режимов работы, директории сохранения профайлов и игнорирование выходных файлов в системе контроля версий. Затем автор переходит к просмотру профайла в PHPStorm, демонстрируя шаги и настройки, необходимые для анализа данных профилирования.
Автор обнаружил, что профайл XDebug не содержит необходимой информации о методе API Laravel из-за особенностей работы сервера PHP. Однако, после небольших изменений в конфигурации XDebug, таких как изменение имени выходного файла, удалось получить полезные данные профайлинга.
Здесь рассказывается о важности профилирования приложений перед выпуском ресурсоемкой функциональности и о том, как часто забывают замерять время операций, которые могут превышать ожидание пользователя. Автор, Ваня, PHP-разработчик из Санкт-Петербургского электротехнического университета ЛЭТИ, делится опытом использования XDebug и PHPStorm для удобной отладки PHP-приложений и профилирования их производительности.
Также подробно описывается настройка XDebug, включая изменение режимов работы, директории сохранения профайлов и игнорирование выходных файлов в системе контроля версий. Затем автор переходит к просмотру профайла в PHPStorm, демонстрируя шаги и настройки, необходимые для анализа данных профилирования.
Автор обнаружил, что профайл XDebug не содержит необходимой информации о методе API Laravel из-за особенностей работы сервера PHP. Однако, после небольших изменений в конфигурации XDebug, таких как изменение имени выходного файла, удалось получить полезные данные профайлинга.
Хабр
Профайлинг Laravel приложений с XDebug и PHPStorm
Привет, меня зовут Ваня, я работаю PHP-разработчиком в Санкт-Петербургском электротехническом университете ЛЭТИ. Профайлинг приложений важный этап перед релизом ресурсоёмкой фичи, везде трубят про...
⚡8🥱3
Используйте модель shouldBeStrict при запуске нового приложения Laravel.
При начале разработки нового приложения с использованием фреймворка Laravel стоит использовать метод «shouldBeStrict()». Этот метод заключается в включении строгого режима для моделей Eloquent, который обеспечивает несколько важных проверок при работе с моделями.
В частности, он выполняет следующие действия:
1️⃣Предотвращает ленивую загрузку связанных моделей, чтобы избежать избыточных запросов к базе данных.
2️⃣Предотвращает молчаливое отбрасывание атрибутов, которые не являются заполнимыми, что помогает предотвратить потенциальные проблемы безопасности.
3️⃣Предотвращает доступ к отсутствующим атрибутам моделей, что обеспечивает быстрое обнаружение опечаток или ошибок в коде.
При начале разработки нового приложения с использованием фреймворка Laravel стоит использовать метод «shouldBeStrict()». Этот метод заключается в включении строгого режима для моделей Eloquent, который обеспечивает несколько важных проверок при работе с моделями.
В частности, он выполняет следующие действия:
1️⃣Предотвращает ленивую загрузку связанных моделей, чтобы избежать избыточных запросов к базе данных.
2️⃣Предотвращает молчаливое отбрасывание атрибутов, которые не являются заполнимыми, что помогает предотвратить потенциальные проблемы безопасности.
3️⃣Предотвращает доступ к отсутствующим атрибутам моделей, что обеспечивает быстрое обнаружение опечаток или ошибок в коде.
Laravel News
Use Model shouldBeStrict when starting a new Laravel app - Laravel News
Keep your code in check as you build out a new project with the shouldBeStrict check in Laravel
👍10❤1
Контроль доступа в Symfony
🔒Контроль доступа позволяет определить права доступа к определенным частям приложения, ограничивая доступ для пользователей без необходимых разрешений.
🛡️Для реализации контроля доступа в Symfony проектах используются два основных подхода:
1️⃣Symfony Firewall: это начальный уровень безопасности маршрутов, добавляющий глобальные правила для всех маршрутов или определенных групп маршрутов. Это позволяет определить, какие URL-адреса требуют проверки безопасности и какие IP-адреса можно добавить в белый список для определенных конечных точек.
2️⃣Специфический контроль доступа для каждого маршрута: это более гибкий подход, позволяющий непосредственно определить правила доступа для каждого маршрута. Это особенно полезно для обработки более сложных правил доступа или для непосредственного отображения контроля доступа в соответствующих функциях.
🛠️ Инструменты и библиотеки для реализации контроля доступа:
ACCENT для проектов с API Platform.
Создание собственного скрипта для проверки контроля доступа к маршрутам.
🔍 Обеспечение безопасности новых маршрутов:
Включение скрипта проверки контроля доступа в непрерывную интеграцию (CI) проекта.
Использование git pre-commit или pre-push хуков.
🔒Контроль доступа позволяет определить права доступа к определенным частям приложения, ограничивая доступ для пользователей без необходимых разрешений.
🛡️Для реализации контроля доступа в Symfony проектах используются два основных подхода:
1️⃣Symfony Firewall: это начальный уровень безопасности маршрутов, добавляющий глобальные правила для всех маршрутов или определенных групп маршрутов. Это позволяет определить, какие URL-адреса требуют проверки безопасности и какие IP-адреса можно добавить в белый список для определенных конечных точек.
2️⃣Специфический контроль доступа для каждого маршрута: это более гибкий подход, позволяющий непосредственно определить правила доступа для каждого маршрута. Это особенно полезно для обработки более сложных правил доступа или для непосредственного отображения контроля доступа в соответствующих функциях.
🛠️ Инструменты и библиотеки для реализации контроля доступа:
ACCENT для проектов с API Platform.
Создание собственного скрипта для проверки контроля доступа к маршрутам.
🔍 Обеспечение безопасности новых маршрутов:
Включение скрипта проверки контроля доступа в непрерывную интеграцию (CI) проекта.
Использование git pre-commit или pre-push хуков.
DEV Community
How to ensure that all the routes on my Symfony app have access control
TL;DR Effective access control involves both Symfony's firewall and specific control on each...
👍1
Видео: Запуск Laravel в подкаталоге с Nginx
Настройка Nginx таким образом, что Laravel приложение работает в подкаталоге. Это полезно, если у вас есть несколько установок Laravel или если у вас есть второе приложение Laravel, запущенное внутри какого-то подкаталога на вашем сервере.
Например, если ваш основной домен — example.com, а у вас есть второе Laravel приложение, которое вы хотите развернуть по адресу example.com/subdirectory, то с помощью этой конфигурации Nginx вы можете настроить сервер так, чтобы обрабатывать запросы к этому подкаталогу с использованием вашего второго Laravel приложения.
Настройка Nginx таким образом, что Laravel приложение работает в подкаталоге. Это полезно, если у вас есть несколько установок Laravel или если у вас есть второе приложение Laravel, запущенное внутри какого-то подкаталога на вашем сервере.
Например, если ваш основной домен — example.com, а у вас есть второе Laravel приложение, которое вы хотите развернуть по адресу example.com/subdirectory, то с помощью этой конфигурации Nginx вы можете настроить сервер так, чтобы обрабатывать запросы к этому подкаталогу с использованием вашего второго Laravel приложения.
YouTube
Run Laravel in a subdirectory with Nginx (full, working config)
We get Laravel working in a subdirectory, using Nginx configuration. This is great for multiple Laravel installations, or when you just have a second Laravel running inside of any subdirectory.
The Laravel code base is not literally in a subdirectory of…
The Laravel code base is not literally in a subdirectory of…
👍7🥱1
Возможности метода цепочки
Метод цепочки (Method chaining) — это техника программирования, которая позволяет вызывать несколько методов объекта в одном операторе. В PHP это достигается путем возврата объекта ($this) из методов, что позволяет последующие вызовы. Метод цепочки улучшает читаемость и эффективность кода. Преимущества включают краткость, читаемость, создание плавных интерфейсов и уменьшение временных переменных. Практические применения включают конфигурацию, построение запросов к базе данных и создание Fluent API. Необходимо избегать чрезмерного использования и комплексности. Использование метода цепочки может значительно улучшить читаемость и поддерживаемость кода на PHP, делая его более выразительным и понятным
Метод цепочки (Method chaining) — это техника программирования, которая позволяет вызывать несколько методов объекта в одном операторе. В PHP это достигается путем возврата объекта ($this) из методов, что позволяет последующие вызовы. Метод цепочки улучшает читаемость и эффективность кода. Преимущества включают краткость, читаемость, создание плавных интерфейсов и уменьшение временных переменных. Практические применения включают конфигурацию, построение запросов к базе данных и создание Fluent API. Необходимо избегать чрезмерного использования и комплексности. Использование метода цепочки может значительно улучшить читаемость и поддерживаемость кода на PHP, делая его более выразительным и понятным
DEV Community
Unleashing the Power of Method Chaining in PHP
In programming, readability and efficiency are essential. Method chaining is a sophisticated feature...
🥱8👍3❤1👾1
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии PHP разработчиков уровня Junior
▪️PHP-программист
Москва. Флюид-Лайн — изготовление и поставка промышленного оборудования
Подробнее
▪️Junior - программист
Казань, SMART-SHOP — поставки электротехнической продукции и оборудования
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️Web-программист
Тула. Contactgroup — продвижение и разработка сайтов
Подробнее
▪️PHP разработчик
Самара, Avenue Media — разработка цифровых продуктов
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Full Stack PHP Developer
Удаленка. (Офис в Нью-Йорке). Rx2Go — логистическая компания
Подробнее
▪️PHP-разработчик
Удаленка. (Офис в Москве). MODESTO FLOWERS — разработка ПО
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии PHP разработчиков уровня Junior
▪️PHP-программист
Москва. Флюид-Лайн — изготовление и поставка промышленного оборудования
Подробнее
▪️Junior - программист
Казань, SMART-SHOP — поставки электротехнической продукции и оборудования
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️Web-программист
Тула. Contactgroup — продвижение и разработка сайтов
Подробнее
▪️PHP разработчик
Самара, Avenue Media — разработка цифровых продуктов
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Full Stack PHP Developer
Удаленка. (Офис в Нью-Йорке). Rx2Go — логистическая компания
Подробнее
▪️PHP-разработчик
Удаленка. (Офис в Москве). MODESTO FLOWERS — разработка ПО
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
hh.ru
Вакансия PHP-программист (Junior) работа в офисе в Москве, работа в компании Флюид-Лайн (вакансия в архиве c 3 марта 2024)
Зарплата: не указана. Москва. Требуемый опыт: не требуется. Полная занятость. Дата публикации: 29.02.2024.
🥱9❤3
Keycode Event Helper
Вспомогательный инструмент, который позволяет легко просматривать информацию о нажатиях клавиш внутри событий JavaScript.
Вспомогательный инструмент, который позволяет легко просматривать информацию о нажатиях клавиш внутри событий JavaScript.
ryangjchandler.co.uk
Keycode Event Helper – Ryan Chandler
Exploring software development with PHP, JavaScript, Rust, and beyond.
👍2🎉1
Что делает функция «unlink»?
В PHP функция unlink() используется для удаления файла из файловой системы. Она принимает единственный параметр — путь к файлу, который вы хотите удалить. После вызова unlink() попытается удалить указанный файл из файловой системы. В случае успешного выполнения файл будет удален безвозвратно.
Код из примера проверяет, существует ли файл, и если да, то пытается удалить его с помощью unlink(). В случае успешного удаления выводится «Файл успешно удален.»; в противном случае выводится «Ошибка при удалении файла.». Если файл не существует, выводится «Файл не существует.».
#вопросы_с_собеседований
В PHP функция unlink() используется для удаления файла из файловой системы. Она принимает единственный параметр — путь к файлу, который вы хотите удалить. После вызова unlink() попытается удалить указанный файл из файловой системы. В случае успешного выполнения файл будет удален безвозвратно.
Код из примера проверяет, существует ли файл, и если да, то пытается удалить его с помощью unlink(). В случае успешного удаления выводится «Файл успешно удален.»; в противном случае выводится «Ошибка при удалении файла.». Если файл не существует, выводится «Файл не существует.».
#вопросы_с_собеседований
❤6😁3👍2
Сегодня мы рассмотрим использование буферизации вывода (Output Buffering, OB) в PHP и её нюансы. Буферизация вывода предоставляет удобные инструменты для работы с выводом данных, но может быть сложной для отладки.
Основные моменты:
Преимущества использования буферов: Они могут быть полезны для агрегации вывода из различных источников, обработки вывода третьестороннего кода, повторного использования вывода для различных целей.
Проблемы с буферами: Необходимость внимательного управления вложенными буферами, проблемы с памятью при обработке больших объемов данных, возможные конфликты при использовании нескольких буферов.
Ошибка «Headers already sent»: Объясняется, как обработка вывода с помощью буферов может предотвратить ошибки с отправкой заголовков до начала вывода данных.
Неявная и явная буферизация: Объясняется, что буферизация вывода включена по умолчанию, но может быть отключена в конфигурации сервера. Также разъясняется, как работает вложенная буферизация.
Осторожность при использовании: Рекомендуется быть осторожным с использованием нескольких уровней буферизации из-за возможных проблем с обработкой ошибок и неожиданных поведений.
Ограничения буфера: Объясняется, что размер буфера ограничен, и его переполнение может привести к потере управления над выводом.
Ошибки при использовании обработчиков буфера: Предостережение о том, что использование функции ob_start() внутри обработчиков буфера может вызвать ошибки.
Основные моменты:
Преимущества использования буферов: Они могут быть полезны для агрегации вывода из различных источников, обработки вывода третьестороннего кода, повторного использования вывода для различных целей.
Проблемы с буферами: Необходимость внимательного управления вложенными буферами, проблемы с памятью при обработке больших объемов данных, возможные конфликты при использовании нескольких буферов.
Ошибка «Headers already sent»: Объясняется, как обработка вывода с помощью буферов может предотвратить ошибки с отправкой заголовков до начала вывода данных.
Неявная и явная буферизация: Объясняется, что буферизация вывода включена по умолчанию, но может быть отключена в конфигурации сервера. Также разъясняется, как работает вложенная буферизация.
Осторожность при использовании: Рекомендуется быть осторожным с использованием нескольких уровней буферизации из-за возможных проблем с обработкой ошибок и неожиданных поведений.
Ограничения буфера: Объясняется, что размер буфера ограничен, и его переполнение может привести к потере управления над выводом.
Ошибки при использовании обработчиков буфера: Предостережение о том, что использование функции ob_start() внутри обработчиков буфера может вызвать ошибки.
👍3
Logstash, Manticore, Nginx и Symfony: сбор, агрегация и быстрый поиск логов
Идея централизованного мониторинга логов долгое время витала в воздухе, и автору удалось воплотить её в жизнь. Хотя информации о Logstash с Elasticsearch достаточно, настройка с Manticore представляет собой вызов, о котором не так уж много говорят. Здесь рассказывается о настройке и потенциальных подводных камнях пакета Logstash + Manticore + Nginx + Symfony.
Установка и настройка Manticore:
Установка Manticore проста. Скачайте пакет с официального веб-сайта, установите его и настройте с помощью nano /etc/manticoresearch/manticore.conf. Обеспечьте конфигурацию Manticore так, чтобы он слушал соответствующий IP-адрес для подключения с других хостов.
Подготовка логов Nginx:
Настройте Nginx для регистрации в формате JSON для удобного парсинга. Измените формат журнала в /etc/nginx/nginx.conf и обновите блок сервера, чтобы использовать новый формат. Перезапустите Nginx, чтобы начать ведение логов в указанном формате.
Подготовка логов Symfony:
Для Symfony настройте ведение журналов через Monolog Bundle. Настройте формат логов в config/packages/monolog.yaml и создайте пользовательский сервис форматирования. Обеспечьте соответствие типов данных для совместимости с Manticore и Logstash.
Настройка Logstash:
Скачайте соответствующую версию Logstash, совместимую с Manticore. Создайте файл конфигурации Logstash (dev.conf), указав входы для логов Nginx и Symfony, фильтры для обработки логов и выходы для отправки обработанных журналов в Manticore.
Запуск Logstash:
Запустите Logstash с настроенным файлом dev.conf. Устраните любые ошибки, возникающие при запуске, обеспечивая согласованность данных и устраняя любые проблемы с соединением между Logstash и Manticore.
Вся описанная настройка успешно протестирована и развернута, предоставляя возможности централизованного мониторинга журналов. Хотя существуют готовые решения, такие как Kibana и Grafana, настраиваемые решения могут быть разработаны на основе индивидуальных потребностей и предпочтений.
Идея централизованного мониторинга логов долгое время витала в воздухе, и автору удалось воплотить её в жизнь. Хотя информации о Logstash с Elasticsearch достаточно, настройка с Manticore представляет собой вызов, о котором не так уж много говорят. Здесь рассказывается о настройке и потенциальных подводных камнях пакета Logstash + Manticore + Nginx + Symfony.
Установка и настройка Manticore:
Установка Manticore проста. Скачайте пакет с официального веб-сайта, установите его и настройте с помощью nano /etc/manticoresearch/manticore.conf. Обеспечьте конфигурацию Manticore так, чтобы он слушал соответствующий IP-адрес для подключения с других хостов.
Подготовка логов Nginx:
Настройте Nginx для регистрации в формате JSON для удобного парсинга. Измените формат журнала в /etc/nginx/nginx.conf и обновите блок сервера, чтобы использовать новый формат. Перезапустите Nginx, чтобы начать ведение логов в указанном формате.
Подготовка логов Symfony:
Для Symfony настройте ведение журналов через Monolog Bundle. Настройте формат логов в config/packages/monolog.yaml и создайте пользовательский сервис форматирования. Обеспечьте соответствие типов данных для совместимости с Manticore и Logstash.
Настройка Logstash:
Скачайте соответствующую версию Logstash, совместимую с Manticore. Создайте файл конфигурации Logstash (dev.conf), указав входы для логов Nginx и Symfony, фильтры для обработки логов и выходы для отправки обработанных журналов в Manticore.
Запуск Logstash:
Запустите Logstash с настроенным файлом dev.conf. Устраните любые ошибки, возникающие при запуске, обеспечивая согласованность данных и устраняя любые проблемы с соединением между Logstash и Manticore.
Вся описанная настройка успешно протестирована и развернута, предоставляя возможности централизованного мониторинга журналов. Хотя существуют готовые решения, такие как Kibana и Grafana, настраиваемые решения могут быть разработаны на основе индивидуальных потребностей и предпочтений.
Хабр
Logstash, Manticore, Nginx и Symfony: сбор, агрегация и быстрый поиск логов
Мысль о централизованном мониторинге логов хранилась в моей голове много лет, но реализовать ее я смог только совсем недавно. Рассказываю о настройке и подводных камнях связки Logstash + Manticore +...
👍3
🤔 Сложно ли поменять технологический стек?
Выйти на тот же уровень производительности в другом стеке в том же направлении (бэкенд/фронтенд) может занять от нескольких месяцев до полугода. Конечно, у каждого это время различается, но в любом случае оно включает:
✔️ Изучение нового языка
✔️ Ознакомление с экосистемой языка
✔️ Понимание инфраструктуры (сборка, доставка и т. д.)
💬 А вы меняли стек? Сколько времени это заняло?
Выйти на тот же уровень производительности в другом стеке в том же направлении (бэкенд/фронтенд) может занять от нескольких месяцев до полугода. Конечно, у каждого это время различается, но в любом случае оно включает:
✔️ Изучение нового языка
✔️ Ознакомление с экосистемой языка
✔️ Понимание инфраструктуры (сборка, доставка и т. д.)
💬 А вы меняли стек? Сколько времени это заняло?
👍2
Создание инструмента командной строки с помощью PHP и консоли Symfony
🛠️ Здесь рассматривается, как создать простой командный инструмент в PHP с использованием пакета Symfony Console (symfony/console).
🤔 Почему Symfony Console?
🔄 Консольные приложения — универсальный способ автоматизации и взаимодействия с системами.
📦 Symfony Console предоставляет структурированную и богатую функциональность среду разработки.
⚙️ Возможности Symfony Console:
📑 Автоматическая генерация справки: Symfony Console может автоматически создавать понятную и полезную справку для ваших команд.
🎛️ Управление вводом с опциями и аргументами: Простое определение ожидаемых вводов делает команды интуитивно понятными.
🔄 Соблюдение конвенции docopt: Гарантирует согласованный и интуитивный интерфейс для описания функциональности программы.
📝 Значения по умолчанию и валидация ввода: Помогают поддерживать гибкость и предсказуемость поведения команд.
🖥️ Удобные вспомогательные функции: Улучшают взаимодействие с пользователем и оптимизируют процесс разработки.
📂 Структурированные и основанные на классах команды: Облегчают поддержку и расширение командных приложений.
🔧 Установка и создание первой команды:
💻 Установите Symfony Console через Composer.
📂 Создайте первую команду, определив класс и методы для конфигурации и выполнения действий.
Symfony Console значительно упрощает создание командных приложений в PHP, предоставляя эффективные инструменты для автоматизации процессов и управления задачами. 🌟
🛠️ Здесь рассматривается, как создать простой командный инструмент в PHP с использованием пакета Symfony Console (symfony/console).
🤔 Почему Symfony Console?
🔄 Консольные приложения — универсальный способ автоматизации и взаимодействия с системами.
📦 Symfony Console предоставляет структурированную и богатую функциональность среду разработки.
⚙️ Возможности Symfony Console:
📑 Автоматическая генерация справки: Symfony Console может автоматически создавать понятную и полезную справку для ваших команд.
🎛️ Управление вводом с опциями и аргументами: Простое определение ожидаемых вводов делает команды интуитивно понятными.
🔄 Соблюдение конвенции docopt: Гарантирует согласованный и интуитивный интерфейс для описания функциональности программы.
📝 Значения по умолчанию и валидация ввода: Помогают поддерживать гибкость и предсказуемость поведения команд.
🖥️ Удобные вспомогательные функции: Улучшают взаимодействие с пользователем и оптимизируют процесс разработки.
📂 Структурированные и основанные на классах команды: Облегчают поддержку и расширение командных приложений.
🔧 Установка и создание первой команды:
💻 Установите Symfony Console через Composer.
📂 Создайте первую команду, определив класс и методы для конфигурации и выполнения действий.
Symfony Console значительно упрощает создание командных приложений в PHP, предоставляя эффективные инструменты для автоматизации процессов и управления задачами. 🌟
DEV Community
Building a Command Line Tool with PHP and Symfony Console
Command line tools are a powerful way to automate processes, manage tasks, and enhance your...
👍8🥱5❤3
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🏔 Эпикфейл: карьера катится к чертям
🤦♂️ У всех нас случались провалы в карьере, о которых не хочется распространяться. Неловкий момент на собеседовании, провал проекта из-за глупой ошибки, конфликт с начальством — такие ситуации хочется поскорее забыть. Однако часто именно они дают нам самые ценные уроки и закаляют как профессионалов.
📝 Поделитесь своей историей карьерного провала в нашем новом опросе и расскажите, к чему он привел в итоге. Быть может, эта ошибка позволила вам пересмотреть свой путь и выбрать более подходящую профессию? А может, вы сделали правильные выводы и сейчас добились успеха?
👉 Поделиться историей
🤦♂️ У всех нас случались провалы в карьере, о которых не хочется распространяться. Неловкий момент на собеседовании, провал проекта из-за глупой ошибки, конфликт с начальством — такие ситуации хочется поскорее забыть. Однако часто именно они дают нам самые ценные уроки и закаляют как профессионалов.
📝 Поделитесь своей историей карьерного провала в нашем новом опросе и расскажите, к чему он привел в итоге. Быть может, эта ошибка позволила вам пересмотреть свой путь и выбрать более подходящую профессию? А может, вы сделали правильные выводы и сейчас добились успеха?
👉 Поделиться историей
😁3❤1
Хостинг статичных Laravel-приложений
Недавно компания Spatie выпустила новый пакет под названием laravel-export, который упаковывает ваше приложение Laravel в статический сайт, который можно хостить. Это отличное дополнение к экосистеме Laravel, поскольку это открывает целый новый способ размещения приложений Laravel.
Этот метод размещения идеально подходит для веб-сайтов, таких как:
🟠блоги
🟠портфолио
🟠посадочные страницы
Которые не зависят от запросов к серверу бэкенда, а отображают статическую информацию.
Здесь показано, как использовать laravel-export для развертывания блога на Cloudflare Pages, Netlify и Vercel.
Недавно компания Spatie выпустила новый пакет под названием laravel-export, который упаковывает ваше приложение Laravel в статический сайт, который можно хостить. Это отличное дополнение к экосистеме Laravel, поскольку это открывает целый новый способ размещения приложений Laravel.
Этот метод размещения идеально подходит для веб-сайтов, таких как:
🟠блоги
🟠портфолио
🟠посадочные страницы
Которые не зависят от запросов к серверу бэкенда, а отображают статическую информацию.
Здесь показано, как использовать laravel-export для развертывания блога на Cloudflare Pages, Netlify и Vercel.
Boydbloemsma
Hosting Laravel applications statically
In this article we will be going over how to I used laravel-export to deploy the very blog you're reading right now; to Cloudflare Pages, Netlify and Vercel.
👍4🤔3
Laravel трюки: автоматическое подключение каналов логирования
В статье представлен метод автоматического подключения каналов логирования в Laravel через использование механизма сервис-контейнеров (DI). Подробно описаны шаги этого метода, начиная с обзора функционала логирования в Laravel и проблемы, связанной с прямым использованием конкретных каналов в классах.
Далее предложен способ автоматического подключения каналов логирования через DI, включая создание интерфейса-маркера и его связывание с каналом логирования с помощью провайдера. Описано использование трейта LoggerAwareTrait и логирование данных в соответствующих классах.
Также представлен альтернативный вариант с использованием автопровязывания (Autowiring), где логгер передается в метод класса как аргумент, и определяется правило для сервис-контейнера в AppServiceProvider.
В статье представлен метод автоматического подключения каналов логирования в Laravel через использование механизма сервис-контейнеров (DI). Подробно описаны шаги этого метода, начиная с обзора функционала логирования в Laravel и проблемы, связанной с прямым использованием конкретных каналов в классах.
Далее предложен способ автоматического подключения каналов логирования через DI, включая создание интерфейса-маркера и его связывание с каналом логирования с помощью провайдера. Описано использование трейта LoggerAwareTrait и логирование данных в соответствующих классах.
Также представлен альтернативный вариант с использованием автопровязывания (Autowiring), где логгер передается в метод класса как аргумент, и определяется правило для сервис-контейнера в AppServiceProvider.
Хабр
Laravel трюки: автоматическое подключение каналов логирования
Всем привет! Меня зовут Иван Шишкин и я руковожу разработкой в агентстве Intensa. В этой статье хотел бы поделиться методом автоматического подключения каналов логирования в Laravel через механизм...
😁8👍2
Phanalist
Быстрый статический анализатор для сборки PHP с помощью Rust. Он довольно мал по сравнению с PHPStan или Psalm.
Но также хорошо иметь возможность и научиться писать собственный статический анализатор PHP на Rust.
Быстрый статический анализатор для сборки PHP с помощью Rust. Он довольно мал по сравнению с PHPStan или Psalm.
Но также хорошо иметь возможность и научиться писать собственный статический анализатор PHP на Rust.
GitHub
GitHub - denzyldick/phanalist: Performant static analyzer for PHP, which is extremely easy to use. It helps you catch common mistakes…
Performant static analyzer for PHP, which is extremely easy to use. It helps you catch common mistakes in your PHP code. - denzyldick/phanalist
🔥5