en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe 👈

Заметки разработчика

Заметки разработчика

Open in Telegram

Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов. https://www.dev-notes.ru @snakenf

Show more
Buy Ad
463
Subscribers
No data24 hours
-37 days
+130 days
Posts Archive
💡 Совет по Laravel: Загрузка подсчета отношений на лету При работе с моделями вам может понадобиться подсчёт отношений. Если
💡 Совет по Laravel: Загрузка подсчета отношений на лету При работе с моделями вам может понадобиться подсчёт отношений. Если вы забыли его загрузить, всегда можно использовать loadCount, чтобы подгрузить подсчёт на лету 🚀. 📱 @dev_notes_ru #laravel #php #tips

👩‍💻 Сокращения JavaScript экономящие время Разработчик JavaScript, пишущий чистый, эффективный и лаконичный код может значи
👩‍💻 Сокращения 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(), но знаете ли вы, что
💡 Совет по Laravel: Передача нескольких ID и определенных столбцов в `find` Мы часто используем find(), но знаете ли вы, что можно передать массив ID и выбрать конкретные столбцы? 🚀 📱 @dev_notes_ru #laravel #php #tips

👩‍💻 PHP 8.4: MBString: База данных символов Юникода обновлена до версии 16 Благодаря поддержке Unicode 16 расширение MBStri
👩‍💻 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 выпустил
🛡 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. Переименуйте локальную ветку: ❓ Если находитесь в
👩‍💻 Для переименования удалённой ветки, выполните следующие действия: 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` Сколько раз приходилось возвращать объект сразу после выполнения элементарного действия? Да
💡 Совет по Laravel: Хелпер `tap` Сколько раз приходилось возвращать объект сразу после выполнения элементарного действия? Да, много раз, я знаю. Хелпер tap позволяет сделать именно это 🚀. 📱 @dev_notes_ru #laravel #php #tips

👩‍💻 BCMath: Новая функция bcdivmod В PHP 8.4 в расширении BCMath представлена новая функция bcdivmod, делящая заданное числ
👩‍💻 BCMath: Новая функция bcdivmod В PHP 8.4 в расширении BCMath представлена новая функция bcdivmod, делящая заданное число на заданный делитель и возвращающая как частное, так и остаток. Результат по сути идентичен вызову функций bcdiv и bcmod. bcdivmod может быть использован в случаях, когда необходимо получить частное и остаток от деления, и избавляет от необходимости вызывать функции bcdiv и bcmod по отдельности. Возвращаемое значение — массив, в котором первое значение — частное от деления, а второе — остаток. 🖥 Читать статью 📱 @dev_notes_ru #php #php84 #bcmath

💡 «Избегайте использования else» — один из интересных советов по написанию чистого кода. Нельзя полностью отказаться от него
💡 «Избегайте использования 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 Вам когда-нибудь нужно было проверить, работает ли подключение к БД так, как
💡 Совет по 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 }
👩‍💻 Разница между 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? Я только что заметил его в
👩‍💻 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: Кэширование результата аксессора При работе с аксессорами объекты по умолчанию кэшируются. Однако если у
💡Совет по Laravel: Кэширование результата аксессора При работе с аксессорами объекты по умолчанию кэшируются. Однако если у вас аксессор для примитивного значения, например строки, требующий больших вычислений, можно включить для него кэширование с помощью метода shouldCache() 🚀. 📱 @dev_notes_ru #laravel #php #tips

👩‍💻 Проблемы экспорта по умолчанию в модулях JavaScript Модули JavaScript — способ организации кода в многократно используе
👩‍💻 Проблемы экспорта по умолчанию в модулях JavaScript Модули JavaScript — способ организации кода в многократно используемые компоненты, используемые совместно в разных файлах и проектах. Модули можно импортировать и экспортировать с помощью двух различных методов: экспорта по умолчанию и именованного экспорта. Рассмотрим экспорт по умолчанию и причины, по которым следует избегать его использования в модулях JavaScript. 🖥 Читать статью 📱 @dev_notes_ru #JavaScript #js

💡Совет по Laravel: Добавление нескольких столбцов после определенного столбца Знаете ли вы, что можно добавить несколько сто
💡Совет по Laravel: Добавление нескольких столбцов после определенного столбца Знаете ли вы, что можно добавить несколько столбцов после определенного столбца с помощью метода after? 🚀 📱 @dev_notes_ru #laravel #migration #php #tips

👩‍💻 Параметризуйте имена параметров! Основная защита от SQL инъекций (SQLi) — это параметризация пользовательского ввода, п
👩‍💻 Параметризуйте имена параметров! Основная защита от SQL инъекций (SQLi) — это параметризация пользовательского ввода, позволяющая безопасно внедрять его в SQL запросы. Это стандартная практика, о которой постоянно говорится, и в Laravel это сделать довольно просто. На самом деле, я редко встречаю уязвимости SQLi в приложениях Laravel, потому что Eloquent достаточно мощный. По моему опыту, чем сложнее запрос и чем больше сырого SQL нужно написать, тем выше вероятность появления SQL инъекции. 🖥 Читать статью 📱 @dev_notes_ru #laravel #security #sqli

💡 Совет по Laravel: Уведомления по требованию Иногда вам может понадобиться отправлять уведомления «анонимным» пользователям
💡 Совет по Laravel: Уведомления по требованию Иногда вам может понадобиться отправлять уведомления «анонимным» пользователям, которые еще не хранятся в базе данных. Метод route в Laravel позволяет сделать именно это 🚀. 📱 @dev_notes_ru #laravel #php #tips