Pull to refresh
37
0
Andrey Helldar @Helldar

Senior PHP Developer

Send message

Поддержка нескольких ботов в DefStudio Telegraph

Level of difficultyEasy
Reading time3 min
Views859

Программный продукт Telegraph от DefStudio работает шустро и работать с ним одно удовольствие. Но не обошлось и без ложки дёгтя в этом меду - несмотря на возможность работы с несколькими ботами, обработчик для них всех будет лишь один. Благо есть лёгкий способ это исправить.

Итак, погнали!

Читать далее
Total votes 14: ↑11 and ↓3+13
Comments0

Работа с новой архитектурой в Laravel 11

Level of difficultyEasy
Reading time8 min
Views11K

Основная "киллер-фича" фреймворка Laravel версии 11 - "плоский код". Под капот убрано всё, что большинством разработчиков не используется и, по сути, является "мусором". А также убраны некоторые действительно полезные вещи.

Под катом мы рассмотрим что куда делось и как улучшить взаимодействие с новой архитектурой.

Читать далее
Total votes 11: ↑9 and ↓2+11
Comments19

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

Level of difficultyMedium
Reading time9 min
Views3.1K

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

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

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments1

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

Level of difficultyMedium
Reading time10 min
Views5.1K

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

Читать далее
Total votes 8: ↑6 and ↓2+5
Comments9

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

Level of difficultyMedium
Reading time7 min
Views5.1K

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments2

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

Reading time7 min
Views3.9K

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

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments6

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

Level of difficultyEasy
Reading time4 min
Views9.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. Однако в новой версии его нужно...

Трогать мидлвари
Total votes 20: ↑20 and ↓0+20
Comments5

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

Level of difficultyEasy
Reading time5 min
Views9.9K

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

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

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments10

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

Level of difficultyEasy
Reading time3 min
Views3.7K

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

Узнать почему
Total votes 4: ↑3 and ↓1+3
Comments3

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

Level of difficultyMedium
Reading time9 min
Views3.4K

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

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

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

Читать далее
Total votes 4: ↑3 and ↓1+3
Comments0

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

Level of difficultyMedium
Reading time16 min
Views7.4K

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

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

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

Читать далее
Total votes 11: ↑10 and ↓1+12
Comments7

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

Level of difficultyEasy
Reading time4 min
Views36K

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

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

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

Читать далее
Total votes 33: ↑14 and ↓190
Comments178

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

Level of difficultyEasy
Reading time6 min
Views14K

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

Читать далее
Total votes 4: ↑2 and ↓20
Comments8

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

Level of difficultyEasy
Reading time6 min
Views18K

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

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

Читать далее
Total votes 13: ↑11 and ↓2+15
Comments32

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

Reading time5 min
Views4.9K

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

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

Читать далее
Total votes 9: ↑8 and ↓1+9
Comments39

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

Reading time4 min
Views4.7K

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

Читать далее
Total votes 6: ↑5 and ↓1+5
Comments41

Заметки о codestyle

Reading time3 min
Views3.4K

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

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

Читать далее
Total votes 13: ↑2 and ↓11-7
Comments50
1

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Lead
From 350,000 ₽
PHP
MySQL
Git
OOP
Docker
Redis
SQL
Laravel
Elasticsearch