Frontend Developer – Telegram
Frontend Developer
193 subscribers
18 photos
2 videos
67 links
Пост-знакомство — https://news.1rj.ru/str/frontenddevelopernews/3

По всем вопросам — @mobiledeveloper_bot
Download Telegram
Всем привет!
Давайте подведем итоги за последние три месяца — что появилось в этом канале 👇

📌 ДАЙДЖЕСТ: МАЙ & ИЮНЬ & ИЮЛЬ

🎯От меня:
Советы как преуспеть разработчику - 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

#дайджест
🔥7
🚀 Frontend Performance Checklist

📋 Нашла полезный чеклист по оптимизации фронтенда, где собраны способы ускорения работы сайта с точки зрения:

- HTML
- CSS
- JavaScript
- Обработки изображений
- Видео
- Шрифтов
- Хостинга / сервера

🔗 Статья: https://crystallize.com/blog/frontend-performance-checklist
👍4🔥2
🔍 Почему 0.1 + 0.2 !== 0.3 в JavaScript?

Всем привет! Сегодня разберёмся раз и навсегда, почему в 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 и вам выйдут только академические статьи.
👍71
🤣🤣🤣
🤣12
🧩 React-хук для обработки событий клавиатуры

Возможно, вы уже видели этот хук — со мной им поделился коллега, и выглядит он действительно удобно 👇

👉 https://github.com/ArturJS/use-key-match
2🤝2
Правда жизни 🙊
😁11
Всем привет!
Недавно наткнулась на эту статью:
https://www.totaltypenoscript.com/how-to-create-an-npm-package

Решила пробежаться глазами, чтобы понять, что там есть интересного. И почему-то меня триггернули пункты 2.1 и 3.2.

Автор статьи предлагает вручную создать файлы package.json и tsconfig.json.
Не знаю, как у вас, но меня прям передёрнуло 🙃 Почему бы не предложить создать их командами:

npm init
tsc --init


Так они сразу создадутся с конфигами по умолчанию, и уже потом можно внести нужные изменения, объясняя при необходимости. А не просто копировать и вставлять код вручную. Понимаю что для своих пет проектов это удобнее и не нужно вносить кучу правок, но это же обучающий гайд.


А вы как думаете, стоит ли в таких гайдах предлагать команды или ручное создание файлов — норм вариант?

P.S. Сорри за душноту и занудство, но просто не смогла пройти мимо 😅
👍1
Announcing TypeScript 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/
👍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 всё активнее перенимает их возможности.
👍5
CSS-Questions

Смотрите, какой классный сайт с вопросами по CSS https://css-questions.com/

Собрано 150+ вопросов — от базовых до продвинутых тем.
Здесь найдётся что-то полезное как для новичков, так и для опытных разработчиков.
А ещё можно прокачать навыки на практических заданиях по разным аспектам CSS.

Готовы проверить себя? 💡
🔥3
😂😂😂
😁9
A Few Things About the Anchor Element’s href You Might Not Have Known

Обычно то, что кажется супер простым, просто пролистывается и не читается 🙂
Но я уже много раз говорила: сила — в базовых вещах ⚡️

На днях наткнулась на статью с таким названием:
«Несколько фактов о значении 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/
5
Вот я думаю, что это совсем не так) SQL  точно не боюсь) А вы что думаете и чего боитесь?
🎉 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/
🔥51
🎯 CSS: выравниваем по-умному, а не методом тыка

Статья "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/
1
🎉 Наконец-то: безопасные методы работы с массивами в JavaScript

ES2023 представил версии привычных методов для массивов, которые не мутируют исходные данные — идеально для React и функционального подхода.

Сравнение:
toSorted() вместо sort() — новый отсортированный массив.
toReversed() вместо reverse() — новый перевёрнутый массив.
toSpliced() вместо splice() — новый результат без изменений оригинала.

Подробнее в статье: https://allthingssmitty.com/2025/09/08/finally-safe-array-methods-in-javanoscript/
🔥5
🤣🤣🤣
🤣9
🚨 Атака на npm: компрометация debug, chalk и ещё 16 популярных пакетов

По данным 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
🔥3😱3👍1
😂😂😂
Отличной всем пятницы и прекрасных выходных 🥳
😁14🤣3
⚡️ В React Router появились 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
🔥4👍3