Привет! Меня зовут Никита, я старший фронтенд-инженер в Ozon Tech, и я разрабатываю кабинет рекламодателя. Однажды мы попытались обновить версию Node.js, и у нас начали рандомно падать тесты в CI/CD. Как выяснилось позже — из-за нехватки памяти. Так как над нашим проектом трудятся 15 фронтенд-разработчиков, эта проблема сильно замедляла процесс выкатки, и разработчикам приходилось вручную перезапускать тесты, пока они не начинали проходить, что также ухудшало developer experience. Мы быстро реш…
Привет, Хабр! Меня зовут Александр Митин. Я Java разработчик в компании ИТ-холдинг Т1 с 15 летним опытом, из которых последние 5 лет работаю в финтехе. Мой любимый стек — Java Spring. Я хочу рассказать такое AsyncAPI, как работать со спецификациями, какие есть инструменты и поделюсь нашим опытом перехода на подход API First в наших системах.Синхронное взаимодействиеПрежде чем говорить про AsyncAPI, рассмотрим стандартную схему синхронного взаимодействия.В традиционной модели синхронного взаимо…
Привет! Я — Александр Дудукало, автор базового курса по JavaScript. В прошлой статье мы разобрали работу с объектами в JavaScript, а сегодня поговорим о циклах. Представьте, что нужно написать «Привет» ста друзьям подряд. Руки быстро устанут набирать одно и то же сообщение, а вот компьютер легко справится с таким заданием. Для этого существуют циклы — они позволяют выполнять повторяющиеся действия автоматически.Если вы уже имеете опыт в программировании, то, скорее всего, статья для вас покажет…
Привет! Меня зовут Дмитрий, я руководитель фронтенд-разработки в компании Интелси.Сегодня хочу рассказать о принципе открытости/закрытости (Open-Closed Principle) — втором из пяти принципов SOLID, сформулированных Робертом Мартином в книге Agile Software Development: Principles, Patterns, and Practices. Его суть звучит так:«Программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения» (Software entities (classes, modules, functions, etc.) s…
Привет, Хабр!Не раз ловил себя на том, как в код‑ревью всплывает одна и та же проблема: часть наших функций синхронные, часть асинхронные, а часть ведут себя как шрёдингеровские коты и делают вид, что синхронны, пока не дотронешься. В итоге в одном месте у нас try/catch, в другом.catch, где‑то внезапно падает исключение, а в соседнем модуле молча утекает Promise. С появлением нативного Promise.try стало проще навести порядок и избавиться от разнобоя. Фича прошла процесс стандартизации в TC39 и …
Когда маркетолог говорит «давайте отслеживать всё», разработчик обычно слышит «давайте усложним жизнь прямо сегодня». И, как ни странно, оба правы. Потому что базовых целей в Яндекс.Метрике вроде «клик по кнопке» или «отправка формы» хватает ровно до того момента, пока бюджет на рекламу не становится больше бюджета на кофе в офисе. В прошлой статье я рассмотрел самый простой вариант кастомизации целей, когда мы начинаем собирать не просто факт отправки, например, формы, но и смысл, с какими до…
Привет, я Сергей Маркизов, разработчик диджитал-продакшна Далее. В наших проектах часто использую Drizzle — современную, типобезопасную ORM для TypeScript, которая не усложняет базовую задачу: читать и писать данные. В этой статье расскажу, чем библиотека отличается от других и как с ней работать.Базы данных являются основным средством обеспечения персистентности современных приложений. Для работы с ними зачастую используются различные ORM-решения, ведь они позволяют избавиться от необходимости…
Сгенерировано в DALL-E 3Несмотря на то, что название статьи, скорее, кликбейтное, речь в статье всё же пойдет про способы обхода существующих механизмов защиты от парсинга, которые используют современные сайты.Написать эту статью, примерно с тем же содержанием (за исключением некоторых особенностей, которые я привнес к теме вопроса относительно недавно), я мог еще несколько лет назад — всё же это довольно давняя история, но лишь в последнее время разработчики всё чаще стали прибегать к некоторо…
GreenSock Animation PlatformGSAP – одна из самых популярных JavaScript-библиотек для создания анимаций. Её используют как новички, так и опытные front-end-разработчики. В этой статье я хочу рассмотреть несколько примеров ее применения – от самых простых до менее очевидных.Работая над сервисом для анимации логотипов, я выбрал GSAP (GreenSock Animation Platform), потому что эта библиотека позволяет создавать анимации практически любой сложности. Причём речь идёт не только об изменении CSS-свойств…