Blog

A collection of 210 posts
Автономная среда разработки интерфейсов, созданная с помощью Storybook
blog

Автономная среда разработки интерфейсов, созданная с помощью Storybook

1. Введение По мере продвижения проекта процесс завершения одного экрана часто разделяется на большее количество задач, чем ожидалось. В проектах я отвечаю за реализацию UI-элементов, таких как разметка экранов, стилизация и взаимодействия. Ранее репозитории для публикации и разработки были физически разделены, поэтому я работал только в репозитории для публикации.
10 min read
Челлендж по разработке разговорного приложения за $20
blog

Челлендж по разработке разговорного приложения за $20

На Android Show в мае 2026 года Google представила функцию под названием Create My Widget. Эта функция позволяет Gemini создавать подходящий виджет, когда пользователь описывает необходимую ему функциональность. Проще говоря, это вайб-кодинг на телефоне. Возможно, это знаменует начало эпохи, в которой программирование больше не будет исключительной сферой разработчиков и
5 min read
Создание ссылок-приглашений с токенами, подписанными с помощью HMAC
blog

Создание ссылок-приглашений с токенами, подписанными с помощью HMAC

1. Сначала — в одну строку HMAC — это общий секретный ключ, который используется, когда сервер выпускает ссылку-приглашение и проверяет её. Фронтенд не вычисляет подпись, и ключ не меняется для каждой ссылки. Для каждой среды используется один ключ, а для разных ссылок отличается полезная нагрузка, содержащая идентификатор пула и время истечения
10 min read
Разбор инцидента в NATS JetStream
blog

Разбор инцидента в NATS JetStream

1. Обзор Приложения, основанные на MSA (микросервисной архитектуре), строятся путем разделения одной большой системы на несколько независимых сервисов. Каждый сервис выполняет разные функции и несет разные обязанности, однако для предоставления фактических сервисов необходимо продолжать передачу данных и совместное использование состояния между сервисами. Обмен сообщениями — один из методов взаимодействия между сервисами,
5 min read
Практический пример улучшения блокировки основного потока
blog

Практический пример улучшения блокировки основного потока

1. Обзор При работе с большими объемами данных способ обработки и отображения полученных данных на экране иногда может сильнее влиять на производительность, чем само получение данных. В одном из реальных проектов я разработал экран, который должен был обрабатывать десятки тысяч записей и отображать их в Grid. Экран должен был не
6 min read
Унификация страниц ошибок с помощью прокси-сервера Nginx
blog

Унификация страниц ошибок с помощью прокси-сервера Nginx

1. Определение проблемы: несогласованные страницы ошибок и риски безопасности В корпоративных веб-архитектурах и микросервисных архитектурах при возникновении ошибки отображаются разные страницы в зависимости от уровня, на котором произошла ошибка. В среде, где спереди работает обратный прокси Nginx, а за ним — приложение Spring Boot, встроенное в Tomcat, могут отображаться следующие
6 min read
Разработка обработчика событий интеграции для утверждения платежа
blog

Разработка обработчика событий интеграции для утверждения платежа

1. Введение В среде микросервисной архитектуры (MSA) каждый доменный сервис имеет независимые бизнес-обязанности и собственную базу данных. Домен учета рабочего времени и отпусков (сервисы Timecard/Leave) в этой системе также функционирует в рамках собственного жизненного цикла. Однако ключевые бизнес-процессы, такие как подача пользователями заявок на отпуск (LeavePlan) и
7 min read
Вики, созданная и используемая большими языковыми моделями
blog

Вики, созданная и используемая большими языковыми моделями

LLM Wiki — это Wiki, которая организует способы поиска и использования материалов LLM в определённой области. Она указывает LLM, что читать в первую очередь в зависимости от вопроса, и сообщает, какому источнику отдавать приоритет, если содержание материалов различается. Она также ведёт отдельную запись информации, которая ещё не была проверена. Поскольку новые
6 min read
Снижение затрат на API с помощью условных вызовов
blog

