🧙♀️ Little Red Riding Hood's Quest
Как-то я уже делилась сайтом, который стал Site of the Day на Awwwards 🏆
И вот — нашла ещё один очень клёвый проект! Зацените 👉
🔗 https://ai-quest.lusion.co/
Этот сайт тоже получил Site of the Day — 5 июля 2023 года
🔗 https://www.awwwards.com/sites/little-red-riding-hoods-quest
Это не просто сайт, а настоящий AI-powered мини-квест с потрясающей визуалкой, озвучкой и атмосферой.
🖼 Иллюстрации сгенерированы с помощью MidJourney + StableDiffusion
🗣 Озвучка — через ElevenLabs
💬 Сценарий — с помощью ChatGPT
Очень советую прогуляться по этой сказке 🌲✨
Как-то я уже делилась сайтом, который стал Site of the Day на Awwwards 🏆
И вот — нашла ещё один очень клёвый проект! Зацените 👉
🔗 https://ai-quest.lusion.co/
Этот сайт тоже получил Site of the Day — 5 июля 2023 года
🔗 https://www.awwwards.com/sites/little-red-riding-hoods-quest
Это не просто сайт, а настоящий AI-powered мини-квест с потрясающей визуалкой, озвучкой и атмосферой.
🖼 Иллюстрации сгенерированы с помощью MidJourney + StableDiffusion
🗣 Озвучка — через ElevenLabs
💬 Сценарий — с помощью ChatGPT
Очень советую прогуляться по этой сказке 🌲✨
Little Red Riding Hood
Little Red Riding Hood. A Lusion Labs AI Fairytale.
👍2
Генераторы в JavaScript
Ты тоже впервые узнал про генераторы, когда использовал redux-saga в проекте? 😅
И даже не подозревал, что генераторы — это встроенная фича самого JS?
Давай разбираться, что это такое и зачем они вообще нужны!
🔁 Генератор — это синтаксический сахар для создания итераторов, которые умеют не только
> 🧠 Генераторы появились в ES6. Их придумали, чтобы проще работать с ленивыми итерациями, асинхронным кодом и потоками данных. Они позволяют ставить выполнение на паузу и возобновлять — как будто у функции есть кнопка «продолжить» 🎮
📌 Как объявить генератор:
📌 Как использовать:
📌 yield* — делегирует выполнение другому генератору:
📍 Главное отличие от обычной функции — можно приостанавливать выполнение и продолжать потом через
📌 Также есть
📌
---
🧩 Попробуем решить задачку:
https://bigfrontend.dev/quiz/generator-return
Прежде чем посмотреть ответ выбери то что считаешь правильным в опросе ниже
1 // первый yield
2 // второй yield
4 // return вызывает finally
6 // значение из return()
undefined // генератор завершён
А если хочешь копнуть глубже — вот отличный разбор:
https://doka.guide/js/generators/
Ты тоже впервые узнал про генераторы, когда использовал redux-saga в проекте? 😅
И даже не подозревал, что генераторы — это встроенная фича самого JS?
Давай разбираться, что это такое и зачем они вообще нужны!
🔁 Генератор — это синтаксический сахар для создания итераторов, которые умеют не только
next(), но ещё и throw() и return().> 🧠 Генераторы появились в ES6. Их придумали, чтобы проще работать с ленивыми итерациями, асинхронным кодом и потоками данных. Они позволяют ставить выполнение на паузу и возобновлять — как будто у функции есть кнопка «продолжить» 🎮
📌 Как объявить генератор:
function* gen() {}
// можно и так:
function * gen() {}
function *gen() {}📌 Как использовать:
function* gen() {
yield 1
yield 2
}📌 yield* — делегирует выполнение другому генератору:
function* outer() {
yield* inner()
}📍 Главное отличие от обычной функции — можно приостанавливать выполнение и продолжать потом через
.next()!📌 Также есть
.return() — завершает генерацию📌
.throw() — завершает с ошибкой---
🧩 Попробуем решить задачку:
https://bigfrontend.dev/quiz/generator-return
function* gen() {
yield 1
try {
yield 2
yield 3
} finally {
yield 4
}
yield 5
}
const g = gen()
console.log(g.next().value)
console.log(g.next().value)
console.log(g.return(6).value)
console.log(g.next().value)
console.log(g.next().value)Прежде чем посмотреть ответ выбери то что считаешь правильным в опросе ниже
1 // первый yield
2 // второй yield
4 // return вызывает finally
6 // значение из return()
undefined // генератор завершён
А если хочешь копнуть глубже — вот отличный разбор:
https://doka.guide/js/generators/
bigfrontend.dev
121. Generator return() | BFE.dev - prepare for Front-End job interviews.
What does the code snippet to the right output by console.log?…
🔥4
Что будет в консоли?
Anonymous Quiz
15%
1 2 3 4 5 6
15%
1 2 4 undefined
8%
1 3 5 6 undefined
0%
1 2 3 4 5 6
62%
1 2 4 6 undefined
0%
1 5 2 4 6 undefined
😅 Заметила такой парадокс: именно фронтендеры чаще всего слабо знают алгоритмы — а то и вовсе не знают.
🧠 Поэтому вот вам два отличных ресурса для визуализации алгоритмов — чтобы подтянуть или освежить знания:
1. 📘 Визуализации от Университета Сан-Франциско
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
Классические алгоритмы: сортировки, деревья, графы и т.д.
2. 💻 Алгоритмический тренажёр с пошаговым исполнением кода на JavaScript, Java и C++
https://algorithm-visualizer.org/
Можно видеть, как именно работает код — по шагам!
📌 Сохраняй, чтобы не гуглить в следующий раз "как работает быстрая сортировка".
🧠 Поэтому вот вам два отличных ресурса для визуализации алгоритмов — чтобы подтянуть или освежить знания:
1. 📘 Визуализации от Университета Сан-Франциско
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
Классические алгоритмы: сортировки, деревья, графы и т.д.
2. 💻 Алгоритмический тренажёр с пошаговым исполнением кода на JavaScript, Java и C++
https://algorithm-visualizer.org/
Можно видеть, как именно работает код — по шагам!
📌 Сохраняй, чтобы не гуглить в следующий раз "как работает быстрая сортировка".
Algorithm Visualizer
Algorithm Visualizer is an interactive online platform that visualizes algorithms from code.
👍5❤2
🎯 Рубрика: Отвечаю на вопросы с собеседований
❓Почему margin между двумя блочными элементами не суммируется, а "схлопывается"?
📌 Потому что в CSS есть такое поведение, как collapsing margins — схлопывание вертикальных внешних отступов.
Когда margin-top одного элемента соприкасается с margin-bottom другого, они не складываются, а превращаются в один отступ, равный наибольшему из них.
➕ Что с отрицательными отступами?
Если есть и положительные, и отрицательные отступы, то итоговый размер схлопнутого отступа = наибольший положительный + наименьший отрицательный (по модулю).
Если все отступы отрицательные — берётся наименьший из них (то есть самый "глубокий" минус).
❓Почему margin между двумя блочными элементами не суммируется, а "схлопывается"?
📌 Потому что в CSS есть такое поведение, как collapsing margins — схлопывание вертикальных внешних отступов.
Когда margin-top одного элемента соприкасается с margin-bottom другого, они не складываются, а превращаются в один отступ, равный наибольшему из них.
➕ Что с отрицательными отступами?
Если есть и положительные, и отрицательные отступы, то итоговый размер схлопнутого отступа = наибольший положительный + наименьший отрицательный (по модулю).
Если все отступы отрицательные — берётся наименьший из них (то есть самый "глубокий" минус).
🔥9
🧾 HTTP Code Cheatsheet
По опыту знаю, что большинство разработчиков отлично знают такие HTTP-коды:
Но на самом деле их гораздо больше 😎
📘 Нашла отличную статью на английском:
https://medium.com/@onix_react/http-code-cheatsheet-26c129a3c9a9
📙 И полезный ресурс на русском языке:
https://restapitutorial.ru/httpstatuscodes/
На сайте также можно почитать про проектирование REST API.
По опыту знаю, что большинство разработчиков отлично знают такие HTTP-коды:
200, 201, 204, 301, 400, 401, 403, 404, 429, 500, 502, 503.Но на самом деле их гораздо больше 😎
📘 Нашла отличную статью на английском:
https://medium.com/@onix_react/http-code-cheatsheet-26c129a3c9a9
📙 И полезный ресурс на русском языке:
https://restapitutorial.ru/httpstatuscodes/
На сайте также можно почитать про проектирование REST API.
Medium
HTTP Code Cheatsheet
HTTP status codes are standardized three-digit responses sent by a server to indicate the result of a client’s request. These codes help…
🔥3
Всем привет!
Давайте подведем итоги за последние три месяца — что появилось в этом канале 👇
📌 ДАЙДЖЕСТ: МАЙ & ИЮНЬ & ИЮЛЬ
🎯От меня:
Советы как преуспеть разработчику - https://news.1rj.ru/str/frontenddevelopernews/29
Как мотивировать команду - https://news.1rj.ru/str/frontenddevelopernews/31
React-разминка - https://news.1rj.ru/str/frontenddevelopernews/32
А нужно ли вообще делить разработчиков на frontend и backend? - https://news.1rj.ru/str/frontenddevelopernews/35
Баг при использовании объекта URL - https://news.1rj.ru/str/frontenddevelopernews/44
Debounce vs Throttle: в чём разница? - https://news.1rj.ru/str/frontenddevelopernews/49
Что такое Favicon? - https://news.1rj.ru/str/frontenddevelopernews/52
Генераторы в JavaScript - https://news.1rj.ru/str/frontenddevelopernews/55
Почему margin между двумя блочными элементами не суммируется, а "схлопывается"? - https://news.1rj.ru/str/frontenddevelopernews/58
🗺 Frontend-новости:
ESLint теперь умеет проверять HTML! - https://news.1rj.ru/str/frontenddevelopernews/34
21 мая вышел свежий релиз Bun - https://news.1rj.ru/str/frontenddevelopernews/37
Google I/O 2025 - https://news.1rj.ru/str/frontenddevelopernews/38
v1.0.0 SDK от Google Gen AI для TypeScript/JavaScript! - https://news.1rj.ru/str/frontenddevelopernews/41
ECMAScript 2025 утвержден! - https://news.1rj.ru/str/frontenddevelopernews/50
🌐 Развлечения:
IGLOO INC - https://news.1rj.ru/str/frontenddevelopernews/36
You're not a front-end developer until you've... - https://news.1rj.ru/str/frontenddevelopernews/48
How well do you know JavaScript's Date class? - https://news.1rj.ru/str/frontenddevelopernews/53
Little Red Riding Hood's Quest - https://news.1rj.ru/str/frontenddevelopernews/54
📚 Статьи и видео:
Нефункциональные требования - https://news.1rj.ru/str/frontenddevelopernews/28
gRPC против REST: Как выбрать лучший подход к проектированию API - https://news.1rj.ru/str/frontenddevelopernews/30
Надёжное обнаружение блокировки third-party cookies в 2025 году - https://news.1rj.ru/str/frontenddevelopernews/43
Mastering Creational Design Patterns in JavaScript: экспертный гайд - https://news.1rj.ru/str/frontenddevelopernews/45
Node.js 24: Your Next Big Frontend Upgrade? - https://news.1rj.ru/str/frontenddevelopernews/51
Ресурсы для визуализации алгоритмов - https://news.1rj.ru/str/frontenddevelopernews/57
HTTP Code Cheatsheet - https://news.1rj.ru/str/frontenddevelopernews/60
#дайджест
Давайте подведем итоги за последние три месяца — что появилось в этом канале 👇
📌 ДАЙДЖЕСТ: МАЙ & ИЮНЬ & ИЮЛЬ
🎯От меня:
Советы как преуспеть разработчику - https://news.1rj.ru/str/frontenddevelopernews/29
Как мотивировать команду - https://news.1rj.ru/str/frontenddevelopernews/31
React-разминка - https://news.1rj.ru/str/frontenddevelopernews/32
А нужно ли вообще делить разработчиков на frontend и backend? - https://news.1rj.ru/str/frontenddevelopernews/35
Баг при использовании объекта URL - https://news.1rj.ru/str/frontenddevelopernews/44
Debounce vs Throttle: в чём разница? - https://news.1rj.ru/str/frontenddevelopernews/49
Что такое Favicon? - https://news.1rj.ru/str/frontenddevelopernews/52
Генераторы в JavaScript - https://news.1rj.ru/str/frontenddevelopernews/55
Почему margin между двумя блочными элементами не суммируется, а "схлопывается"? - https://news.1rj.ru/str/frontenddevelopernews/58
🗺 Frontend-новости:
ESLint теперь умеет проверять HTML! - https://news.1rj.ru/str/frontenddevelopernews/34
21 мая вышел свежий релиз Bun - https://news.1rj.ru/str/frontenddevelopernews/37
Google I/O 2025 - https://news.1rj.ru/str/frontenddevelopernews/38
v1.0.0 SDK от Google Gen AI для TypeScript/JavaScript! - https://news.1rj.ru/str/frontenddevelopernews/41
ECMAScript 2025 утвержден! - https://news.1rj.ru/str/frontenddevelopernews/50
🌐 Развлечения:
IGLOO INC - https://news.1rj.ru/str/frontenddevelopernews/36
You're not a front-end developer until you've... - https://news.1rj.ru/str/frontenddevelopernews/48
How well do you know JavaScript's Date class? - https://news.1rj.ru/str/frontenddevelopernews/53
Little Red Riding Hood's Quest - https://news.1rj.ru/str/frontenddevelopernews/54
📚 Статьи и видео:
Нефункциональные требования - https://news.1rj.ru/str/frontenddevelopernews/28
gRPC против REST: Как выбрать лучший подход к проектированию API - https://news.1rj.ru/str/frontenddevelopernews/30
Надёжное обнаружение блокировки third-party cookies в 2025 году - https://news.1rj.ru/str/frontenddevelopernews/43
Mastering Creational Design Patterns in JavaScript: экспертный гайд - https://news.1rj.ru/str/frontenddevelopernews/45
Node.js 24: Your Next Big Frontend Upgrade? - https://news.1rj.ru/str/frontenddevelopernews/51
Ресурсы для визуализации алгоритмов - https://news.1rj.ru/str/frontenddevelopernews/57
HTTP Code Cheatsheet - https://news.1rj.ru/str/frontenddevelopernews/60
#дайджест
Telegram
Frontend Developer
Сегодня хочу поделиться мыслями:
какие действия, по моему мнению, помогают разработчику преуспеть в этом быстро меняющемся мире?
Вот мой топ:
1. 📖 Регулярно читать — статьи, блоги, посты, книги. Развивать насмотренность и расширять кругозор.
2. 📺 Смотреть…
какие действия, по моему мнению, помогают разработчику преуспеть в этом быстро меняющемся мире?
Вот мой топ:
1. 📖 Регулярно читать — статьи, блоги, посты, книги. Развивать насмотренность и расширять кругозор.
2. 📺 Смотреть…
🔥7
🚀 Frontend Performance Checklist
📋 Нашла полезный чеклист по оптимизации фронтенда, где собраны способы ускорения работы сайта с точки зрения:
- HTML
- CSS
- JavaScript
- Обработки изображений
- Видео
- Шрифтов
- Хостинга / сервера
🔗 Статья: https://crystallize.com/blog/frontend-performance-checklist
📋 Нашла полезный чеклист по оптимизации фронтенда, где собраны способы ускорения работы сайта с точки зрения:
- HTML
- CSS
- JavaScript
- Обработки изображений
- Видео
- Шрифтов
- Хостинга / сервера
🔗 Статья: https://crystallize.com/blog/frontend-performance-checklist
Crystallize
Frontend Performance Checklist For 2025
In the speed-obsessed world of today, better performance comes with serious business gains. This frontend performance checklist is a cumulative list of items that we at Crystallize found important in 2025 when creating a Superfast web application.
👍4🔥2
🔍 Почему 0.1 + 0.2 !== 0.3 в JavaScript?
Всем привет! Сегодня разберёмся раз и навсегда, почему в JavaScript:
Кажется, что это баг в JS, но на самом деле — нет. JavaScript использует формат IEEE 754 double precision — это 64-битное представление чисел с плавающей точкой.
---
💡 Почему возникает ошибка?
Некоторые десятичные дроби, например
---
📐 Как `0.1` представляется в двоичной системе?
Чтобы перевести дробную часть числа в двоичную систему, мы умножаем её на 2 и фиксируем целую часть результата. Вот шаги:
🔁 В итоге мы получаем бесконечную периодическую двоичную дробь:
---
📦 Далее сдвигаем на 4 позиции. Почему?
Чтобы сохранить число в формате IEEE 754, его нужно записать в нормализованной форме:
Мы сдвигаем запятую так, чтобы первая единица оказалась перед точкой:
То есть сдвигаем на 4 позиции влево, и поэтому экспонента = -4. Это и есть часть формата IEEE 754.
---
🧮 Что делает JavaScript?
Он берёт ближайшее возможное двоичное значение, которое можно представить в 64 битах:
Это — ровно 52 бита точности, и последняя цифра округлена вверх.
Теперь, если пересчитать это значение обратно в десятичную форму, получится:
То есть
---
📌 То же самое происходит с `0.2` — оно представляется как:
Поэтому при сложении
А
---
Собственно говоря вот и вся магия 💫
📚 Кстати, про достоверные источники...
В универе на магистратуре в Англии нас всегда учили что все источники информации должны быть проверенными и надежными! Вот например Wikipedia вообще НЕ надежный источник информации 😂
И нам приходилось искать все эти проверенные статьи и мы гуглили не просто в Гугле а на https://scholar.google.com
Можете попробовать поискать информацию на https://scholar.google.com и вам выйдут только академические статьи.
Всем привет! Сегодня разберёмся раз и навсегда, почему в JavaScript:
0.1 + 0.2 === 0.30000000000000004 // true
Кажется, что это баг в JS, но на самом деле — нет. JavaScript использует формат IEEE 754 double precision — это 64-битное представление чисел с плавающей точкой.
---
💡 Почему возникает ошибка?
Некоторые десятичные дроби, например
0.1 и 0.2, невозможно точно представить в двоичной системе. Они превращаются в бесконечные двоичные дроби.---
📐 Как `0.1` представляется в двоичной системе?
Чтобы перевести дробную часть числа в двоичную систему, мы умножаем её на 2 и фиксируем целую часть результата. Вот шаги:
0.1 * 2 = 0.2 → 0
0.2 * 2 = 0.4 → 0
0.4 * 2 = 0.8 → 0
0.8 * 2 = 1.6 → 1
0.6 * 2 = 1.2 → 1
0.2 * 2 = 0.4 → 0
0.4 * 2 = 0.8 → 0
0.8 * 2 = 1.6 → 1
0.6 * 2 = 1.2 → 1
... и так далее
🔁 В итоге мы получаем бесконечную периодическую двоичную дробь:
0.1₁₀ = 0.00011001100110011001100...₂
---
📦 Далее сдвигаем на 4 позиции. Почему?
Чтобы сохранить число в формате IEEE 754, его нужно записать в нормализованной форме:
1.значащие_биты × 2^экспонента
Мы сдвигаем запятую так, чтобы первая единица оказалась перед точкой:
0.0001 10011001100110011...
↓
1.10011001100110011... × 2⁻⁴
То есть сдвигаем на 4 позиции влево, и поэтому экспонента = -4. Это и есть часть формата IEEE 754.
---
🧮 Что делает JavaScript?
Он берёт ближайшее возможное двоичное значение, которое можно представить в 64 битах:
1.1001100110011001100110011001100110011001100110011010 × 2⁻⁴
Это — ровно 52 бита точности, и последняя цифра округлена вверх.
Теперь, если пересчитать это значение обратно в десятичную форму, получится:
0.1000000000000000055511151231257827021181583404541015625
То есть
0.1 в JS — это не ровно 0.1, а немного больше. Проверка:console.log(0.1.toPrecision(60))
// → '0.1000000000000000055511151231257827021181583404541015625'
---
📌 То же самое происходит с `0.2` — оно представляется как:
0.200000000000000011102230246251565404236316680908203125
Поэтому при сложении
0.1 + 0.2 мы получаем:≈ 0.3000000000000000444...
А
0.3 в памяти — это другое приближённое значение, поэтому:0.1 + 0.2 === 0.3 // false
---
Собственно говоря вот и вся магия 💫
📚 Кстати, про достоверные источники...
В универе на магистратуре в Англии нас всегда учили что все источники информации должны быть проверенными и надежными! Вот например Wikipedia вообще НЕ надежный источник информации 😂
И нам приходилось искать все эти проверенные статьи и мы гуглили не просто в Гугле а на https://scholar.google.com
Можете попробовать поискать информацию на https://scholar.google.com и вам выйдут только академические статьи.
Google
Google Scholar
Google Scholar provides a simple way to broadly search for scholarly literature. Search across a wide variety of disciplines and sources: articles, theses, books, abstracts and court opinions.
👍7❤1
🧩 React-хук для обработки событий клавиатуры
Возможно, вы уже видели этот хук — со мной им поделился коллега, и выглядит он действительно удобно 👇
👉 https://github.com/ArturJS/use-key-match
Возможно, вы уже видели этот хук — со мной им поделился коллега, и выглядит он действительно удобно 👇
👉 https://github.com/ArturJS/use-key-match
GitHub
GitHub - ArturJS/use-key-match: React hook for matching keyboard events with callbacks
React hook for matching keyboard events with callbacks - ArturJS/use-key-match
❤2🤝2
Всем привет!
Недавно наткнулась на эту статью:
https://www.totaltypenoscript.com/how-to-create-an-npm-package
Решила пробежаться глазами, чтобы понять, что там есть интересного. И почему-то меня триггернули пункты 2.1 и 3.2.
Автор статьи предлагает вручную создать файлы
Не знаю, как у вас, но меня прям передёрнуло 🙃 Почему бы не предложить создать их командами:
Так они сразу создадутся с конфигами по умолчанию, и уже потом можно внести нужные изменения, объясняя при необходимости. А не просто копировать и вставлять код вручную. Понимаю что для своих пет проектов это удобнее и не нужно вносить кучу правок, но это же обучающий гайд.
А вы как думаете, стоит ли в таких гайдах предлагать команды или ручное создание файлов — норм вариант?
P.S. Сорри за душноту и занудство, но просто не смогла пройти мимо 😅
Недавно наткнулась на эту статью:
https://www.totaltypenoscript.com/how-to-create-an-npm-package
Решила пробежаться глазами, чтобы понять, что там есть интересного. И почему-то меня триггернули пункты 2.1 и 3.2.
Автор статьи предлагает вручную создать файлы
package.json и tsconfig.json.Не знаю, как у вас, но меня прям передёрнуло 🙃 Почему бы не предложить создать их командами:
npm init
tsc --init
Так они сразу создадутся с конфигами по умолчанию, и уже потом можно внести нужные изменения, объясняя при необходимости. А не просто копировать и вставлять код вручную. Понимаю что для своих пет проектов это удобнее и не нужно вносить кучу правок, но это же обучающий гайд.
А вы как думаете, стоит ли в таких гайдах предлагать команды или ручное создание файлов — норм вариант?
P.S. Сорри за душноту и занудство, но просто не смогла пройти мимо 😅
Total TypeScript
How To Create An NPM Package
Learn how to publish a package to npm with a complete setup including, TypeScript, Prettier, Vitest, GitHub Actions, and versioning with Changesets.
👍1
Announcing TypeScript 5.9
В продолжение предыдущего поста 🙂
Вышла новая версия TypeScript, и одной из фич стали изменения в команде
Теперь она создаёт более лаконичный и продуманный
Ещё одна интересная новинка — отложенный импорт с помощью
Это помогает уменьшить время начальной загрузки приложения и подгружать код только тогда, когда он реально нужен.
Подробнее: https://devblogs.microsoft.com/typenoscript/announcing-typenoscript-5-9/
В продолжение предыдущего поста 🙂
Вышла новая версия TypeScript, и одной из фич стали изменения в команде
tsc --init.Теперь она создаёт более лаконичный и продуманный
tsconfig.json — без горы комментариев и неиспользуемых опций. В файле остаются только действительно нужные настройки, плюс есть ссылка на документацию и автодополнение.Ещё одна интересная новинка — отложенный импорт с помощью
import defer:import defer * as feature from "./some-feature.js";
// Модуль загрузится только при первом обращении к экспорту
feature.run();
Это помогает уменьшить время начальной загрузки приложения и подгружать код только тогда, когда он реально нужен.
Подробнее: https://devblogs.microsoft.com/typenoscript/announcing-typenoscript-5-9/
Microsoft News
Announcing TypeScript 5.9
Today we are excited to announce the release of TypeScript 5.9! If you’re not familiar with TypeScript, it’s a language that builds on JavaScript by adding syntax for types. With types, TypeScript makes it possible to check your code to avoid bugs ahead of…
👍5
State of CSS 2025
Вышли результаты State of CSS 2025 🥳 https://2025.stateofcss.com/en-US
Мне была особенно интересна часть про инструменты https://2025.stateofcss.com/en-US/other-tools
И вот что мы видим :
CSS Frameworks
* Tailwind снова на первом месте. Его чаще выбирают разработчики с меньшим опытом, а более опытные предпочитают кастомные или внутренние решения.
* При этом почти половина участников (47%) либо вообще не используют фреймворки, либо пропустили этот вопрос.
CSS-in-JS
* CSS Modules со своим «лёгким» подходом всё ещё в топе.
* Styled Components по-прежнему уверенно держит вторую позицию.
Pre-/Post-processors
* Sass остаётся №1 среди препроцессоров.
* Но в целом их популярность снижается — CSS всё активнее перенимает их возможности.
Вышли результаты State of CSS 2025 🥳 https://2025.stateofcss.com/en-US
Мне была особенно интересна часть про инструменты https://2025.stateofcss.com/en-US/other-tools
И вот что мы видим :
CSS Frameworks
* Tailwind снова на первом месте. Его чаще выбирают разработчики с меньшим опытом, а более опытные предпочитают кастомные или внутренние решения.
* При этом почти половина участников (47%) либо вообще не используют фреймворки, либо пропустили этот вопрос.
CSS-in-JS
* CSS Modules со своим «лёгким» подходом всё ещё в топе.
* Styled Components по-прежнему уверенно держит вторую позицию.
Pre-/Post-processors
* Sass остаётся №1 среди препроцессоров.
* Но в целом их популярность снижается — CSS всё активнее перенимает их возможности.
Stateofcss
State of CSS 2025
👍5
CSS-Questions
Смотрите, какой классный сайт с вопросами по CSS https://css-questions.com/
Собрано 150+ вопросов — от базовых до продвинутых тем.
Здесь найдётся что-то полезное как для новичков, так и для опытных разработчиков.
А ещё можно прокачать навыки на практических заданиях по разным аспектам CSS.
Готовы проверить себя? 💡
Смотрите, какой классный сайт с вопросами по CSS https://css-questions.com/
Собрано 150+ вопросов — от базовых до продвинутых тем.
Здесь найдётся что-то полезное как для новичков, так и для опытных разработчиков.
А ещё можно прокачать навыки на практических заданиях по разным аспектам CSS.
Готовы проверить себя? 💡
🔥3
A Few Things About the Anchor Element’s href You Might Not Have Known
Обычно то, что кажется супер простым, просто пролистывается и не читается 🙂
Но я уже много раз говорила: сила — в базовых вещах ⚡️
На днях наткнулась на статью с таким названием:
«Несколько фактов о значении href у тега `<a>`, которых вы могли не знать»
и решила посмотреть, что там интересного 👀
Вот что я нашла:
* `href="#"` — скроллит страницу в начало документа.
* `href=""` — перезагружает текущую страницу, сохраняя строку запроса (query string), но удаляя hash.
Примеры:
* `href="."` — перезагружает текущую страницу, убирая и query string, и hash (если они есть).
Примеры:
* `href="?"` — тоже перезагружает страницу, убирая query и hash, но оставляет
Примеры:
* `href="data:"` — можно делать ссылки на data URL. Например:
* `href="video.mp4#t=10,20"` — медиa-фрагменты. Можно указывать конкретный отрезок видео или аудио.
В этом примере видео начнётся с 10-й секунды и остановится на 20-й.
---
Было ли среди этого что-то, о чём вы не знали? 🤔
👉 https://blog.jim-nielsen.com/2025/href-value-possibilities/
Обычно то, что кажется супер простым, просто пролистывается и не читается 🙂
Но я уже много раз говорила: сила — в базовых вещах ⚡️
На днях наткнулась на статью с таким названием:
«Несколько фактов о значении href у тега `<a>`, которых вы могли не знать»
и решила посмотреть, что там интересного 👀
Вот что я нашла:
* `href="#"` — скроллит страницу в начало документа.
* `href=""` — перезагружает текущую страницу, сохраняя строку запроса (query string), но удаляя hash.
Примеры:
URL Преобразуется в
/path/ /path/
/path/#foo /path/
/path/?id=foo /path/?id=foo
/path/?id=foo#bar /path/?id=foo
* `href="."` — перезагружает текущую страницу, убирая и query string, и hash (если они есть).
Примеры:
URL Преобразуется в
/path /
/path#foo /
/path?id=foo /
/path/ /path/
/path/#foo /path/
/path/?id=foo /path/
/path/index.html /path/
* `href="?"` — тоже перезагружает страницу, убирая query и hash, но оставляет
?.Примеры:
URL Преобразуется в
/path /path?
/path#foo /path?
/path?id=foo /path?
/path?id=foo#bar /path?
/index.html /index.html?
* `href="data:"` — можно делать ссылки на data URL. Например:
<a href="data:text/plain,hello world">
View plain text data URL
</a>
* `href="video.mp4#t=10,20"` — медиa-фрагменты. Можно указывать конкретный отрезок видео или аудио.
В этом примере видео начнётся с 10-й секунды и остановится на 20-й.
---
Было ли среди этого что-то, о чём вы не знали? 🤔
👉 https://blog.jim-nielsen.com/2025/href-value-possibilities/
Jim Nielsen’s Blog
A Few Things About the Anchor Element’s href You Might Not Have Known
I’ve written previously about reloading a document using only HTML but that got me thinking: What are all the values you can put in an anchor tag’s href attribute?
❤5
🎉 Chrome исполнилось 17 лет!
В 2008 году Chrome появился как эксперимент с упором на скорость, безопасность, стабильность и простоту. Сегодня это самый популярный браузер в мире, и его эволюция впечатляет 👇
🔹 Скорость
Старт с движка V8, который делал JavaScript в разы быстрее конкурентов. Сейчас Chrome — лидер в тесте Speedometer 3.1 (главный бенчмарк скорости браузеров), оптимизирован для мобильных устройств и экономит пользователям миллионы часов загрузки страниц.
🔹 Безопасность
С первых версий — песочница вкладок, автообновления, Site Isolation. Позже — Rust-компоненты, защита от фишинга с помощью ML, менеджер паролей и повсеместный переход на HTTPS.
🔹 Стабильность
Благодаря мультипроцессной архитектуре сбой одной вкладки не «роняет» браузер. А технологии вроде Discarding, PartitionAlloc и фоновые обновления делают Chrome надёжным даже при сотнях открытых вкладок.
🔹 Простота
Минимализм с самого старта: единый Omnibox (адрес + поиск в одном поле) и минимум интерфейса вокруг контента. Со временем появились удобства — автозаполнение, менеджер паролей, DevTools с AI-подсказками. Новые функции добавляются аккуратно, сохраняя простоту.
✨ Сегодня Chrome — это результат многолетней работы над удобным и безопасным интернетом. А впереди — AI-возможности и новые стандарты для открытого веба.
Читать полную статью Addy Osmani:
👉 https://addyosmani.com/blog/chrome-17th/
В 2008 году Chrome появился как эксперимент с упором на скорость, безопасность, стабильность и простоту. Сегодня это самый популярный браузер в мире, и его эволюция впечатляет 👇
🔹 Скорость
Старт с движка V8, который делал JavaScript в разы быстрее конкурентов. Сейчас Chrome — лидер в тесте Speedometer 3.1 (главный бенчмарк скорости браузеров), оптимизирован для мобильных устройств и экономит пользователям миллионы часов загрузки страниц.
🔹 Безопасность
С первых версий — песочница вкладок, автообновления, Site Isolation. Позже — Rust-компоненты, защита от фишинга с помощью ML, менеджер паролей и повсеместный переход на HTTPS.
🔹 Стабильность
Благодаря мультипроцессной архитектуре сбой одной вкладки не «роняет» браузер. А технологии вроде Discarding, PartitionAlloc и фоновые обновления делают Chrome надёжным даже при сотнях открытых вкладок.
🔹 Простота
Минимализм с самого старта: единый Omnibox (адрес + поиск в одном поле) и минимум интерфейса вокруг контента. Со временем появились удобства — автозаполнение, менеджер паролей, DevTools с AI-подсказками. Новые функции добавляются аккуратно, сохраняя простоту.
✨ Сегодня Chrome — это результат многолетней работы над удобным и безопасным интернетом. А впереди — AI-возможности и новые стандарты для открытого веба.
Читать полную статью Addy Osmani:
👉 https://addyosmani.com/blog/chrome-17th/
Addyosmani
Google Chrome at 17 - A history of our browser
Chrome turns 17 this week, and it feels like a good time to reflect on how far we have come in terms of Chromes guiding principles
🔥5❤1