Category : javascript

javascript
Чистим строку от лишних/повторяющихся пробелов (и пробельных символов) в строковых значениях компак…

ВведениеХочу поделиться компактной функцией для очищения лишних, повторяющихся пробелов и пробельных символов в строках. Не считайте это призывом, но если можно привести строковые данные в красивый вид без лишних хлопот, то почему бы и не воспользоваться. Те, кто не знаком с регулярными выражениями (regular expressions, RegExp, regex), может приоткроет форточку в этот славный и замороченный мир (Регулярные выражения (regexp) — основы)Начнём издалека. Excel СЖПРОБЕЛЫ()Есть функция в Excel СЖПРОБ…

  • понедельник, 1 сентября 2025 г. в 00:00:02
javascript
RegExp с флагом /v: наборы, пересечения и юникод-свойства

Привет, Хабр!Сегодня рассмотрим флаг регулярных выражений v в JavaScript. Флаг поддержан в современных движках и Node 20+, а для старых окружений есть транспиляция через Babel. Начнём с краткой ориентации где это уже работает и почему синтаксис отличается, а потом пойдём в практику.Что такое v и почему это не просто u++Флаг v включает режим unicodeSets. Это отдельный вариант интерпретации шаблона: u и v нельзя смешивать одновременно в одном регексе. В v режиме доступны:свойства строк Юникода ч…

  • суббота, 30 августа 2025 г. в 00:00:06
javascript
React Custom Hook: useDebounce

В этой серии статей мы отправимся в путешествие по миру пользовательских хуков React, открывая для себя их огромный потенциал для улучшения ваших проектов разработки. Сегодня мы сосредоточимся на хуке useDebounce, одном из многих тщательно разработанных хуков, доступных в коллекции пользовательских хуков React.Github: https://github.com/sergeyleschev/react-custom-hooks import { useEffect } from "react" import useTimeout from "../useTimeout/useTimeout" export default function …

  • пятница, 29 августа 2025 г. в 00:00:03
javascript
Расследуем самое длинное issue в Jest

Привет! Меня зовут Никита, я старший фронтенд-инженер в Ozon Tech, и я разрабатываю кабинет рекламодателя. Однажды мы попытались обновить версию Node.js, и у нас начали рандомно падать тесты в CI/CD. Как выяснилось позже — из-за нехватки памяти. Так как над нашим проектом трудятся 15 фронтенд-разработчиков, эта проблема сильно замедляла процесс выкатки, и разработчикам приходилось вручную перезапускать тесты, пока они не начинали проходить, что также ухудшало developer experience. Мы быстро реш…

  • пятница, 29 августа 2025 г. в 00:00:02
javascript
AsyncAPI — Swagger для асинхронного API

Привет, Хабр! Меня зовут Александр Митин. Я Java разработчик в компании ИТ-холдинг Т1 с 15 летним опытом, из которых последние 5 лет работаю в финтехе. Мой любимый стек — Java Spring. Я хочу рассказать такое AsyncAPI, как работать со спецификациями, какие есть инструменты и поделюсь нашим опытом перехода на подход API First в наших системах.Синхронное взаимодействиеПрежде чем говорить про AsyncAPI, рассмотрим стандартную схему синхронного взаимодействия.В традиционной модели синхронного взаимо…

  • четверг, 28 августа 2025 г. в 00:00:07
javascript
Циклы в JavaScript: полный обзор функции

Привет! Я — Александр Дудукало, автор базового курса по JavaScript. В прошлой статье мы разобрали работу с объектами в JavaScript, а сегодня поговорим о циклах. Представьте, что нужно написать «Привет» ста друзьям подряд. Руки быстро устанут набирать одно и то же сообщение, а вот компьютер легко справится с таким заданием. Для этого существуют циклы — они позволяют выполнять повторяющиеся действия автоматически.Если вы уже имеете опыт в программировании, то, скорее всего, статья для вас покажет…

  • четверг, 28 августа 2025 г. в 00:00:06
javascript
Принцип открытости/закрытости SOLID в React

Привет! Меня зовут Дмитрий, я руководитель фронтенд-разработки в компании Интелси.Сегодня хочу рассказать о принципе открытости/закрытости (Open-Closed Principle) — втором из пяти принципов SOLID, сформулированных Робертом Мартином в книге Agile Software Development: Principles, Patterns, and Practices. Его суть звучит так:«Программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения» (Software entities (classes, modules, functions, etc.) s…

  • четверг, 28 августа 2025 г. в 00:00:05
javascript
Promise.try: единый вход для sync/async и единая обработка ошибок

Привет, Хабр!Не раз ловил себя на том, как в код‑ревью всплывает одна и та же проблема: часть наших функций синхронные, часть асинхронные, а часть ведут себя как шрёдингеровские коты и делают вид, что синхронны, пока не дотронешься. В итоге в одном месте у нас try/catch, в другом.catch, где‑то внезапно падает исключение, а в соседнем модуле молча утекает Promise. С появлением нативного Promise.try стало проще навести порядок и избавиться от разнобоя. Фича прошла процесс стандартизации в TC39 и …

  • четверг, 28 августа 2025 г. в 00:00:04
javascript
Три уровня отслеживания в Яндекс Метрике: Level 2 — офлайн-конверсии

Когда маркетолог говорит «давайте отслеживать всё», разработчик обычно слышит «давайте усложним жизнь прямо сегодня». И, как ни странно, оба правы. Потому что базовых целей в Яндекс.Метрике вроде «клик по кнопке» или «отправка формы» хватает ровно до того момента, пока бюджет на рекламу не становится больше бюджета на кофе в офисе. В прошлой статье я рассмотрел самый простой вариант кастомизации целей, когда мы начинаем собирать не просто факт отправки, например, формы, но и смысл, с какими до…

  • среда, 27 августа 2025 г. в 00:00:03