Будни разработчика
Блог Lead JS-разработчика Автор: @bekharsky По рекламе: https://telepost.pro/ch/id2415 или https://t.me/it_adv Чат: https://t.me/htmlshitchat №5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978
Mostrar más📈 Análisis del canal de Telegram Будни разработчика
El canal Будни разработчика (@htmlshit) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 14 309 suscriptores, ocupando la posición 8 905 en la categoría Tecnologías y Aplicaciones y el puesto 45 446 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 14 309 suscriptores.
Según los últimos datos del 26 octubre, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -118, y en las últimas 24 horas de -8, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 9.73%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 5.35% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 1 392 visualizaciones. En el primer día suele acumular 765 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 10.
- Intereses temáticos: El contenido se centra en temas clave como css, api, scroll, --fade, bottom.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Блог Lead JS-разработчика
Автор: @bekharsky
По рекламе: https://telepost.pro/ch/id2415 или https://t.me/it_adv
Чат: https://t.me/htmlshitchat
№5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 27 octubre, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
Cargando datos
| Fecha | Crecimiento de Suscriptores | Menciones | Canales | |
| 26 octubre | +1 | |||
| 25 octubre | 0 | |||
| 24 octubre | 0 | |||
| 23 octubre | +3 | |||
| 22 octubre | 0 | |||
| 21 octubre | +2 | |||
| 20 octubre | 0 | |||
| 19 octubre | 0 | |||
| 18 octubre | +1 | |||
| 17 octubre | +1 | |||
| 16 octubre | +1 | |||
| 15 octubre | +5 | |||
| 14 octubre | +2 | |||
| 13 octubre | +5 | |||
| 12 octubre | 0 | |||
| 11 octubre | +4 | |||
| 10 octubre | +1 | |||
| 09 octubre | +1 | |||
| 08 octubre | +4 | |||
| 07 octubre | +1 | |||
| 06 octubre | +1 | |||
| 05 octubre | +1 | |||
| 04 octubre | +2 | |||
| 03 octubre | +4 | |||
| 02 octubre | +2 | |||
| 01 octubre | +6 |
| 2 | Проект от подписчика!
Напоминаю, что я выкачу любую статью или проект от вас, не стесняйтесь писать.
Презентация? Выступили на митапе? Хотите поделиться интересной статьёй — добро пожаловать!
votby.ru
Привет! Меня зовут Виктор. На днях мы с командой запустили наш проект и я бы хотел поделиться его историей.
Когда я был студентом, то постоянно пытался придумывать идеи для новых приложений и сервисов. Их были сотни, но каждый раз возникал один и тот же вопрос: нужна ли эта идея кому-то ещё?
Проверить это до начала разработки было практически негде. Так появилась мысль о платформе, на которой можно рассказать о своей идее, показать её другим людям и заранее оценить интерес аудитории.
Много лет эта мысль осталась просто записью на бумаге. Но наступил 2026 год, отрасль IT начала резко сжиматься и на горизонте начало маячить моё сокращение. И тут я решил, что было бы неплохо обеспечить себе хотя бы какой-то запасной вариант.
Я рассказал об идее подписчикам своего канала и предложил вместе создать такую площадку. За один день собралась команда приблизительно из десяти человек. Почти никого из них я не знал лично — большинство просто читали канал. Кто-то пришёл за опытом, кого-то заинтересовала возможность получить часть в будущем бизнесе, но всех объединило желание создать настоящий продукт с нуля.
Мы поставили себе довольно смелую цель — запустить MVP за месяц. Несмотря на сложности с организацией процессов большой команды, мы уложились в срок.
После запуска мнения разделились. Нас много поддерживали, но хватало и критики: кому-то не понравился дизайн, кто-то ожидал от команды из десяти человек гораздо большего. Для нас это тоже стало частью проверки идеи — только теперь проверяли уже не концепцию, а реальный продукт.
Сегодня "Вот бы!" продолжает развиваться. К нам регулярно приходят новые люди, а вокруг платформы постепенно формируется сообщество преданных пользователей. Они делятся своими идеями, предлагают улучшения и помогают определять, куда двигаться дальше.
Наверное, самым ценным результатом для меня стал даже не сам запуск, а поддержка всех тех людей, которые поверили в его идею и помогли превратить его в действительно крутой продукт! | 873 |
| 3 | Друзья из Tbilisi JS проводят уже девятый митап! 🤟
24 октября, уже завтра, в Тбилиси соберутся разработчики, дизайнеры и любители веб-технологий. А для тех, кто не в Грузии, будет трансляция на YouTube.
В программе пять докладов:
🟡 Алексей Красиков (Paper, «Веб-стандарты») — «Веб-сайт — это вам не продукт».
🟡 Александр Островский (TradingView) — «Код подешевел, решения — нет. Как мы строим дизайн-систему с помощью AI-агентов».
🟡 Денис Митрофанов (Lightspeed) — «Как привычки людей отражаются в поведении AI-ассистента».
🟡 Макар Главанарь (Solvery, Pulsar Digital) — «Фреймворки для ИИ-агентов: что они делают за свои токены».
⭐️ Специальный гость — Андрей Ситник из Злых Марсиан, автор PostCSS, Nano ID и других опенсорс-проектов. Расскажет об архитектуре приложений, которые не следят за пользователями.
📅 24 октября, суббота
📺 Трансляция на YouTube — с 14:00 мск
📍 Terminal, Абашидзе 34, Тбилиси
🌍 Доклады на русском языке
Вход бесплатный, но нужна регистрация. | 928 |
| 4 | #молния дня
Срочно в номер! На странице 404 Apple Music находится функционирующий iPod первого поколения!
У меня всё. | 1 013 |
| 5 | #ссылка дня
Мой любимый UI-компонент, пожалуй, вообще за всё время — bottom sheet. Та самая панель, которая выезжает снизу экрана, тянется пальцем и фиксируется на разной высоте. Особенно активно используется в картографических приложениях вроде Google Maps и Apple Maps.
И вот pure-web-bottom-sheet — любопытная реализация для веба, почти полностью построенная на CSS.
Вместо обработки перетаскивания через JavaScript используется обычный браузерный скролл.
Контейнер получает overflow-y: scroll и scroll-snap-type: y mandatory. Внутри создаётся невидимая область прокрутки, а точки остановки задаются элементами с scroll-snap-align и CSS-переменной --snap. В результате панель перемещается вместе с прокруткой, а браузер самостоятельно обрабатывает жесты, инерцию и фиксацию в ближайшей точке. Никаких вычислений координат пальца на каждом pointermove и анимаций через requestAnimationFrame.
Для вложенного скролла применяется CSS Scroll-driven Animations. Через scroll-timeline и animation-timeline высота панели привязывается к положению внешнего скролла, а содержимое может прокручиваться независимо. Правда, анимация height вызывает перерасчёт layout, поэтому предусмотрена экспериментальная оптимизация с transform, при которой JavaScript вычисляет необходимые смещения в начале прокрутки.
Всё упаковано в Web Component, есть обёртки для React и Vue, поддерживаются нативные <dialog>, Popover API и SSR.
Ну и, конечно, не обошлось без Safari. Из-за бага WebKit пришлось добавлять невидимый горизонтальный overflow шириной в один пиксель, чтобы жесты прокрутки вообще нормально обрабатывались. Куда же без этого.
GitHub · Демо · Подробный технический разбор автора
#scroll #widget | 987 |
| 6 | #событие дня
Тимлидство — это не только раздавать задачи, проводить 1:1 и следить за дедлайнами. Чем больше команда, тем чаще приходится разбираться в людях, бизнесе и собственных управленческих решениях.
VK проводит два бесплатных TeamLead Meetup — 24 октября в Москве и 28 октября в Петербурге.
В Москве обсудят переход от управления отдельными задачами к управлению системой, а в Петербурге — насколько глубоко тимлиду вообще стоит погружаться в бизнес и стратегию компании.
Кроме докладов и дискуссий будет практика на выбор:
— Личная встреча с тимлидом VK, на которой можно разобрать собственные управленческие проблемы.
— Мастер-класс по теории ограничений Голдратта: как отделять факты от интерпретаций и проверять причинно-следственные связи, прежде чем принимать решения.
— «Своя игра» с разбором управленческих ситуаций и обсуждением решений.
В общем, разговор скорее о том, как управлять командой, а не о том, как заставить Jira работать за тебя.
Участие бесплатное, нужна регистрация. | 1 060 |
| 7 | #такое дня
Вчера, 21 октября, был какой-то особенно весёлый день для тех, кто отвечает за продакшен. Да и вся неделя удалась.
— PHP2Shell — две критические уязвимости в самом PHP, позволяющие при определённых условиях получить RCE без авторизации. Патчи вышли вчера, сейчас бэкпортят на старые версии.
А о возможности такой проблемы знали с 2024 года как минимум.
— Node.js — сразу пачка исправлений: RCE в декодере Brotli, обходы проверки TLS-сертификатов, проблемы с DNS.
— LiteLLM — взломали аккаунты разработчиков и опубликовали заражённую версию 1.107.0 в PyPI и Docker Hub. Внутри — кража ключей и возможность удалённого выполнения кода.
— Plex2Shell — цепочка из четырёх уязвимостей Plex Media Server уже используется для установки майнеров и прокси.
— eMudhra — у восьми промежуточных центров сертификации оказались настолько слабые приватные ключи, что их можно восстановить из публичных. Mozilla пришлось срочно отзывать доверие к сертификатам.
Это было вообще слишком смешно, чтобы быть правдой, но как есть.
— Next.js — две критические RCE с оценкой 9.5, связанные с оптимизацией изображений и use cache. Исправления вышли ещё 14 октября.
— TiDB Cloud — подтвердили утечку клиентских и служебных данных после кражи учётных данных. Заявленные злоумышленниками 10,6 ТБ пока не подтверждены.
В общем, иногда npm audit fix — это наименьшая из ваших проблем. | 1 041 |
| 8 | #заметка дня
Всего три месяца назад Microsoft выпустила TypeScript 7 на Go, который должен был решить проблемы с производительностью. А за последние недели появилось сразу несколько альтернативных реализаций компилятора. Только ленивый не переписал компилятор TypeScript на Rust или на что-то ещё.
Отчасти виноват сам переход на Go: новый компилятор стал нативным бинарником, а инструменты, использовавшие JavaScript API, теперь вынуждены общаться с ним через отдельный протокол. И ещё когда стало известно об этом — кругом сразу поднялся визг: «Почему не на Rust?!».
А теперь следите за руками:
• ts-rust — экспериментальный Rust-порт от команды Theo Browne. Проверяет типы в VS Code за 4,8 секунды против 9,6 у Go-версии.
• bun check — реализация от Bun, по их тестам в 3–6,4 раза быстрее Go-компилятора.
• tsc-ts — Vercel решила вернуть компилятор на TypeScript, но собирать его в нативный бинарник.
• tsrs — Rust-порт от Cloudflare и VoidZero, обещающий до 8 раз больше скорости и на 70% меньше потребления памяти.
Причём Cloudflare собирается объединить tsrs с проектом Theo Browne и развивать их как единую реализацию.
Сам Тео — персонаж офигеть какой неоднозначный. Его категоричность, бесконечные споры и провокации это нечто. А теперь его эксперимент с AI-портированием компилятора становится частью проекта Cloudflare.
У Cloudflare, впрочем, есть практический интерес: запуск TypeScript через WebAssembly внутри браузеров и Workers, в том числе для облачных IDE и AI-агентов.
Ещё недавно переписывание компилятора было многолетней инженерной задачей. Теперь портов столько, что разработчикам приходится договариваться, какие из них объединять.
Позиция Microsoft при этом, скорее, благодарная: какие-то оптимизации прекрасно бэкпортятся, и TypeScript Go 7.1 уже стал в два раза быстрее.
#typescript #rust #cloudflare | 1 106 |
| 9 | #статья дня
В Base UI написали целую статью о том, как добавить поиск в выпадающее меню. Не о том, как фильтровать массив по строке — с этим как раз никаких проблем.
Допустим, есть меню с командами Rename, Duplicate и Delete. Добавляем поле поиска, начинаем печатать, стрелками выбираем нужный пункт, Enter выполняет действие.
А теперь вопрос: что это за компонент с точки зрения доступности?
Первым напрашивается combobox. Но комбобокс предполагает выбор значения для поля ввода, а здесь мы выполняем команду. aria-autocomplete тоже не подходит: он предполагает определённое поведение списка подсказок, которого наше меню не обеспечивает.
В Base UI в итоге выбрали dialog, внутри которого находятся поле поиска и настоящее menu.
Но с семантикой разобрались — осталась клавиатура. Например, Home и End в текстовом поле перемещают курсор, а в меню — выделение. Стрелками нужно перемещаться между пунктами, сохраняя возможность продолжать печатать. Причём DOM-фокус остаётся в поле ввода, а активный пункт определяется через aria-activedescendant.
Отдельная история с подменю: если оно открылось при наведении мыши, нельзя сразу переводить фокус на его поле поиска. Пользователь мог просто провести указателем мимо.
И всё это ещё нужно проверить с VoiceOver, NVDA и TalkBack. Кстати, по ходу работы команда обнаружила несколько багов доступности даже в обычном компоненте Menu.
Ну что же, давайте снова поговорим о том, что AI избавит нас от необходимости писать код. Допустим, агент за минуту напишет весь JSX, фильтрацию и обработчики клавиатуры. Но кто-то всё равно должен определить, какое поведение мы вообще хотим получить, почему именно такое и соответствует ли оно ожиданиям пользователей.
Особенно тех, кто взаимодействует с интерфейсом не так, как его разработчик.
Отдельный вопрос, конечно, нельзя ли просто заменить все меню на одно обращение в чат.
В общем, очень рекомендую почитать разбор Base UI. Там много интересных деталей, о которых легко не задуматься, даже если весь код пишешь собственноручно.
А ещё обратите внимание, у них видеоиллюстрации отдельные для тёмной и светлой темы 🫠
#ui #a11y #aria | 946 |
| 10 | Пора лететь в отпуск, а денег на билеты и отель нет?✈️
Можно дальше смотреть красивые видео с Бали и мечтать об отпуске, а можно найти новые возможности для заработка.
Если ты работаешь в IT или только ищешь первую работу, попробуй наш сервис на базе ИИ. Он помогает искать вакансии и находить новые карьерные возможности.
Пусть следующим летом ты не просто смотришь на чужой отпуск, а сам собираешь чемодан 🌴 | 1 132 |
| 11 | #статья дня, даже две
Помните, я недавно рассказывал, почему появился Git и чем он отличается от SVN? Кажется, пора снова вспомнить о централизованных системах контроля версий.
Anthropic отказалась от Git и написала собственную VCS — Scion. Причём архитектурно она ближе к старому доброму SVN.
В мае компания вливала в свой монорепозиторий около 2500 изменений в день, а к сентябрю — уже больше 30 тысяч. История главной ветки приблизилась к 100 ГБ, CI выполнял 25 миллионов checkout в сутки. Git перестал справляться, несмотря на сотни зеркал и прочие оптимизации.
В Scion коммиты, слияния и ребейзы выполняются на сервере, а клиенты загружают файлы по необходимости. По данным Anthropic, это сократило потребление CPU и памяти инфраструктурой в 200 раз.
На разработку ушло пять месяцев и работа семи инженеров. Разумеется, при участии Claude, из-за которого вся эта проблема и возникла.
Но объёмы генерируемого агентами кода создают проблемы не только для Git, но и для платформ вокруг него.
Разработчик Йови де Крок представил экспериментальный проект gittifacts, в котором предлагает пересмотреть привычный процесс Pull Request. Вместо чтения каждого диффа человек согласовывает план и критерии приёмки, агент пишет код, а система собирает результаты тестов, покрытие, изменения API и зависимостей. На их основании изменение отправляется на ревью или автоматически сливается, если это разрешено настройками.
В отличие от Scion, gittifacts не заменяет Git, а пытается решить проблему человеческого ревью, которое тоже плохо масштабируется вместе с количеством сгенерированного кода.
В общем, за каких-то двадцать лет мы прошли путь от централизованного SVN к распределённому Git, а теперь снова выясняем, что централизованная архитектура может быть удобнее. И заодно думаем, зачем заставлять людей читать весь код, который генерируют машины.
Scion — статья Anthropic
gittifacts — статья автора
#git #svn #ai | 1 114 |
| 12 | #заметка дня
Когда Гарри Каспаров проиграл DeepBlue в шахматы всем, в целом, стало понятно, что шахматисты не победят ботов. Помешало ли это шахматам с переменным успехом быть самой популярной игрой? Нет. Помешало ли это шахматистам снова достигать уровня практически рок звёзд? Тоже нет. Признание, процесс, обучение, скандалы — всё на месте.
Это я к чему. Ну, собственно, что меня зацепило — оно на иллюстрации. Ссылка на X. Вызов принят!
Задача предельно ясна: закрыть картинку и видео-файл "скелетоном", все только через css, видео-элементу нельзя добавлять никакие атрибуты и доп. css-классы, разметку менять нельзя, можно только менять css root элемента, работать должно везде.
И, собственно, GPT 6.1 Sol Max прекрасно справился, по пути выдав весьма интересное решение: через filter.
Вот оно: https://codepen.io/editor/alinaki/pen/01a13fa3-609c-71ea-b6ae-8fc97433cae8
Лучше ли оно предложенного? Хороший вопрос! Я пока предложенное не видел, но оно, как минимум, использует сильно более новые возможности, которые гораздо менее доступны в браузерах.
Одну проблему своего решения я уже знаю — маска анимации заставляет фон просвечиваться. Но я уверен, что это можно решить, и проблемой стать не должно.
Но целая ночь против 10 минут. Никогда не говори никогда, короче.
#css #skeleton | 1 400 |
| 13 | Sin texto... | 1 459 |
| 14 | Атмосфера HolyJS: ради чего стоит приехать на площадку
23–24 октября в Санкт Петербурге и онлайне пройдет HolyJS 2026 Autumn — масштабная JS-конференция, которая объединит фронтенд, бэкенд, графику и веб-платформу.
Интересные доклады — это база. Но Холи — это еще и то, что происходит между ними: живые разговоры, крутой нетворкинг, возможность самому выйти к микрофону и форматы, в которых можно посмотреть на привычные вещи под другим углом.
Для удобства собрали в карточках активности, ради которых точно стоит посетить конференцию.
Выбирайте, в чем хотите поучаствовать, и забирайте персональный билет со скидкой по промокоду htmlshit
→ Программа HolyJS
→ Купить билет
Реклама. ООО «Джуг Ру Груп». ИНН 7801341446 | 1 643 |
| 15 | #такое дня
Сидим, разрабатываем дизайн систему, следуем WCAG, вычитываем эксплейнеры с https://open-ui.org/, следуем всем законам о доступности...
Но мы все лишь грязь под ногтями дизайнеров Apple, потому что спроектировать убегающий из под курсора компонент в их понимании абсолютно нормально.
Что дозволено Юпитеру, не дозволено быку, да?
#apple #ui | 1 472 |
| 16 | 🏁Тестовый собес на Frontend с разработчиком из R-Vision, ex-Сбер
15 октября в 19:00 (МСК) приходи посмотреть открытое онлайн-собеседование на Frontend-разработчика!
Интервьюер: Даниил Дмитриев – Frontend-разработчик в R-Vision, ex-Сбер. Пишет на React и TypeScript, совмещает роль тимлида, менторит разработчиков и проводит код-ревью.
На эфире нет сценария ↓
Кандидат – случайный разработчик, который не знает вопросов заранее.
На обычном собесе ты не знаешь, что думает интервьюер, пока не придёт фидбек. На этом эфире Даниил проговорит всё вслух:
— какие вопросы и задачи даёт кандидатам на Frontend-собесах;
— что в каждом ответе засчитал бы, а что нет — и почему.
А в конце ответит на твои вопросы.
Эфир проходит в рамках менторской программы от ШОРТКАТ для разработчиков, которые хотят повысить грейд, ЗП и прокачать скиллы!
Участие бесплатное 🔥
Зарегаться на эфир можно в боте → @shortcut_front_bot
Реклама.
О рекламодателе. | 1 329 |
| 17 | #инструмент дня
Когда надоело, что ссылки из рабочего Slack открываются в личном профиле Chrome, а мемчики из Telegram — в рабочем.
Встречайте — ContextRoute! Создано мной с любовью для вас, котаны. Пока только для macOS.
Работает просто: выбираете, в каком браузере или профиле открывать ссылки из конкретных приложений.
Например, всё из Slack отправляется в рабочий профиль Chrome, из Telegram — в личный, а из остальных приложений — как принятно в macOS aka в последнее окно. Чуть меньше раздражения.
Альтернативы, конечно, существуют. Но мне они как-то не зашли.
Такие утилиты, во-первых, очень opinionated, а во-вторых, любят обрастать настройками. А я люблю минимум.
Вот, например, Yojam. У него только тёмная тема. И не просто тёмная, а чёрная! В сочетании с обилием, несомненно, прекрасных настроек пользоваться этим мне показалось невозможным. Skill issue.
Finicky — прекрасный инструмент, но зачем мне писать конфиг на TypeScript, чтобы открывать ссылки в браузере? Я вот не понял.
Поэтому и сделал свою утилиту. Пока она умеет только маршрутизировать ссылки по приложениям, из которых их открывают. Никаких правил по доменам, сложных условий и прочих радостей автоматизации. Всё это появится позже, но сейчас мне хотелось решить одну конкретную проблему.
Надеюсь, что смогу вовремя остановиться. Хотя, наверное, разработчик Yojam тоже так считал.
#swift #macos | 1 224 |
| 18 | #статья дня
У vlt.io есть собственный коммерческий реестр npm-пакетов. Казалось бы, зачем кому-то альтернатива бесплатному npmjs.org? Но разработчики vlt решили покопаться в том, как npm передаёт метаданные пакетов, и нашли довольно много лишнего.
Например, полный документ с метаданными 759 версий Vite занимает 4,41 МБ даже после gzip. У npm есть сокращённый формат, но в нём не хватает некоторых полей, поэтому пакетным менеджерам иногда приходится запрашивать полную версию со всей накопившейся за годы историей.
В vlt переработали формат, убрали ненужные данные и сократили тот же документ Vite до 104 КБ. В среднем объём передаваемых метаданных уменьшился на 70%, а холодная установка зависимостей в их тестах ускорилась на 20–70%.
Причём менять пакетный менеджер не требуется: обычные npm, pnpm и Bun могут работать с альтернативным реестром. То есть значительную часть оптимизаций удалось сделать исключительно на стороне сервера.
Конечно, тесты проводились без lockfile, а в проектах с кешированием выигрыш будет скромнее. Но сама история показательна: спустя столько лет развития npm в его протоколе всё ещё остаются неэффективности, которые можно устранить, даже не меняя клиентский код.
https://www.vlt.io/blog/registry-metadata-70-percent-smaller
#npm #pnpm | 1 229 |
| 19 | #дичь дня
Лукас Бономи сделал GSS (GPU Style Sheets) — язык, на котором можно создавать полноценную 3D-графику, используя практически обычный CSS. И чем дальше читаешь документацию, тем больше вопросов к автору.
Объекты объявляются через @scene. Хотите куб? Пишите cube. Сферу? sphere. Трёхмерный бублик? torus. Можно назначить им классы и идентификаторы, расположить в пространстве и стилизовать привычными селекторами.
@scene {
sphere#ball;
}
#ball {
translate: 0 1 0;
color: #ff5a36;
material: glass(1.5, frosted 0.3);
animation: float 2s ease-in-out alternate;
}
@keyframes float {
from {
translate: 0 1 0;
}
to {
translate: 0 1.5 0;
}
}
А дальше начинается прекрасное. Тут есть каскад, специфичность, `!important`, `:nth-child()`, `:hover` и даже `:has()`. Последний позволяет, например, менять внешний вид куба при наведении на соседнюю сферу. Да, теперь можно три часа выяснять, почему CSS не красит бублик.
Материалы тоже описываются стилями: metal(), glass(), jelly(), iridescent(). Есть градиенты, текстуры, освещение, тени, туман и фильтры. Анимации задаются через @keyframes, работают переходы и управление сценой через прокрутку страницы.
Причём это не какая-то хитрая обёртка над Three.js. GSS компилирует сцену в GPU-шейдеры GLSL или WGSL, а геометрия строится через SDF (функции расстояния) и raymarching. Никаких привычных полигональных мешей — видеокарта сама вычисляет поверхности объектов при отрисовке.
У проекта есть интерактивная песочница, npm-пакет, интеграция с Vite и даже расширение для VS Code. Всё это пока экспериментальное, но вполне работающее.
Не знаю, кому пришло в голову, что трёхмерной графике не хватает CSS-каскада и проблем со специфичностью, но теперь я хочу увидеть, как кто-нибудь будет отлаживать сцену с сотней объектов и !important.
https://www.gss-lang.dev/
#3d #webgpu | 1 352 |
| 20 | #инструмент дня
TanStack Charts 1.0 — Таннер Линсли довёл до стабильного релиза свою библиотеку графиков.
Вот это, конечно, эффективность у человека.
Анонс: https://tanstack.com/blog/tanstack-charts-1-0
Каталог: https://tanstack.com/charts/catalog
Charts устроен не как коллекция <LineChart>, <BarChart> и <PieChart>. График собирается из меток (marks), шкал (scales), осей (axes) и взаимодействий (interactions): можно начать с линии, добавить поверх точки, снизу столбцы, свои аннотации или вообще собственную метку (mark) — без поиска нового компонента под каждую комбинацию.
По умолчанию используется SVG, но тяжёлый слой можно отдельно перевести на Canvas, оставив оси, подписи и интерактивность в SVG. Canvas, анимации и более тяжёлые части не попадают в bundle, пока они действительно не понадобились.
Линсли пришёл к этой архитектуре после D3, работы над Chart.js 2.0 и собственного react-charts. Последний тоже со временем упёрся в ограничения заранее заданных видов графиков. Поэтому Charts построен ближе к Grammar of Graphics: визуализация складывается из отдельных частей, а не выбирается целиком из списка готовых типов.
Линсли пишет, что идеи для API копил около десяти лет, архитектуру и поведение проектировал сам, а почти всю реализацию отдал coding agents. Для Charts уже есть отдельный гайд по AI authoring — как агенту выбирать примитивы, проверять результат и не выдумывать несуществующие API. Собственный Skill через TanStack Intent тоже запланирован, но пока не выпущен.
В результате Charts рассчитан даже не столько на графики, это весьма решённая проблема, сколько на все придури вашего дизайнера :)
#charts #tanstack | 1 367 |
