Открытый канал ID 76923966734853

FRONT | Фронтенд | JavaScript | CSS | TanStack Start 1.0 | JPEG XL | Next.js 16.4 | TypeScript в Rust | Remix 3 | React 19.3 | WebMCP | Playwright 1.64 | Base UI 1.9 | React Aria 1.22 | Deno | Bun

Фронтенд каждый день: фичи браузеров, новинки JavaScript и CSS, инструменты и приёмы.

Каналов в рубрике
1 733
Место этого канала
№ 855
Открыть рубрику →
Открыть в MAX

Публикации за период

По реакциям

Поиск и вся лента — после бесплатной регистрации. Свои даты — по подписке; владелец канала видит их бесплатно. Сортировка по реакциям — по подписке. Зарегистрироваться

Загрузка…

Brotli-декодер в Node пишет за границу буфера — 9.2 по NVD, вплоть до RCE. Вход не только zlib.brotliDecompress, но и br-ответ в fetch по HTTPS.

Два обхода проверки имени в TLS: полноширинные цифры как IP (26.x, 24.x) и «слабая» резолвка в адрес. Нужен сертификат атакующего — сверку имени он не пройдёт.

26.12.1 Current, 24.22.1 и 22.23.4 LTS, всего десять CVE.
Просмотры: 4
Перейти в пост Открыть в MAX Сообщить о неточности
parseFloat('1 250,50') отдаёт 1. Ни NaN, ни исключения: парсер дочитал до первого пробела и выбросил остаток. Единица уходит дальше как настоящая сумма.

Такую строку производит наш же код. Intl.NumberFormat('ru-RU') разделяет разряды неразрывным пробелом, и его вывод, вернувшись в parseFloat, даёт ту же единицу.

Лечится не угадыванием смысла, а нормализацией на входе. Снять пробелы всех видов, запятую сменить на точку. Если после суммы ещё цифры, как в «1 руб. 50 коп.», — остановиться и попросить ввести однозначно. Копейки считать целыми.
Просмотры: 3
Перейти в пост Открыть в MAX Сообщить о неточности
bun fmt читает ваш .prettierrc: на трёх файлах вывод совпал с Prettier 3.9.10 байт в байт. На репозитории Prettier — 60 мс и 48 МБ против 17 с и 459 МБ, это 286×.

Не всё один в один: где Prettier менял смысл кода, bun fmt спорит намеренно. x |b в CSS-селекторе остаётся потомком, у Prettier склеивается в namespace. Первый прогон на большом репо даст свой diff.

Prettier и oxfmt вон из devDependencies, --staged вместо lint-staged, --check в CI. Линтер не заменяет, только форматирует.
Просмотры: 3
Перейти в пост Открыть в MAX Сообщить о неточности
Девять на девять столбиков на плите: те, что ближе к курсору, встают выше. Живой фон для hero или пустого экрана — на SVG и pointer-событиях, без WebGL и 3D-движка.

В наборе ещё тридцать две. Окно разъезжается на четыре слоя, если вести поперёк, а вниз — выбирает слой. Клавиша под указателем проваливается вместе с соседями.

Любой элемент подойдёт: terrain(el) отдаёт update и destroy, под Svelte action годится как есть. 7,2 КБ brotli на одну фигуру, 45 КБ на все. Зависимостей ноль.

https://hairline.lucasmarkes.com/figures
Просмотры: 4
Перейти в пост Открыть в MAX Сообщить о неточности
Chartist вернулся: график — это SVG, а вид задаётся обычным CSS. В JS остаются контейнер и вызов lineChart('#chart', {labels, series}). Толщины и цвета живут в переменных на контейнере: --ct-line-width, --ct-point-size, --ct-series-a.

27,2 КБ gzip, ноль зависимостей. Серверный модуль собирает из того же конфига SVG-строку без DOM, так что график уходит и в PDF, и в письмо.

Последний релиз перед 2.0 — 1.5.0 в сентябре 2025-го: больше года паузы. А до неё библиотека простояла без единой версии 29 месяцев, с ноября 2022-го по апрель 2025-го. Зато 2.0, 2.1 и 2.2 вышли за четыре дня.

