Как стать автором
Обновить
33
8
Andrey Helldar @Helldar

Senior PHP Developer

Отправить сообщение

Система уведомлений в ресурсах Laravel

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров2.4K

В предыдущей статье по работе с API ресурсами в Laravel была затронута тема изменения бизнес-потребностей в области формирования внешнего вида объекта ответа на запрос к API приложения.

В этой мы пойдём дальше и введём новую бизнес-потребность под названием "нотификации". Их суть в том, чтобы вместе с ответом на запрос добавлять информацию о каких-либо действиях.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии1

Магический API Resource в Laravel

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров3.1K

В Laravel есть удобные API ресурсы, с которыми легко и приятно работать в области трансформации данных для ответа на запрос. Но что делать когда возникает необходимость изменить их структуру в соответствии с бизнес-потребностями? Разберёмся вместе!

Читать далее
Всего голосов 9: ↑7 и ↓2+5
Комментарии7

Модификация JSON респонсов в Laravel

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.8K

Вчера я опубликовал перевод статьи на тему оптимизации использования респонсов в Laravel с "простейшими" данными. То есть когда в ответ нужно отдать какое-то число, строку, массив или объект. Но что делать если приложение построено на использовании Json Resource? Или ещё больше - нужно изменить уровень вложенности данных, возвращаемых коллекцией? Давайте разбираться!

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии2

Один класс, что правит всеми или как улучшить респонс в Laravel

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.3K

Добавить гибкость в управление Laravel респонсов приложения? Легко! Заходите под кат и я покажу Вам свой кейс.

Читать далее
Всего голосов 4: ↑2 и ↓20
Комментарии8

Введение в поддержку JavaScript в MySQL

Время на прочтение7 мин
Количество просмотров3.3K

MySQL продолжает наращивать инновации и теперь включает в себя богатые возможности процедурного программирования внутри базы данных. Отныне разработчики могут писать хранимые программы на языке JavaScript (функции и процедуры) в сервере баз данных MySQL. Хранимые программы будут выполняться с помощью GraalVM. Эта версия доступна в качестве "Preview" в MySQL Enterprise Edition и может быть загружена через Oracle Technology Network (OTN). MySQL-JavaScript также доступен в облачном сервисе MySQL Heatware на OCI, AWS и Azure.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии6

Изучение мидлварей в Laravel 11

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров6.8K

Выход Laravel 11 намечен на первый квартал 2024-го года, что может произойти уже в следующем месяце.

Я начинаю новый проект, и поскольку дата выхода очень близка, решил взглянуть на то что изменится в новом крупном обновлении. Помню как пол года назад прочитал в Laravel News статью о том, что Http Kernel уходит в небытие, и не придал этому особого значения.

Когда я создал проект с помощью команды laravel new project --dev, я был очень удивлён тем, насколько уменьшился размер проекта. Было очень удивительно видеть пустую папку config (можно опубликовать файлы конфигурации при помощи команды php artisan config:publish)!

И, конечно же, там нет Http Kernel. Итак... как же добавить или изменить мидлвари? До Laravel 11 ядро Http Kernel, располагающееся по пути app/Http/Kernel.php,было местом хранения всей конфигурации для мидлварей. Также до Laravel 11 не было необходимости трогать руками файл bootstrap/app.php, если только Вы не использовали фреймворк Lumen. Однако в новой версии его нужно...

Трогать мидлвари
Всего голосов 20: ↑20 и ↓0+20
Комментарии5

Чудо китайской промышленности YEELIGHT Lightstrip Pro и как я её подключал к Razer Synapse 3

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров8.2K

Просто так взять и подключить RGB-ленту к приложению Yeelight Station на ПК нельзя. Для этого нужно поплясать с бубном до упаду.

Я сэкономлю Вам силы и нервы, поэтому гоу под кат за подробностями.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии10

Совет по безопасности: увеличьте количество проходов bcrypt

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.9K

bcrypt - это функция хэширования паролей, используемая для их защиты в базах данных чтобы их не смог использовать тот, кто получит доступ к исходному кэшу. В настоящее время bcrypt является алгоритмом шифрования по-умолчанию как в Laravel, так и в самом PHP, и на момент написания статьи является наиболее безопасным вариантом хэширования паролей, но нужно увеличить количество проходов хэширования...

Узнать почему
Всего голосов 5: ↑4 и ↓1+3
Комментарии3

Неортодоксальный Eloquent. Часть 2

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3K

Eloquent - это мощный и умный инструмент, нравящийся многим своими возможностями. Он позволяет с лёгкостью выполнять операции с базами данных, сохраняя при этом простоту использования. Реализуя паттерн Active Record (AR), описанный Фаулером в книге "PoEAA", является одним из лучших реализаций на сегодняшний день.

В этой статье я хотел бы рассказать о нескольких советах и рекомендациях, о которых узнал экспериментальным путём. Например, Вы когда-нибудь задумывались о том, чтобы тем или иным образом разделить жадные загрузки? Нет? Тогда, я уверен, Вы узнаете как минимум что-то новое, так что обязательно дочитайте до конца!

Если Вы ещё не читали первую часть, самое время это сделать.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Неортодоксальный Eloquent. Часть 1

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров6.5K

Eloquent - это мощный и умный инструмент, нравящийся многим своими возможностями. Он позволяет с лёгкостью выполнять операции с базами данных, сохраняя при этом простоту использования. Реализуя паттерн Active Record (AR), описанный Фаулером в книге "PoEAA", является одним из лучших реализаций на сегодняшний день.

В этой статье я хотел бы рассказать о нескольких советах и рекомендациях, о которых узнал экспериментальным путём. Например, Вы когда-нибудь задумывались о том, чтобы тем или иным образом разделить жадные загрузки? Нет? Тогда, я уверен, Вы узнаете как минимум что-то новое, так что обязательно дочитайте до конца!

