🔍 Почему 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
🎯 CSS: выравниваем по-умному, а не методом тыка
Статья "The Fundamentals of CSS Alignment" (4 сентября 2025) объясняет, как работают свойства выравнивания в Grid, Flexbox и блочном режиме — и почему больше логики, а не путаницы.
Основные тезисы:
• Есть два уровня: контейнер (content) и элемент (item). Удобные шорткаты:
• В Grid-контейнере элементы выравниваются внутри ячеек или областей, а
• В Flexbox выравнивание по горизонтали работает группой (через
• Для абсолютных элементов (
• Чтобы избежать проблем с overflow (например, недоступной областью), используйте
Читать подробнее: https://css-tip.com/explore/alignment/
Статья "The Fundamentals of CSS Alignment" (4 сентября 2025) объясняет, как работают свойства выравнивания в Grid, Flexbox и блочном режиме — и почему больше логики, а не путаницы.
Основные тезисы:
• Есть два уровня: контейнер (content) и элемент (item). Удобные шорткаты:
place-content, place-items, place-self. • В Grid-контейнере элементы выравниваются внутри ячеек или областей, а
1fr может поглотить всё свободное пространство и заблокировать выравнивание. • В Flexbox выравнивание по горизонтали работает группой (через
justify-content). • Для абсолютных элементов (
absolute) работает только place-self. • Чтобы избежать проблем с overflow (например, недоступной областью), используйте
safe, например justify-self: safe center.Читать подробнее: https://css-tip.com/explore/alignment/
Css-Tip
The Fundamentals of CSS Alignment
This deep dive covers everything you need to know about CSS alignment. It's time to stop doing trial and error and finally understand how everything works!
❤1
🎉 Наконец-то: безопасные методы работы с массивами в JavaScript
ES2023 представил версии привычных методов для массивов, которые не мутируют исходные данные — идеально для React и функционального подхода.
Сравнение:
•
•
•
Подробнее в статье: https://allthingssmitty.com/2025/09/08/finally-safe-array-methods-in-javanoscript/
ES2023 представил версии привычных методов для массивов, которые не мутируют исходные данные — идеально для React и функционального подхода.
Сравнение:
•
toSorted() вместо sort() — новый отсортированный массив. •
toReversed() вместо reverse() — новый перевёрнутый массив. •
toSpliced() вместо splice() — новый результат без изменений оригинала.Подробнее в статье: https://allthingssmitty.com/2025/09/08/finally-safe-array-methods-in-javanoscript/
Allthingssmitty
Finally, safe array methods in JavaScript - Matt Smith
Learn how to safely sort, reverse, and splice arrays in JavaScript using ES2023 methods toSorted(), toReversed(), and toSpliced(). Perfect for React and modern JS development.
🔥5
🚨 Атака на npm: компрометация debug, chalk и ещё 16 популярных пакетов
По данным Aikido Security, начиная с 8 сентября 2025, 13:16 UTC, в npm были загружены злонамеренные версии ряда широко используемых пакетов. В сумме они набирают более 2 миллиардов загрузок в неделю.
---
Что произошло:
* Были обновлены 18 пакетов (включая
* Этот код тихо перехватывает транзакции криптовалюты и действия web3, вмешивается в
* Пакеты были доступны скомпрометированными примерно 2–3 часа до того, как часть из них была удалена или заменена чистыми версиями.
---
Почему это опасно:
* Пострадать могут приложения, в которых запускались клиентские (браузерные) сборки с этими пакетами, особенно те, что работают с криптовалютами/web3.
* Даже если вы явно не используете
---
Что делать, если ты мог быть затронут:
1. Проверь
2. Обнови на безопасные версии (версии до атаки) или используйте версии, подтверждённые как безопасные.
3. Пересобери клиент-bundle’ы, очисти кеши на CDN и локальные кеши сборки — если они содержат зловредный код.
4. Мониторьте журналы и телеметрию, если приложение работает с web3 — поиск необычного поведения wallet API.
---
🧭 Уроки:
* Даже популярные, проверенные пакеты могут быть атакованы через phishing и компрометацию аккаунта.
* Один сбой безопасности может распространиться по экосистеме через транзитивные зависимости.
* Статическая защита + внимательность к версии + контроль зависимостей + своевременные обновления критичны.
---
Читать оригинал: https://www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised
По данным Aikido Security, начиная с 8 сентября 2025, 13:16 UTC, в npm были загружены злонамеренные версии ряда широко используемых пакетов. В сумме они набирают более 2 миллиардов загрузок в неделю.
---
Что произошло:
* Были обновлены 18 пакетов (включая
debug, chalk, ansi-styles, strip-ansi, supports-color и др.) — внесён обфусцированный код, который выполняется в браузере.* Этот код тихо перехватывает транзакции криптовалюты и действия web3, вмешивается в
window.ethereum и переписывает адреса получателей на адреса, контролируемые злоумышленниками.* Пакеты были доступны скомпрометированными примерно 2–3 часа до того, как часть из них была удалена или заменена чистыми версиями.
---
Почему это опасно:
* Пострадать могут приложения, в которых запускались клиентские (браузерные) сборки с этими пакетами, особенно те, что работают с криптовалютами/web3.
* Даже если вы явно не используете
debug или chalk, пострадать можно транзитивно — через зависимости.---
Что делать, если ты мог быть затронут:
1. Проверь
package.json, package-lock.json / yarn.lock — ищите версии пакетов, которые были скомпрометированы. 2. Обнови на безопасные версии (версии до атаки) или используйте версии, подтверждённые как безопасные.
3. Пересобери клиент-bundle’ы, очисти кеши на CDN и локальные кеши сборки — если они содержат зловредный код.
4. Мониторьте журналы и телеметрию, если приложение работает с web3 — поиск необычного поведения wallet API.
---
🧭 Уроки:
* Даже популярные, проверенные пакеты могут быть атакованы через phishing и компрометацию аккаунта.
* Один сбой безопасности может распространиться по экосистеме через транзитивные зависимости.
* Статическая защита + внимательность к версии + контроль зависимостей + своевременные обновления критичны.
---
Читать оригинал: https://www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised
www.aikido.dev
npm debug and chalk packages compromised
The popular packages debug and chalk on npm have been compromised with malicious code
🔥3😱3👍1
⚡️ В React Router появились middleware!
В версии 7.9.0 добавили стабильную поддержку middleware 🎉. Теперь можно:
* 🔑 Проверять авторизацию в родительском маршруте и останавливать выполнение дочерних
* 📡 Передавать данные из middleware в контекст, доступный в
* 🛠 Реализовать общую логику (логирование, редиректы, заголовки) без дублирования
Пример авторизации через middleware:
👉 Подробнее: https://remix.run/blog/middleware
👉 Документация: https://reactrouter.com/how-to/middleware
В версии 7.9.0 добавили стабильную поддержку middleware 🎉. Теперь можно:
* 🔑 Проверять авторизацию в родительском маршруте и останавливать выполнение дочерних
loader* 📡 Передавать данные из middleware в контекст, доступный в
loader и маршрутах* 🛠 Реализовать общую логику (логирование, редиректы, заголовки) без дублирования
Пример авторизации через middleware:
// routes/_protected.tsx
import { redirect } from "react-router";
export async function middleware({ context }) {
if (!context.user) {
throw redirect("/login");
}
}
👉 Подробнее: https://remix.run/blog/middleware
👉 Документация: https://reactrouter.com/how-to/middleware
remix.run
Middleware in React Router
Middleware is now stable in React Router!
🔥4👍3
⚡️ React Bits — готовые анимированные компоненты для React
Иногда мне присылают полезные сайты — так я и наткнулась на https://reactbits.dev/ 🎉
Это коллекция готовых анимированных компонентов для React + Tailwind: кнопки, переключатели, загрузчики, анимации. Быстро оживляет интерфейс и экономит время разработки.
Иногда мне присылают полезные сайты — так я и наткнулась на https://reactbits.dev/ 🎉
Это коллекция готовых анимированных компонентов для React + Tailwind: кнопки, переключатели, загрузчики, анимации. Быстро оживляет интерфейс и экономит время разработки.
React Bits
An open source collection of high quality, animated, interactive & fully customizable React components for building stunning, memorable user interfaces.
👍4❤1🥰1
Последние 8 месяцев я каждые две недели проводила ассессменты фронтенд-разработчиков. Делюсь инсайтами:
✨ Компания и команда в которой человек начинает стажировку играет немаловажную роль. Например, встречались кейсы, когда разработчик с 6 годами опыта получал оценку «джун» — просто потому что его скоуп задач в проекте был сильно ограничен. Причём иногда уже по рассказу кандидата о том, чем он занимался, можно составить определённое мнение о его уровне.
🚀 Большое значение имеет стремление к саморазвитию. Попадались кандидаты, которые честно говорили: «Я просто пишу код, а теорию уже давно забыл».
Если первую категорию людей я еще понимаю что окружение возможно сыграло свою роль, то вторую нет, как им не страшно оказаться не востребованным и не развиваться)
✨ Компания и команда в которой человек начинает стажировку играет немаловажную роль. Например, встречались кейсы, когда разработчик с 6 годами опыта получал оценку «джун» — просто потому что его скоуп задач в проекте был сильно ограничен. Причём иногда уже по рассказу кандидата о том, чем он занимался, можно составить определённое мнение о его уровне.
🚀 Большое значение имеет стремление к саморазвитию. Попадались кандидаты, которые честно говорили: «Я просто пишу код, а теорию уже давно забыл».
Если первую категорию людей я еще понимаю что окружение возможно сыграло свою роль, то вторую нет, как им не страшно оказаться не востребованным и не развиваться)
👍4