Снижение затрат на API с помощью условных вызовов

1. Обзор В предыдущей статье я описал, как решил проблему задержек при ответах главного экрана, возникавших при работе с сервисом MyData, используя стратегию рендеринга с приоритетом кэша и фонового обновления — иными словами, подход, соответствующий современному шаблону Stale-While-Revalidate (SWR). В этой статье рассматривается следующая проблема, с которой я столкнулся
8 min read
Скрам ИИ
blog

Скрам ИИ

[Журнал разработки Devlime] Представляем Scrum AI 1. Введение При разработке с использованием Scrum написание элементов бэклога и пользовательских историй занимает больше времени, чем ожидаешь. Даже если встреча заканчивается словами: «Давайте добавим функцию бронирования в следующий спринт», разработчику всё равно предстоит ещё немало работы. Нужно привести в порядок заголовок, написать содержимое
9 min read
Создание конвейера автоматизации перевода
blog

Создание конвейера автоматизации перевода

-Опыт отделения многоязычных ресурсов (i18n) в отдельный репозиторий и добавления автоматической проверки и развертывания- 1. Введение Сервис туристического контента, за который я отвечал, поддерживает четыре языка и всего пять языковых пакетов: корейский в качестве базового языка, английский, узбекский (с латинской и кириллической письменностью) и каракалпакский. Весь текст на экранах — от
6 min read
Переключение социальной аутентификации в WebView на мост RN
blog

Переключение социальной аутентификации в WebView на мост RN

1. Введение Мобильное приложение Class Leader Note использует гибридную архитектуру, в которой React Native отвечает за нативную функциональность, а существующее веб-приложение React предоставляется через WebView. Преимущество этой архитектуры заключается в возможности повторно использовать уже реализованные экраны и бизнес-логику. Изначально мы думали, что социальный вход может работать так же,
13 min read
Автовакуум PostgreSQL и блокировки
blog

Автовакуум PostgreSQL и блокировки

1. Введение Возникла ситуация, в которой загрузка ЦП оставалась на уровне 100% в работающей базе данных PostgreSQL. При выяснении причины в центре проблемы оказался autovacuum. Ранее я воспринимал его лишь как фоновый процесс, который редко требует внимания, но благодаря этому инциденту смог хотя бы частично понять, как работает autovacuum и
6 min read
Реализация общего компонента для платежного функционала
blog

Реализация общего компонента для платежного функционала

- Оплата Опыт реализации SDK в виде повторно используемого общего компонента React - 1. Предпосылки реализации общего компонента SDK Бизнес-логика, которую необходимо было обрабатывать непосредственно на экране оплаты, включала гораздо больше, чем простой вызов SDK. * Установка ключей клиента для авторизованных и неавторизованных пользователей * Отражение изменений суммы оплаты в режиме реального времени
6 min read
Опыт Loopin в применении облегчённых записей в Vault
blog

Опыт Loopin в применении облегчённых записей в Vault

— Как мы исправили проблему подтягивания всего пакета ради одной кнопки скачивания — 1. Введение В этом квартале я отвечал за обновление Loopin до версии 7.2 — нашего внутреннего сервиса обмена сообщениями. Одним из требований было следующее: «файлы, полученные в чатах, также должны оставаться в My Files». Такая функциональность уже существовала. Компонент
9 min read
Внедрение периферийных вычислений для IoT
blog

Внедрение периферийных вычислений для IoT

1. Что такое Edge Computing? Edge Computing — это распределённая вычислительная парадигма, которая обрабатывает данные рядом с местом их создания. В отличие от подхода, при котором данные отправляются для обработки в централизованный центр обработки данных, вычислительные ресурсы размещаются на границе сети для выполнения таких задач, как сбор, обработка и анализ данных.
5 min read
Тестовая обвязка исчезла из-за изменения модели
blog

Тестовая обвязка исчезла из-за изменения модели

