Реализация сценария использования DDD на PHP
Здесь рассматривается подход к реализации сценария использования (Use Case) в рамках Domain-Driven Design (DDD) на PHP. Примером служит класс TaxPersistUseCase, который используется для управления сохранением сущности налога. Подход демонстрирует использование интерфейсов и доменных классов для работы с данными, сохраняя четкое разделение компонентов и следуя принципам DDD.
Здесь рассматривается подход к реализации сценария использования (Use Case) в рамках Domain-Driven Design (DDD) на PHP. Примером служит класс TaxPersistUseCase, который используется для управления сохранением сущности налога. Подход демонстрирует использование интерфейсов и доменных классов для работы с данными, сохраняя четкое разделение компонентов и следуя принципам DDD.
DEV Community
Implementing a DDD Use Case in PHP
Implementing a DDD Use Case for in PHP This article explores a Domain-Driven Design (DDD)...
🌚8👍4
is_a() против Instanceof
is_a() и instanceof — это одна и та же функция: проверка принадлежности объекта к определенному классу. Однако выполняются они по-разному.
Использование оператора ::class безопасно в обоих случаях.
Использование имени является именем класса для instanceof, в то время как для is_a() оно является именем константы. Это может привести к путанице.
is_a() и instanceof — это одна и та же функция: проверка принадлежности объекта к определенному классу. Однако выполняются они по-разному.
Использование оператора ::class безопасно в обоих случаях.
Использование имени является именем класса для instanceof, в то время как для is_a() оно является именем константы. Это может привести к путанице.
😁5👍4
Как часто, по вашему мнению, следует менять место работы?
Ставьте реакции:
⚡ — раз в год
🔥 — раз в 2-3 года
❤️ — раз в 5-6 лет
🌚 — а можно менять работу?
Ставьте реакции:
⚡ — раз в год
🔥 — раз в 2-3 года
❤️ — раз в 5-6 лет
🌚 — а можно менять работу?
🔥113🌚95❤38⚡14🤩1
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
❤2
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
💡 Как избавиться от WebSockets и сэкономить $1 млн в год: неожиданные решения для оптимизации
Как снизить расходы на инфраструктуру и повысить эффективность? Оказывается, отказ от WebSockets может сэкономить миллионы. Вместо привычного подхода можно использовать решения, которые не только проще, но и лучше подходят для определённых задач, как, например, асинхронные очереди или SSE.
Знаете ли вы, как выбрать стратегию, которая одновременно сократит затраты и улучшит масштабируемость? Разберитесь в тонкостях оптимизации и найдите способ выжать максимум из вашей системы. 🚀
🔗 Читать статью
🔗 Зеркало
Как снизить расходы на инфраструктуру и повысить эффективность? Оказывается, отказ от WebSockets может сэкономить миллионы. Вместо привычного подхода можно использовать решения, которые не только проще, но и лучше подходят для определённых задач, как, например, асинхронные очереди или SSE.
Знаете ли вы, как выбрать стратегию, которая одновременно сократит затраты и улучшит масштабируемость? Разберитесь в тонкостях оптимизации и найдите способ выжать максимум из вашей системы. 🚀
🔗 Читать статью
🔗 Зеркало
😁9👍3
Лучшая стратегия кэширования Redis в Laravel: Руководство по быстрому и эффективному кэшированию
Redis и Laravel — это сочетание, которое помогает значительно ускорить приложения. Redis, хранилище данных в памяти, идеально подходит для кэширования, особенно когда данные запрашиваются часто и требуют высокой скорости доступа.
Здесь рассмотрены основные стратегии кэширования в Laravel с использованием Redis, включая настройку, управление временем жизни данных и очистку кэша.
Зачем кэшировать с Redis?
Кэширование позволяет временно сохранять данные, что сокращает время, затрачиваемое на запросы к базе данных. Это ускоряет загрузку страниц, снижает нагрузку на сервер и улучшает пользовательский опыт.
Преимущества Redis для кэширования:
🔸Высокая скорость работы с данными.
🔸Поддержка различных структур данных (строки, списки, хэши и др.).
🔸Гибкое управление сроком хранения данных и их удалением.
Redis и Laravel — это сочетание, которое помогает значительно ускорить приложения. Redis, хранилище данных в памяти, идеально подходит для кэширования, особенно когда данные запрашиваются часто и требуют высокой скорости доступа.
Здесь рассмотрены основные стратегии кэширования в Laravel с использованием Redis, включая настройку, управление временем жизни данных и очистку кэша.
Зачем кэшировать с Redis?
Кэширование позволяет временно сохранять данные, что сокращает время, затрачиваемое на запросы к базе данных. Это ускоряет загрузку страниц, снижает нагрузку на сервер и улучшает пользовательский опыт.
Преимущества Redis для кэширования:
🔸Высокая скорость работы с данными.
🔸Поддержка различных структур данных (строки, списки, хэши и др.).
🔸Гибкое управление сроком хранения данных и их удалением.
DEV Community
Best Redis Caching Strategy in Laravel: A Guide to Fast and Efficient Caching
Laravel and Redis are a powerful combination for boosting application speed and performance. Redis,...
👍2🤔2❤1
Настраивать xdebug для первого запуска не нужно вообще! Как в Phpstorm запустить отладку за минуту и без браузера
Многие считают, что добиться успешного запуска отладки xdebug после его установки — тяжело и мучительно. Но на самом деле, сделать первый запуск можно менее чем за минуту, не делая настройки и даже не прикасаясь к конфигурационным файлам .ini (php.ini/xdebug.ini). Как это сделать? Об этом и пойдет речь в этой статье.
Многие считают, что добиться успешного запуска отладки xdebug после его установки — тяжело и мучительно. Но на самом деле, сделать первый запуск можно менее чем за минуту, не делая настройки и даже не прикасаясь к конфигурационным файлам .ini (php.ini/xdebug.ini). Как это сделать? Об этом и пойдет речь в этой статье.
Хабр
Настраивать xdebug для первого запуска не нужно вообще! Как в Phpstorm запустить отладку за минуту и без браузера
Многие считают, что добиться успешного запуска отладки xdebug после его установки - тяжело и мучительно. Но на самом деле, сделать первый запуск можно менее чем за минуту, не делая настройку и даже не...
👍6
Phiki
Это подсветка синтаксиса, написанная на PHP. Он использует грамматические файлы TextMate и темы Visual Studio Code для генерации кода с подсветкой синтаксиса для веб-страниц и терминалов.
Это подсветка синтаксиса, написанная на PHP. Он использует грамматические файлы TextMate и темы Visual Studio Code для генерации кода с подсветкой синтаксиса для веб-страниц и терминалов.
GitHub
GitHub - phikiphp/phiki: Syntax highlighting powered by TextMate grammars in PHP.
Syntax highlighting powered by TextMate grammars in PHP. - phikiphp/phiki
👍5
Что такое идемпотентность метода? Какие HTTP-методы являются идемпотентными для REST?
Идемпотентность метода означает, что повторное применение метода с теми же параметрами не приведет к изменению состояния системы. Другими словами, результат выполнения метода не зависит от количества его вызовов.
В контексте REST-архитектуры, следующие HTTP-методы являются идемпотентными:
1. GET: Получение информации с сервера. Повторный запрос GET не должен иметь никакого влияния на состояние сервера.
2. HEAD: Аналогично методу GET, но без тела ответа. Повторный запрос HEAD также не должен иметь никакого влияния на состояние сервера.
3. PUT: Обновление (или создание) ресурса на сервере. Если запросы PUT повторяются с теми же параметрами, они должны иметь такое же состояние ресурса после каждого выполнения.
4. DELETE: Удаление ресурса на сервере. Повторное выполнение DELETE с теми же параметрами должно иметь то же состояние.
Эти методы идемпотентны, потому что их повторная отправка не изменяет состояние сервера или ресурсов. Это важно для однозначной и предсказуемой работы сервера и клиента при обработке запросов.
#вопросы_с_собеседований
Идемпотентность метода означает, что повторное применение метода с теми же параметрами не приведет к изменению состояния системы. Другими словами, результат выполнения метода не зависит от количества его вызовов.
В контексте REST-архитектуры, следующие HTTP-методы являются идемпотентными:
1. GET: Получение информации с сервера. Повторный запрос GET не должен иметь никакого влияния на состояние сервера.
2. HEAD: Аналогично методу GET, но без тела ответа. Повторный запрос HEAD также не должен иметь никакого влияния на состояние сервера.
3. PUT: Обновление (или создание) ресурса на сервере. Если запросы PUT повторяются с теми же параметрами, они должны иметь такое же состояние ресурса после каждого выполнения.
4. DELETE: Удаление ресурса на сервере. Повторное выполнение DELETE с теми же параметрами должно иметь то же состояние.
Эти методы идемпотентны, потому что их повторная отправка не изменяет состояние сервера или ресурсов. Это важно для однозначной и предсказуемой работы сервера и клиента при обработке запросов.
#вопросы_с_собеседований
👍6
Исправление конфигурации OPcache ускорило работу PHP-приложения в 3 раза
Правильное управление OPcache при атомарных деплойментах позволило:
🔸Ускорить приложение в 3 раза.
🔸Снизить нагрузку на CPU в 10 раз.
🔸Сохранить сотни дней на время загрузки для пользователей.
Проблема
При деплойментах с символьными ссылками OPcache продолжает кэшировать файлы предыдущих релизов, заполняя память. Это снижает эффективность кэша.
Решение
Сбрасывать OPcache при каждом деплойменте с помощью cachetool. Это гарантирует, что файлы нового релиза будут кэшироваться заново.
Настройки OPcache
Настроить объем памяти (
Мониторинг
Добавьте ключевые метрики OPcache (свободная память, hit rate) в систему мониторинга. Это поможет выявлять проблемы и оптимизировать работу.
Правильное управление OPcache при атомарных деплойментах позволило:
🔸Ускорить приложение в 3 раза.
🔸Снизить нагрузку на CPU в 10 раз.
🔸Сохранить сотни дней на время загрузки для пользователей.
Проблема
При деплойментах с символьными ссылками OPcache продолжает кэшировать файлы предыдущих релизов, заполняя память. Это снижает эффективность кэша.
Решение
Сбрасывать OPcache при каждом деплойменте с помощью cachetool. Это гарантирует, что файлы нового релиза будут кэшироваться заново.
Настройки OPcache
opcache.validate_timestamps=0
— отключить проверку временных меток.opcache.file_update_protection=0
— мгновенное кэширование новых файлов.Настроить объем памяти (
opcache.memory_consumption
) и количество файлов (opcache.max_accelerated_files
) для ваших нужд.Мониторинг
Добавьте ключевые метрики OPcache (свободная память, hit rate) в систему мониторинга. Это поможет выявлять проблемы и оптимизировать работу.
👍8🤩1
Forwarded from Библиотека питониста | Python, Django, Flask
Тест: 👨💻🚀 Насколько ты продвинутый разраб?
Говорят, что джун становится мидлом, когда начинает понимать, как мало он знает. Этот тест покажет, насколько ты продвинулся в своём развитии.
👉 Пройти
Говорят, что джун становится мидлом, когда начинает понимать, как мало он знает. Этот тест покажет, насколько ты продвинулся в своём развитии.
👉 Пройти
👍4👾1
Forwarded from DIGITALRAZOR
Что будет, если DigitalRazor объединится с Proglib Academy? Правильно! Новый розыгрыш.
Условия:
Подпишитесь на DigitalRazor;
Подпишитесь на «Библиотеку программиста»;
Нажмите кнопку «Участвовать» под этим постом.
Призы:
1-е место: 27-дюймовый монитор;
2, 3 и 4-е место: сертификат номиналом 20 000 рублей на ИТ-курсы от Proglib Academy;
5-е место: геймерская клавиатура + коврик на выбор.
Призы разыграем 1 декабря в 20:00 (МСК).
Доставка призов возможна только по городам России и Белоруссии.
Proglib Academy создаёт онлайн-курсы для программистов, помогает получить востребованные навыки и построить успешную карьеру в IT.
Игровые компьютеры и рабочие станции DigitalRazor — это качественная сборка, топовое железо и эффектный дизайн.
Регламент розыгрыша
Условия:
Подпишитесь на DigitalRazor;
Подпишитесь на «Библиотеку программиста»;
Нажмите кнопку «Участвовать» под этим постом.
Призы:
1-е место: 27-дюймовый монитор;
2, 3 и 4-е место: сертификат номиналом 20 000 рублей на ИТ-курсы от Proglib Academy;
5-е место: геймерская клавиатура + коврик на выбор.
Призы разыграем 1 декабря в 20:00 (МСК).
Доставка призов возможна только по городам России и Белоруссии.
Proglib Academy создаёт онлайн-курсы для программистов, помогает получить востребованные навыки и построить успешную карьеру в IT.
Игровые компьютеры и рабочие станции DigitalRazor — это качественная сборка, топовое железо и эффектный дизайн.
Регламент розыгрыша
👍2👾1
array_column() — это очень удобная встроенная функция PHP, которая извлекает индекс из списка массивов или публичное свойство из списка объектов.
Третий аргумент array_column() — это ключ, который будет использоваться для ссылки на значение в результирующем массиве. Это очень удобно для превращения массива в хэш.
Обратите внимание, что дублирующиеся ключи будут перезаписаны.
Третий аргумент array_column() — это ключ, который будет использоваться для ссылки на значение в результирующем массиве. Это очень удобно для превращения массива в хэш.
Обратите внимание, что дублирующиеся ключи будут перезаписаны.
👍30
Как обрабатывать большие массивы данных в Laravel без дефицита памяти
Laravel предоставляет несколько полезных методов, которые помогут вам обрабатывать данные небольшими кусками, что экономит память и ускоряет работу приложения. Здесь показано, как использовать
Laravel предоставляет несколько полезных методов, которые помогут вам обрабатывать данные небольшими кусками, что экономит память и ускоряет работу приложения. Здесь показано, как использовать
chunk()
, chunkById()
и Lazy Collections для эффективной обработки больших наборов данных в Laravel.DEV Community
How to Handle Large Datasets in Laravel Without Running Out of Memory
How to Handle Large Datasets in Laravel Without Running Out of Memory When working with...
👍5
Какие нововведения из 8.4 планируете активно использовать?👇
😁13