Что такое идемпотентность метода? Какие 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
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Напоминаем: у нас можно (и нужно) купить рекламу
→ Более 60 телеграм-каналов по всем направлениям IT
→ Почти 1,2 миллиона аудитории
→ Собственное медиа и сайт с DAU 25 000 — можем усилить продвижение
→ Классные email-рассылки
→ И, конечно же, крутые контент-менеджеры, которые сделают нативную интеграцию/придумают виральный пост/реализуют любые контентные предпочтения
Для заказа пишите сюда: @proglib_adv
→ Более 60 телеграм-каналов по всем направлениям IT
→ Почти 1,2 миллиона аудитории
→ Собственное медиа и сайт с DAU 25 000 — можем усилить продвижение
→ Классные email-рассылки
→ И, конечно же, крутые контент-менеджеры, которые сделают нативную интеграцию/придумают виральный пост/реализуют любые контентные предпочтения
Для заказа пишите сюда: @proglib_adv
🔥5🥱4😢3❤1
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Чем отличается require от require-dev?
require: Этот раздел определяет зависимости, которые необходимы для нормального функционирования вашего приложения в рабочем окружении. Это могут быть библиотеки, фреймворки или другие компоненты, без которых ваше приложение не будет работать правильно.
require-dev: Этот раздел определяет зависимости, необходимые исключительно для разработки и тестирования вашего приложения. Обычно это инструменты для тестирования (например, PHPUnit), фиктивные данные для тестирования (например, Faker), инструменты для отладки (например, Xdebug) и т. д. Эти зависимости не включаются в окружение продакшена (production environment), чтобы уменьшить размер и сложность установки.
Когда вы устанавливаете пакет с помощью Composer, по умолчанию устанавливаются зависимости из обоих разделов require и require-dev. Однако при использовании опции --no-dev в команде composer install или composer update, Composer устанавливает только зависимости из раздела require, пропуская require-dev. Это особенно полезно при развертывании приложения в продакшен окружении, когда не нужны инструменты и зависимости, предназначенные только для разработки.
require: Этот раздел определяет зависимости, которые необходимы для нормального функционирования вашего приложения в рабочем окружении. Это могут быть библиотеки, фреймворки или другие компоненты, без которых ваше приложение не будет работать правильно.
require-dev: Этот раздел определяет зависимости, необходимые исключительно для разработки и тестирования вашего приложения. Обычно это инструменты для тестирования (например, PHPUnit), фиктивные данные для тестирования (например, Faker), инструменты для отладки (например, Xdebug) и т. д. Эти зависимости не включаются в окружение продакшена (production environment), чтобы уменьшить размер и сложность установки.
Когда вы устанавливаете пакет с помощью Composer, по умолчанию устанавливаются зависимости из обоих разделов require и require-dev. Однако при использовании опции --no-dev в команде composer install или composer update, Composer устанавливает только зависимости из раздела require, пропуская require-dev. Это особенно полезно при развертывании приложения в продакшен окружении, когда не нужны инструменты и зависимости, предназначенные только для разработки.
👍6
🎉 Розыгрыш от Proglib Academy и DigitalRazor!
С 27 ноября по 27 декабря у вас есть шанс не только прокачать свои навыки, но и выиграть ПК при покупке любого курса Академии!
🎁 Призы для участников акции:
– Игровой ПК DigitalRazor ProGaming
– VIP-пакет курса Proglib Academy
💡 Как принять участие?
Купите любой курс Proglib Academy с 27 ноября по 27 декабря и получите шанс выиграть мощный ПК.
Приобретите технику DigitalRazor — участвуйте в розыгрыше VIP курса.
📅 Вместе с DigitalRazor мы создали спецпредложение -50% на курсы до 30 ноября, чтобы вы могли начать обучение на более выгодных условиях.
Выбрать курс
С 27 ноября по 27 декабря у вас есть шанс не только прокачать свои навыки, но и выиграть ПК при покупке любого курса Академии!
🎁 Призы для участников акции:
– Игровой ПК DigitalRazor ProGaming
– VIP-пакет курса Proglib Academy
💡 Как принять участие?
Купите любой курс Proglib Academy с 27 ноября по 27 декабря и получите шанс выиграть мощный ПК.
Приобретите технику DigitalRazor — участвуйте в розыгрыше VIP курса.
📅 Вместе с DigitalRazor мы создали спецпредложение -50% на курсы до 30 ноября, чтобы вы могли начать обучение на более выгодных условиях.
Выбрать курс
😁2
Alice, Nelmio, Hautelook, Faker — Как обновить Doctrine Fixtures
Работа с обновлением Doctrine Fixtures связана с синхронизацией сразу нескольких пакетов на GitHub, что делает задачу сложной и трудоемкой. Автор делится опытом этого процесса и описывает шаги, которые помогут выполнить обновление максимально эффективно.
План обновления
Среди основных изменений:
🔸hautelook/alice-bundle: обновление с версии 1.* до 2.*
🔸nelmio/alice: переход с версии 2.* на 3.*
🔸fzaninotto/faker заменяется на fakerphp/faker
🔸doctrine/data-fixtures: обновление с версии 1.5 до 1.7
🔸doctrine/mongodb-odm-bundle: обновление с версии 3.* до 5.*
Работа с обновлением Doctrine Fixtures связана с синхронизацией сразу нескольких пакетов на GitHub, что делает задачу сложной и трудоемкой. Автор делится опытом этого процесса и описывает шаги, которые помогут выполнить обновление максимально эффективно.
План обновления
Среди основных изменений:
🔸hautelook/alice-bundle: обновление с версии 1.* до 2.*
🔸nelmio/alice: переход с версии 2.* на 3.*
🔸fzaninotto/faker заменяется на fakerphp/faker
🔸doctrine/data-fixtures: обновление с версии 1.5 до 1.7
🔸doctrine/mongodb-odm-bundle: обновление с версии 3.* до 5.*
Tomasvotruba
Alice, Nelmio, Hautelook, Faker - How to upgrade Doctrine Fixtures - Part 1
Upgrading Doctrine Fixtures can be challenging work. It requires the coordination of four different package groups on Github. One cannot be upgraded without the other.
We first prepare for the jump, then take the leap with confidence. I'm writing this…
We first prepare for the jump, then take the leap with confidence. I'm writing this…
👏1
Рекордсмены в Fusc последовательности
Анализ подходов к решению олимпиадной задачи по программированию, связанной с диатомической числовой последовательностью Штерна.
Анализ подходов к решению олимпиадной задачи по программированию, связанной с диатомической числовой последовательностью Штерна.
Хабр
Рекордсмены в Fusc последовательности
Закончились рабочие будни. Появилось настроение отметить завершение очередного аврала в череде поддержки и доработки проекта автоматизации бизнес процессов организации, где я мотаю срок программистом....
👏3👍1
🚀 Там биткойн летит вверх, и в связи с этим вопрос:
💬 Вкладываетесь в криптовалюты?
❤️ — да, в биткойн
👍 — да, в другую крипту
👾 — нет
#интерактив
💬 Вкладываетесь в криптовалюты?
❤️ — да, в биткойн
👍 — да, в другую крипту
👾 — нет
#интерактив
👾102👍20❤13🌚3
💡 200 идей для проектов
На Dev.to собрали подборку из 200 идей для проектов с примерами на любой уровень: от базовых до продвинутых. Это вдохновение для тех, кто ищет: как заполнить свой GitHub, заполнить портфолио или просто прокачаться.
Что внутри:
▪️ Начальные проекты. Здесь можно найти простые задачи, вроде создания калькулятора или генератора случайных чисел.
▪️ Средний уровень. Проекты вроде чат-приложения, систем для отслеживания задач.
▪️ Продвинутые проекты. Решения с использованием сложных алгоритмов, разработка на основе ИИ, системы управления пользователями и многое другое.
На Dev.to собрали подборку из 200 идей для проектов с примерами на любой уровень: от базовых до продвинутых. Это вдохновение для тех, кто ищет: как заполнить свой GitHub, заполнить портфолио или просто прокачаться.
Что внутри:
▪️ Начальные проекты. Здесь можно найти простые задачи, вроде создания калькулятора или генератора случайных чисел.
▪️ Средний уровень. Проекты вроде чат-приложения, систем для отслеживания задач.
▪️ Продвинутые проекты. Решения с использованием сложных алгоритмов, разработка на основе ИИ, системы управления пользователями и многое другое.
👍13👏3😍2
🎓💻🔍 Как не попасть на инфоцыган: 8 критериев выбора онлайн-школы
Не знаете, как выбрать онлайн-школу с качественной учебной программой? Мы собрали 8 основных критериев, которые помогут вам найти идеальное место для обучения.
👉 Читать статью
Не знаете, как выбрать онлайн-школу с качественной учебной программой? Мы собрали 8 основных критериев, которые помогут вам найти идеальное место для обучения.
👉 Читать статью
😁3👾2❤1
#дайджест новостей по PHP за неделю:
🔎Выпущен CakePHP 5.1.2 — Улучшения: В списке команд консоли команды app и cakephp теперь отображаются над названиями плагинов. Добавлены описания команд для всех команд фреймворка. Исправлена утечка дескрипторов файлов в StubConsoleOutput и многое другое.
🔎Динамические конструкторы кэша, базы данных и почты в Laravel 11.31 — Команда Laravel выпустила версию 11.31, в которой появились конструкторы динамического кэша/базы данных/почты, хранилище токенов кэша, удобный метод
🔎Laravel Forge добавляет интеграцию с Statamic
🔎Выпущен Symfony 7.2.0-RC1 — Только что состоялся релиз Symfony 7.2.0-RC1. Вот список наиболее важных изменений по сравнению с 7.2.0-BETA2.
🔎Неделя Symfony #934 (18-24 ноября 2024 года)
🔎Выпущен CakePHP 5.1.2 — Улучшения: В списке команд консоли команды app и cakephp теперь отображаются над названиями плагинов. Добавлены описания команд для всех команд фреймворка. Исправлена утечка дескрипторов файлов в StubConsoleOutput и многое другое.
🔎Динамические конструкторы кэша, базы данных и почты в Laravel 11.31 — Команда Laravel выпустила версию 11.31, в которой появились конструкторы динамического кэша/базы данных/почты, хранилище токенов кэша, удобный метод
URL::forceHttps()
и многое другое.🔎Laravel Forge добавляет интеграцию с Statamic
🔎Выпущен Symfony 7.2.0-RC1 — Только что состоялся релиз Symfony 7.2.0-RC1. Вот список наиболее важных изменений по сравнению с 7.2.0-BETA2.
🔎Неделя Symfony #934 (18-24 ноября 2024 года)
🎉3👍2😁1
Доступ к базам данных в PhpStorm
PhpStorm предоставляет встроенные инструменты для работы с базами данных, предлагая удобный интерфейс для их управления. Эти функции позволяют работать с базами данных прямо в редакторе, без необходимости переключаться между приложениями. Множество возможностей, позаимствованных из DataGrip, интегрированы в PhpStorm, что делает его мощным инструментом для разработчиков.
🔗 Подключение к базе данных
Для подключения к базе данных нужно воспользоваться встроенными инструментами PhpStorm. Например, для SQLite:
🔸Создайте Laravel-приложение и выберите базу данных.
🔸Откройте окно инструментов баз данных.
🔸Укажите путь к файлу SQLite.
После этого база данных будет подключена, и её содержимое станет доступным для работы.
👁️ Просмотр данных
Данные таблиц можно просматривать, дважды кликнув по нужной таблице. Это позволяет сразу увидеть содержимое, как это сделано в примере с таблицей пользователей.
🔄 Удобство трансформации данных
Одной из полезных функций является возможность транспонирования таблиц:
Строки и столбцы можно поменять местами.
Это упрощает анализ данных для конкретной записи.
🖊️ Консоль запросов
Встроенная консоль для запросов предоставляет:
✨ Автозаполнение.
🎨 Подсветку синтаксиса.
🤖 Поддержку AI-инструментов, таких как Copilot.
Консоль сохраняет выполненные запросы между сессиями, что удобно для повторного использования. Также можно задавать параметры, которые легко менять перед запуском запросов.
📤 Экспорт данных
PhpStorm позволяет экспортировать данные таблиц в форматах:
🔸CSV,
🔸JSON,
🔸Markdown и других.
Например, выбрав Markdown, можно скопировать таблицу и вставить её в документацию в готовом виде. Также можно настроить собственные экстракторы данных.
📊 Автогенерация диаграмм
PhpStorm поддерживает автоматическое создание диаграмм базы данных. Они помогают визуализировать структуру базы и связи между таблицами.
PhpStorm предоставляет встроенные инструменты для работы с базами данных, предлагая удобный интерфейс для их управления. Эти функции позволяют работать с базами данных прямо в редакторе, без необходимости переключаться между приложениями. Множество возможностей, позаимствованных из DataGrip, интегрированы в PhpStorm, что делает его мощным инструментом для разработчиков.
🔗 Подключение к базе данных
Для подключения к базе данных нужно воспользоваться встроенными инструментами PhpStorm. Например, для SQLite:
🔸Создайте Laravel-приложение и выберите базу данных.
🔸Откройте окно инструментов баз данных.
🔸Укажите путь к файлу SQLite.
После этого база данных будет подключена, и её содержимое станет доступным для работы.
👁️ Просмотр данных
Данные таблиц можно просматривать, дважды кликнув по нужной таблице. Это позволяет сразу увидеть содержимое, как это сделано в примере с таблицей пользователей.
🔄 Удобство трансформации данных
Одной из полезных функций является возможность транспонирования таблиц:
Строки и столбцы можно поменять местами.
Это упрощает анализ данных для конкретной записи.
🖊️ Консоль запросов
Встроенная консоль для запросов предоставляет:
✨ Автозаполнение.
🎨 Подсветку синтаксиса.
🤖 Поддержку AI-инструментов, таких как Copilot.
Консоль сохраняет выполненные запросы между сессиями, что удобно для повторного использования. Также можно задавать параметры, которые легко менять перед запуском запросов.
📤 Экспорт данных
PhpStorm позволяет экспортировать данные таблиц в форматах:
🔸CSV,
🔸JSON,
🔸Markdown и других.
Например, выбрав Markdown, можно скопировать таблицу и вставить её в документацию в готовом виде. Также можно настроить собственные экстракторы данных.
📊 Автогенерация диаграмм
PhpStorm поддерживает автоматическое создание диаграмм базы данных. Они помогают визуализировать структуру базы и связи между таблицами.
👏5🥱4😢1