Введение За последние несколько месяцев я применял агентов на базе LLM в проектах, над которыми работал. Когда пользователь формулировал запрос на естественном языке, агент выбирал необходимые инструменты для выполнения запросов, проверял результаты, а затем либо генерировал ответ, либо задавал дополнительный вопрос, если требовалось дальнейшее принятие решения. В этой статье я
16 min read
Улучшенный захват DOM
blog

Улучшенный захват DOM

Введение На этот раз мне поручили разработать функцию Snap для сервиса echo. Snap — это функция, которая захватывает экран ровно в том виде, в каком он отображается в момент нажатия пользователем значка камеры в заголовке. Вместо того чтобы объяснять что-либо только словами, она также отправляет снимок экрана, поэтому полученное изображение
14 min read
Разработка веб-приложения для мероприятий с помощью Claude
blog

Разработка веб-приложения для мероприятий с помощью Claude

1. Введение Чтобы осуществить цифровую трансформацию соревновательных мероприятий, проводимых офлайн между командами, я самостоятельно разработал и реализовал веб-приложение. В этом приложении участвующие команды покупают ресурсы за виртуальную валюту, создают результаты работы и соревнуются за очки, реагируя на изменения условий в реальном времени. Ранее эти мероприятия проводились с использованием бумажных
7 min read
Построение мультиагентного рабочего процесса на основе Herdr
blog

Построение мультиагентного рабочего процесса на основе Herdr

1. Иллюзия, что одного промпта будет достаточно, — и преграда, с которой я столкнулся С появлением повсеместно доступных превосходных инструментов для AI-разработки, таких как Claude Code, Antigravity, Cursor и Codex, почти каждый наверняка испытал тот удивительный момент, когда достаточно одной строки в промпте с просьбой: «Добавь эту функцию», — и код
12 min read
Практическое применение Flyway
blog

Практическое применение Flyway

— Управление миграциями БД для загружаемых и обновляемых приложений — 1. Введение По мере разработки приложения схема базы данных также продолжает изменяться вместе с изменениями функциональности. Вы можете добавлять новые таблицы, изменять типы существующих столбцов или перемещать существующие данные в новую структуру при изменении самой структуры данных. Для типичного веб-сервиса эти
13 min read
Среда сборки APK
blog

Среда сборки APK

- Как устранить ограничения длины пути к APK React Native в Windows - 1. Краткое содержание В Windows сборка APK для приложения React Native на основе Expo CNG может завершиться ошибкой следующим образом. ninja: error: Stat(...): Filename longer than 260 characters Эта проблема вызвана не кодом приложения, а ограничениями Windows на длину
5 min read
Улучшение обработки ошибок при проверке личности в Android WebView
blog

Улучшение обработки ошибок при проверке личности в Android WebView

1. Предпосылки работы Эта работа не была случаем разработки функции проверки личности с нуля, а представляла собой задачу сопровождения, включавшую анализ и исправление ошибки, возникшей в уже существующей функции. В рамках проекта веб-экраны, реализованные на Vue, отображались через общий WebView в приложении React Native, а проверка личности N*** CheckPlus
8 min read
Подключение к локальному серверу из эмулятора Android
blog

Подключение к локальному серверу из эмулятора Android

В этой статье обобщаются причины сетевых проблем и способы их решения, возникающих при доступе к локальному серверу разработки в среде Android Emulator. Во время разработки фронтенда или мобильного приложения важно изменять код в локальной среде и сразу проверять результаты. Когда локальный сервер запускается с помощью такого инструмента сборки, как Vite
8 min read
Составление спецификаций дизайна экранов и контроль качества
blog

Составление спецификаций дизайна экранов и контроль качества

После организации требований и сервисных политик на предыдущем этапе планирования, а также частичного определения информационной архитектуры, структуры меню и пользовательского потока я приступил к созданию спецификаций экранов, которые переводили эту информацию в реальные проекты экранов. Сначала я думал, что для спецификации экрана будет достаточно указать, какие функции необходимы на каждом
7 min read
Site footer