Предотвращение спама в формах Statamic
В этой статье рассказывается о том, как добавить службу предотвращения спама к формам в Statamic для отклонения подозрительных отправок. Автор использует Akismet, но подчеркивает, что можно выбрать любую службу предотвращения спама. Шаги включают создание учетной записи Akismet, получение API-ключа и добавление его в файл .env, а также создание слушателя, который вызывается при отправке формы. Для проверки на спам используется метод isSpam, который в данном случае отправляет данные формы на проверку в Akismet.
Также указаны возможные улучшения, такие как отображение спамных отправок в панели управления Statamic и заменяемость службы предотвращения спама на другую.
В этой статье рассказывается о том, как добавить службу предотвращения спама к формам в Statamic для отклонения подозрительных отправок. Автор использует Akismet, но подчеркивает, что можно выбрать любую службу предотвращения спама. Шаги включают создание учетной записи Akismet, получение API-ключа и добавление его в файл .env, а также создание слушателя, который вызывается при отправке формы. Для проверки на спам используется метод isSpam, который в данном случае отправляет данные формы на проверку в Akismet.
Также указаны возможные улучшения, такие как отображение спамных отправок в панели управления Statamic и заменяемость службы предотвращения спама на другую.
DEV Community
Prevent spam in Statamic forms
If you're using Statamic's Forms feature to power a public facing form, you'll benefit from using...
❤4
Что такое namespace и зачем они?
Namespace в PHP — это механизм, который позволяет управлять областями видимости в коде, предотвращая конфликты имен и обеспечивая логическую организацию кода. Введение пространств имен в PHP позволяет структурировать проект, избегать конфликтов именования классов, функций и констант, а также облегчает интеграцию различных библиотек и компонентов.
Зачем используются пространства имен:
Избежание конфликтов имен: Проекты могут содержать множество классов, функций и констант. Пространства имен позволяют изолировать эти имена друг от друга, предотвращая возможные конфликты, особенно при использовании сторонних библиотек.
Организация кода: Пространства имен помогают логически организовать код, разделяя его на логические группы. Например, все классы, связанные с базой данных, могут быть помещены в пространство имен Database.
Автозагрузка классов: Использование пространств имен может сделать автозагрузку классов более эффективной и структурированной, особенно при использовании стандартов автозагрузки, таких как PSR-4.
#вопросы_с_собеседований
Namespace в PHP — это механизм, который позволяет управлять областями видимости в коде, предотвращая конфликты имен и обеспечивая логическую организацию кода. Введение пространств имен в PHP позволяет структурировать проект, избегать конфликтов именования классов, функций и констант, а также облегчает интеграцию различных библиотек и компонентов.
Зачем используются пространства имен:
Избежание конфликтов имен: Проекты могут содержать множество классов, функций и констант. Пространства имен позволяют изолировать эти имена друг от друга, предотвращая возможные конфликты, особенно при использовании сторонних библиотек.
Организация кода: Пространства имен помогают логически организовать код, разделяя его на логические группы. Например, все классы, связанные с базой данных, могут быть помещены в пространство имен Database.
Автозагрузка классов: Использование пространств имен может сделать автозагрузку классов более эффективной и структурированной, особенно при использовании стандартов автозагрузки, таких как PSR-4.
#вопросы_с_собеседований
🥱13👍5❤1
Полезные каналы по PHP :
PHP вакансии — @rabotaphp
Вакансии для PHP-разработчиков.
Уютное сообщество пхпшников. Книги — @phpdom
Книги + тесты на знание языка + туториалы и разборы кода
PHP books — @phpbook.
Книги по PHP и смежным технологиям;
Реклама. Киренкина Марина Дмитриевна, ИНН 345702417736. Erid 2VtzqwpUHeH
PHP вакансии — @rabotaphp
Вакансии для PHP-разработчиков.
Уютное сообщество пхпшников. Книги — @phpdom
Книги + тесты на знание языка + туториалы и разборы кода
PHP books — @phpbook.
Книги по PHP и смежным технологиям;
Реклама. Киренкина Марина Дмитриевна, ИНН 345702417736. Erid 2VtzqwpUHeH
🥱3❤1
Автор столкнулся с ошибкой «Lock wait timeout» при создании многоадресного API с использованием Laravel и трейта RefreshDatabase. Приложение имело базу данных платформы и отдельную базу данных для каждого арендатора, выбираемую во время выполнения на основе ключа API. Тесты, использующие трейт RefreshDatabase, приводили к ошибке времени ожидания блокировки. Причина была обнаружена в переключении базы данных во время выполнения, что сбивало с толку управление транзакциями Laravel. Решением стало использование свойства connectionsToTransact в классе TestCase, указывающего базы данных, участвующие в транзакциях. Это позволило транзакциям охватывать изменение базы данных и устранило проблему времени ожидания блокировки. Кроме того, это гарантировало правильную очистку тестовых данных из обеих баз данных после выполнения тестов.
Conroyp
Juggling Databases When Testing With Laravel: Tackling the Lock Wait Timeout Error
Discover how to tackle Laravel's testing challenges in multi-database scenarios. Say goodbye to the notorious 'Lock wait timeout' error.
❤5
Безотказные очереди в RabbitMQ: Гарантированная доставка сообщений
Статья представляет RabbitMQ как открытую реализацию протокола AMQP (Advanced Message Queuing Protocol) и мощный брокер сообщений, обеспечивающий эффективное взаимодействие между компонентами системы. Автор фокусируется на безотказных очередях в RabbitMQ и их важности в распределенных системах.🚀
🔑Почему безотказные очереди важны:
🛡️В условиях сбоев и ошибок обеспечение надежной доставки сообщений становится жизненно важным. Безотказные очереди решают эту проблему, гарантируя сохранение сообщений до их успешной доставки, что обеспечивает стабильное взаимодействие между системами.
🤔Проблемы при проектировании решения:
Описывается сценарий, где компоненты системы обмениваются важными сообщениями, и из-за временной недоступности одной системы отправка сообщений может не удаваться.⏳ Решение в «quorum» очередях RabbitMQ предоставляет параметры для контроля попыток отправки, но возникают проблемы с отсутствием встроенной задержки.
🛠️Механизм работы выбранного решения:
Автор представляет механизм обработки сообщений, использующий обменники, первичные очереди, обработку ошибок и механизм повторных попыток.🔄 Он объясняет, как сообщения направляются через различные очереди, как управляется количество попыток и как обеспечивается гибкость и надежность в обработке сообщений.
Статья представляет RabbitMQ как открытую реализацию протокола AMQP (Advanced Message Queuing Protocol) и мощный брокер сообщений, обеспечивающий эффективное взаимодействие между компонентами системы. Автор фокусируется на безотказных очередях в RabbitMQ и их важности в распределенных системах.🚀
🔑Почему безотказные очереди важны:
🛡️В условиях сбоев и ошибок обеспечение надежной доставки сообщений становится жизненно важным. Безотказные очереди решают эту проблему, гарантируя сохранение сообщений до их успешной доставки, что обеспечивает стабильное взаимодействие между системами.
🤔Проблемы при проектировании решения:
Описывается сценарий, где компоненты системы обмениваются важными сообщениями, и из-за временной недоступности одной системы отправка сообщений может не удаваться.⏳ Решение в «quorum» очередях RabbitMQ предоставляет параметры для контроля попыток отправки, но возникают проблемы с отсутствием встроенной задержки.
🛠️Механизм работы выбранного решения:
Автор представляет механизм обработки сообщений, использующий обменники, первичные очереди, обработку ошибок и механизм повторных попыток.🔄 Он объясняет, как сообщения направляются через различные очереди, как управляется количество попыток и как обеспечивается гибкость и надежность в обработке сообщений.
❤4👍1
Что скажете про HTMX, использовали ли?🔽🔽🔽
🥱12👍2🤔1
Минимум, который должен знать каждый разработчик программного обеспечения о Unicode в 2023 году
Unicode — это стандарт, целью которого является унификация всех человеческих языков и обеспечение их работы с компьютерами. Каждому символу присваивается уникальный номер, называемый кодовой точкой.
Статья подробно рассматривает кодовые точки, приводит примеры (например, буквы латинского алфавита, символы эмодзи), и объясняет, как Unicode решает проблему представления различных языков. Она также затрагивает кодировки UTF-8 и UTF-16, описывая, как они представляют символы в памяти компьютера.
Стоит также обратить внимание на важность использования библиотек для работы с Unicode, особенно при выполнении операций, таких как определение границ графем и нормализация строк.
Unicode — это стандарт, целью которого является унификация всех человеческих языков и обеспечение их работы с компьютерами. Каждому символу присваивается уникальный номер, называемый кодовой точкой.
Статья подробно рассматривает кодовые точки, приводит примеры (например, буквы латинского алфавита, символы эмодзи), и объясняет, как Unicode решает проблему представления различных языков. Она также затрагивает кодировки UTF-8 и UTF-16, описывая, как они представляют символы в памяти компьютера.
Стоит также обратить внимание на важность использования библиотек для работы с Unicode, особенно при выполнении операций, таких как определение границ графем и нормализация строк.
tonsky.me
The Absolute Minimum Every Software Developer Must Know About Unicode in 2023 (Still No Excuses!)
Modern extension to classic 2003 article by Joel Spolsky
❤4
#дайджест новостей по PHP за неделю:
🔎Вышел PHP 8.3!
🔎PhpStorm теперь поддерживает PHP 8.3 — На сегодняшний день PhpStorm обеспечивает полную поддержку всех улучшений PHP 8.3.
🔎Выпущена версия Laravel 10.32 — На этой неделе команда Laravel выпустила версию 10.32 с новыми директивами условного нажатия Blade и многим другим.
🔎Выпущена Symfony 7.0.0-RC1 — Только что выпущена Symfony 7.0.0-RC1. Вот список наиболее важных изменений с версии 7.0.0-BETA3.
🔎 Неделя Symfony #881 (13–19 ноября 2023 г.) — В этой сборке вы можете обнаружить несколько улучшений в различных подсистемах.
🔎PhpStorm 2023.3 Beta
🔎Вышел PHP 8.3!
🔎PhpStorm теперь поддерживает PHP 8.3 — На сегодняшний день PhpStorm обеспечивает полную поддержку всех улучшений PHP 8.3.
🔎Выпущена версия Laravel 10.32 — На этой неделе команда Laravel выпустила версию 10.32 с новыми директивами условного нажатия Blade и многим другим.
🔎Выпущена Symfony 7.0.0-RC1 — Только что выпущена Symfony 7.0.0-RC1. Вот список наиболее важных изменений с версии 7.0.0-BETA3.
🔎 Неделя Symfony #881 (13–19 ноября 2023 г.) — В этой сборке вы можете обнаружить несколько улучшений в различных подсистемах.
🔎PhpStorm 2023.3 Beta
👍9❤2
В этой статье обсуждается, как предотвратить дублирование отправок форм или запросов в приложениях Laravel с использованием атомарных блокировок. Атомарные блокировки помогают управлять распределенными блокировками, не беспокоясь о состязательности.
В примере рассматривается сценарий, в котором пользователь инициирует платежи через форму. Чтобы предотвратить нежелательные последствия, такие как обработка одного и того же запроса несколько раз, представлены атомарные блокировки. Реализация иллюстрируется в SendPaymentController.
Метод Cache::lock используется для создания атомарной блокировки. Он принимает три аргумента: имя блокировки, продолжительность ее действия и необязательный параметр владельца. Имя должно быть уникальным, чтобы избежать коллизий.
В примере SendPaymentController создается блокировка с уникальным именем ({$account->id}:payment:send), которая остается действительной в течение 10 секунд. Если блокировка получена, запрос обрабатывается, и пользователь перенаправляется с сообщением об успехе. Если блокировка не получена, пользователь перенаправляется с сообщением об ошибке.
В примере рассматривается сценарий, в котором пользователь инициирует платежи через форму. Чтобы предотвратить нежелательные последствия, такие как обработка одного и того же запроса несколько раз, представлены атомарные блокировки. Реализация иллюстрируется в SendPaymentController.
Метод Cache::lock используется для создания атомарной блокировки. Он принимает три аргумента: имя блокировки, продолжительность ее действия и необязательный параметр владельца. Имя должно быть уникальным, чтобы избежать коллизий.
В примере SendPaymentController создается блокировка с уникальным именем ({$account->id}:payment:send), которая остается действительной в течение 10 секунд. Если блокировка получена, запрос обрабатывается, и пользователь перенаправляется с сообщением об успехе. Если блокировка не получена, пользователь перенаправляется с сообщением об ошибке.
Daryl Legion
Preventing Duplicate Form Submissions Using Atomic Locks
Prevent duplicate form submissions and job dispatching using Laravel's atomic locks.
❤7
Stressless — стресс-тестирование с помощью PEST
🔎В ходе LaraconAU представлены две значимые новинки: Laravel Pulse и плагин Stressless от Nuno Maduro, предназначенный для стресс-тестирования приложений.
❗Стресс-тестирование в области тестирования программного обеспечения направлено на оценку производительности приложения или системы при экстремальных нагрузках. Этот вид тестирования включает в себя создание сценариев, специально разработанных для превышения типичных операционных пределов системы.
Stressless использует инструмент k6, мощный инструмент с открытым исходным кодом для нагрузочного тестирования, чтобы оценить производительность API, микросервисов и веб-сайтов. Плагин интегрируется с Expectation API в Pest, обеспечивая отсутствие регрессий в стабильности и надежности приложения.
🔎В ходе LaraconAU представлены две значимые новинки: Laravel Pulse и плагин Stressless от Nuno Maduro, предназначенный для стресс-тестирования приложений.
❗Стресс-тестирование в области тестирования программного обеспечения направлено на оценку производительности приложения или системы при экстремальных нагрузках. Этот вид тестирования включает в себя создание сценариев, специально разработанных для превышения типичных операционных пределов системы.
Stressless использует инструмент k6, мощный инструмент с открытым исходным кодом для нагрузочного тестирования, чтобы оценить производительность API, микросервисов и веб-сайтов. Плагин интегрируется с Expectation API в Pest, обеспечивая отсутствие регрессий в стабильности и надежности приложения.
Introducing Stressless - Stress Testing with PEST
This week was full of treats for Laravel developers due to LaraconAU. After the launch of Laravel Pulse, Nuno Maduro announced a new plugin called...
❤5
Невидимые столбцы MySQL и как их определить с помощью Laravel и Doctrine
В новых версиях MySQL, начиная с v8.0.23, появилась поддержка невидимых колонок. Невидимая колонка по умолчанию скрыта от запросов, но может быть доступна при явном обращении к ней. Ранее все колонки были видимыми.
Создать невидимую колонку можно простым добавлением атрибута INVISIBLE при создании таблицы
В новых версиях MySQL, начиная с v8.0.23, появилась поддержка невидимых колонок. Невидимая колонка по умолчанию скрыта от запросов, но может быть доступна при явном обращении к ней. Ранее все колонки были видимыми.
Создать невидимую колонку можно простым добавлением атрибута INVISIBLE при создании таблицы
DEV Community
MySQL invisible columns and how to define it with Laravel and Doctrine
Many developers don't know that MySQL now has support for invisible columns. But what exactly is an...
🌚5❤4👍1
Что такое opcache? Как он работает?
OPcache (Optimized Cache) — это расширение для PHP, которое осуществляет кэширование скомпилированного байт-кода PHP для улучшения производительности выполнения скриптов.
OPcache работает в нескольких этапах:
Кэширование байт-кода: После компиляции скомпилированный байт-код кэшируется в памяти OPcache. Кэширование позволяет избежать необходимости компиляции скрипта при каждом его выполнении, что сокращает время обработки запросов.
Повторное использование кэша: При последующих запросах к этому скрипту, PHP загружает его скомпилированный байт-код из кэша OPcache, обеспечивая быстрое выполнение без необходимости повторной компиляции.
OPcache также предоставляет дополнительные возможности для оптимизации производительности:
- Предзагрузка определяемых классов: OPcache может предзагрузить классы, определенные в скриптах, для ускорения их доступа и использования.
- Контроль за памятью: OPcache имеет механизм управления памятью, который позволяет наблюдать за использованием памяти скриптами и в случае необходимости автоматически очищать кэш.
- Управление версиями кэша: OPcache автоматически отслеживает изменения файлов скриптов и автоматически очищает кэшированные данные, в случае, если файл был изменен или удален, чтобы гарантировать актуальность данных.
#вопросы_с_собеседований
OPcache (Optimized Cache) — это расширение для PHP, которое осуществляет кэширование скомпилированного байт-кода PHP для улучшения производительности выполнения скриптов.
OPcache работает в нескольких этапах:
Кэширование байт-кода: После компиляции скомпилированный байт-код кэшируется в памяти OPcache. Кэширование позволяет избежать необходимости компиляции скрипта при каждом его выполнении, что сокращает время обработки запросов.
Повторное использование кэша: При последующих запросах к этому скрипту, PHP загружает его скомпилированный байт-код из кэша OPcache, обеспечивая быстрое выполнение без необходимости повторной компиляции.
OPcache также предоставляет дополнительные возможности для оптимизации производительности:
- Предзагрузка определяемых классов: OPcache может предзагрузить классы, определенные в скриптах, для ускорения их доступа и использования.
- Контроль за памятью: OPcache имеет механизм управления памятью, который позволяет наблюдать за использованием памяти скриптами и в случае необходимости автоматически очищать кэш.
- Управление версиями кэша: OPcache автоматически отслеживает изменения файлов скриптов и автоматически очищает кэшированные данные, в случае, если файл был изменен или удален, чтобы гарантировать актуальность данных.
#вопросы_с_собеседований
👍11❤5😁1
Решение проблем CORS поддомена в Laravel Herd
Основной фокус статьи — решение проблем с CORS (Cross-Origin Resource Sharing) после миграции на Laravel Herd. Проблема заключается в отсутствии заголовка Access-Control-Allow-Origin для некоторых ресурсов, что приводит к блокировке загрузки JavaScript из-за политики Same-Origin.
Далее, автор предоставляет решение проблемы, предлагая добавить CORS-заголовки вручную. Это можно сделать через терминал с помощью команды или через интерфейс Herd. Автор также указывает на необходимость перезапуска Nginx после внесения изменений.
Основной фокус статьи — решение проблем с CORS (Cross-Origin Resource Sharing) после миграции на Laravel Herd. Проблема заключается в отсутствии заголовка Access-Control-Allow-Origin для некоторых ресурсов, что приводит к блокировке загрузки JavaScript из-за политики Same-Origin.
Далее, автор предоставляет решение проблемы, предлагая добавить CORS-заголовки вручную. Это можно сделать через терминал с помощью команды или через интерфейс Herd. Автор также указывает на необходимость перезапуска Nginx после внесения изменений.
vanpachtenbeke.com
Solving subdomain CORS issues on Laravel Herd
I have been a satisfied Valet user for the past four years, but my recent frustrations with Homebrew have led me to look into Laravel Herd.
❤4🥱3🌚2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
💻 Комфортный сетап и качественное рабочее пространство — это то, что прямо пропорционально влияет на вашу продуктивность. Кто-то тратит на всё это очень большие деньги, а кому-то вообще по барабану, в какой монитор смотреть, на чём сидеть и на что нажимать.
В любом случае эта тема важная и интересная. Смотрите подкаст «Мы обречены» о том, как собрать идеальное рабочее место для программиста:
📺 02:58 — Представление гостей
📺 05:31 — Значение и смысл личного и рабочего комфорта
📺 16:23 — Поднимающийся стол
📺 23:16 — Стул
📺 30:23 — Монитор
📺 45:23 — Клавиатура
📺 1:08:51 — Мышка
📺 1:15:28 — Странные бесполезные устройства
📺 1:21:33 — Умный дом
📺 1:47:52 — Важность комфорта для продуктивности
📺 1:58:07 — С чего начать в осваивании комфорта
📺 2:02:32 — Обнадеживающее аутро
#подкасты
В любом случае эта тема важная и интересная. Смотрите подкаст «Мы обречены» о том, как собрать идеальное рабочее место для программиста:
📺 02:58 — Представление гостей
📺 05:31 — Значение и смысл личного и рабочего комфорта
📺 16:23 — Поднимающийся стол
📺 23:16 — Стул
📺 30:23 — Монитор
📺 45:23 — Клавиатура
📺 1:08:51 — Мышка
📺 1:15:28 — Странные бесполезные устройства
📺 1:21:33 — Умный дом
📺 1:47:52 — Важность комфорта для продуктивности
📺 1:58:07 — С чего начать в осваивании комфорта
📺 2:02:32 — Обнадеживающее аутро
#подкасты
👍3🔥2
Друзья, мы хотим делать для вас самый лучший контент — и для этого нам нужно узнать вас получше.
Пожалуйста, ответьте на несколько вопросов — это не займет у вас много времени, но поможет нам делать более полезные и интересные посты!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
Ваш возраст:
Anonymous Poll
2%
Менее 18 лет
16%
18-24 года
47%
25-34 года
27%
35-44 года
5%
45-54 года
0%
55-64 года
2%
65 лет и старше
❤1
🌚5
В каком городе вы живете последние 3 месяца?
Anonymous Poll
11%
Москва
7%
Санкт-Петербург
4%
Краснодар
1%
Нижний Новгород
4%
Минск
2%
Екатеринбург
4%
Киев
2%
Львов
3%
Алматы
61%
Другое