Заметки разработчика
Ir al canal en Telegram
Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов. https://www.dev-notes.ru @snakenf
Mostrar más463
Suscriptores
Sin datos24 horas
-37 días
+130 días
Archivo de publicaciones
🚀 Оптимизация SQL запросов
В SQL-запросе операторы выполняются в следующем порядке:
1.
FROM / JOIN
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. DISTINCT
7. ORDER BY
8. LIMIT / OFFET
Приемы, применяемые на каждом этапе, помогают ускорить выполнение следующих шагов. Поэтому важно знать порядок их выполнения. Чтобы добиться максимальной эффективности, сосредоточьтесь на оптимизации шагов, расположенных на более ранних этапах запроса.
С учётом этого рассмотрим некоторые советы по оптимизации:
Максимизируйте выражение `WHERE`.
Это выражение выполняется раньше, поэтому оно предоставляет хорошую возможность уменьшить размер набора данных до того, как будет обработана остальная часть запроса.
Фильтруйте строки перед `JOIN`
Хотя запрос FROM/JOIN выполняется первым, всё равно можно ограничить количество строк. Чтобы ограничить количество присоединяемых строк, используйте подзапрос в операторе FROM вместо таблицы.
Используйте `WHERE` вместо `HAVING`
Выражение HAVING выполняется после WHERE и GROUP BY. Это означает, что при возможности стоит перенести все необходимые условия в выражение WHERE.
Не путайте `LIMIT`, `OFFSET` и `DISTINCT` с методами оптимизации
Легко предположить, что они повышают производительность за счет минимизации набора данных, но это не так. Поскольку они выполняются в конце запроса, они практически не влияют на его производительность.
🖥 Порядок выполнения CQL запроса
📱 @dev_notes_ru
#SQL #DataBase #tips💡 Совет по Laravel: Привязка примитивов к значениям конфигурации
Иногда возникает необходимость привязать примитив к значению, например, к значению конфигурации. Вместо того чтобы использовать
give() с обратным вызовом, Laravel предоставляет сокращение giveConfig, делающее именно это 🚀.
📱 @dev_notes_ru
#Laravel #tips👩💻 Что можно сделать с помощью middleware в Laravel
Вам приходилось писать одни и те же проверки в нескольких контроллерах? Например, форматирование вводимых данных, блокировка доступа или отслеживание пользовательской активности? Всё это начинает казаться повторяющимся, верно?... и быстро надоедает.
Вот тут-то и приходит на помощь middleware. Думайте о нём как о «вышибале» в приложении — он проверяет, изменяет или отклоняет запросы до того, как они попадут к контроллерам. Или даже после того, как запрос обработан (многие об этом не знают). Вместо того чтобы загромождать контроллеры повторяющейся логикой или разделять эту логику в трейте, middleware помогает добавлять функциональность по нескольким маршрутам более чистым и удобным способом.
🖥 Читать статью
📱 @dev_notes_ru
#Laravel #Middleware
👩💻 А вы знали, что в приложениях Laravel можно получить список маршрутов, зарегистрированных пакетами?
Его можно получить, выполнив команду:
php artisan route:list --only-vendor
Это удобно для аудита маршрутов и выявления тех, о которых вы могли не знать, чтобы гарантировать, что они заблокированы и безопасны!
📱 @dev_notes_ru
#Laravel #Route #tips👩💻 Паттерны улучшения производительности Eloquent
Способы улучшения производительности баз данных для приложений Laravel с использованием ORM Eloquent.
🖥 Читать статью
📱 @dev_notes_ru
#Eloquent #tips
👩💻 Вы можете использовать метод
Number::fileSize в приложениях Laravel для преобразования размеров файлов (в байтах) в более человекочитаемые представления!
Это удобно для отображения размеров файлов в пользовательском интерфейсе.
📱 @dev_notes_ru
#Laravel #Number #tips👩💻 Laravel: Запуск запланированных команд в режиме обслуживания!
При использовании
php artisan down --secret="your-secret", Laravel блокирует все запросы, включая запланированные команды (schedule).
Проблема:
Если есть запланированная задача в app/Console/Kernel.php, например, создание резервной копии:
$schedule->command('backup:run')
->dailyAt('03:00');
Эта команда не выполнится, пока приложение находится в режиме обслуживания.
Решение:
Добавьте evenInMaintenanceMode(), чтобы команда выполнялась, даже когда активен режим обслуживания:
$schedule->command('backup:run')
->dailyAt('03:00')
->evenInMaintenanceMode();
✅ Теперь важные задачи, такие как резервное копирование, отчеты и синхронизация, будут выполняться даже когда сайт не доступен пользователям!
📱 @dev_notes_ru
#Laravel #Schedule #Maintenance #tips👩💻
Intl.DurationFormat: Форматирование временных интервалов с поддержкой локали
Хватит писать код форматирования временных интервалов вручную. Используйте новый мощный API Intl.DateTimeFormat для отображения локализированного времени.
Временные интервалы встречаются повсюду — видеоплееры показывают оставшееся время, фитнес-приложения отслеживают продолжительность тренировок, а инструменты управления проектами измеряют время выполнения задач. Традиционно для форматирования этих значений в разных локалях требовался собственный код или внешние библиотеки.
Объект Intl.DurationFormat элегантно решает данную проблему. Он является частью основной спецификации языка ECMAScript — в частности, ECMAScript Internationalization API (ECMA-402). Это делает его нативной функцией JavaScript, а не API веб-браузера, хотя браузерная реализация определяет его доступность.
🖥 Читать статью
📱 @dev_notes_ru
#JavaScript💡 Совет по CSS
Заметил, что многие разработчики используют
margin для добавления промежутков между элементами flexbox, особенно в меню.
Вместо margin во Flexbox можно использовать свойство gap и избежать неудобных :not(:last-child) или сброса margin на первом/последнем элементе. 😉
gap в baseeline с апреля 2021 года. ✅
📱 @dev_notes_ru
#CSS #flexbox #tips👩💻 Спокойное подчёркивание текста ссылки
Синие ссылки с подчёркиванием — хороший стиль по умолчанию для ссылок в основном тексте, но он выглядит чересчур резко. Возможно, мы можем его немного смягчить и сделать более гибким.
Иногда я не могу решить, как должна выглядеть идеальная ссылка в тексте. Она должна быть очевидной, но в то же время должна быть оформлена не настолько интенсивно, чтобы отвлекать от чтения текста. В целом мне нравится идея, что ссылки должны быть синими и подчёркнутыми, так как это наиболее близко к привычному виду ссылок по умолчанию, но я гибко подхожу к этому вопросу. Ссылки, имеющие «фирменный» цвет и отличающиеся от цвета текста, кажутся прекрасными, особенно если они тоже подчёркнуты.
🖥 Читать статью
📱 @dev_notes_ru
#Frontend #CSS
💡 Совет по Laravel: Преобразование `Response` в `Exception`
При использовании API запрос может завершиться ошибкой. Хотя можно вручную проверять и выбрасывать исключения, Laravel поставляется с удобными хелперами, позволяющими делать именно это 🚀.
📱 @dev_notes_ru
#Laravel #API #tips
💡 Совет по Laravel: Трейт
`MassPrunable`
Если вы очищаете модели с помощью трейта Prunable и не используете события модели, воспользуйтесь трейтом MassPrunable, чтобы очистить их с помощью одного запроса. Это гораздо эффективнее 🚀.
📱 @dev_notes_ru
#Laravel #Eloquent #tips💡 Совет по Laravel: Извлечение текста между строками
Вам когда-нибудь требовалось извлечь текст, находящийся между двумя строками? В Laravel есть метод
between, позволяющий сделать именно это 🚀.
📱 @dev_notes_ru
#Laravel #String #tips👩💻 Что такое TypeScript. Обзор для JavaScript программистов
Если вы JavaScript программист и хотите получить представление об использовании TypeScript (первый шаг перед изучением подробностей), то эта статья для вас.
🖥 Читать статью
📱 @dev_notes_ru
#TypeScript
Погрузись в Мир Backend-разработки! 🔥
Backend – это сердце цифрового мира, где создаются масштабируемые системы и происходит настоящая магия кода. Здесь нет волшебных таблеток, а есть реальные знания, практические навыки и поддержка настоящего сообщества.
В нашем канале ты найдёшь:
— подборки курсов, книги, шпаргалки по backend-разработке
— ежедневная проверка знаний в виде простых тестов
— роадмапы, петпроекты и много другого полезного материала
Присоединяйся к лучшему сообществу backend-разработчиков 😍
🚀 Улучшенные директивы Blade!
Laravel 12 расширяет возможности Blade, добавляя удобные директивы для элементов формы:
✅
@checked - устанавливает checked, если условие истинно.
✅ @selected - устанавливает selected для выпадающих элементов
✅ @readonly - Добавляет атрибут readonly
✅ @required - Добавляет атрибут required
📌 Пример:
<input type="checkbox" name="subscribe" @checked($user->subscribed)>
<select name="role">
<option value="admin" @selected($user->role === 'admin')>Admin</option>
</select>
<input type="text" name="username" @readonly($user->is_admin)>
<input type="email" name="email" @required($user->needs_verification)>
Эти директивы делают шаблоны Blade чище и читабельнее!
📱 @dev_notes_ru
#Laravel #Blade