Forwarded from Библиотека программиста | программирование, кодинг, разработка
api-protocols.pdf
784.1 KB
💡Развитие протоколов API в 2023 году: по мотивам статьи Alex Xu в блоге Postman
В PDF-файле — обзорная демонстрация, а в статье вас ждет подробный взгляд на шесть самых популярных протоколов API с акцентом на преимущества и проблемы каждого:
1️⃣ REST
2️⃣ Webhooks
3️⃣ GraphQL
4️⃣ SOAP
5️⃣ WebSocket
6️⃣ gRPC
💬 Какой используется в вашем проекте? Делитесь в комментариях мыслями по данной теме👇
#проектирование_систем
В PDF-файле — обзорная демонстрация, а в статье вас ждет подробный взгляд на шесть самых популярных протоколов API с акцентом на преимущества и проблемы каждого:
1️⃣ REST
2️⃣ Webhooks
3️⃣ GraphQL
4️⃣ SOAP
5️⃣ WebSocket
6️⃣ gRPC
💬 Какой используется в вашем проекте? Делитесь в комментариях мыслями по данной теме👇
#проектирование_систем
👍5😁1🌚1
Xdebug в качестве интерактивной оболочки (REPL) в Phpstorm
Здесь рассказывается о том, как использовать консоль Xdebug в качестве интерактивной оболочки для PHP. Проблема заключается в отсутствии подобной интерактивной консоли в Phpstorm, подобной той, что доступна для JavaScript в инструментах разработчика браузера.
Автор предлагает использовать консоль Xdebug, которая интегрирована в Phpstorm, обеспечивая автодополнение кода прямо из проекта и предоставляя удобные функции, которых нет в других REPL-интеграциях.
Здесь рассказывается о том, как использовать консоль Xdebug в качестве интерактивной оболочки для PHP. Проблема заключается в отсутствии подобной интерактивной консоли в Phpstorm, подобной той, что доступна для JavaScript в инструментах разработчика браузера.
Автор предлагает использовать консоль Xdebug, которая интегрирована в Phpstorm, обеспечивая автодополнение кода прямо из проекта и предоставляя удобные функции, которых нет в других REPL-интеграциях.
😁7👍1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🥰2😁1🎉1
Обработка ошибок
Статья обсуждает важность эффективного управления ошибками в программном обеспечении для обеспечения лучшего опыта пользователя.
Рассматриваются ключевые практики, такие как согласованность в обработке ошибок, использование специфичных кодов ошибок, различение между отказами и фактическими ошибками, подготовка к неожиданным сценариям, управление таймаутами, ведение эффективного журнала и мониторинга, а также стратегии представления ошибок клиенту.
Успешное применение этих практик помогает создать стабильное и отзывчивое программное обеспечение в условиях быстро меняющегося мира, где пользователи ценят быстроту и эффективность.
Статья обсуждает важность эффективного управления ошибками в программном обеспечении для обеспечения лучшего опыта пользователя.
Рассматриваются ключевые практики, такие как согласованность в обработке ошибок, использование специфичных кодов ошибок, различение между отказами и фактическими ошибками, подготовка к неожиданным сценариям, управление таймаутами, ведение эффективного журнала и мониторинга, а также стратегии представления ошибок клиенту.
Успешное применение этих практик помогает создать стабильное и отзывчивое программное обеспечение в условиях быстро меняющегося мира, где пользователи ценят быстроту и эффективность.
DEV Community
Error handling: Are You In Charge or In Chaos?
As users in today's fast-paced world, our attention spans are shrinking by the day. We want...
👍3😁3👏1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Зачем нужно кэширование? Какую проблему оно решает?
Зачем нужно кэширование:
Улучшение производительности: Кэширование позволяет значительно снизить время ответа веб-приложения, предоставляя заранее подготовленные результаты запросов. Это особенно важно для операций, которые требуют значительных вычислительных ресурсов или обращения к внешним источникам данных.
Экономия ресурсов: Когда результаты запросов уже кэшированы, это снижает нагрузку на сервер и базу данных, так как необходимо выполнять меньше операций для генерации ответа. Это особенно полезно в случае высокой нагрузки на сервер или при ограниченных ресурсах.
Уменьшение задержек для конечных пользователей: Кэширование позволяет уменьшить время загрузки страниц для конечных пользователей, так как часть данных уже находится на клиентской стороне или близко к ней (например, в 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