Зачем нужно кэширование? Какую проблему оно решает?
Зачем нужно кэширование:
Улучшение производительности: Кэширование позволяет значительно снизить время ответа веб-приложения, предоставляя заранее подготовленные результаты запросов. Это особенно важно для операций, которые требуют значительных вычислительных ресурсов или обращения к внешним источникам данных.
Экономия ресурсов: Когда результаты запросов уже кэшированы, это снижает нагрузку на сервер и базу данных, так как необходимо выполнять меньше операций для генерации ответа. Это особенно полезно в случае высокой нагрузки на сервер или при ограниченных ресурсах.
Уменьшение задержек для конечных пользователей: Кэширование позволяет уменьшить время загрузки страниц для конечных пользователей, так как часть данных уже находится на клиентской стороне или близко к ней (например, в CDN — Content Delivery Network).
Повышение отказоустойчивости: Кэширование может сделать веб-приложение более отказоустойчивым, предоставляя резервные копии данных в случае недоступности внешних сервисов или при возникновении проблем на сервере.
Проблемы, которые решает кэширование:
Высокая нагрузка на сервер: Когда веб-приложение сталкивается с большим количеством запросов, кэширование может помочь снизить нагрузку на сервер и улучшить отклик системы.
Медленные запросы к базе данных: Кэширование позволяет уменьшить количество запросов к базе данных, сохраняя результаты предыдущих запросов и избегая избыточных операций.
Повышение производительности для конечных пользователей: Кэширование позволяет ускорить загрузку страниц для пользователей, уменьшая задержки при обращении к серверу.
Оптимизация работы с внешними API: Если веб-приложение взаимодействует с внешними API, кэширование может снизить задержки, связанные с запросами к этим внешним сервисам, и повысить отказоустойчивость.
#вопросы_с_собеседований
Зачем нужно кэширование:
Улучшение производительности: Кэширование позволяет значительно снизить время ответа веб-приложения, предоставляя заранее подготовленные результаты запросов. Это особенно важно для операций, которые требуют значительных вычислительных ресурсов или обращения к внешним источникам данных.
Экономия ресурсов: Когда результаты запросов уже кэшированы, это снижает нагрузку на сервер и базу данных, так как необходимо выполнять меньше операций для генерации ответа. Это особенно полезно в случае высокой нагрузки на сервер или при ограниченных ресурсах.
Уменьшение задержек для конечных пользователей: Кэширование позволяет уменьшить время загрузки страниц для конечных пользователей, так как часть данных уже находится на клиентской стороне или близко к ней (например, в CDN — Content Delivery Network).
Повышение отказоустойчивости: Кэширование может сделать веб-приложение более отказоустойчивым, предоставляя резервные копии данных в случае недоступности внешних сервисов или при возникновении проблем на сервере.
Проблемы, которые решает кэширование:
Высокая нагрузка на сервер: Когда веб-приложение сталкивается с большим количеством запросов, кэширование может помочь снизить нагрузку на сервер и улучшить отклик системы.
Медленные запросы к базе данных: Кэширование позволяет уменьшить количество запросов к базе данных, сохраняя результаты предыдущих запросов и избегая избыточных операций.
Повышение производительности для конечных пользователей: Кэширование позволяет ускорить загрузку страниц для пользователей, уменьшая задержки при обращении к серверу.
Оптимизация работы с внешними API: Если веб-приложение взаимодействует с внешними API, кэширование может снизить задержки, связанные с запросами к этим внешним сервисам, и повысить отказоустойчивость.
#вопросы_с_собеседований
🥰7🥱5👍1👏1🎉1
Разработка пакетов Laravel: ключевые шаги к созданию эффективного инструмента
🔎Основное внимание уделяется значению экосистемы пакетов в Laravel, предоставляющей возможности для создания качественных приложений. Пакеты рассматриваются как основной способ добавления функциональности в проекты Laravel, включая стили, скрипты, бизнес-логику и интеграции с API. Автор подчеркивает, что код пакета может быть автономным или служить дополнением к конкретному фреймворку, а также может разрабатываться разными разработчиками.
🛠️В статье рассматриваются ключевые концепции разработки пакетов, такие как ServiceProvider, Facades, и Contracts, которые обеспечивают стабильную работу приложений от тестирования до продакшна. Особое внимание уделяется 🔧ServiceProvider как точке контакта между контейнером приложения и пакетом, управляющей всеми ресурсами приложения.
⚖️Освещаются как плюсы, так и минусы использования пакетов. Среди преимуществ отмечается 📈масштабирование проектов, 🏗️улучшение структуры, 🧰инкапсуляция бизнес-логики и стимулирование 🔄повторного использования кода. Среди недостатков упоминаются возможные проблемы с зависимостями, наличие ненужных функций в широко используемых пакетах, прекращение поддержки разработчиком и несовместимость версий.
Также предоставляется подробное руководство по подготовке и разработке пакета, включая создание структуры каталогов, файлов конфигурации и классов ServiceProvider. Приводится шаг за шагом процесс инициализации файла composer.json, а также объясняется, как связать Laravel-приложение с созданным пакетом.
🔎Основное внимание уделяется значению экосистемы пакетов в Laravel, предоставляющей возможности для создания качественных приложений. Пакеты рассматриваются как основной способ добавления функциональности в проекты Laravel, включая стили, скрипты, бизнес-логику и интеграции с API. Автор подчеркивает, что код пакета может быть автономным или служить дополнением к конкретному фреймворку, а также может разрабатываться разными разработчиками.
🛠️В статье рассматриваются ключевые концепции разработки пакетов, такие как ServiceProvider, Facades, и Contracts, которые обеспечивают стабильную работу приложений от тестирования до продакшна. Особое внимание уделяется 🔧ServiceProvider как точке контакта между контейнером приложения и пакетом, управляющей всеми ресурсами приложения.
⚖️Освещаются как плюсы, так и минусы использования пакетов. Среди преимуществ отмечается 📈масштабирование проектов, 🏗️улучшение структуры, 🧰инкапсуляция бизнес-логики и стимулирование 🔄повторного использования кода. Среди недостатков упоминаются возможные проблемы с зависимостями, наличие ненужных функций в широко используемых пакетах, прекращение поддержки разработчиком и несовместимость версий.
Также предоставляется подробное руководство по подготовке и разработке пакета, включая создание структуры каталогов, файлов конфигурации и классов ServiceProvider. Приводится шаг за шагом процесс инициализации файла composer.json, а также объясняется, как связать Laravel-приложение с созданным пакетом.
DEV Community
Laravel Package Development : Key Steps to Building an Effective Tool
You may have already seen or used Laravel packages such as Sanctum, Passport, Nova and many others....
❤7👍2👏1🥱1👾1
Альтернатива Nova: почему решили перейти с самописного решения на Orchid
Статья рассказывает о решении перейти от самописной административной панели к использованию Orchid — открытой административной панели для проектов на Laravel. Автор выделяет несколько преимуществ Orchid перед их предыдущим решением, а также проводит сравнение с Laravel Nova — коммерческой админ-панелью.
Статья рассказывает о решении перейти от самописной административной панели к использованию Orchid — открытой административной панели для проектов на Laravel. Автор выделяет несколько преимуществ Orchid перед их предыдущим решением, а также проводит сравнение с Laravel Nova — коммерческой админ-панелью.
Хабр
Альтернатива Nova: почему решили перейти с самописного решения на Orchid
Привет. Меня зовут Артем, я backend-разработчик в Пиробайте. Когда я только пришел в компанию, то узнал, что команда разрабатывает административные панели на основе самописного решения, созданного...
👍3🥱2❤1
Как вы считаете, действительно ли функциональное программирование бесполезно в PHP?
💯10
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📯Внимание всем отважным героям и искателям приключений!
«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!
Мы предлагаем вам взять под свой контроль хитроумного изобретателя или ловкого вора.
💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!
«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!
Мы предлагаем вам взять под свой контроль хитроумного изобретателя или ловкого вора.
💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!
👍2
Объекты-значения в PHP 8: создание лучшего кода
Статья рассматривает использование шаблона проектирования «Value Object» для повышения качества кода.
❗Прежде чем перейти к Value Objects, надо выделить проблемы, связанные с примитивными типами данных, такие как отсутствие встроенных проверок на корректность данных, возможность перепутать порядок аргументов в функции и случайные изменения данных.
🔧Value Objects могут решить эти проблемы. Предоставляется пример, где в конструкторе осуществляется валидация данных. Это позволяет устранить дублирование логики проверки в разных местах кода.
Далее описаны три основных принципа работы с Value Objects:
Неменяемость (Immutability): Value Objects не должны изменяться после создания. В PHP 8.1 введены readonly-свойства для упрощения реализации неменяемости.
Сравнимость (Comparability): Обеспечение возможности легкого сравнения объектов Value Objects для определения их идентичности или различия.
Постоянство данных (Consistency): Value Objects всегда должны представлять валидные данные, и валидация должна выполняться в конструкторе объекта.
Автор также подчеркивает важность легкости отладки (Debuggability) Value Objects, предлагая использовать метод __toString() для простых объектов и toArray() для составных объектов.
Статья рассматривает использование шаблона проектирования «Value Object» для повышения качества кода.
❗Прежде чем перейти к Value Objects, надо выделить проблемы, связанные с примитивными типами данных, такие как отсутствие встроенных проверок на корректность данных, возможность перепутать порядок аргументов в функции и случайные изменения данных.
🔧Value Objects могут решить эти проблемы. Предоставляется пример, где в конструкторе осуществляется валидация данных. Это позволяет устранить дублирование логики проверки в разных местах кода.
Далее описаны три основных принципа работы с Value Objects:
Неменяемость (Immutability): Value Objects не должны изменяться после создания. В PHP 8.1 введены readonly-свойства для упрощения реализации неменяемости.
Сравнимость (Comparability): Обеспечение возможности легкого сравнения объектов Value Objects для определения их идентичности или различия.
Постоянство данных (Consistency): Value Objects всегда должны представлять валидные данные, и валидация должна выполняться в конструкторе объекта.
Автор также подчеркивает важность легкости отладки (Debuggability) Value Objects, предлагая использовать метод __toString() для простых объектов и toArray() для составных объектов.
DEV Community
Value Objects in PHP 8: Building a better code
Table of contents Introduction Problems with primitives Class as types Key Qualities of...
👍4❤3
PHP и Laravel дайджест новостей за ноябрь 2023 года
Краткий обзор новостей из мира PHP и Laravel за ноябрь 2023 г.
Краткий обзор новостей из мира PHP и Laravel за ноябрь 2023 г.
Хабр
PHP и Laravel дайджест новостей за ноябрь 2023 года
Всем привет! Краткий обзор новостей из мира PHP и Laravel за ноябрь 2023 г. PHP Дайджест Новости Вышел PHP 8.3.0! PHP 8.3 – большое обновление языка. Оно содержит множество новых возможностей, таких...
❤9🎉3
Создание одностраничного приложения с помощью HTMX и Symfony
Данная статья представляет собой учебное пособие или руководство по использованию библиотеки htmx в сочетании с Symfony для создания веб-приложения с улучшенным UX.
Здесь рассматриваются различные аспекты разработки, включая навигацию, отправку форм, отображение данных, динамический поиск и аутентификацию.
Данная статья представляет собой учебное пособие или руководство по использованию библиотеки htmx в сочетании с Symfony для создания веб-приложения с улучшенным UX.
Здесь рассматриваются различные аспекты разработки, включая навигацию, отправку форм, отображение данных, динамический поиск и аутентификацию.
JoliCode
Making a Single-Page Application with HTMX and Symfony
With the plethora of Javascript frameworks available today, web pages became smoother and smoother in terms of User Experience, a field Symfony has been trying to improve too with initiatives
❤6🔥2
Разработка расширения для PHP на C++. Хуки встроенных функций и методов
В этой статье показано, как создать расширение для PHP на C++ на примере разработки функциональности, позволяющей перехватывать вызовы встроенных функций и методов классов в php.
Здесь подробно рассмотрен процесс создания расширения для PHP на C++. Начиная с настройки среды разработки и создания проекта, до шагов по реализации хуков и выполнения callback-функций. Затронуты все основные ключевые моменты, от встраивания хуков во встроенные PHP-функции до подмены целевых функций и обработки аргументов, исключений и результатов.
В этой статье показано, как создать расширение для PHP на C++ на примере разработки функциональности, позволяющей перехватывать вызовы встроенных функций и методов классов в php.
Здесь подробно рассмотрен процесс создания расширения для PHP на C++. Начиная с настройки среды разработки и создания проекта, до шагов по реализации хуков и выполнения callback-функций. Затронуты все основные ключевые моменты, от встраивания хуков во встроенные PHP-функции до подмены целевых функций и обработки аргументов, исключений и результатов.
Хабр
Разработка расширения для PHP на C++. Хуки встроенных функций и методов
Разработка расширения для PHP на C++. Хуки встроенных функций и методов. PHP - это мощный и широко используемый язык программирования для веб-разработки. Однако иногда требуется расширение...
👍15🔥4⚡1❤1
Что такое sensitive данные? Как хранятся в базе? Как отражаются в логах?
Sensitive данные (чувствительные данные) — это информация, которая является приватной, конфиденциальной или важной для безопасности организации или пользователя. К таким данным относятся, например, пароли, номера кредитных карт, персональные идентификационные номера и т.д.
Хранение sensitive данных в базе данных требует особых мер безопасности, чтобы предотвратить несанкционированный доступ. Важной практикой является хеширование паролей. При регистрации пользователя пароль хешируется — процесс преобразования пароля в непонятный для чтения вид. Затем хеш сохраняется в базе данных. При входе в систему, введенный пароль также хешируется, и соответствующий хеш сравнивается с сохраненным в базе данных.
Sensitive данные не должны непосредственно отражаться в логах. Вместо этого должна быть сохранена информация о том, что операция на sensitive данных была выполнена. Например, вместо того, чтобы сохранять сам пароль в логах, можно сохранить запись вроде «пользователь X изменил свой пароль». Это делается для предотвращения утечки конфиденциальной информации в случае несанкционированного доступа к логам.
#вопросы_с_собеседований
Sensitive данные (чувствительные данные) — это информация, которая является приватной, конфиденциальной или важной для безопасности организации или пользователя. К таким данным относятся, например, пароли, номера кредитных карт, персональные идентификационные номера и т.д.
Хранение sensitive данных в базе данных требует особых мер безопасности, чтобы предотвратить несанкционированный доступ. Важной практикой является хеширование паролей. При регистрации пользователя пароль хешируется — процесс преобразования пароля в непонятный для чтения вид. Затем хеш сохраняется в базе данных. При входе в систему, введенный пароль также хешируется, и соответствующий хеш сравнивается с сохраненным в базе данных.
Sensitive данные не должны непосредственно отражаться в логах. Вместо этого должна быть сохранена информация о том, что операция на sensitive данных была выполнена. Например, вместо того, чтобы сохранять сам пароль в логах, можно сохранить запись вроде «пользователь X изменил свой пароль». Это делается для предотвращения утечки конфиденциальной информации в случае несанкционированного доступа к логам.
#вопросы_с_собеседований
❤10🥱5😁4👍1
Автономный взлом веб-приложений PHP на уровне байт-кода
Автор описывает новый алгоритм под названием «алгоритм обратного следования» («follow-back algorithm»), который он разработал для автоматического обнаружения уязвимостей в PHP-коде на уровне байткода. Алгоритм направлен на преодоление ограничений статического анализа, основанного на AST или поиске по регулярным выражениям, внедряя в себя анализ потока данных.
Алгоритм включает в себя выявление источников (пользовательских вводов) и стоков (потенциально уязвимых функций или инструкций) в инструкциях байткода PHP. Инструкции байткода PHP представляют собой инструкции трехадресного кода, генерируемые интерпретатором, и он работает на этом уровне для получения детализированной информации о том, как данные перемещаются в программе.
«Алгоритм обратного следования» в основном отслеживает обратный путь от потенциальной стоковой инструкции к входному источнику, рекурсивно выявляя инструкции, которые определяют или создают переменные, используемые в предыдущих инструкциях. Ручное пошаговое описание алгоритма включает в себя следование инструкциям байткода шаг за шагом, начиная с стоковой инструкции (например, ECHO) и отслеживания пути обратно к пользовательскому входному источнику (например, FETCH_DIM_R или FETCH_R).
Автор признает некоторые ограничения алгоритма, такие как переменные, определенные в вызовах функций, и переменные, переданные в качестве аргументов в вызовы функций. Он предлагает потенциальные решения, включая запись и проверку переменных, определенных в вызовах функций.
Кроме того, представлена информация о распространенных уязвимостях PHP, связанных с пользовательским вводом, упоминает использование алгоритма обратного следования на конкретных веб-приложениях, разработанных для тестирования безопасности.
Автор описывает новый алгоритм под названием «алгоритм обратного следования» («follow-back algorithm»), который он разработал для автоматического обнаружения уязвимостей в PHP-коде на уровне байткода. Алгоритм направлен на преодоление ограничений статического анализа, основанного на AST или поиске по регулярным выражениям, внедряя в себя анализ потока данных.
Алгоритм включает в себя выявление источников (пользовательских вводов) и стоков (потенциально уязвимых функций или инструкций) в инструкциях байткода PHP. Инструкции байткода PHP представляют собой инструкции трехадресного кода, генерируемые интерпретатором, и он работает на этом уровне для получения детализированной информации о том, как данные перемещаются в программе.
«Алгоритм обратного следования» в основном отслеживает обратный путь от потенциальной стоковой инструкции к входному источнику, рекурсивно выявляя инструкции, которые определяют или создают переменные, используемые в предыдущих инструкциях. Ручное пошаговое описание алгоритма включает в себя следование инструкциям байткода шаг за шагом, начиная с стоковой инструкции (например, ECHO) и отслеживания пути обратно к пользовательскому входному источнику (например, FETCH_DIM_R или FETCH_R).
Автор признает некоторые ограничения алгоритма, такие как переменные, определенные в вызовах функций, и переменные, переданные в качестве аргументов в вызовы функций. Он предлагает потенциальные решения, включая запись и проверку переменных, определенных в вызовах функций.
Кроме того, представлена информация о распространенных уязвимостях PHP, связанных с пользовательским вводом, упоминает использование алгоритма обратного следования на конкретных веб-приложениях, разработанных для тестирования безопасности.
finixbit.github.io
Finixbit - site/blog
👍7❤3
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in your browser
VIEW IN TELEGRAM
🗄 ACID в контексте транзакции базы данных: наглядная демонстрация от ByteByteGo (Alex Xu)
🔹 Atomicity (атомарность) гарантирует, что каждая транзакция будет выполнена полностью или не будет выполнена совсем. Не допускаются промежуточные состояния.
🔹 Consistency (согласованность). Благодаря тому, что транзакция не допускает промежуточных результатов, БД остается консистентной. Есть такое определение транзакции: «Упорядоченное множество операций, переводящих базу данных из одного согласованного состояния в другое». То есть до выполнения операции и после БД остается консистентной (согласованной).
🔹 Isolation (изолированность). Во время выполнения транзакции параллельные транзакции не должны оказывать влияния на ее результат.
🔹 Durability (надежность). Если пользователь получил подтверждение от системы о выполнении транзакции, он может быть уверен, что сделанные им изменения не будут отменены из-за какого-либо сбоя.
#вопросы_с_собесов
🔹 Atomicity (атомарность) гарантирует, что каждая транзакция будет выполнена полностью или не будет выполнена совсем. Не допускаются промежуточные состояния.
🔹 Consistency (согласованность). Благодаря тому, что транзакция не допускает промежуточных результатов, БД остается консистентной. Есть такое определение транзакции: «Упорядоченное множество операций, переводящих базу данных из одного согласованного состояния в другое». То есть до выполнения операции и после БД остается консистентной (согласованной).
🔹 Isolation (изолированность). Во время выполнения транзакции параллельные транзакции не должны оказывать влияния на ее результат.
🔹 Durability (надежность). Если пользователь получил подтверждение от системы о выполнении транзакции, он может быть уверен, что сделанные им изменения не будут отменены из-за какого-либо сбоя.
#вопросы_с_собесов
👍14🔥2😁2❤1🥱1
🚀Мотивацией работы с обширным базовым набором PHPStan в существующих проектах, особенно когда есть ограничения бюджета, является постепенное улучшение качества кода путем внедрения статического анализа в рабочий процесс.
🔄Процесс включает в себя настройку phpstan-baseline-analysis для отслеживания распределения ошибок в проекте и прогресса. Сгенерированные числа затем используются для создания отчетов о тенденциях для команды разработки.
🛠️Важность фильтрации базовых ошибок для сосредоточенной работы над конкретными областями улучшения заключается в том, что с phpstan-baseline-analysis версии 0.12.4 инструмент позволяет фильтровать ошибки по классам. Это позволяет разработчикам ориентироваться на определенные типы ошибок, такие как те, которые связаны с недопустимыми PHPDoc. Вводится инструмент phpstan-baseline-filter для облегчения этого процесса. Он может исключать или включать определенные классы ошибок из базового набора, что позволяет разработчикам решать проблемы поэтапно. Примеры использования инструмента phpstan-baseline-filter, включая команды для исключения или включения определенных классов ошибок показаны далее. Доступные ключи фильтра включают Classes-Cognitive-Complexity, Deprecations, Invalid-Phpdocs, Unknown-Types, Anonymous-Variables и Unused-Symbols . Предлагается использовать этот подход для установления приоритетов и решения проблем в зависимости от фокуса команды и потребностей проекта.
🔄Процесс включает в себя настройку phpstan-baseline-analysis для отслеживания распределения ошибок в проекте и прогресса. Сгенерированные числа затем используются для создания отчетов о тенденциях для команды разработки.
🛠️Важность фильтрации базовых ошибок для сосредоточенной работы над конкретными областями улучшения заключается в том, что с phpstan-baseline-analysis версии 0.12.4 инструмент позволяет фильтровать ошибки по классам. Это позволяет разработчикам ориентироваться на определенные типы ошибок, такие как те, которые связаны с недопустимыми PHPDoc. Вводится инструмент phpstan-baseline-filter для облегчения этого процесса. Он может исключать или включать определенные классы ошибок из базового набора, что позволяет разработчикам решать проблемы поэтапно. Примеры использования инструмента phpstan-baseline-filter, включая команды для исключения или включения определенных классов ошибок показаны далее. Доступные ключи фильтра включают Classes-Cognitive-Complexity, Deprecations, Invalid-Phpdocs, Unknown-Types, Anonymous-Variables и Unused-Symbols . Предлагается использовать этот подход для установления приоритетов и решения проблем в зависимости от фокуса команды и потребностей проекта.
My developer experience
PHPStan baseline filter
Having a week off from my primary job, means more time for my opensource projects :-).
👍4❤1
🧠Чему вы бы хотели научиться?
Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?
За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.
👉Опрос по ссылке👈
Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?
За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.
👉Опрос по ссылке👈
😁6👏2❤1👍1🌚1
Какие еще ЯПы кроме PHP знаете/изучали?
🌚8❤2
Как выполнять команды Laravel Artisan с использованием эндпоинтов
При развертывании приложений Laravel иногда нам необходимо выполнять команды на стороне сервера для таких задач, как миграция базы данных, очистка кэша или другие важные процессы.
Вместо традиционного подхода через cPanel или SSH можно создать API-эндпоинт для обработки команд, таких как миграции базы данных или очистка кеша.
Шаги:
1️⃣Создание контроллера (например, CommandController) с помощью Artisan.
2️⃣Добавление маршрута в Api routes для обработки API-запроса к созданному контроллеру.
3️⃣В контроллере создание метода runCommand, который выполняет Artisan-команду, используя переданную команду в API-запросе, и возвращает результат выполнения.
4️⃣Для безопасности API-точки создание Middleware (например, DebugModeOnly), которое позволяет выполнение команд только в режиме отладки. Регистрация Middleware в ядре приложения.
5️⃣Присвоение Middleware к созданному маршруту в Api.php.
При развертывании приложений Laravel иногда нам необходимо выполнять команды на стороне сервера для таких задач, как миграция базы данных, очистка кэша или другие важные процессы.
Вместо традиционного подхода через cPanel или SSH можно создать API-эндпоинт для обработки команд, таких как миграции базы данных или очистка кеша.
Шаги:
1️⃣Создание контроллера (например, CommandController) с помощью Artisan.
2️⃣Добавление маршрута в Api routes для обработки API-запроса к созданному контроллеру.
3️⃣В контроллере создание метода runCommand, который выполняет Artisan-команду, используя переданную команду в API-запросе, и возвращает результат выполнения.
4️⃣Для безопасности API-точки создание Middleware (например, DebugModeOnly), которое позволяет выполнение команд только в режиме отладки. Регистрация Middleware в ядре приложения.
5️⃣Присвоение Middleware к созданному маршруту в Api.php.
DEV Community
How to Execute Laravel Artisan Commands Using an API Endpoint
In Laravel application deployment, sometimes we need to execute server-side commands for tasks like...
👍9🎉2❤1
Что означает сложность алгоритма?
Сложность алгоритма представляет собой меру его эффективности и определяет количество ресурсов, таких как время и память, необходимых для его выполнения.
Существуют два основных типа сложности алгоритма: временная сложность и пространственная сложность.
Временная сложность алгоритма оценивает время, необходимое для его выполнения, в зависимости от размера входных данных. Обычно время выполнения алгоритма измеряется в тактах процессора или в секундах. Примеры временной сложности включают константную сложность O(1) (выполнение за постоянное время), линейную сложность O(n) (выполнение занимает время, пропорциональное размеру входных данных) и квадратичную сложность O(n^2) (выполнение занимает время, пропорциональное квадрату размера входных данных).
Пространственная сложность алгоритма оценивает объем памяти, необходимый для его выполнения, в зависимости от размера входных данных. Обычно пространственная сложность измеряется в байтах. Примеры пространственной сложности включают константную сложность O(1) (не зависит от размера входных данных), линейную сложность O(n) (потребляет память, пропорционально размеру входных данных) и квадратичную сложность O(n^2) (потребляет память, пропорционально квадрату размера входных данных).
#вопросы_с_собеседований
Сложность алгоритма представляет собой меру его эффективности и определяет количество ресурсов, таких как время и память, необходимых для его выполнения.
Существуют два основных типа сложности алгоритма: временная сложность и пространственная сложность.
Временная сложность алгоритма оценивает время, необходимое для его выполнения, в зависимости от размера входных данных. Обычно время выполнения алгоритма измеряется в тактах процессора или в секундах. Примеры временной сложности включают константную сложность O(1) (выполнение за постоянное время), линейную сложность O(n) (выполнение занимает время, пропорциональное размеру входных данных) и квадратичную сложность O(n^2) (выполнение занимает время, пропорциональное квадрату размера входных данных).
Пространственная сложность алгоритма оценивает объем памяти, необходимый для его выполнения, в зависимости от размера входных данных. Обычно пространственная сложность измеряется в байтах. Примеры пространственной сложности включают константную сложность O(1) (не зависит от размера входных данных), линейную сложность O(n) (потребляет память, пропорционально размеру входных данных) и квадратичную сложность O(n^2) (потребляет память, пропорционально квадрату размера входных данных).
#вопросы_с_собеседований
👍11🔥3❤2😁2