Полный курс по Svelte 5
Как-то я проморгал, что после Svelte 3 успело выйти уже два мажора со значимыми изменениями. Если вдруг вы тоже пропустили, то Svelte — это фреймворк со своим компилятором, который целится в супер-легковесный клиентский код. Довольно популярный фреймворк, к слову.
Матия из Хорватии (автор сам так подписывается, я не подшучиваю) собрал очень подробный курс, который позволяет изучить Svelte 5 с нуля. 28 глав, 3 часа видео, очень много демок. Бесплатно, но если вам будет полезно, можно задонатить на Patreon.
https://joyofcode.xyz/learn-svelte
Как-то я проморгал, что после Svelte 3 успело выйти уже два мажора со значимыми изменениями. Если вдруг вы тоже пропустили, то Svelte — это фреймворк со своим компилятором, который целится в супер-легковесный клиентский код. Довольно популярный фреймворк, к слову.
Матия из Хорватии (автор сам так подписывается, я не подшучиваю) собрал очень подробный курс, который позволяет изучить Svelte 5 с нуля. 28 глав, 3 часа видео, очень много демок. Бесплатно, но если вам будет полезно, можно задонатить на Patreon.
https://joyofcode.xyz/learn-svelte
Joy of Code
The Complete Svelte 5 Course
Beginner to advanced course for the most beloved JavaScript framework.
1❤42🔥26👍4
Брендирование типов в TypeScript
В разных языках программирования есть разные подходы к типизации. TypeScript умеет сравнивать типы структурно, но это и мешает иногда подсветить ошибки при использовании номинально разных типов, которые идентичны по структуре.
Федерико Жерарди показывает, как можно для таких задач использовать брендирование типов.
В статье есть хороший пример, как таким образом пометить строку, что она прошла через обработку важной функцией.
Я сам с брендированием знаком давно, но обычно добавляю строковых поля для разделения типов. Про то, что можно использовать
https://azraelsec.sh/2025/09/06/Typenoscript-Branding/
В разных языках программирования есть разные подходы к типизации. TypeScript умеет сравнивать типы структурно, но это и мешает иногда подсветить ошибки при использовании номинально разных типов, которые идентичны по структуре.
Федерико Жерарди показывает, как можно для таких задач использовать брендирование типов.
type BrandedType<T> = T & { readonly __brand: unique symbol };
В статье есть хороший пример, как таким образом пометить строку, что она прошла через обработку важной функцией.
Я сам с брендированием знаком давно, но обычно добавляю строковых поля для разделения типов. Про то, что можно использовать
unique symbol, как-то не задумывался, интересный подход.https://azraelsec.sh/2025/09/06/Typenoscript-Branding/
AzraelSec
Type Branding in Typenoscript
The Initial DiscoveryThe other day, while exploring the Zod documentation for some type schema validators for one of my side projects, I stumbled upon something intriguing that didn’t immediately clic
❤30🤯6🥴4🌚3🤔2
Электрическая рамка
Принёс вам демку, в которой интересно поразбираться.
Балинт Ференци собрал на CodePen классный пример рамки, по которой как будто идёт электрический ток. Как это работает:
- При помощи фильтра
- Каждому слою задана бесконечная анимация, которая двигает слой либо влево, либо вверх. Интересно, что слоёв, которые движутся вверх, сразу два.
- При помощи
- И затем применяется
- В CSS это подключается просто,
Вся магия в том, что сгенерированный шум во время анимации создаёт яркие и менее яркие области, которые псевдослучайно перемещаются по картинке. Если при помощи фильтров использовать эти яркие области для карты смещения, получается вау-эффект. В демке ещё хорошо имитируются игра света и блики на поверхности, что в комбинации даёт очень красивую, на мой взгляд, карточку.
Сохранил себе в закладки на случай, если захочется что-нибудь эдакое технологическое поделать в интерфейсах.
https://codepen.io/BalintFerenczy/pen/KwdoyEN
Принёс вам демку, в которой интересно поразбираться.
Балинт Ференци собрал на CodePen классный пример рамки, по которой как будто идёт электрический ток. Как это работает:
- При помощи фильтра
feTurbulence создаётся три слоя с шумом. Это буквально статические картинки, которые выглядят как цветной дым.- Каждому слою задана бесконечная анимация, которая двигает слой либо влево, либо вверх. Интересно, что слоёв, которые движутся вверх, сразу два.
- При помощи
feComposite и feBlend эти слои смешивают в режиме color-dodge. Получается общий источник пикселей в виде анимированного шума.- И затем применяется
feDisplacementMap, который склеивает картинку, поверх которой будет применяться фильтр, и сгенерированный шум в тонкие электрические линии.- В CSS это подключается просто,
filter: url(#turbulent-displace).Вся магия в том, что сгенерированный шум во время анимации создаёт яркие и менее яркие области, которые псевдослучайно перемещаются по картинке. Если при помощи фильтров использовать эти яркие области для карты смещения, получается вау-эффект. В демке ещё хорошо имитируются игра света и блики на поверхности, что в комбинации даёт очень красивую, на мой взгляд, карточку.
Сохранил себе в закладки на случай, если захочется что-нибудь эдакое технологическое поделать в интерфейсах.
https://codepen.io/BalintFerenczy/pen/KwdoyEN
codepen.io
Electric Border
...
🔥61⚡19❤9👍4🙏1🌚1
Что мы можем делать при помощи corner-shape
Помню, как сильно радовался массовому внедрению в браузеры свойства
Но в дизайнах всё ещё бывают не только выпуклые круглые уголки. На данный момент без хаков можно играться с овальными формами границ. Ну или разбираться с
Дэниэл Шварц показывает, как мы сможем визуально создавать всевозможные формы блоков с помощью нового свойства
- впуклые уголки (инвертированный круг);
- скошенные уголки;
- вырезанные уголки;
- сквирклы (красивые более естественные скругления).
С демками.
https://css-tricks.com/what-can-we-actually-do-with-corner-shape/
Помню, как сильно радовался массовому внедрению в браузеры свойства
border-radius. Не нужно больше рисовать скруглённые уголки при помощи таблиц, кайф!Но в дизайнах всё ещё бывают не только выпуклые круглые уголки. На данный момент без хаков можно играться с овальными формами границ. Ну или разбираться с
border-image, который не самый developer friendly, на мой взгляд. Хотя в большинстве случаев этого всё-таки хватает.Дэниэл Шварц показывает, как мы сможем визуально создавать всевозможные формы блоков с помощью нового свойства
corner-shape, которое пока что работает только в Chrome:- впуклые уголки (инвертированный круг);
- скошенные уголки;
- вырезанные уголки;
- сквирклы (красивые более естественные скругления).
С демками.
https://css-tricks.com/what-can-we-actually-do-with-corner-shape/
CSS-Tricks
What Can We Actually Do With corner-shape? | CSS-Tricks
When I first started messing around with code, rounded corners required five background images or an image sprite likely created in Photoshop, so when
🔥31👍10❤6
Секретное свойство для нативного «жидкого стекла» у Apple
Скандалы, интриги, расследования.
Аластер Кут периодически изучает ченжлог репозитория WebKit на GitHub, потому что ему важно знать, что умеют веб-вью в мобильных приложениях. И недавно он обнаружил, что у Apple есть кастомное свойство
Но есть нюанс. Оказывается, чтобы включить его, нужно внутри WKWebView переключить настройку
Аластер, тем не менее, поигрался со свойством локально, выглядит неплохо.
В общем, свойство, которое после выхода iOS 26 помогло бы не отнекиваться от хотелок заказчиков, формально существует, но по сути — выключено.
Кто знает, может, в ближайших релизах Safari его всё-таки включат для разработчиков.
https://alastair.is/apple-has-a-private-css-property-to-add-liquid-glass-effects-to-web-content/
Скандалы, интриги, расследования.
Аластер Кут периодически изучает ченжлог репозитория WebKit на GitHub, потому что ему важно знать, что умеют веб-вью в мобильных приложениях. И недавно он обнаружил, что у Apple есть кастомное свойство
-apple-visual-effect: -apple-system-glass-material, которое по идее включает эффект жидкого стекла на элементе прямо в вебе.Но есть нюанс. Оказывается, чтобы включить его, нужно внутри WKWebView переключить настройку
useSystemAppearance, которая... приватная. Беда в том, что использовать приватные настройки нельзя, если не хочешь вылететь из App Store. А в обычном браузере просто не работает.Аластер, тем не менее, поигрался со свойством локально, выглядит неплохо.
В общем, свойство, которое после выхода iOS 26 помогло бы не отнекиваться от хотелок заказчиков, формально существует, но по сути — выключено.
Кто знает, может, в ближайших релизах Safari его всё-таки включат для разработчиков.
https://alastair.is/apple-has-a-private-css-property-to-add-liquid-glass-effects-to-web-content/
Alastair Writes Code
Apple has a private CSS property to add Liquid Glass effects to web content
I have an incredibly boring summer hobby: looking at the changelog for the WebKit Github repo. Why? Because I spend a chunk of my professional life working with webviews inside mobile apps and I like to get an early peek into what's coming in the next version…
🔥20😁11🎉3🥴3❤2👍2
Эволюция браузеров
Видео выходного дня. Вадим Макеев и Кирилл Мокевнин много и интересно разговаривают о том, как развиваются современные браузеры, как появляются новые фичи для разработчиков, почему приватности почти не существует, что нас ждёт в будущем и ещё много о чём.
Можно включить на фоне как подкаст.
Кстати, после просмотра этого интервью ещё раз осознал, что мы в «Веб-стандартах» важную вещь делаем помимо помощи новичкам в профессии. Важно ещё и обновлять знания опытных разработчиков, у которых часто нет времени копаться в каждой новости и следить за всеми обновлениями. Мы это делаем за читателей и слушателей, подсвечивая самое важное.
https://youtu.be/uPIUl8Bdq5A
Видео выходного дня. Вадим Макеев и Кирилл Мокевнин много и интересно разговаривают о том, как развиваются современные браузеры, как появляются новые фичи для разработчиков, почему приватности почти не существует, что нас ждёт в будущем и ещё много о чём.
Можно включить на фоне как подкаст.
Кстати, после просмотра этого интервью ещё раз осознал, что мы в «Веб-стандартах» важную вещь делаем помимо помощи новичкам в профессии. Важно ещё и обновлять знания опытных разработчиков, у которых часто нет времени копаться в каждой новости и следить за всеми обновлениями. Мы это делаем за читателей и слушателей, подсвечивая самое важное.
https://youtu.be/uPIUl8Bdq5A
YouTube
Эволюция браузеров: от IE6 до ИИ-оболочек | Вадим Макеев #61
За последние годы развитие браузеров происходило настолько высокими темпами, что многие теряются в происходящем. Я решил это исправить. Мы поговорили с Вадимом Макеевым — экспертом по веб-стандартам из Mozilla (ранее работавшим в Opera), и обсудили, как эволюция…
1❤45💯8👍4👏1🤣1
Chrome DevTools MCP
Если вы ещё не работали с Model Context Protocol в связке с AI-агентами, то вот хороший повод попробовать.
Команда Chrome выпустила npm-пакет, который позволяет работать с DevTools через MCP. Подключается к IDE через конфиг MCP-клиента:
Дальше на всякий случай обучаете инструмент системными или другими промптами, чтобы когда вы просите проверить что-то в браузере, он работал с
Анонс: https://developer.chrome.com/blog/chrome-devtools-mcp
Документация: https://github.com/ChromeDevTools/chrome-devtools-mcp/blob/main/docs/tool-reference.md
Если вы ещё не работали с Model Context Protocol в связке с AI-агентами, то вот хороший повод попробовать.
Команда Chrome выпустила npm-пакет, который позволяет работать с DevTools через MCP. Подключается к IDE через конфиг MCP-клиента:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest"]
}
}
}
Дальше на всякий случай обучаете инструмент системными или другими промптами, чтобы когда вы просите проверить что-то в браузере, он работал с
chrome-devtools. И можно спрашивать про сеть, перфоманс, навигацию, ресайзить страницы и многое другое. Подробности в документации.Анонс: https://developer.chrome.com/blog/chrome-devtools-mcp
Документация: https://github.com/ChromeDevTools/chrome-devtools-mcp/blob/main/docs/tool-reference.md
Chrome for Developers
Chrome DevTools (MCP) for your AI agent | Blog | Chrome for Developers
Public preview for the new Chrome DevTools MCP server, bringing the power of Chrome DevTools to AI coding assistants.
🔥42❤8👍7🥴6💔1
Проблемы @starting-style
Директива
Джош Комо подсвечивает нюансы такого подхода:
- Стили внутри
- Когда в стилях появляется
В общем, классические проблемы со специфичностью и каскадом. Джош в статье предлагает решения этих проблем. Правда, в конце приходит в выводу, что ему пока проще использовать обычные анимации через
Имхо, оба подхода создают какие-то трудности. Анимации так-то тоже могут перебить стили, которые ты не ожидаешь нечаянно затереть, потому что у них очень высокий приоритет над почти любыми другими стилями. Но, справедливости ради, я пока ни разу в своих проектах
https://www.joshwcomeau.com/css/starting-style/
Директива
@starting-style — это такой способ указать браузеру, какие стили у элемента должны быть в тот момент, когда он только появился на странице. И если у него ещё есть указанный transition, то можно сотворить красивую анимацию появления.Джош Комо подсвечивает нюансы такого подхода:
- Стили внутри
@starting-style имеют ту же специфичность, что и селектор, для которого они объявлены. Что, в целом, логично. Но ломает работу с инлайн-стилями, например.- Когда в стилях появляется
!important, то поддержка становится ещё веселее.В общем, классические проблемы со специфичностью и каскадом. Джош в статье предлагает решения этих проблем. Правда, в конце приходит в выводу, что ему пока проще использовать обычные анимации через
@keyframes.Имхо, оба подхода создают какие-то трудности. Анимации так-то тоже могут перебить стили, которые ты не ожидаешь нечаянно затереть, потому что у них очень высокий приоритет над почти любыми другими стилями. Но, справедливости ради, я пока ни разу в своих проектах
@starting-style не применял, как-то не было нужды.https://www.joshwcomeau.com/css/starting-style/
Joshwcomeau
The Big Gotcha With @starting-style • Josh W. Comeau
CSS has been on fire lately, with tons of great new features. @starting-style is an interesting one; it allows us to use CSS transitions for enter animations, something previously reserved for CSS keyframe animations. But is the juice worth the squeeze?
👍17❤4🥴1
Определение версии Safari и iOS
Для некоторых задач нужно знать версию браузера и операционной системы. Например, для аналитики или оптимизации перфоманса приложения.
При этом недавно версия iOS резко скакнула с 18 на 26. Уверен, где-то в мире несколько парсеров сломались, потому что «ну не может же быть апдейт мажора сразу на 8 версий, не бывает такого». А ещё iPadOS (узнал из статьи) притворяется macOS, хотя по сути работает как iOS по фичам.
Злые Марсиане делятся рецептами, как всё-таки можно определять нужную вам версию. Здесь, внезапно, длинный релизный цикл Safari помогает, а не мешает. Каждый минор содержит достаточное количество новых фичей, чтобы по ним определять версию,
Респект авторам статьи, что идентификация по
https://evilmartians.com/chronicles/how-to-detect-safari-and-ios-versions-with-ease
Для некоторых задач нужно знать версию браузера и операционной системы. Например, для аналитики или оптимизации перфоманса приложения.
При этом недавно версия iOS резко скакнула с 18 на 26. Уверен, где-то в мире несколько парсеров сломались, потому что «ну не может же быть апдейт мажора сразу на 8 версий, не бывает такого». А ещё iPadOS (узнал из статьи) притворяется macOS, хотя по сути работает как iOS по фичам.
Злые Марсиане делятся рецептами, как всё-таки можно определять нужную вам версию. Здесь, внезапно, длинный релизный цикл Safari помогает, а не мешает. Каждый минор содержит достаточное количество новых фичей, чтобы по ним определять версию,
@supports в помощь.Респект авторам статьи, что идентификация по
User-Agent где-то в конце списка рецептов. Потому что в современном мире это исключительно дополнительная информация для аналитики, но никак не источник правды. И парсить сложно, и устройства «притворяются» не собой, и тот же iPadOS мимикрирует под десктоп, и нужно зачем-то держать под рукой копию CanIUse. Фичадетектинг — более правильное решение проблемы.https://evilmartians.com/chronicles/how-to-detect-safari-and-ios-versions-with-ease
evilmartians.com
How to detect Safari and iOS versions with ease in 2025—Martian Chronicles, Evil Martians’ team blog
Read how to accurately detect Safari and iOS versions using WebKit feature checks, behavioral tests, and selective UA hints to gate features safely and avoid breaking UX.
👏26🔥13👍4❤1😁1🌚1
State of JavaScript 2025
Ещё один ежегодный опрос разработчиков, на этот раз про JavaScript. Если хотите влиять на индустрию и помогать инженерам движков и разработчикам стандартов выбрать правильное направление, то пройти этот опрос — один из способов.
Разработчики браузеров, движков и спецификаций смотрят на результаты этих опросов, всё чаще ссылаются на них при написании эксплейнеров к новым фичам. В общем, сам пройду и вас призываю.
https://survey.devographics.com/en-US/survey/state-of-js/2025
Ещё один ежегодный опрос разработчиков, на этот раз про JavaScript. Если хотите влиять на индустрию и помогать инженерам движков и разработчикам стандартов выбрать правильное направление, то пройти этот опрос — один из способов.
Разработчики браузеров, движков и спецификаций смотрят на результаты этих опросов, всё чаще ссылаются на них при написании эксплейнеров к новым фичам. В общем, сам пройду и вас призываю.
https://survey.devographics.com/en-US/survey/state-of-js/2025
State of JavaScript 2025
Take the State of JavaScript survey
⚡12💯2❤1
Динамический тултип
Темани Афиф делится коротким сниппетом, который позволяет собрать тултип на чистом CSS. Тултип пытается вместиться во вьюпорт любым легальным способом. И следует за якорем.
То, для чего мы сейчас используем JS-библиотеки на 200 килобайт, можно будет заменить на пару десятков строк CSS благодаря Anchor Positioning.
(Не забывайте проверять CanIUse)
https://css-tip.com/tooltip-anchor/
Темани Афиф делится коротким сниппетом, который позволяет собрать тултип на чистом CSS. Тултип пытается вместиться во вьюпорт любым легальным способом. И следует за якорем.
То, для чего мы сейчас используем JS-библиотеки на 200 килобайт, можно будет заменить на пару десятков строк CSS благодаря Anchor Positioning.
(Не забывайте проверять CanIUse)
https://css-tip.com/tooltip-anchor/
Css-Tip
Dynamic Tooltip Position with Anchor Positioning
A tootlip that follows its anchor while adjusting the position of its tail
🔥38👍6🤩6❤1👏1
Агенты в Playwright
В Playwright теперь есть три агента: планировщик, генератор и хилер.
Планировщик — исследует приложение, пишет план для тестирования в Markdown.
Генератор — превращает план тестирования непосредственно в Playwright-тесты.
Хилер — прогоняет тесты и чинит упавшие. Не код приложения, к сожалению, а код тестов.
Мне прям интересно заиспользовать планировщик для автоматической генерации ручных тестов. Понятно, что придётся допиливать напильником, но не с нуля, экономия времени. И можно для функциональности без тестов быстро сгенерировать хотя бы базовый e2e-тестсет.
https://playwright.dev/docs/test-agents
В Playwright теперь есть три агента: планировщик, генератор и хилер.
Планировщик — исследует приложение, пишет план для тестирования в Markdown.
Генератор — превращает план тестирования непосредственно в Playwright-тесты.
Хилер — прогоняет тесты и чинит упавшие. Не код приложения, к сожалению, а код тестов.
Мне прям интересно заиспользовать планировщик для автоматической генерации ручных тестов. Понятно, что придётся допиливать напильником, но не с нуля, экономия времени. И можно для функциональности без тестов быстро сгенерировать хотя бы базовый e2e-тестсет.
https://playwright.dev/docs/test-agents
playwright.dev
Agents | Playwright
Introduction
🔥37❤4🥴3🎉2🤬1💔1
ESLint v10.0.0
В грядущем мажорном обновлении линтера есть много изменений, но хочется обратить внимание на самые важные (на мой субъективный взгляд).
1. Прекращение поддержки версий ниже Node.js v20.19.0.
2. Файлы
3. Конфиг
https://eslint.org/blog/2025/10/whats-coming-in-eslint-10.0.0/
В грядущем мажорном обновлении линтера есть много изменений, но хочется обратить внимание на самые важные (на мой субъективный взгляд).
1. Прекращение поддержки версий ниже Node.js v20.19.0.
2. Файлы
.eslintrc.* и .eslintignore перестанут работать. Пора переезжать на eslint.config.js, если ещё не переехали.3. Конфиг
eslint:recommended тоже обновится, добавят пару новых правил по умолчанию.https://eslint.org/blog/2025/10/whats-coming-in-eslint-10.0.0/
eslint.org
What's coming in ESLint v10.0.0 - ESLint - Pluggable JavaScript Linter
A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease.
👍40🔥10🥴5❤2😢2👌2🙏1
Interop Feature Ranking
Помните, есть такой проект Interop, где браузеры раз в год определяют для себя список фичей, для которых они обещают за будущий год повысить кроссбраузерность?
Джейк Арчибальд, который теперь работает в команде Firefox, собрал дашборд, который поможет команде Firefox более взвешенно обработать пожелания разработчиков для Interop 2026. Обычно все предложения — это просто ишьи на гитхабе, и для меня, например, всё ещё тайна, как браузеры выбирают из списка то, что точно будут делать. Потому что самые залайканные ишьи часто в Interop не попадают.
Интересный дашборд, оставил в нём свои хотелки, делал по инструкции. И вы не стесняйтесь влиять.
https://interop-rank.jakearchibald.com/
Помните, есть такой проект Interop, где браузеры раз в год определяют для себя список фичей, для которых они обещают за будущий год повысить кроссбраузерность?
Джейк Арчибальд, который теперь работает в команде Firefox, собрал дашборд, который поможет команде Firefox более взвешенно обработать пожелания разработчиков для Interop 2026. Обычно все предложения — это просто ишьи на гитхабе, и для меня, например, всё ещё тайна, как браузеры выбирают из списка то, что точно будут делать. Потому что самые залайканные ишьи часто в Interop не попадают.
Интересный дашборд, оставил в нём свои хотелки, делал по инструкции. И вы не стесняйтесь влиять.
https://interop-rank.jakearchibald.com/
Jakearchibald
Interop Feature Ranking
Rank the web platform features you care most about
👍17❤🔥5❤5
Next.js 16 (beta)
Если у вас проект написан на Next.js, то сейчас можно поиграться с бетой 16-го мажорного обновления.
- Переключили дефолтный бандлер на Turbopack. По замерам команды сборка проектов ускоряется в 2–5 раз.
- Поддержка React Compiler. По умолчанию не включён. Но добавляет оптимизаций, мемоизаций и автоматизаций при включении.
- Опять изменения в роутинге. На этот раз систему навигации переписали, чтобы эффективнее работать с запрашиваемыми ресурсами и префетчингом. В коде ничего менять не нужно.
- Переделали работу с Caching API. Добавили больше методов. Мне почему-то каждый раз страшно, когда вижу обновления в этой части Next.js. Надеюсь, в этот раз новых секьюрити-багов не насыпали.
- Вместе с React 19.2 приехала работа с View Transitions в реактовом стиле. Можно будет делать красивые переходы между страницами.
Больше подробностей — по ссылке.
https://nextjs.org/blog/next-16-beta
Если у вас проект написан на Next.js, то сейчас можно поиграться с бетой 16-го мажорного обновления.
- Переключили дефолтный бандлер на Turbopack. По замерам команды сборка проектов ускоряется в 2–5 раз.
- Поддержка React Compiler. По умолчанию не включён. Но добавляет оптимизаций, мемоизаций и автоматизаций при включении.
- Опять изменения в роутинге. На этот раз систему навигации переписали, чтобы эффективнее работать с запрашиваемыми ресурсами и префетчингом. В коде ничего менять не нужно.
- Переделали работу с Caching API. Добавили больше методов. Мне почему-то каждый раз страшно, когда вижу обновления в этой части Next.js. Надеюсь, в этот раз новых секьюрити-багов не насыпали.
- Вместе с React 19.2 приехала работа с View Transitions в реактовом стиле. Можно будет делать красивые переходы между страницами.
Больше подробностей — по ссылке.
https://nextjs.org/blog/next-16-beta
nextjs.org
Next.js 16 (beta)
Next.js 16 beta includes stable Turbopack, file system caching, React Compiler support, smarter routing, new caching APIs, and React 19.2 features.
❤21🔥9🥴6👏2🎉1
Yandex Cup 2025
Надо же иногда рассказывать, чем я вообще на работе занимаюсь.
Моя команда делает платформу Контест, на которой проводятся различные соревнования по программированию и не только. И вот сейчас у нас проходит большой международный чемпионат Yandex Cup, в котором есть направление «Фронтенд-разработка».
В команде направления — половина моих фронтендеров, так что в адекватном качестве заданий не сомневаюсь. Ну и призы хорошие.
В общем, если вам интересно попытаться сломать сервис, который мы активно разрабатываем, или хочется доказать другим свою чемпионистость, то милости просим.
https://yandex.ru/cup/frontend
Надо же иногда рассказывать, чем я вообще на работе занимаюсь.
Моя команда делает платформу Контест, на которой проводятся различные соревнования по программированию и не только. И вот сейчас у нас проходит большой международный чемпионат Yandex Cup, в котором есть направление «Фронтенд-разработка».
В команде направления — половина моих фронтендеров, так что в адекватном качестве заданий не сомневаюсь. Ну и призы хорошие.
В общем, если вам интересно попытаться сломать сервис, который мы активно разрабатываем, или хочется доказать другим свою чемпионистость, то милости просим.
https://yandex.ru/cup/frontend
Yandex Cup — чемпионат по программированию
Фронтенд — Yandex Cup
Попробуйте свои силы в решении нестандартных задач
🏆25😁10🔥7❤2🎉2🥴2
Давай поиграем со шрифтами
Сегодня прочитал на FrontendConf доклад про то, как под капотом устроены шрифты, как браузер с ними работает, что может CSS для красивых и точных фолбеков и как загружать шрифты производительно.
Как всегда, видео опубликую здесь, как только оно появится в общем доступе.
Слайды: https://mefody.dev/talks/fonts-loading/
Дополнительные материалы: https://gist.github.com/MeFoDy/f44aa1d3f027500d1663abe60532f44b
Сегодня прочитал на FrontendConf доклад про то, как под капотом устроены шрифты, как браузер с ними работает, что может CSS для красивых и точных фолбеков и как загружать шрифты производительно.
Как всегда, видео опубликую здесь, как только оно появится в общем доступе.
Слайды: https://mefody.dev/talks/fonts-loading/
Дополнительные материалы: https://gist.github.com/MeFoDy/f44aa1d3f027500d1663abe60532f44b
👏52🔥24❤14👍6❤🔥4🤩2⚡1😁1🌚1
Настоящее и будущее прогрессивного рендеринга изображений
Не смогу в короткой заметке рассказать всё то, что рассказал Джейк Арчибальд в своей статье. Обязательно почитайте её. Или послушайте 497-й выпуск подкаста «Веб-стандарты», где мы подробно обсудили статью голосом. Но постараюсь дать основные выводы.
Напомню, многие форматы изображений умеют в прогрессивный рендеринг. Это когда сначала загружается что-то шакального качества, по которому уже можно понять композицию на картинке, а потом постепенно догружаются детали.
JPEG всё ещё лучший по метрикам размера картинки и времени на декодирование в браузере. WebP тоже хорош, но Safari грузит картинку только целиком.
AVIF не умеет в хороший прогрессивный рендеринг по дефолту, но в статье есть пример, как его научить. Даёт хорошие результаты по размеру файла, но декодирование уже идёт дольше в 2 раза.
Есть надежды на JPEG XL, но он пока не реализован в браузерах полноценно. Точнее, сейчас он включён только в Safari без прогрессивного рендеринга, а в других браузерах — спрятан за флагами.
Больше всего мне понравилась мысль из статьи, что пусть прогрессивный рендеринг как идея очень даже хорош, ведь позволяет пользователям не дожидаться полной загрузки картинки для понимания смысла картинки, но современный интернет ломает эту прогрессивность. Потому что современные сети в случае нестабильного соединения не загружают байтики равномерно и медленно, а грузят прерывисто и сразу большими чанками. Думаю, вы замечали иногда, что страница долго тупит, а потом резко загружается сразу вся. В этот момент скорее всего сеть появилась, а трафик пошёл большим потоком разом. И в таком случае прогрессивный рендеринг просто не успевает сработать, картинка приходит сразу вся.
Тем не менее это не повод бежать выключать прогрессивный рендеринг ради экономии 3 kB на картинку. Где-то оно всё же поможет.
https://jakearchibald.com/2025/present-and-future-of-progressive-image-rendering/
Не смогу в короткой заметке рассказать всё то, что рассказал Джейк Арчибальд в своей статье. Обязательно почитайте её. Или послушайте 497-й выпуск подкаста «Веб-стандарты», где мы подробно обсудили статью голосом. Но постараюсь дать основные выводы.
Напомню, многие форматы изображений умеют в прогрессивный рендеринг. Это когда сначала загружается что-то шакального качества, по которому уже можно понять композицию на картинке, а потом постепенно догружаются детали.
JPEG всё ещё лучший по метрикам размера картинки и времени на декодирование в браузере. WebP тоже хорош, но Safari грузит картинку только целиком.
AVIF не умеет в хороший прогрессивный рендеринг по дефолту, но в статье есть пример, как его научить. Даёт хорошие результаты по размеру файла, но декодирование уже идёт дольше в 2 раза.
Есть надежды на JPEG XL, но он пока не реализован в браузерах полноценно. Точнее, сейчас он включён только в Safari без прогрессивного рендеринга, а в других браузерах — спрятан за флагами.
Больше всего мне понравилась мысль из статьи, что пусть прогрессивный рендеринг как идея очень даже хорош, ведь позволяет пользователям не дожидаться полной загрузки картинки для понимания смысла картинки, но современный интернет ломает эту прогрессивность. Потому что современные сети в случае нестабильного соединения не загружают байтики равномерно и медленно, а грузят прерывисто и сразу большими чанками. Думаю, вы замечали иногда, что страница долго тупит, а потом резко загружается сразу вся. В этот момент скорее всего сеть появилась, а трафик пошёл большим потоком разом. И в таком случае прогрессивный рендеринг просто не успевает сработать, картинка приходит сразу вся.
Тем не менее это не повод бежать выключать прогрессивный рендеринг ради экономии 3 kB на картинку. Где-то оно всё же поможет.
https://jakearchibald.com/2025/present-and-future-of-progressive-image-rendering/
Jakearchibald
The present and potential future of progressive image rendering
Exploring progressive image rendering across JPEG, PNG, WebP, AVIF, and JPEG XL.
❤30👏4
Когда «идеальный» код падает
Марек Маркевка пишет простую функцию внутри Next.js-приложения.
Казалось бы, что может пойти не так? Функция же примитивная, для неё тестов много не нужно.
Беда в том, что в месте вызова
На самом деле статья про то, что всякие автоматизации поверх вашего кода нужно понимать и знать. Next.js и React 19 принесли много «полезной автоматики», которая может привести к критичным багам в проде, если не разбираться, во что ваш код на самом деле превращается в итоговом продовом бандле.
Я поэтому предпочитаю сначала всякие улучшалки выключить совсем, а потом постепенно по одной включать, пробовать, экспериментировать.
https://marma.dev/articles/2025/when-perfect-code-fails
Марек Маркевка пишет простую функцию внутри Next.js-приложения.
const isOwner = (userMail: string, ownerMail: string) => {
return userMail === ownerMail;
};
Казалось бы, что может пойти не так? Функция же примитивная, для неё тестов много не нужно.
Беда в том, что в месте вызова
isOwner(email1, email2) всегда возвращается true. Почему так? Читайте в статье.На самом деле статья про то, что всякие автоматизации поверх вашего кода нужно понимать и знать. Next.js и React 19 принесли много «полезной автоматики», которая может привести к критичным багам в проде, если не разбираться, во что ваш код на самом деле превращается в итоговом продовом бандле.
Я поэтому предпочитаю сначала всякие улучшалки выключить совсем, а потом постепенно по одной включать, пробовать, экспериментировать.
https://marma.dev/articles/2025/when-perfect-code-fails
😱36🤬14❤6🤯3🤣3🌚2👍1🥴1
View Transitions Feature Explorer
Спецификация View Transition API постепенно разрастается, всё чаще нужно понимать, какие её части в каких браузерах работают.
Брамус собрал демку-подсказчик, которая поможет разобраться. Со ссылками на документацию и релиз-ноуты.
Интересно, что внутри демки тоже используются View Transitions.
https://codepen.io/web-dot-dev/full/EaPbbgx
Спецификация View Transition API постепенно разрастается, всё чаще нужно понимать, какие её части в каких браузерах работают.
Брамус собрал демку-подсказчик, которая поможет разобраться. Со ссылками на документацию и релиз-ноуты.
Интересно, что внутри демки тоже используются View Transitions.
https://codepen.io/web-dot-dev/full/EaPbbgx
codepen.io
View Transitions Feature Explorer
...
👍14🤩13🎉3🙏3❤1
Harmonizer
Ещё один полезный инструмент от Злых Марсиан.
В интернетах много генераторов палитр можно найти, но здесь — современный, доступный, в виде плагина для Figma и в виде веб-приложения. Цвета — «оклыч» (OKLCH), проверка контрастности — APCA. Есть удобный предпросмотр для тёмной и светлой темы, причём палитра математически подстраивается сама. И сразу же можно выгрузить палитру в виде CSS-переменных и не только.
Я, конечно, не дизайнер, но приложил сгенерированную тему на пару своих пет-проектов — нравится. Может, даже, в своём полузаброшенном бложике обновлю темизацию основательно.
И спасибо большое Марсианам за то, что они не просто делают что-то для себя, а делятся крутыми наработками со всеми. Вот уж где последовательная популяризация OKLCH с реальным влияением на веб, так у них.
https://evilmartians.com/opensource/harmonizer
Ещё один полезный инструмент от Злых Марсиан.
В интернетах много генераторов палитр можно найти, но здесь — современный, доступный, в виде плагина для Figma и в виде веб-приложения. Цвета — «оклыч» (OKLCH), проверка контрастности — APCA. Есть удобный предпросмотр для тёмной и светлой темы, причём палитра математически подстраивается сама. И сразу же можно выгрузить палитру в виде CSS-переменных и не только.
Я, конечно, не дизайнер, но приложил сгенерированную тему на пару своих пет-проектов — нравится. Может, даже, в своём полузаброшенном бложике обновлю темизацию основательно.
И спасибо большое Марсианам за то, что они не просто делают что-то для себя, а делятся крутыми наработками со всеми. Вот уж где последовательная популяризация OKLCH с реальным влияением на веб, так у них.
https://evilmartians.com/opensource/harmonizer
evilmartians.com
Harmonizer at Evil Martians
Accessible Color Palettes Generator
👍50🎉7❤4🔥3👏2🤬1🤩1🥴1💔1