Прежде, чем мы двинемся вперёд, давайте закончим тему использования миксинов как функций, поднятую во второй части. Без этого будут непонятны некоторые синтаксические моменты.❯ Функциональный подход❯ Возвращаем найденное, цена договорнаяКак я рассказывал ранее, миксины могут выступать не только в роли базовых CSS-классов, но и в роли функций, которые что-то рассчитывают и возвращают. При этом, никакого ключевого слова для возврата значений (типа return) в LESS нет — вместо этого автоматически в…
Недавно я перенёс Intlayer (решение для i18n) — монорепозиторий, состоящий из нескольких приложений (Next.js, Vite, React, design-system и т. д.) — с pnpm на Bun.Кратко (TL;DR): если бы я знал заранее, я бы, вероятно, не делал этого. Я думал, что это займёт пару часов. В итоге ушло около 20 часов.Меня привлекло обещание «всё в одном» и впечатляющие показатели производительности. Я попробовал, я собрал — всё билдилось молниеносно, круто. Затем я сделал коммит… и столкнулся с первой проблемой.Hus…
Каждый разработчик знает эту ситуацию. Вы сделали небольшую правку, создали Pull Request и... ждёте. Иногда ревью затягивается, потому что коллеги заняты, а иногда оно превращается в рутинный пинг-понг из-за пропущенной точки с запятой или несоответствия стайлгайду. Рутинные проверки отнимают драгоценное время и концентрацию, которые можно было бы потратить на обсуждение архитектуры и бизнес-логики.А что, если делегировать эту первую, самую механическую линию обороны машине? Что, если бы у нас …
В прошлом примере я рассказал о том, как можно использовать YDB в качестве векторной базы знаний. Сегодня расскажу про то, как использовать Yandex Embedder.Но сначала несколько слов о том, почему Embedder - это очень важно.Итак, у нас есть задача: есть некоторая внутренняя система (у моем случае - YouTrack), есть ИИ (не важно какой). Я хочу получать ответы от ИИ с использованием данных из внутренней системы. Классическое решение - это выгрузка данных из внутренней системы в RAG и использование …
Эта статья — продолжение цикла статей о платформе Bricks в Авито, поэтому для полного понимания происходящего перед прочтением данной статьи настоятельно рекомендую ознакомиться с работами моих коллег: Bricks: новый подход к управлению интерфейсами, Современные подходы к управлению UI: low-сode & Backend-Driven UI, Backend-driven UI: от идеи к проду.Дмитрий ГусевСтарший разработчик интерфейсов в AvitoЯ — Дмитрий Гусев, Frontend-разработчик в команде Bricks в кластере Core Services в Авито, …
Система DevelSCADA, как и любая SCADA система, в первую очередь предназначена для взаимодействия с каким либо физическим оборудованием. Для этого система поддерживает набор популярных протоколов связи с различными устройствами автоматики. В DevelSCADA, для удобства работы, реализован механизм «Устройств», который позволяет без необходимости обращаться к низкоуровневым данным протокола, посредством графического интерфейса, настраивать связь с устройством и формировать список переменных, обмен зн…
Интеграция простой формы с AmoCRM на «бумаге» выглядит просто. Кажется, что можно просто отправить контакт, создать лид, прикрепить товары к сделке — и готово. На практике всё наоборот.Честно говоря, документация AmoCRM сначала меня запутала. Я полез гуглить по моей ситуации (связка формы с CRM), но не нашел почти ничего. Посмотрел ролик на YouTube про библиотеку. Понял основы, но всё равно оставалось куча вопросов.Дело в том, что AmoCRM в упор не видит дубликаты контактов и товаров. При очис…
Эта статья поможет вам создать приложение Express 5 с поддержкой TypeScript.Вы настроите готовый к продакшну проект с помощью различных инструментов для линтинга, тестирования и проверки типов. В случае, если вы новичок в REST API, не волнуйтесь, эта статья также включает объяснения основных концепций, которые следует знать, таких как маршрутизация (роутинг) и аутентификация.Настоятельно рекомендую писать код вместе со мной. Мы будем использовать подход "Разработка через тестирование" (…
ТеорияПримерыПродвинутые методыCSS давно подвергается критике из за отсутствия условной логики (if...else). Хотя мы разработали хитроумные обходные пути с использованием @media запросов (media queries), переключаемых настраиваемых свойств и контейнерных запросов, эти решения часто кажутся слишком громоздкими и непрямыми. Рабочая группа CSS (CSS Working Group) одобрила функцию if() для разработки, которая обещает добавить настоящую условную стилизацию непосредственно в наши стили.cssРаньше, ког…