Blog

A collection of 210 posts
Правильная загрузка файлов SpreadJS
blog

Правильная загрузка файлов SpreadJS

В последнее время всё больше проектов внедряют SpreadJS, чтобы в точности реализовать среду Excel в веб-приложениях. Система, за которую я отвечаю, также использует SpreadJS. Одной из проблем при использовании SpreadJS было то, что «определённый файл вообще не открывался на экране». На начальном этапе разработки система была обновлена со старой
4 min read
Ребалансировка Kafka и устранение узких мест при обработке сообщений
blog

Ребалансировка Kafka и устранение узких мест при обработке сообщений

1. Возникновение проблемы Мы получили запрос о том, что сообщения Kafka неправильно обрабатывались в рабочей среде. Проверив журналы сервера, мы обнаружили, что перебалансировка Consumer Group регулярно происходила примерно с интервалом в 10 минут. Чтобы определить причину перебалансировки, мы проверили настройки Consumer и фактическое время обработки сообщений. В тот момент max.
6 min read
Между дружелюбием и краткостью: UX-копирайтинг
blog

Между дружелюбием и краткостью: UX-копирайтинг

Экран для незнакомцев Приложение Banjang Note, над которым я сейчас работаю, предназначено не только для людей, принадлежащих к определённой организации. Его целевая аудитория — подённые рабочие и бригадиры, работающие на строительных объектах полупроводниковых предприятий. Это люди, которые набирают работников непосредственно на объекте и ищут работу, когда хотят выйти на неё. Они
8 min read
Управление формами с помощью React Hook Form и Zod
blog

Управление формами с помощью React Hook Form и Zod

Введение Многошаговую форму с очень большим количеством полей ввода сложно поддерживать даже в исходном виде, а при добавлении таких функций, как временное сохранение и настройка начальных значений, она очень быстро становится сложной. Поэтому при работе с формами необходима эффективная «стратегия». В этой статье я обобщу подход к стратегическому управлению сложными
4 min read
Минимальная самопроверка фронтенда
blog

Минимальная самопроверка фронтенда

Предыстория Когда я был младшим разработчиком, мне повезло начать разработку в среде, где я мог получать отзывы о коде. Поначалу я даже не имел чёткого представления о критериях проверки. Я считал, что разработка завершена, если функциональность работает правильно, а замечания, высказанные во время проверок, поначалу казались незначительными. Мне часто задавали
8 min read
Человеческая субъектность в эпоху ИИ-агентов
blog

Человеческая субъектность в эпоху ИИ-агентов

Я удалил реализацию SSE (Server-Sent Events), на создание которой потратил несколько недель кропотливой работы. Именно я первым предложил SSE и начал его реализовывать, и именно я в конечном счёте после обсуждения решил, что нам следует от него отказаться. Коллега, работавший вместе со мной, обобщил технические решения, связанные с внедрением
5 min read
Практический пример: устранение ошибок пакетной локализации
blog

Практический пример: устранение ошибок пакетной локализации

1. Введение При работе над проектом нередко в процессе реализации одного требования обнаруживается другая проблема. В этой статье я кратко расскажу о случае, когда при реализации требования заказчика добавить информацию о ролях, специфичных для отдела, на странице My Page была обнаружена и устранена ошибка в хранении данных о названиях отделов
6 min read
React против React Native: руководство по выбору для каждого проекта
blog

React против React Native: руководство по выбору для каждого проекта

В экосистеме фронтенда ключевое слово «React» уже ближе к необходимости, чем к выбору. Поскольку область его применения вышла за пределы веб-разработки и охватила разработку мобильных приложений, многие разработчики и компании сталкиваются с вопросом: «Как преобразовать сервис, созданный для веба, в мобильное приложение?» Два наиболее часто рассматриваемых варианта — использовать существующий
7 min read
Применить проверку владельца образа к proms-image
blog

Применить проверку владельца образа к proms-image

—От выявления проблемы поиска только по imageId до контроля доступа на основе cineroomId и проверки в develop/stg— 1. Предыстория Эта работа началась во время проверки разрешений на доступ к ресурсам изображений в проекте proms-image. Сначала я думал, что задача будет заключаться лишь в проверке корректного отображения изображений на
12 min read
Проверка TPS с помощью спайк-тестирования
blog

Проверка TPS с помощью спайк-тестирования

Простой сервера из-за превышения лимита TPS При настройке конвейера для повторной передачи данных, собранных на борту, в наземное озеро данных мы столкнулись с ситуацией, которая потребовала тестирования пороговых значений. Чтобы повторно передать сообщения, хранящиеся в бортовых подах, в наземное озеро данных, сообщениям пришлось пройти через два ретрансляционных сегмента — EMQX
7 min read
SpreadJS Designer
blog

SpreadJS Designer

-Как использовать SpreadJS Designer и устранять ошибки- Введение Впервые я столкнулся с библиотекой SpreadJS, когда мне поручили проект для. Библиотека использовалась для отображения и редактирования файлов Excel на экране, и здесь я систематизировал проблемы, с которыми столкнулся при ее применении. Среди них была ошибка, из-за которой при обновлении или
6 min read
Проблемы параллелизма при регистрации на курсы в порядке очереди подачи заявок
blog

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

-Управление параллелизмом и процесс реализации для решения проблем переполнения лимита вместимости- 1. Предпосылки: переполнение вместимости при регистрации на курсы по принципу «первым пришёл — первым обслужен» Онлайн-лекции и образовательные платформы часто ограничивают вместимость отдельных курсов и используют систему регистрации по принципу «первым пришёл — первым обслужен». Например, если вместимость составляет 100
5 min read
Современный бэкенд — Значения диапазона (2)
blog

