Рубрика «React» - 2

Производительность React‑приложения редко ломается из‑за одной «тяжёлой» функции. На практике проблемы накапливаются постепенно: компонент начинает ререндериться чаще, чем нужно, состояние оказывается поднято слишком высоко, в useEffect появляется лишняя работа, а список из нескольких тысяч элементов начинает заметно влиять на интерфейс.

При этом ради оптимизация не всегда правильно использовать useMemo и React.memo. Такой подход даже ухудшить ситуацию, если реализовывать его без понимания причины проблемы.

Сначала нужно понять, что именно мы оптимизируем

Читать полностью »

Хотел свою систему, которую можно менять когда угодно, и сделал три десктопных AI-приложения

Привет! Это моя первая статья, и она про Zeqou: небольшую экосистему десктопных приложений для работы с языковыми моделями. Два приложения уже готовы, третье выйдет совсем скоро. Расскажу, что они умеют, как устроены и с какими неожиданными проблемами я столкнулся.

Коротко. Zeqou — это три приложения: чат, рабочее пространство для агентов и студия дообучения моделей. Они бесплатные и работают на Windows, macOS и Linux. Чат и Harness готовы, xtraining выйдет очень скоро.

Зачем всё это

Я всегда хотел иметь Читать полностью »

Полгода назад я в одиночку начал делать Nookly — локальное приложение для заметок на Flutter: страницы, блочный редактор, таблицы с канбан‑видом, полнотекстовый поиск. Ключевое требование с самого начала: всё работает офлайн, данные не покидают устройство. В этом посте — не про сам продукт, а про два инженерных решения, которые могут быть полезны: как спроектировать схему БД так, чтобы синхронизация потом не потребовала переписывания половины кода, и как собрать лендинг вообще без шага сборки.

Часть 1: схема БД, готовая к синхронизации, которой ещё нет

Читать полностью »

Разбираю несколько инженерных решений из небольшого браузерного проекта: бинго на шахматных задачах Lichess. Механика такая: карточка 4×4 с тактическими мотивами (вилка, связка, мат в два), игроку по очереди показывают позиции, он решает задачу и закрывает подходящую клетку. Ограничения, с которыми я сел за проект: своего сервера нет, только Supabase; играть можно без регистрации; у всех игроков в один день одна и та же карточка.

Карточка дня без сервера

Читать полностью »

Хочу рассказать о своей npm‑библиотеке — это мой второй и самый сложный npm‑проект на момент написания статьи. Глубоко в код погружаться не буду — поделюсь историей создания и мотивацией.

История npm‑библиотеки morphing‑scroll - 1

Вступление

Читать полностью »

Практический разбор создания и развития собственной UI-библиотеки

Коротко: Собственная UI-библиотека — это не только набор React-компонентов. После появления нескольких проектов-потребителей на первый план выходят API, состояние, совместимость, зависимости, тестирование, документация и версионирование.

С чего всё начиналось

Когда в проекте начинает появляться всё больше одинаковых элементов интерфейса, рано или поздно возникает вопрос: зачем каждый раз создавать один и тот же Button, Input или Select?

Читать полностью »

Меня зовут Артур Валиев. Недавно мне пришлось объяснять племяннику совершенно страшную математическую конструкцию:

2x + 4=10

Читать полностью »

Затеял ремонт в ванной, дошёл до плитки — и тут понеслось. Санузел у меня Г‑образный, в углу венткороб, раскладку хочу диагональную, а «раздели площадь на плитку» вообще не работает, я это понял когда мои циферки не сошлись с тем что плиточник насчитал — разница набежала непонятно откуда.

Плиточник говорит — берите пятнадцать процентов запаса и всё. Пятнадцать процентов от плитки по 2000 с лишним за метр это уже сумма, я в столбик посчитал и решил что нет, надо по‑другому. Калькуляторы онлайн — площадь на цену умножают, я и сам умею. В CAD полез — там сначала модель строй, а мне не чертежи нужны были.

Читать полностью »

Книжные тир-листы Букстрата

Книжные тир‑листы Букстрата

Введение. Контекст и почему традиционные сервисы устарели.

Привет! Хочу рассказать свою не уникальную историю создания пет‑проекта bookstrata.ru, амбиций, ожиданий и реальности.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js