Технический блог YCLIENTS — место, где инженеры делятся опытом разработки, архитектурными решениями, оптимизациями и внедрением современных технологий.

Draft

Как не упасть вместе с сервером: строим офлайн-режим на Service Worker и IndexedDB Для кого: фронтенд-разработчики, которые слышали про Service Worker, но никогда не работали с ним на практике. Никакого предыдущего опыта не требуется — только базовый JavaScript и понимание того, как браузер делает HTTP-запросы. 🔥 Пролог Представим: 9 утра, пик записей.
11 min read
PHP

Знакомимся с PHP Zend Memory Manager

PHP часто воспринимается как "простой" язык для веб-разработки, но под капотом у него довольно продуманная архитектура управления памятью. Он изначально спроектирован для быстрой обработки коротких запросов и следует модели share-nothing: каждый запрос выполняется в изолированной среде и не сохраняет состояние после завершения. Как отмечает официальная документация, PHP "
6 min read

Как не упасть вместе с сервером: строим офлайн-режим на Service Worker и IndexedDB

Для кого: фронтенд-разработчики, которые слышали про Service Worker, но никогда не работали с ним на практике. Никакого предыдущего опыта не требуется — только базовый JavaScript и понимание того, как браузер делает HTTP-запросы. 🔥 Пролог Представим: 9 утра, пик записей. Мастер открывает расписание — белый экран. Через минуту в поддержку летят первые тикеты, через
11 min read
Управление

Управление X командами

Скорее всего, вы прочитали название как «Управление икс-командами» и оказались правы, хотя изначально планировалось назвать статью «Управление десятью командами», но с текущим темпом изменений я притомился заголовки переделывать, так что пусть будет «икс».
14 min read
Разработка

Рекомендации по профилированию PHP приложений

В этой статье я расскажу, что такое профилирование и покажу на примере конкретных профилировщиков как происходит этот процесс. Профилирование — это процесс динамического анализа работы программы, который помогает выявить неэффективные участки, которые не могут быть выявлены на этапе статического анализа. Для профилирования используют специальный инструмент – профилировщик. Он измеряет показатели работы программы,
6 min read
Мобильные приложения

Как поддерживать тысячи приложений силами одного разработчика

Как одному разработчику поддерживать тысячи white-label мобильных приложений? Наше решение: заменили сотни схем сборки на JSON-конфигурации и автоматизацию. Единая кодовая база Flutter, модульная архитектура и универсальный CI/CD позволяют добавлять новый бренд за 2 часа.
4 min read
Разработка

Как мы «пересобрали» Cordova внутри Flutter и сменили стек без даунтайма

Старая кодовая база на Cordova ограничивала наше мобильное приложение: не хватало производительности и возможностей для интеграции с нативными SDK. Мы нашли способ перейти на Flutter без остановки релизов: запустили Angular в WebView с JS-мостом, что позволило постепенно внедрять нативные экраны.
4 min read

Автоматизация синхронизации Figma с репозиторием ui-кита

Отсутствие автоматической выгрузки данных из Figma в репозиторий ведёт к ошибкам при копировании, рассинхронизации между дизайном и кодом, потере времени и отсутствию единого источника истины для дизайн-системы.
1 min read
PHP

UUID v8: надёжная миграция ID в микросервисах

При миграции от монолита к микросервисам встал вопрос: как перенести миллионы записей с числовыми ID на UUID без потерь в скорости и совместимости? Решением стал UUID v8 — он кодирует legacy ID, тип сущности и хэш, обеспечивая детерминированность и надёжность миграции.
6 min read
Инфраструктура

Почему миграции в Percona XtraDB Cluster 8.0 могут приводить к падению кластера

В высоконагруженных кластерах Percona XtraDB обнаружен баг: при миграции через pt-online-schema-change узлы могут аварийно завершаться, запись блокироваться, а подключение новых узлов — срываться. Проблема устранена только в версии 8.0.42, обновление критично для продакшена.
5 min read
Инфраструктура

Debezium и CDC: возможности, альтернативы и подводные камни

Данные — кровь бизнеса, требующая мгновенной доставки. Пакетный обмен сменил CDC, фиксирующий изменения в реальном времени. Debezium стал стандартом open-source, но имеет компромиссы. В статье — его разбор, сильные и слабые стороны, а также альтернативные решения и кастомные подходы.
6 min read

Рекомендации по быстродействию web-приложений

Если вы стремитесь сделать своё web-приложение более быстрым и не знаете, с чего начать, эта статья именно для вас. Рассмотрим наиболее эффективные техники, которые потребуют изменений только в продуктовом коде приложения.
11 min read
Инфраструктура Featured

Распределенные блокировки

Распределенные блокировки обеспечивают синхронизированный доступ к ресурсам в распределенных системах, предотвращая гонки состояний и дублирование задач. В статье объясняется принцип их работы, подводные камни и выбор Redis как оптимального решения.
7 min read
Файловая структура проектов в компании
Фронтэнд

Файловая структура проектов в компании

Рассказ о нашей архитектуре FBCA (Feature-Based Clean Architecture) — как устроена структура модулей, чем отличаются слои, слайсы и сегменты, куда класть код и зачем. Почему важно соблюдать модульность, как устроены зависимости и зачем нужны conventions. Полезно для новичков и опытных разработчиков.
7 min read
Особенности работы слотов в WebComponents: что важно знать
Фронтэнд

Особенности работы слотов в WebComponents: что важно знать

Слоты в WebComponents ведут себя иначе, чем в привычных UI-фреймворках: содержимое не удаляется при исчезновении слота, а остаётся в DOM без вызова disconnectedCallback. Это влияет на жизненный цикл вложенных компонентов и требует особого внимания при проектировании.
2 min read
Ассиметричная видимость свойств в PHP 8.4
PHP Featured

Ассиметричная видимость свойств в PHP 8.4

В PHP 8.4 появилась новая возможность — асимметричная видимость свойств. Она позволяет задавать разные уровни доступа на чтение и запись. В статье — обзор синтаксиса, примеры из реального кода и рекомендации по применению.
5 min read