Заметки разработчика
رفتن به کانال در Telegram
Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов. https://www.dev-notes.ru @snakenf
نمایش بیشتر463
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-37 روز
+130 روز
آرشیو پست ها
💡 Совет по Laravel: Загрузка подсчета отношений на лету
При работе с моделями вам может понадобиться подсчёт отношений. Если вы забыли его загрузить, всегда можно использовать
loadCount, чтобы подгрузить подсчёт на лету 🚀.
📱 @dev_notes_ru
#laravel #php #tips👩💻 Сокращения JavaScript экономящие время
Разработчик JavaScript, пишущий чистый, эффективный и лаконичный код может значительно сократить время разработки. Понимание ряда удобных сокращений JavaScript может сделать код более читаемым и помочь избежать повторяющихся шаблонов. В статье мы рассмотрим 10 мощных сокращений JavaScript, способных сэкономить часы работы над кодом и повысить производительность.
🖥 Читать статью
📱 @dev_notes_ru
#javascript #js #tips
👩💻 Анимация по высоте/ширине авто (без хаков)
Всего три строки кода, и вы получаете плавный переход к
height: auto.
& {
interpolate-size: allow-keywords;
}
p {
transition: 1s;
}
p:not(:hover) {
height: 5lh;
}
Все волшебство выполняет interpolate-size: allow-keywords. Подробнее об этом читайте в статье Анимация height: auto; (и другие ключевые слова внутреннего размера) в CSS.
👩💻 Посмотреть пример на CodePen
Пока поддерживается только в Chromium-based браузерах.
✅ 👩💻 Chrome, 👩💻 Edge, 👩💻 Brave.
❌ 👩💻 Firefox и 👩💻 Vivaldi.
📱 @dev_notes_ru
#css #feature #animation💡 Совет по Laravel: Передача нескольких ID и определенных столбцов в `find`
Мы часто используем
find(), но знаете ли вы, что можно передать массив ID и выбрать конкретные столбцы? 🚀
📱 @dev_notes_ru
#laravel #php #tips👩💻 PHP 8.4: MBString: База данных символов Юникода обновлена до версии 16
Благодаря поддержке Unicode 16 расширение MBString может работать со всеми новейшими символами Emoji, а также имеет самую актуальную информацию о смене регистра и ширине символов.
Расширение MBString содержит подмножество данных из спецификации Unicode, используемое для таких операций, как преобразование заданной строки в верхний или нижний регистр, определение ширины строки (удобно для некоторых восточноазиатских шрифтов) и т.д.
В PHP 8.3 расширение MBString включало данные стандарта Unicode 14.0, выпущенного в сентябре 2022 года. В PHP 8.4 источник данных Unicode Character Database (UCD) был обновлён с 14.0 до 16.0, выпущенного в 2024 сентябре. Unicode 16.0 — это последняя версия UCD, доступная на этот момент.
В версии Unicode 15.0, 15.1 и 16.0 добавлено 4 489, 627 и 5 185 новых символов. Кроме того, три версии Unicode вместе взятые поддерживают 11 дополнительных скриптов. Однако для расширения MBString важны обновления в правилах сложения регистра символов, влияющие на такие функции, как
mb_strtolower, mb_strtoupper и назначение значения восточноазиатской ширины, определяющее, считается ли данный символ нормальной ширины или широким (mb_strwidth).
Прямых изменений в функциях MBString нет. Данные символов Юникода являются частью самого расширения MBString и будут использоваться во всех функциях PHP 8.4.
🖥 Читать статью
📱 @dev_notes_ru
#php #php84 #mbstring🛡 Filament v3.2.115: исправлена критическая XSS-уязвимость в компонентах
ColorColumn и ColorEntry
Недавно Filament выпустил версию 3.2.115, устраняющую критическую проблему безопасности, связанную с межсайтовым скриптингом (XSS). Эта уязвимость затрагивала компоненты ColorColumn и ColorEntry. Далее рассмотрим детали уязвимости, выпущенное исправление и способы защиты приложений.
Обзор XSS-уязвимости
Уязвимость позволяла потенциальным злоумышленникам использовать XSS в компонентах ColorColumn и ColorEntry. Это могло привести к выполнению вредоносных скриптов внутри приложения, что нарушало целостность пользовательских данных и приложения.
Исправление системы безопасности
В ответ на эту проблему команда Filament выпустила исправление в версии 3.2.115. Это обновление призвано обеспечить безопасность приложений, закрыв точки входа для XSS-атак в затронутых компонентах.
Выпуск CVE и Dependabot
Чтобы помочь разработчикам обеспечить безопасность своих приложений, для уязвимости был выпущен CVE (Common Vulnerabilities and Exposures). Это активирует Dependabot, он оповестит затронутые репозитории о проблеме и порекомендует обновиться до исправленной версии.
Подробности эксплойта и рекомендации по безопасности
Команда Filament отложила публикацию полной информации об эксплуатации, чтобы дать разработчикам время обновить свои приложения. В ближайшие недели будет выпущен подробный совет по безопасности, в котором будет описано, как можно было использовать уязвимость.
📱 @dev_notes_ru
#Laravel #Filament #security👩💻 Для переименования удалённой ветки, выполните следующие действия:
1. Переименуйте локальную ветку:
❓ Если находитесь в ветке, которую хотите переименовать:
git branch -m new-name
❓ Если находитесь в другой ветке:
git branch -m old-name new-name
2. Удалите удалённую ветку `old-name` и запуште локальную ветку `new-name`:
git push origin :old-name new-name
3. Сбросьте апстрим для локальной ветки `new-name`:
Переключитесь на эту ветку, а затем:
git push origin -u new-name
📱 @dev_notes_ru
#git #branch #tips💡 Совет по Laravel: Хелпер `tap`
Сколько раз приходилось возвращать объект сразу после выполнения элементарного действия? Да, много раз, я знаю. Хелпер
tap позволяет сделать именно это 🚀.
📱 @dev_notes_ru
#laravel #php #tips👩💻 BCMath: Новая функция
bcdivmod
В PHP 8.4 в расширении BCMath представлена новая функция bcdivmod, делящая заданное число на заданный делитель и возвращающая как частное, так и остаток. Результат по сути идентичен вызову функций bcdiv и bcmod.
bcdivmod может быть использован в случаях, когда необходимо получить частное и остаток от деления, и избавляет от необходимости вызывать функции bcdiv и bcmod по отдельности.
Возвращаемое значение — массив, в котором первое значение — частное от деления, а второе — остаток.
🖥 Читать статью
📱 @dev_notes_ru
#php #php84 #bcmath💡 «Избегайте использования else» — один из интересных советов по написанию чистого кода. Нельзя полностью отказаться от него, но можно убрать ненужные
else.
public function getUserStatus($user)
{
if ($user->isActive()) {
return 'active';
}
return 'inactive';
}
Приведенный пример можно ещё упростить, используя тернарный оператор.
public function getUserStatus($user)
{
return $user->isActive() ? 'active' : 'inactive';
}
📱 @dev_notes_ru
#php #cleancode #tips💡 Совет по Laravel: Удобные команды Artisan DB
Вам когда-нибудь нужно было проверить, работает ли подключение к БД так, как нужно? Сколько открытых соединений? Может быть, хотите узнать общий размер БД? В Artisan есть несколько классных команд, позволяющих сделать именно это 🚀.
📱 @dev_notes_ru
#laravel #artisan #php #tips
👩💻 Разница между
export default xxx и export {xxx as default}
Разница между export default xxx и export { xxx as default } в JavaScript может показаться малозаметной, но может повлиять на поведение кода.
Модули — автономные фрагменты кода, позволяющие импортировать и использовать их в других модулях. Они помогают разработчикам сохранять код организованным, удобным для сопровождения и понятным.
Для работы с модулями необходимо понимать синтаксис импорта и экспорта.
✅ import: Используется для импорта именованных экспортов или экспортов по умолчанию из других модулей.
✅ export: Используется для экспорта значений, функций или классов из модуля, делая их доступными для импорта другими модулями.
Существует два вида экспорта:
✅ Именованные экспорты: В модуле может быть несколько именованных экспортов. Они импортируются явно, используя свои имена.
✅ Экспорт по умолчанию: В каждом модуле может быть только один экспорт по умолчанию. Они импортируются без указания имени.
🖥 Читать статью
📱 @dev_notes_ru
#JavaScript #js👩💻 CSS свойство animation-composition
Как я раньше не слышал о свойстве
animation-composition? Я только что заметил его в блоге Manuel Matuzović:
В CSS анимацию можно компоновать тремя способами: заменять, добавлять и накапливать. Свойство animation-composition позволяет переключаться между ними.Ха! Значит, можно эффективно добавлять, заменять или комбинировать анимации, о чем я никогда раньше не задумывался! Я даже не задумывался о стандартном поведении, заменяющем анимацию на элементе, так что в приведённом ниже CSS
.element будет перемещаться только на 100px...
.element {
animation: move 2s infinite;
transform: translateX(10px);
}
@keyframes move {
to {
transform: translateX(100px);
}
}
Но что, если нужно сложить эти свойства, чтобы получилось 100 + 10? Для этого и существует animation-composition, и её можно использовать следующим образом:
.element {
animation: move 2s infinite;
transform: translateX(10px);
animation-composition: add;
}
@keyframes move {
to {
transform: translateX(100px);
}
}
Ха! Очень аккуратно!
Самое забавное, что когда я увидел это свойство сегодня утром, моей первой мыслью было: зачем нам это нужно? Я не мог представить сценариев, в которых оно помогло бы выпутаться из сложных проблем или помочь в работе с анимацией (что, признаться, случается со мной крайне редко). А потом, во второй половине дня, я работал с инженером и понял, что можно использовать эти animation-composition штуки без написания кучи сложного JavaScript!
Не забудьте также посмотреть пост Bramus'а о комбинировании нескольких анимационных эффектов.
🖥 Источник (🇬🇧)
📱 @dev_notes_ru
#css #cssanimation💡Совет по Laravel: Кэширование результата аксессора
При работе с аксессорами объекты по умолчанию кэшируются. Однако если у вас аксессор для примитивного значения, например строки, требующий больших вычислений, можно включить для него кэширование с помощью метода
shouldCache() 🚀.
📱 @dev_notes_ru
#laravel #php #tips👩💻 Проблемы экспорта по умолчанию в модулях JavaScript
Модули JavaScript — способ организации кода в многократно используемые компоненты, используемые совместно в разных файлах и проектах. Модули можно импортировать и экспортировать с помощью двух различных методов: экспорта по умолчанию и именованного экспорта. Рассмотрим экспорт по умолчанию и причины, по которым следует избегать его использования в модулях JavaScript.
🖥 Читать статью
📱 @dev_notes_ru
#JavaScript #js
💡Совет по Laravel: Добавление нескольких столбцов после определенного столбца
Знаете ли вы, что можно добавить несколько столбцов после определенного столбца с помощью метода
after? 🚀
📱 @dev_notes_ru
#laravel #migration #php #tips👩💻 Параметризуйте имена параметров!
Основная защита от SQL инъекций (SQLi) — это параметризация пользовательского ввода, позволяющая безопасно внедрять его в SQL запросы. Это стандартная практика, о которой постоянно говорится, и в Laravel это сделать довольно просто. На самом деле, я редко встречаю уязвимости SQLi в приложениях Laravel, потому что Eloquent достаточно мощный.
По моему опыту, чем сложнее запрос и чем больше сырого SQL нужно написать, тем выше вероятность появления SQL инъекции.
🖥 Читать статью
📱 @dev_notes_ru
#laravel #security #sqli
💡 Совет по Laravel: Уведомления по требованию
Иногда вам может понадобиться отправлять уведомления «анонимным» пользователям, которые еще не хранятся в базе данных. Метод
route в Laravel позволяет сделать именно это 🚀.
📱 @dev_notes_ru
#laravel #php #tips