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

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

@dev_notes_ru

Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов.

https://www.dev-notes.ru

@snakenf
Subscribers
457
Photos
740
Videos
4
Links
1.2K

Showing posts older than #1205 · Back to latest

Older Posts 20 shown
Post #1204 215
👩‍💻 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
  • 👍 3
  • 🔥 1
Post #1203 181
🛡 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
  • 👍 2
  • 🔥 1
Post #1202 188
👩‍💻 Для переименования удалённой ветки, выполните следующие действия:

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
  • 👍 2
  • 🔥 1
Post #1201 200
💡 Совет по Laravel: Хелпер `tap`

Сколько раз приходилось возвращать объект сразу после выполнения элементарного действия? Да, много раз, я знаю. Хелпер tap позволяет сделать именно это 🚀.

📱 @dev_notes_ru

#laravel #php #tips
  • 👍 2
  • ❤ 1
Post #1200 199
👩‍💻 BCMath: Новая функция bcdivmod

В PHP 8.4 в расширении BCMath представлена новая функция bcdivmod, делящая заданное число на заданный делитель и возвращающая как частное, так и остаток. Результат по сути идентичен вызову функций bcdiv и bcmod.

bcdivmod может быть использован в случаях, когда необходимо получить частное и остаток от деления, и избавляет от необходимости вызывать функции bcdiv и bcmod по отдельности.

Возвращаемое значение — массив, в котором первое значение — частное от деления, а второе — остаток.

🖥 Читать статью

📱 @dev_notes_ru

#php #php84 #bcmath
  • 👍 1
  • 🔥 1
Post #1199 191
💡 «Избегайте использования 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
  • ❤ 5
  • 👍 3
Post #1198 208
💡 Совет по Laravel: Удобные команды Artisan DB

Вам когда-нибудь нужно было проверить, работает ли подключение к БД так, как нужно? Сколько открытых соединений? Может быть, хотите узнать общий размер БД? В Artisan есть несколько классных команд, позволяющих сделать именно это 🚀.

📱 @dev_notes_ru

#laravel #artisan #php #tips
  • 👍 3
Post #1197 195
👩‍💻 Разница между export default xxx и export {xxx as default}

Разница между export default xxx и export { xxx as default } в JavaScript может показаться малозаметной, но может повлиять на поведение кода.

Модули — автономные фрагменты кода, позволяющие импортировать и использовать их в других модулях. Они помогают разработчикам сохранять код организованным, удобным для сопровождения и понятным.

Для работы с модулями необходимо понимать синтаксис импорта и экспорта.

✅ import: Используется для импорта именованных экспортов или экспортов по умолчанию из других модулей.
✅ export: Используется для экспорта значений, функций или классов из модуля, делая их доступными для импорта другими модулями.

Существует два вида экспорта:

✅ Именованные экспорты: В модуле может быть несколько именованных экспортов. Они импортируются явно, используя свои имена.
✅ Экспорт по умолчанию: В каждом модуле может быть только один экспорт по умолчанию. Они импортируются без указания имени.

🖥 Читать статью

📱 @dev_notes_ru

#JavaScript #js
  • ❤ 1
Post #1196 175
👩‍💻 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
  • 👍 1
Post #1195 193
💡Совет по Laravel: Кэширование результата аксессора

При работе с аксессорами объекты по умолчанию кэшируются. Однако если у вас аксессор для примитивного значения, например строки, требующий больших вычислений, можно включить для него кэширование с помощью метода shouldCache() 🚀.

📱 @dev_notes_ru

#laravel #php #tips
  • 👍 2
  • ❤ 1
Post #1194 197
👩‍💻 Проблемы экспорта по умолчанию в модулях JavaScript

Модули JavaScript — способ организации кода в многократно используемые компоненты, используемые совместно в разных файлах и проектах. Модули можно импортировать и экспортировать с помощью двух различных методов: экспорта по умолчанию и именованного экспорта. Рассмотрим экспорт по умолчанию и причины, по которым следует избегать его использования в модулях JavaScript.

🖥 Читать статью

📱 @dev_notes_ru

#JavaScript #js
  • 👍 3
  • 🔥 1
Post #1192 194
💡Совет по Laravel: Добавление нескольких столбцов после определенного столбца