Как и все существующие инструменты, у Eloquent имеются свои нюансы. Как ответственные разработчики, мы всегда должны помнить о том, на что соглашаемся. Если Вы хотите узнать больше об AR и философии её разработки, очень рекомендую статью Шона МакКула.

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии7

Почему тип поля enum на уровне базы — зло

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров31K

Часто разработчики интересуются почему не рекомендуется использовать тип поля enum в базе данных, и в этой статье мы рассмотрим все плюсы и минусы данного типа.

Тип колонки enum используется для хранения данных, которые могут принимать определённые значения из заранее определённого набора. Он обеспечивает ограничение значений, которые может принимать колонка, и позволяет более строго контролировать данные. Это может быть полезно для хранения статусов, категорий, типов или любых других значений, которые могут быть заданы только из ограниченного набора вариантов.

Но это в теории. А что на практике? Рассмотрим под катом.

Читать далее
Всего голосов 38: ↑19 и ↓190
Комментарии178

Решение конфликта IP-адресов при использовании Docker

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров8.7K

Пересобирая в очередной раз контейнеры столкнулся с проблемой когда некоторые контейнеры перестали видеть в сети сервисы, расположенные в локальной сети и причина тому - конфликт IP-адресов, когда локальный докер занял тот же пул адресов. В статье мы рассмотрим два варианта решения проблемы.

Читать далее
Всего голосов 4: ↑2 и ↓20
Комментарии8

Генерация и валидация чисел по алгоритму Луна

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров13K

Алгоритм Луна (Luhn algorithm) - это процесс вычисления контрольной цифры для числа в соответствии со стандартом ISO/IEC 7812. Процесс предназначен, в первую очередь, для выявления ошибок, вызванных с непреднамеренным искажением данных. Например, при ручном вводе номера карты или любого другого числа.

Разберём как он работает и рассмотрим инструмент для формирования номеров по алгоритму.

Читать далее
Всего голосов 19: ↑17 и ↓2+15
Комментарии32

Простой бенчмарк для PHP приложений

Время на прочтение5 мин
Количество просмотров4.7K

Очень часто приходится сравнивать время выполнения кода с целью выбора наиболее оптимального решения, и каждый раз для этого приходилось писать обработчик с расчётом микровремени, после чего все результаты заносились в какую-нибудь таблицу Excel и вручную рассчитывалось минимальное, максимальное и среднее время выполнения...

Для решения этой тривиальной задачи был выпущен пакет "Runtime Comparison", позволяющий сравнивать время выполнения кода без лишних затрат.

Читать далее
Всего голосов 11: ↑10 и ↓1+9
Комментарии39

Автоматические имена роутов Laravel

Время на прочтение4 мин
Количество просмотров4.4K

Часто разработчики при создании проектов пренебрегают именованием маршрутов по разным причинам, например, когда они вообще не обращаются к ним используя метод `route()`. Это обусловлено архитектурой приложения и в этом нет ничего зазорного. Но есть и такие проекты, где имена маршрутов являются неотъемлемой частью проекта, но случается так, что не ко всем идёт применение имён. Об этом мы и поговорим.

Читать далее
Всего голосов 7: ↑6 и ↓1+5
Комментарии41

Заметки о codestyle

Время на прочтение3 мин
Количество просмотров3.3K

Довольно часто сталкиваюсь с одним вопросом касательно кода: "Почему написано именно так, а не так?". И я объясняю чем это обусловлено, после чего слушаю мнение оппонента, вследствие чего принимаю решение либо продолжать следовать своим установкам, либо менять на более лучший вариант.

Именно потому что этот вопрос постоянно на устах, решил составить эдакую заметку с некоторыми примерами и объяснениями.

Читать далее
Всего голосов 15: ↑4 и ↓11-7
Комментарии50

Распространенные ошибки безопасности в приложениях Laravel

Время на прочтение14 мин
Количество просмотров18K

В большинстве случаев уязвимости безопасности возникают только из-за недостаточной осведомленности, а не из-за халатности. Хотя мы обнаружили, что большинство разработчиков заботятся о безопасности, но иногда они не понимают, как конкретный шаблон кода может привести к уязвимости, поэтому в электронной книге мы решили поделиться наиболее распространенными проблемами безопасности, которые мы видели во время помощи разным стартапам в защите своих приложений Laravel. С каждым примером атаки мы также покажем лучшие практики по защите вашего приложения от атак. Мы надеемся, что эта информация окажется полезной для вас и вашей команды разработчиков.

CyberPanda Team

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии0

Mikrotik: Ограничение скорости скачивания для определенных IP-адресов

Время на прочтение4 мин
Количество просмотров41K
Предыстория: имеем Интернет-соединение со скоростью «до 50 Мбит/с», имеющее «фичу» разгоняться до 100 если канал свободен. Пользуясь облачным хранилищем заметил проблему, что выгрузив или загрузив около 50-100 файлов клиент для работы с облаком «зависает» и либо качает файлы на крайне низкой скорости (порядка 50-200 Кбит/с), либо вообще «молчит». При этом, сайты в браузере открываются без всяких проблем.

Как такое может быть? Ограничение ширины канала по определенным IP-адресам при скачке за определенный промежуток времени.

Для тех, кто хочет подробнее узнать об этом или вовсе новичок, увидевший возможное решение своей проблемы, добро пожаловать под кат.
Читать дальше →
Всего голосов 8: ↑5 и ↓3+2
Комментарии39
1

Информация

В рейтинге
661-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Lead
От 350 000 ₽
PHP
MySQL
Git
OOP
Docker
Redis
SQL
Laravel
Elasticsearch