https://chartist.dev/docs/getting-started/
Просмотры: 7
Перейти в пост Открыть в MAX Сообщить о неточности
Nolan Lawson спрашивает, есть ли будущее у веб-компонентов, если их никто не пишет.

В гайдах Google для кодинг-агентов (modern-web-guidance) веб-компонентов не было 6 месяцев и 5 дней. Появились 28 сентября, релиз v0.0.191, семь гайдов.

И там скорее отговаривают. Есть раздел «Решите, нужен ли вам вообще кастомный элемент»: три пункта «не надо» и одна строка «надо».

А вы вообще пишете веб-компоненты? Если нет — почему?
Просмотры: 6
Перейти в пост Открыть в MAX Сообщить о неточности
Карты, виджеты и плееры Chrome готовит предрендерить: чужие фреймы отрисуются заранее, вместе со страницей.

Разрешить это может сама предрендеренная страница — заголовком Supports-Loading-Mode: prerender-cross-origin-frames. Вложенному фрейму нужен тот же заголовок от своего родителя.

Чужой код выполняется раньше, так решил владелец страницы.

Пока — origin trial и флаг. План — Chrome 158, по графику релизов 18 ноября.
Просмотры: 6
Перейти в пост Открыть в MAX Сообщить о неточности
CrUX начал считать переходы внутри SPA отдельными навигациями.

Рядом со стабильными LCP, INP и CLS в датасете легли экспериментальные версии с суффиксом _with_softnavs: INP считается по каждому переходу, CLS — по виртуальному URL.

Заметно там, где SPA работает всерьёз: при доле soft-переходов 75–100% хороших LCP на Android 87% вместо 26%. По всему датасету доля сайтов с тремя хорошими метриками выросла с 55,9% до 59,5%.

Стабильные Core Web Vitals не трогают. Search Console переключат только после выхода из experimental.
Просмотры: 5
Перейти в пост Открыть в MAX Сообщить о неточности
В Astro 7.4 появился --timings: после сборки видно, куда ушло время по фазам и Vite-плагинам.

Пример из блога: generate pages 2.10s из 2.61s, это 80.6%. Почти всё внутри — component render 2.08s, page pipeline самого Astro занял 13ms. Виноват блок комментариев в layout: отдельный fetch на каждый профиль. Promise.all — 1.13s.

Смотреть первым делом на крупнейшую долю в Build phases, потом на slowest pages — маршрут рядом выдаёт конкретный шаблон.
Просмотры: 6
Перейти в пост Открыть в MAX Сообщить о неточности
Йоав Вайс цитирует nekuda.ai: 2,5–7,5× быстрее и до 47× дешевле других способов. Бенчмарк WindTunnel скромнее. Время на задачу меньше в 3,4 раза, стоимость в 9 раз ниже. Задач решено 48–49 из 49, у остальных методов 45.

WebKit в issue 670 поставил метку oppose. Их довод — отдельный слой под агентов проблему не решает, семантику закрывают в HTML и ARIA. Вайс отвечает, что без сигнала «здесь агент» агентных пользователей начнут резать как ботов.

API пока не Baseline, origin trial с Chrome 149, по умолчанию выключен.
Просмотры: 3
Перейти в пост Открыть в MAX Сообщить о неточности
Вся лента — после бесплатной регистрации
ВКонтакте Телеграм Одноклассники
Избранное в datool.ru

Следите за каналом в личном кабинете

Зарегистрируйтесь в datool.ru, чтобы добавить канал «FRONT | Фронтенд | JavaScript | CSS | TanStack Start 1.0 | JPEG XL | Next.js 16.4 | TypeScript в Rust | Remix 3 | React 19.3 | WebMCP | Playwright 1.64 | Base UI 1.9 | React Aria 1.22 | Deno | Bun» в избранное и отслеживать его показатели.

Зарегистрироваться
Для владельцев каналов

Подтвердите свой канал

Войдите или зарегистрируйтесь в datool.ru, затем добавьте нашего бота в канал по инструкции в личном кабинете. После проверки владения замок исчезнет и вам станет доступно управление каналом.

Войти или зарегистрироваться

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти