CSS Loaders
Большая коллекция (больше 600) CSS-лоадеров от Темани Афиф. Каждый всего в один элемент
Люблю такие ресурсы, где можно либо вдохновиться, либо вообще взять и полностью своровать что-то полезное для своего проекта.
https://css-loaders.com/
Большая коллекция (больше 600) CSS-лоадеров от Темани Афиф. Каждый всего в один элемент
<div class="loader"></div>, скопировать CSS можно по клику на пример.Люблю такие ресурсы, где можно либо вдохновиться, либо вообще взять и полностью своровать что-то полезное для своего проекта.
https://css-loaders.com/
Css-Loaders
CSS Loaders: A collection of more than 600 loading animations
The biggest collection of CSS-only loaders. More than 600 loading animations made by Temani Afif using a single element.
❤53👍13🙏8💯6🔥5❤🔥3
Полупрозрачность для эффективного UI-дизайна
Дизайнеры из Злых Марсиан делятся подходом, который позволяет упростить разработку дизайна для проектов. Правда, заголовок в оригинальной статье супер-жёлтый: «Вау, opacity! Полное руководство по этому герою эффективного UI-дизайна». Почитал статью, а полного руководства и конкретных рецептов так и не нашёл. Но тем не менее интересные мысли в статье есть.
1. Для начала, имея базовый цвет и играясь с его прозрачностью, можно сразу задать hover, focus и прочие состояния элементов.
2. Мелкие линии, бордеры и прочие разделители лучше делать полупрозрачными. Сам часто сталкивался с тем, что при наложении на тёмную тему внезапно разделитель либо пропадает, либо слишком яркий, либо некрасивый. И прозрачность действительно помогала сделать хорошо.
3. Если создавать элементы на странице разными вариациями прозрачности белого и чёрного, то поверх какого-то базового цвета можно легко выстроить вполне себе безграничный для темизации интерфейс.
4. С доступностью и контрастностью тоже всё хорошо, если следить за тем, что на что накладывается. В статье есть примеры с расчётом WCAG/APCA.
5. Если полупрозрачные элементы в интерфейсе начинают накладываться друг на друга, то могут случаться казусы. За ними нужно следить, верстать уже будет немножко сложнее, надо присматриваться к каждому пикселю наложения.
В статье в конце есть верное замечание, что такое подход хорош в первую очередь тогда, когда нужно быстро что-то запустить. Один раз придумал математику наложения полупрозрачных поверхностей — и побежали за деньгами от инвесторов быстрыми дизайнами. Но всё-таки богатые и приятные интерфейсы гораздо сложнее, там нужно уметь совмещать много разных цветов, иногда в самых неожиданных комбинациях, а тут прозрачность может сыграть с вами злую шутку (зелёная и красная кнопка внезапно смешаются — и ой, шоколадное мороженое).
https://evilmartians.com/chronicles/woah-opacity-a-full-guide-to-this-badass-hero-of-efficient-ui-design
Дизайнеры из Злых Марсиан делятся подходом, который позволяет упростить разработку дизайна для проектов. Правда, заголовок в оригинальной статье супер-жёлтый: «Вау, opacity! Полное руководство по этому герою эффективного UI-дизайна». Почитал статью, а полного руководства и конкретных рецептов так и не нашёл. Но тем не менее интересные мысли в статье есть.
1. Для начала, имея базовый цвет и играясь с его прозрачностью, можно сразу задать hover, focus и прочие состояния элементов.
2. Мелкие линии, бордеры и прочие разделители лучше делать полупрозрачными. Сам часто сталкивался с тем, что при наложении на тёмную тему внезапно разделитель либо пропадает, либо слишком яркий, либо некрасивый. И прозрачность действительно помогала сделать хорошо.
3. Если создавать элементы на странице разными вариациями прозрачности белого и чёрного, то поверх какого-то базового цвета можно легко выстроить вполне себе безграничный для темизации интерфейс.
4. С доступностью и контрастностью тоже всё хорошо, если следить за тем, что на что накладывается. В статье есть примеры с расчётом WCAG/APCA.
5. Если полупрозрачные элементы в интерфейсе начинают накладываться друг на друга, то могут случаться казусы. За ними нужно следить, верстать уже будет немножко сложнее, надо присматриваться к каждому пикселю наложения.
В статье в конце есть верное замечание, что такое подход хорош в первую очередь тогда, когда нужно быстро что-то запустить. Один раз придумал математику наложения полупрозрачных поверхностей — и побежали за деньгами от инвесторов быстрыми дизайнами. Но всё-таки богатые и приятные интерфейсы гораздо сложнее, там нужно уметь совмещать много разных цветов, иногда в самых неожиданных комбинациях, а тут прозрачность может сыграть с вами злую шутку (зелёная и красная кнопка внезапно смешаются — и ой, шоколадное мороженое).
https://evilmartians.com/chronicles/woah-opacity-a-full-guide-to-this-badass-hero-of-efficient-ui-design
evilmartians.com
Woah, opacity! A full guide to this badass hero of efficient UI design—Martian Chronicles, Evil Martians’ team blog
See how opacity can be a game changer for web apps, minimizing the number of design tokens, styles, and component variants, thus making your workflow more efficient and flexible, especially useful for startups and fast-moving teams.
👍20🐳3🌚3❤1❤🔥1
Tbilisi JS Meetup #3
Сегодня вечером буду читать свой новый доклад про работу с девтулзами Chrome, а точнее — с вкладкой Performance. Сам постоянно путаюсь, где какая панелька за что отвечает, почему каждый блок своего уникального цвета, ещё и ненужные мне детали показывает, которые отвлекают. Решил собрать все свои знания в кучку, набраться новых и рассказать об этом на митапе в Тбилиси.
Помимо моего будет ещё три доклада, все можно посмотреть в онлайн-трансляции. До встречи 😉
https://news.1rj.ru/str/tbilisi_js_chat/11654
Сегодня вечером буду читать свой новый доклад про работу с девтулзами Chrome, а точнее — с вкладкой Performance. Сам постоянно путаюсь, где какая панелька за что отвечает, почему каждый блок своего уникального цвета, ещё и ненужные мне детали показывает, которые отвлекают. Решил собрать все свои знания в кучку, набраться новых и рассказать об этом на митапе в Тбилиси.
Помимо моего будет ещё три доклада, все можно посмотреть в онлайн-трансляции. До встречи 😉
https://news.1rj.ru/str/tbilisi_js_chat/11654
Telegram
Julia Volkova in Tbilisi JS
Программа Tbilisi JS Meetup #3, 31 октября 🎃
Это день настал! Ждём всех! 🎃
19:30 — открытие дверей, сбор гостей, кофе
20:00 — старт программы, приветственное слово Tbilisi JS Team и Lightspeed
20:10 — «Дебаг производительности страницы средствами браузера»…
Это день настал! Ждём всех! 🎃
19:30 — открытие дверей, сбор гостей, кофе
20:00 — старт программы, приветственное слово Tbilisi JS Team и Lightspeed
20:10 — «Дебаг производительности страницы средствами браузера»…
🎉43👍18🔥12❤7
Как мы делали Yandex Cloud на дизайн-системе Gravity UI доступнее
Пока сижу на митапе A11Y&UX Day в Тбилиси, решил поделиться с вами хорошим примером, как большая дизайн-система работает над доступностью компонентов.
Что конкретно сделала команда gravity-ui, можно прочитать в статье, но интересно как раз то, что доступность — это не просто семантика и ариа-роли. В разных браузерах скринридеры работают по-разному, какие-то проблемы пришлось «лечить» необычным способом. С лейбла «Вы здесь» в компоненте хлебных крошек улыбнулся — непривычно, но элегантно. Кстати, посмотреть все фиксы можно прямо в GitHub, потому что библиотека лежит в опенсорсе. И если знаете, как можно сделать лучше — приносите ишьи или пулл-реквесты.
https://habr.com/ru/companies/yandex_cloud_and_infra/articles/853382/
Пока сижу на митапе A11Y&UX Day в Тбилиси, решил поделиться с вами хорошим примером, как большая дизайн-система работает над доступностью компонентов.
Что конкретно сделала команда gravity-ui, можно прочитать в статье, но интересно как раз то, что доступность — это не просто семантика и ариа-роли. В разных браузерах скринридеры работают по-разному, какие-то проблемы пришлось «лечить» необычным способом. С лейбла «Вы здесь» в компоненте хлебных крошек улыбнулся — непривычно, но элегантно. Кстати, посмотреть все фиксы можно прямо в GitHub, потому что библиотека лежит в опенсорсе. И если знаете, как можно сделать лучше — приносите ишьи или пулл-реквесты.
https://habr.com/ru/companies/yandex_cloud_and_infra/articles/853382/
Хабр
Как мы делали Yandex Cloud на дизайн-системе Gravity UI доступнее
Привет, меня зовут Вова Тимофеев, я менеджер технических проектов Yandex Cloud. В статье поделюсь тем, как мы делали сайт облачной платформы доступнее, сколько итераций прошли и какую роль...
❤30👍5🔥3
Селекторы CSS: простые и сложные
Читал на FrontendConf доклад про то, что умеют селекторы и какие есть интересные и необычные приёмы, чтобы выбрать что-то в DOM-дереве. Казалось бы, что там можно на целый доклад собрать. А вот как начал собирать материалы, сам удивился, сколько всего в этой теме интересного есть, даже чему-то научился в процессе подготовки.
Под каждый пример есть интерактивные демки, можно с ними поиграться, чтобы лучше понять, что происходит. А в конце — квиз для проверки знаний (хотя на самом деле мне просто хотелось сделать квиз на чистом CSS, чтобы поразвлекаться с теми самыми селекторами).
Видео: https://youtu.be/uhfcGAQv7o8
Слайды: https://mefody.dev/talks/css-selectors
Читал на FrontendConf доклад про то, что умеют селекторы и какие есть интересные и необычные приёмы, чтобы выбрать что-то в DOM-дереве. Казалось бы, что там можно на целый доклад собрать. А вот как начал собирать материалы, сам удивился, сколько всего в этой теме интересного есть, даже чему-то научился в процессе подготовки.
Под каждый пример есть интерактивные демки, можно с ними поиграться, чтобы лучше понять, что происходит. А в конце — квиз для проверки знаний (хотя на самом деле мне просто хотелось сделать квиз на чистом CSS, чтобы поразвлекаться с теми самыми селекторами).
Видео: https://youtu.be/uhfcGAQv7o8
Слайды: https://mefody.dev/talks/css-selectors
YouTube
Селекторы CSS: простые и сложные / Никита Дубко (Яндекс)
Вы можете задать вопрос спикеру в телеграм-канале https://news.1rj.ru/str/FrontendConfChannel или чате https://news.1rj.ru/str/FrontendConfTalks
---------
Приглашаем на FrontendConf 2025.
Программа, подробности и билеты по ссылке: https://frontendconf.ru/moscow/2025
________…
---------
Приглашаем на FrontendConf 2025.
Программа, подробности и билеты по ссылке: https://frontendconf.ru/moscow/2025
________…
🔥68❤16🎉4
Прекрасные аутлайны для фокуса
Томас Гюнтер делится советами, как сделать хорошее выделение фокусом, если дефолтные браузерные вам не подходят.
1. Используйте
2. Если нужно выделить только текст, без фона, можно цветом обводки сделать
3. Когда элемент находится на каком-то фоне, нужно помнить про контрастность, подсматривать в рекомендации WCAG. Красивая белая обводка на белом фоне — лучше уж дефолтная браузерная.
4. Обводку можно делать двойную (внутри светлое, снаружи тёмное) при помощи
5. Можно в принципе не делать никакую обводку, если есть уже готовые стили для
https://medienbaecker.com/articles/focus-outlines
Томас Гюнтер делится советами, как сделать хорошее выделение фокусом, если дефолтные браузерные вам не подходят.
1. Используйте
:focus-visible вместо :focus. В таком случае фокусное выделение будет показываться тогда, когда оно действительно нужно.2. Если нужно выделить только текст, без фона, можно цветом обводки сделать
currentColor — в целом, смотрится неплохо. В статье есть готовый сниппет, который можно попробовать вставить в проект как умолчание, если дизайнер пока не придумал отдельно фокусные состояния интерактивных элементов.3. Когда элемент находится на каком-то фоне, нужно помнить про контрастность, подсматривать в рекомендации WCAG. Красивая белая обводка на белом фоне — лучше уж дефолтная браузерная.
4. Обводку можно делать двойную (внутри светлое, снаружи тёмное) при помощи
outline и box-shadow. Вполне себе универсальный паттерн, который будет смотреться хорошо почти на любом фоне, если вдруг не наткнётся на опасный overflow: hidden.5. Можно в принципе не делать никакую обводку, если есть уже готовые стили для
:hover, которые явно меняют внешний вид элемента, чтобы было видно, что он выделен. Заметное изменение фона, цвета текста, тени или бордера — что угодно, лишь бы было понятно, что я сфокусировался на элементе.https://medienbaecker.com/articles/focus-outlines
Medienbaecker
Beautiful focus outlines · Medienbäcker Thomas Günther
How to make focus outlines both beautiful and accessible. I'll show you my approach using CSS custom properties, share practical tips for different contexts, and explain why treating focus states as essential design elements creates interfaces that work for…
❤33👍2
Pkl — замена YML и JSON от Apple
Оказывается, у яблочной компании есть опенсорсное решение для конфигурационных файлов. Что обычно нужно для конфигов? Понятный простой синтаксис, возможность наследоваться от базовых конфигов и расширять шаблонные, валидация схемы данных. И новый pkl (Pickle) как будто всё это умеет.
Как будто всё по коду понятно даже без объяснений. Есть наследование, есть валидация, есть схема данных, всё в понятном формате.
Конечно, менять всё в своих проектах я резко не брошусь на этот новый формат, потому что обычно в проектах вокруг конфигов есть ещё много обёрток и тулинга, а тут пока слишком молодой формат. Но поиграться в свободное время попробую.
https://www.trevorlasn.com/blog/pkl-apple-new-configuration-language
Оказывается, у яблочной компании есть опенсорсное решение для конфигурационных файлов. Что обычно нужно для конфигов? Понятный простой синтаксис, возможность наследоваться от базовых конфигов и расширять шаблонные, валидация схемы данных. И новый pkl (Pickle) как будто всё это умеет.
class AppConfig {
port: Int = 8080
logLevel: String = "INFO"
timeout: Duration = Duration.seconds(30)
function validate() {
port > 0 && port < 65536
}
}
api = new AppConfig {
port = 3000
timeout = Duration.minutes(2)
}
Как будто всё по коду понятно даже без объяснений. Есть наследование, есть валидация, есть схема данных, всё в понятном формате.
Конечно, менять всё в своих проектах я резко не брошусь на этот новый формат, потому что обычно в проектах вокруг конфигов есть ещё много обёрток и тулинга, а тут пока слишком молодой формат. Но поиграться в свободное время попробую.
https://www.trevorlasn.com/blog/pkl-apple-new-configuration-language
Pkl: Apple's New Configuration Language That Could Replace JSON and YAML
A deep dive into Pkl, Apple's configuration language that aims to replace JSON and YAML
🤔31👍12🥴6👏2❤1🎉1
Самозванцы, выгорание, границы
Видео выходного дня. Анастасия Калашникова — практикующий психолог, ведущая тренингов для айтишников, основательница проекта PSYvIT. Давно подписан на её канал, смотрю доклады и вебинары.
Есть старенький, но всё ещё актуальный доклад от Анастасии, где она глубоко погружается в темы «синдром самозванца» и «выгорание»: что это такое, как оно влияет на нашу психику и физиологию, что с этим делать. Полезно посмотреть, чтобы понять, есть ли вообще у вас этот синдром (а то сейчас почти у каждого либо синдром самозванца, либо выгорание), и в целом немножко прокачаться в осознанности. Я сейчас как раз столкнулся с ощущением «вот они все молодцы, а я сюда только пришёл, я точно хуже остальных» — доклад устаканил тревогу в голове.
https://www.youtube.com/watch?v=2BBumwv-jVY
Видео выходного дня. Анастасия Калашникова — практикующий психолог, ведущая тренингов для айтишников, основательница проекта PSYvIT. Давно подписан на её канал, смотрю доклады и вебинары.
Есть старенький, но всё ещё актуальный доклад от Анастасии, где она глубоко погружается в темы «синдром самозванца» и «выгорание»: что это такое, как оно влияет на нашу психику и физиологию, что с этим делать. Полезно посмотреть, чтобы понять, есть ли вообще у вас этот синдром (а то сейчас почти у каждого либо синдром самозванца, либо выгорание), и в целом немножко прокачаться в осознанности. Я сейчас как раз столкнулся с ощущением «вот они все молодцы, а я сюда только пришёл, я точно хуже остальных» — доклад устаканил тревогу в голове.
https://www.youtube.com/watch?v=2BBumwv-jVY
YouTube
Анастасия Калашникова "Самозванцы, выгорание, границы"
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
❤26👍13❤🔥5😐2
Отличия между поповерами и диалогами
Мы в подкасте часто обсуждаем, как в браузеры внедряются поповеры (атрибут
Зелл Лью написал заметку, которая помогает выбрать, с чем лучше работать. И с точки зрения доступности, и с точки зрения семантики.
https://css-tricks.com/clarifying-the-relationship-between-popovers-and-dialogs/
А у Ромы Ахмадуллина есть хороший доклад с обилием демок и большой сравнительной табличкой в конце, как всем этим пользоваться, что умеет каждый из подходов, можно ли уже применять в продакшене и не лучше ли просто своё кастомное использовать.
https://www.youtube.com/watch?v=x4ZCGfUZntk
Мы в подкасте часто обсуждаем, как в браузеры внедряются поповеры (атрибут
popover), которые могут заменить в каких-то случаях тултипы, а в каких-то — модальные окна. При этом есть dialog, который как будто умеет в похожую функциональность. Когда и как что применять — большой вопрос.Зелл Лью написал заметку, которая помогает выбрать, с чем лучше работать. И с точки зрения доступности, и с точки зрения семантики.
https://css-tricks.com/clarifying-the-relationship-between-popovers-and-dialogs/
А у Ромы Ахмадуллина есть хороший доклад с обилием демок и большой сравнительной табличкой в конце, как всем этим пользоваться, что умеет каждый из подходов, можно ли уже применять в продакшене и не лучше ли просто своё кастомное использовать.
https://www.youtube.com/watch?v=x4ZCGfUZntk
CSS-Tricks
Clarifying the Relationship Between Popovers and Dialogs | CSS-Tricks
Pop quiz! What's the difference between a Popover element and a Dialog element? The answer is not all that clear and is widely misunderstood, but Zell has a clear way to explain it so that you know which element to reach for in your work.
👍30❤10❤🔥4⚡4👏2💯1
У CSS новый лого
Пока в соц. сетях между адептами Tailwind и БЭМ идут очередные тёрки, а AI-стартапы учатся генерировать целые приложения в 2 клика, Адам Аргайл запустил на гитхабе голосование за новый логотип CSS. Началось это ещё в августе, а буквально вчера выбор был сделан.
Победил вариант
https://github.com/CSS-Next/logo.css
Пока в соц. сетях между адептами Tailwind и БЭМ идут очередные тёрки, а AI-стартапы учатся генерировать целые приложения в 2 клика, Адам Аргайл запустил на гитхабе голосование за новый логотип CSS. Началось это ещё в августе, а буквально вчера выбор был сделан.
Победил вариант
rebeccapurple, минималистичный логотип со скруглениями. Пора обновлять потихоньку картинки в слайдах для докладов.https://github.com/CSS-Next/logo.css
GitHub
GitHub - CSS-Next/logo.css
Contribute to CSS-Next/logo.css development by creating an account on GitHub.
❤47🥴29🎉11😐6🐳4👍3
Получить ширину скроллбара при помощи CSS
Короткий, но интересный лайфхак от Темани Афиф. Всё, что вам нужно, этопростой советский CSS Container,
https://css-tip.com/width-scrollbar/
Короткий, но интересный лайфхак от Темани Афиф. Всё, что вам нужно, это
@property и вычитание.https://css-tip.com/width-scrollbar/
Css-Tip
Get the scrollbar width using only CSS
A few lines of code to get the scrollbar width within a CSS variable
👍52❤🔥9❤2🔥2
overflow: clip
В CSS у
Ахмад Шадид рассказывает про то, как работают значения
Я с таким много раз сталкивался, когда нужно было всякие декоративные элементы прикрепить к блоку на всю ширину вьюпорта. Если ничего не прятать — появляется горизонтальный скролл. Если спрятать по горизонтали — декоративные элементы обрезались по вертикали (прятались под скролл). Приходилось выкручиваться псевдоэлементами, абсолютным позиционированием и трансформациями. А теперь можно делать всё это сильно проще.
https://ishadeed.com/article/overflow-clip/
В CSS у
overflow-x: hidden и overflow-y: hidden есть одна важная особенность: если вы таким образом прячете переполнение по одной оси, автоматически переполнение прячется и по другой (там значение становится auto). То есть нет удобной возможности спрятать только то, что вылазит по вертикали, например.Ахмад Шадид рассказывает про то, как работают значения
overflow-*: clip. Это как раз то поведение, которое нам нужно, чтобы что-то спрятать по одной оси, но по другой оси всё красиво показывалось. В статье есть демки, которые помогают лучше разобраться с особенностями работы свойства.Я с таким много раз сталкивался, когда нужно было всякие декоративные элементы прикрепить к блоку на всю ширину вьюпорта. Если ничего не прятать — появляется горизонтальный скролл. Если спрятать по горизонтали — декоративные элементы обрезались по вертикали (прятались под скролл). Приходилось выкручиваться псевдоэлементами, абсолютным позиционированием и трансформациями. А теперь можно делать всё это сильно проще.
https://ishadeed.com/article/overflow-clip/
Ishadeed
Overflow Clip
Learn how overflow: clip works in CSS.
🔥54👍23❤2❤🔥1
Ведём диалоги
Адам Аргайл поделился несколькими примерами, как сверстать красивые модалки-диалоги на сайте при помощи CSS. Есть примеры с обычной модалкой, модалкой-сайдбаром и корзиной покупок. Заодно можно посмотреть, как будет выглядеть CSS, если в нём начать использовать все его самые современные возможности, потому что Адам вовсю использует вложенность, слои, новые директивы и свежие свойства. Но на то он и деврел.
https://nerdy.dev/have-a-dialog
Адам Аргайл поделился несколькими примерами, как сверстать красивые модалки-диалоги на сайте при помощи CSS. Есть примеры с обычной модалкой, модалкой-сайдбаром и корзиной покупок. Заодно можно посмотреть, как будет выглядеть CSS, если в нём начать использовать все его самые современные возможности, потому что Адам вовсю использует вложенность, слои, новые директивы и свежие свойства. Но на то он и деврел.
https://nerdy.dev/have-a-dialog
nerdy.dev
Have a dialog
A few fancyish dialogs for you to steal.
🔥35👍10❤🔥4
Anchoreum
Люблю обучаться в игровой форме. Когда-то прокачивал навык вёрстки гридами при помощи CSS Grid Garden. А сейчас появилась похожая игрушка для практики с CSS Anchor Positioning. Работает в Chrome Canary, начал проходить — нравится.
https://anchoreum.com/
Люблю обучаться в игровой форме. Когда-то прокачивал навык вёрстки гридами при помощи CSS Grid Garden. А сейчас появилась похожая игрушка для практики с CSS Anchor Positioning. Работает в Chrome Canary, начал проходить — нравится.
https://anchoreum.com/
Anchoreum
A game for learning CSS anchor positioning
❤🔥46👍13❤1👏1
Полезный TypeScript для React
Хороший набор советов, как TS может помочь вам удобнее работать с React-приложениями. Якоб Пэрис делится готовыми типами и лайфхаками.
1.
2. Для
3.
4. Вместо того, чтобы перечислять все возможные значения полей типа, лучше делать
Больше советов — по ссылке.
https://www.jacobparis.com/content/react-ts
Хороший набор советов, как TS может помочь вам удобнее работать с React-приложениями. Якоб Пэрис делится готовыми типами и лайфхаками.
1.
ReturnType — очень удобный способ получить возвращаемый тип функции. Незаменимо для колбеков.2. Для
children лучше использовать ReactNode, который одновременно и ReactElement, и фрагмент, и строка, и число — что угодно, что для реакта может быть адекватным содержимым компонента.3.
React.ComponentProps поможет достать пропсы компонента, если нужно сделать над ним обёртку или сделать что-то совместимое. Выручает, когда библиотека компонентов под капотом использует компоненты из других библиотек.4. Вместо того, чтобы перечислять все возможные значения полей типа, лучше делать
union над разными вариациями типов. То есть не { verdict: 'ok' | 'not-ok'; isOk: boolean; }, а { verdict: 'ok'; isOk: true; } | { isOk: false; verdict: 'not-ok'; }. Так TS сможет вам помогать разруливать зашитую в типы логику, а не просто подсказывать все возможные значения полей в автокомплите.Больше советов — по ссылке.
https://www.jacobparis.com/content/react-ts
Jacob Paris
Essential Typenoscript for React
The minimum set of typenoscript knowledge to be effective at product development with React
❤52👍35😐8💯4❤🔥3
Верни true, чтобы выиграть
Забава на пятничный вечер. Простая игра, где нужно подобрать аргумент функции так, чтобы функция начала возвращать
https://alf.nu/ReturnTrue
Забава на пятничный вечер. Простая игра, где нужно подобрать аргумент функции так, чтобы функция начала возвращать
true. Вроде, супер-простая вещь, а вспомнить какие-то особенности JavaScript на многих уровнях придётся.https://alf.nu/ReturnTrue
🔥31❤7👏7👍3🤯3🎉3🏆2😐2🌚1💯1
Как квантовые компьютеры ломают интернет
Видео выходного дня. В нём обсуждается, как квантовые компьютеры могут взломать существующие системы шифрования, используя алгоритм Шора, в течение следующего десятилетия. Я не очень люблю такие «желтоватые» вбросы, но здесь неплохо объясняется, как работает современное шифрование на ключах, почему до квантовых компьютеров это считалось супер-надёжным методом и как алгоритм Шора всё может сломать. Но на самом деле в конце автор рассказывает и о том, что делают криптографы, чтобы всё-таки интернет не накрылся, так что слишком напрягаться не стоит.
https://www.youtube.com/watch?v=-UrdExQW0cs
Видео выходного дня. В нём обсуждается, как квантовые компьютеры могут взломать существующие системы шифрования, используя алгоритм Шора, в течение следующего десятилетия. Я не очень люблю такие «желтоватые» вбросы, но здесь неплохо объясняется, как работает современное шифрование на ключах, почему до квантовых компьютеров это считалось супер-надёжным методом и как алгоритм Шора всё может сломать. Но на самом деле в конце автор рассказывает и о том, что делают криптографы, чтобы всё-таки интернет не накрылся, так что слишком напрягаться не стоит.
https://www.youtube.com/watch?v=-UrdExQW0cs
YouTube
What makes quantum computers SO powerful?
A quantum computer in the next decade could crack the encryption our society relies on using Shor's Algorithm. Head to https://brilliant.org/veritasium to start your free 30-day trial, and the first 200 people get 20% off an annual premium subnoscription.
…
…
👍16🌚4❤🔥2❤2🥰1
Упражнения по curl
Имхо, умение «курлыкать» (дёргать ресуры при помощи `curl`) — супер-важный навык для любых разработчиков, которые работают с API. Джулия Эванс собрала 21 упражнение, которые помогут «набить руку». В первый заход разобраться в аргументах командной строки, во второй — сделать без документации, в третий — закрепить.
Статья старенькая, некоторые урлы надо будет заменить в списке, но уверен, что вы справитесь.
https://jvns.ca/blog/2019/08/27/curl-exercises/
Имхо, умение «курлыкать» (дёргать ресуры при помощи `curl`) — супер-важный навык для любых разработчиков, которые работают с API. Джулия Эванс собрала 21 упражнение, которые помогут «набить руку». В первый заход разобраться в аргументах командной строки, во второй — сделать без документации, в третий — закрепить.
Статья старенькая, некоторые урлы надо будет заменить в списке, но уверен, что вы справитесь.
https://jvns.ca/blog/2019/08/27/curl-exercises/
Julia Evans
curl exercises
Recently I’ve been interested in how people learn things. I was reading Kathy Sierra’s great book Badass: Making Users Awesome. It talks about the idea of deliberate practice.
❤66👍20🔥6😐3
Линтинг CSS при помощи ESLint
Свежее. В репозитории ESLint появился
Что умеет плагин сейчас:
- Находит дублирование импортов.
- Ругается на пустые блоки.
- Ищет невалидные `@`-правила и свойства.
И всё. Прям маловато. Мне не хватает правил по форматированию кода: единый подход к написанию цветов, контроль за единицами измерения и порядком селекторов по специфичности в коде. Ещё было бы хорошо добавить сортировку самих свойств в блоке (`stylelint-order`).
Буду ждать новых правил и маркетинговых бенчмарков, какой теперь линтер самый быстрый в мире для CSS. Но можете уже попробовать поиграться с существующим набором, если любите новое.
https://www.npmjs.com/package/@eslint/css
Свежее. В репозитории ESLint появился
ESLint CSS Language Plugin версии 0.1.0. Он пока супер-простой и вряд ли может стать заменой Stylelint прям сразу, но если у вас для CSS нет супер-жёстких правил в проекте, а вот количество зависимостей в проекте неприятное, то можно и попробовать мигрировать.Что умеет плагин сейчас:
- Находит дублирование импортов.
- Ругается на пустые блоки.
- Ищет невалидные `@`-правила и свойства.
И всё. Прям маловато. Мне не хватает правил по форматированию кода: единый подход к написанию цветов, контроль за единицами измерения и порядком селекторов по специфичности в коде. Ещё было бы хорошо добавить сортировку самих свойств в блоке (`stylelint-order`).
Буду ждать новых правил и маркетинговых бенчмарков, какой теперь линтер самый быстрый в мире для CSS. Но можете уже попробовать поиграться с существующим набором, если любите новое.
https://www.npmjs.com/package/@eslint/css
👍37🤨5❤4🤔3🙏1
Работа с куками — минное поле
Эйприл Кинг наткнулась на интересный баг, когда в веб-приложении замечательно работали куки, которые собирались по принципу
Эйприл решила разобраться, что есть в спецификациях, как на самом деле работают браузеры, как обрабатывают куки стандартные библиотеки популярных технологий — и там всё странно.
- В спецификациях в принципе не хватает определённости. По многим необходимым ограничениям прописанных правил просто нет. Причём для сервера и клиента существующие правила местами разные.
- Разные браузеры разрешают использовать внутри кук разные символы. Причём ближе всех к спецификации Safari, но исходный код посмотреть нельзя, поэтому приходится догадываться. Совпадения множества символов нет ни в одной паре движков.
- Ruby и Rust просто разрешают вообще все опасные символы, а Python и Go много что запрещают. При этом поведение разных библиотек разное — где-то символы игнорируются при парсинге, где-то вообще удаляются, где-то библиотека банально падает.
- А вот тут самое интересное. Эйприл делится в статье коротким JS-сниппетом, который кладёт часть функциональности в большом количестве популярных сервисов. Всё, что делает сниппет — пытается установить куку, которая очень плохо парсится разными библиотеками. В итоге ломается не только функциональность, завязанная на куки, но и в принципе обработка любых запросов от клиента.
Люблю такие расследования. Почитайте подробнее в статье, что за ломающие символы такие и как с ними можно пытаться бороться.
https://grayduck.mn/2024/11/21/handling-cookies-is-a-minefield/
Эйприл Кинг наткнулась на интересный баг, когда в веб-приложении замечательно работали куки, которые собирались по принципу
cookieNames=${JSON.stringify({ a: "some string" })}, но всё сломалось, когда на сервере начали использовать стандартную библиотеку Go для работы с куками.Эйприл решила разобраться, что есть в спецификациях, как на самом деле работают браузеры, как обрабатывают куки стандартные библиотеки популярных технологий — и там всё странно.
- В спецификациях в принципе не хватает определённости. По многим необходимым ограничениям прописанных правил просто нет. Причём для сервера и клиента существующие правила местами разные.
- Разные браузеры разрешают использовать внутри кук разные символы. Причём ближе всех к спецификации Safari, но исходный код посмотреть нельзя, поэтому приходится догадываться. Совпадения множества символов нет ни в одной паре движков.
- Ruby и Rust просто разрешают вообще все опасные символы, а Python и Go много что запрещают. При этом поведение разных библиотек разное — где-то символы игнорируются при парсинге, где-то вообще удаляются, где-то библиотека банально падает.
- А вот тут самое интересное. Эйприл делится в статье коротким JS-сниппетом, который кладёт часть функциональности в большом количестве популярных сервисов. Всё, что делает сниппет — пытается установить куку, которая очень плохо парсится разными библиотеками. В итоге ломается не только функциональность, завязанная на куки, но и в принципе обработка любых запросов от клиента.
Люблю такие расследования. Почитайте подробнее в статье, что за ломающие символы такие и как с ними можно пытаться бороться.
https://grayduck.mn/2024/11/21/handling-cookies-is-a-minefield/
grayduck.mn
April King — Handling Cookies is a Minefield
Discrepancies in how browsers and libraries handle HTTP cookies, and the problems caused by such things.
👍29🌚6❤2😁2
Дебаг производительности страницы средствами браузера
Читал на Tbilisi JS Meetup #3 доклад про то, как пользоваться вкладкой Performance в девтулзах Chrome. Уже после доклада понял, что я показал некоторые фишки раньше, чем был их официальный релиз в Chrome, потому что привык пользоваться «канареечной» версией браузера. Теперь делюсь и с вами.
https://www.youtube.com/watch?v=CBi-ycq3tuo
Читал на Tbilisi JS Meetup #3 доклад про то, как пользоваться вкладкой Performance в девтулзах Chrome. Уже после доклада понял, что я показал некоторые фишки раньше, чем был их официальный релиз в Chrome, потому что привык пользоваться «канареечной» версией браузера. Теперь делюсь и с вами.
https://www.youtube.com/watch?v=CBi-ycq3tuo
YouTube
Tbilisi JS Meetup #3 — «Debugging Page Performance with Browser Tools» — Mikita Dubko
Tbilisi JS community meetup, October 2024 🎃
Join us! https://news.1rj.ru/str/tbilisi_js_chat
The first time I opened the Performance tab in DevTools, I clicked on different elements, didn’t understand a thing, and closed it. But in fact, it’s a very useful tool with…
Join us! https://news.1rj.ru/str/tbilisi_js_chat
The first time I opened the Performance tab in DevTools, I clicked on different elements, didn’t understand a thing, and closed it. But in fact, it’s a very useful tool with…
🔥75👍17😁4❤2