Современный бэкенд — Значения диапазона (2)

Это вторая лекция шестой сессии части 1 курса [Modern Backend] под названием «Scoped Values (2)». В этой лекции мы подробно рассмотрим четыре основных принципа проектирования Scoped Values — официальной функции Java 25, практические шаблоны использования API, специальный механизм кэширования, а также ограничения и критерии, которые необходимо учитывать при их применении на
2 min read
Современный бэкенд — Значения диапазона (1)
blog

Современный бэкенд — Значения диапазона (1)

Первая лекция шестой сессии части 1 курса [Modern Backend] — «Scoped Values (1)». В этой лекции мы подробно рассмотрим предпосылки и необходимость Scoped Values, официально принятого в качестве стандартной возможности в Java 25, а также структурные ограничения и риски ThreadLocal, который долгое время использовался для передачи контекста. 📌 Ключевые темы: * Сравнение трёх
2 min read
Современный бэкенд — рефакторинг параллельной обработки (2)
blog

Современный бэкенд — рефакторинг параллельной обработки (2)

Это вторая лекция пятого занятия Части 1 курса [Modern Backend] под названием «Рефакторинг параллельных вызовов API (2)». На этой лекции мы проведём сессию живого кодирования, в ходе которой напишем и протестируем фактический код проекта доски объявлений на основе архитектуры структурированной конкурентности (StructuredTaskScope), разработанной на предыдущем занятии. 📌 Основные темы обучения: * Проверка
2 min read
Современный бэкенд — рефакторинг параллельной обработки (1)
blog

Современный бэкенд — рефакторинг параллельной обработки (1)

[Modern Backend] Это пятая сессия части 1 курса «Рефакторинг параллельных вызовов API (1)». На этой сессии мы проведём предварительный структурный анализ и спроектируем рефакторинг, необходимый для переноса логики валидации вложений и генерации миниатюр проекта доски объявлений с существующего подхода на основе CompletableFuture на код, использующий структурированную конкурентность Java 25 (StructuredTaskScope)
2 min read
Современный бэкенд — структурированный параллелизм
blog

Современный бэкенд — структурированный параллелизм

Это четвёртая сессия части 1 курса [Modern Backend]: лекция о «структурированной конкурентности». В этой лекции мы рассмотрим концепцию и необходимость структурированной конкурентности, представленной в качестве функции предварительного просмотра (JEP 505) в Java 25, а также то, как она решает проблемы, присущие традиционным подходам к параллельной обработке. 📌 Основные темы: * Базовые концепции
2 min read
Анализ причин OOMKilled в среде Kubernetes
blog

Анализ причин OOMKilled в среде Kubernetes

Обзор При работе над проектом вы можете столкнуться с OOM или OOMKilled. Особенно в окружении Kubernetes часто возникают ситуации, когда "Pod был перезапущен из-за OOMKilled." OOMKilled может казаться простым перезапуском сервера, но если не устранить причину, это может происходить снова и снова в условиях высокой нагрузки на
7 min read
Введение в современные курсы бэкенда
blog

Введение в современные курсы бэкенда

- В 2026 году стандарты для бэкендов на Java изменились. Изменения за последние 8 месяцев На июль 2026 года основные компоненты стека бэкенда на Java одновременно претерпели поколенческий сдвиг за последние 8 месяцев. Если мы будем рассматривать изменения в новой версии каждой технологии отдельно в течение этого периода, это можно просто
4 min read
Проектирование и управление сценариями интеграционного тестирования
blog

Проектирование и управление сценариями интеграционного тестирования

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

Обработка отношений на уровне приложения

В типичных серверных приложениях отношения между сущностями часто выражаются через внешние ключи базы данных и ассоциации JPA. Этот подход мощен; он предотвращает сохранение дочерних элементов без родительских, пропагандирует удаление дочерних элементов, когда родитель удаляется, и позволяет обрабатывать сохранение и удаление вместе в соответствии с графом объектов. Тем не менее, изменения
8 min read
Язык руководителя
blog

Язык руководителя

– Как правильно составить запрос? 1. Введение Создавая лекцию для Claude Code, я генерировал, модифицировал и тестировал различные исходные коды в учебных целях. В доискусственном интеллекте я тратил значительное количество времени на размышления и корректировки, чтобы создать код для практики, но теперь всего лишь с помощью нескольких слов в запросе я
6 min read
Направление гибкого управления проектами
blog

Направление гибкого управления проектами

Часть 1. Визуализация данных и процесс сотрудничества 1. Фон: Ограничения методологии Agile и экосистема SI 1.1. Суть методологии Agile: Быстрая реакция и гибкость к изменениям В современной экосистеме разработки программного обеспечения ценность Agile постоянно подчеркивается как методология для реагирования на высокую неопределенность на рыночных рынках. Суть методологии Agile заключается
9 min read
Изучение TypeScript
blog

Изучение TypeScript

По мере увеличения размера веб-приложений и их экспоненциальной сложности произошли значительные изменения в инструментах и языках разработки, которые мы используем. В центре этого находится 'TypeScript', который появился для преодоления ограничений JavaScript, изначально разработанного для простого динамического сценария в прошлых веб-браузерах. Эта статья глубоко погрузится в основные
9 min read
Применение Vault к другим сервисам
blog

Применение Vault к другим сервисам

Vault — это сервис управления файлами в Vizend. В Vault структура данных файлов делится на ссылочные файлы и физические файлы. Ссылочные файлы структурированы таким образом, чтобы ссылаться на физические файлы, и даже если несколько пользователей имеют один и тот же фактический файл, используемое дисковое пространство соответствует лишь объему одного файла. По
5 min read
Site footer