Знаете ли вы, что можно добавить несколько столбцов после определенного столбца с помощью метода after? 🚀

📱 @dev_notes_ru

#laravel #migration #php #tips
  • 👍 6
  • ❤ 1
Post #1191 184
👩‍💻 Параметризуйте имена параметров!

Основная защита от SQL инъекций (SQLi) — это параметризация пользовательского ввода, позволяющая безопасно внедрять его в SQL запросы. Это стандартная практика, о которой постоянно говорится, и в Laravel это сделать довольно просто. На самом деле, я редко встречаю уязвимости SQLi в приложениях Laravel, потому что Eloquent достаточно мощный.

По моему опыту, чем сложнее запрос и чем больше сырого SQL нужно написать, тем выше вероятность появления SQL инъекции.

🖥 Читать статью

📱 @dev_notes_ru

#laravel #security #sqli
  • 👍 1
Post #1189 198
💡 Совет по Laravel: Уведомления по требованию

Иногда вам может понадобиться отправлять уведомления «анонимным» пользователям, которые еще не хранятся в базе данных. Метод route в Laravel позволяет сделать именно это 🚀.

📱 @dev_notes_ru

#laravel #php #tips
  • 👍 1
Post #1188 188
👩‍💻 PHP 8.4.0 перешёл в фазу релиз-кандидата!

Официальный релиз состоится 21 ноября, поэтому самое время начать тестировать приложения.

📱 @dev_notes_ru

#php #rc
  • 👍 2
  • 🔥 2
Post #1187 183
👩‍💻 Новые значения и функции в CSS

13 сентября 2024 года рабочая группа CSS выпустила первый публичный рабочий проект модуля CSS Values and Units Module Level 5. Он является продолжением предыдущего уровня и включает несколько интересных дополнений.

Вещи, которые ещё недавно были немыслимы, пробивают себе дорогу в спецификации: случайные значения, использование атрибутов в качестве значений в любом свойстве, возможность использовать порядок в вычислениях… Это выглядит многообещающе.

Многие из этих функций имеют общую черту: они упрощают CSS код. То, что раньше требовало множества правил или хаков, теперь можно будет сделать с помощью пары строк CSS. Как я уже сказал, это выглядит многообещающе. Вот список новых изменений (более подробная информация ниже):

✅ Изменения в функции attr(): теперь она может использоваться с любым атрибутом и в любом свойстве CSS (не только в content).
✅ Функция calc-size(): использует в расчётах внутренние значения, такие как auto или min-content.
✅ Новая функция first-valid() позволяет избежать проблем с пользовательскими свойствами с невалидными значениями.
✅ Новое семейство функций *-mix() с новой нотацией для соотношений.
✅ Новое семейство функций *-progress() для вычисления соотношения прогресса между диапазонами или внутри media, или container.
✅ Рандомизация с помощью новых функций random() и random-item() для возвращения случайных значений из диапазона или списка (наконец-то!)
✅ Новые функции sibling-count() и sibling-index(), предоставляющие целочисленные значения для операций в зависимости от порядка и размера.
✅ Новая функция toggle() для стилизации вложенных элементов, позволяющая циклически перебирать список значений.
✅Новая функциональная нотация для аргументов со списками значений, разделённых запятыми, позволяющая избежать двусмысленности с запятой, разделяющей аргументы.
✅Новые модификаторы URL для обеспечения большего контроля над url() запросами.
✅ Расширение до типа позиции, позволяющее использовать значения относительно потока.

🖥 Читать статью

📱 @dev_notes_ru

#frontend #css
  • 👍 1
Post #1186 218
👩‍💻 Внимание разработчики Laravel

Если добавляете что-либо в файл .env, пожалуйста, не забудьте обновить и example.env! Это часть поддержания чистоты и организованности проектов.

📱 @dev_notes_ru
  • 🤝 5
  • 👍 2
  • 🤡 1
Post #1185 197
💡 Совет по Laravel: Метод `whereLike`

В своих приложениях мы часто используем выражение where(..., 'like', ...). Знаете ли вы, что Laravel поставляется с методом whereLike, позволяющим сделать ещё один шаг вперёд и сделать оператор like нечувствительным к регистру? 🚀

📱 @dev_notes_ru

#laravel #php #tips
  • 👍 3
  • ❤ 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →