[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technologies":3,"\u002Fglossary\u002Fwhite-label":167,"glossary":404},[4,10,15,21,26,32,38,43,48,53,58,63,68,73,77,82,87,92,97,103,108,113,118,123,128,133,138,143,147,152,157,162],{"title":5,"description":6,"slug":7,"category":8,"icon":9},"Android","Каждое наше приложение выходит и на Android — платформенные API, фоновое выполнение, разрешения и требования магазина вместе с ними.","android","framework","logos:android-icon",{"title":11,"description":12,"slug":13,"category":8,"icon":14},"Angular","Фронтенд-фреймворк, в котором мы работаем, когда продукт уже на Angular, — строгая структура, подходящая большим долгоживущим приложениям.","angular","logos:angular-icon",{"title":16,"description":17,"slug":18,"category":19,"icon":20},"Dart","Язык, на котором написано каждое наше Flutter-приложение, — строгая null safety, полноценный pattern matching и компиляция в нативный код и веб.","dart","language","logos:dart",{"title":22,"description":23,"slug":24,"category":8,"icon":25},"Django","Python-фреймворк, который мы берём, когда продукту нужны админка, аутентификация и модель данных в первый же день, а не самописный сервис.","django","logos:django-icon",{"title":27,"description":28,"slug":29,"category":30,"icon":31},"Docker","Каждый наш сервис поставляется в виде контейнера, поэтому на ноутбуке, в CI и в продакшене работает один и тот же артефакт, а не три разных.","docker","infrastructure","logos:docker-icon",{"title":33,"description":34,"slug":35,"category":36,"icon":37},"Fastlane","Автоматизация релизов в нашей мобильной разработке — подпись, сборки и загрузка в сторы идут из CI, а не с ноутбука одного инженера в день релиза.","fastlane","tools","logos:fastlane",{"title":39,"description":40,"slug":41,"category":8,"icon":42},"Flutter","Наш основной мобильный стек с 2018 года — одна кодовая база на Dart для iOS, Android, веба и десктопа без отдельной команды под каждую платформу.","flutter","logos:flutter",{"title":44,"description":45,"slug":46,"category":36,"icon":47},"Git","Все проекты, к которым мы прикасаемся, живут в Git — ревью пул-реквестов, CI на каждой ветке и история, понятная и спустя месяцы.","git","logos:git-icon",{"title":49,"description":50,"slug":51,"category":19,"icon":52},"Go","Наш бэкенд-язык для real-time API и сервисов под нагрузкой — маленькие бинарники, быстрая сборка и конкурентность, которая остаётся читаемой.","go","logos:gopher",{"title":54,"description":55,"slug":56,"category":30,"icon":57},"Google Cloud","Облако, в котором работают наши продакшен-нагрузки, — управляемый Kubernetes, хранилище и сеть без серверов, которые надо обслуживать руками.","gcp","logos:google-cloud",{"title":59,"description":60,"slug":61,"category":36,"icon":62},"Gradle","Система сборки, через которую проходит каждый Android-релиз, — флейворы, конфигурации подписи и вся обвязка зависимостей под Flutter-приложением.","gradle","logos:gradle",{"title":64,"description":65,"slug":66,"category":30,"icon":67},"Helm","Так мы упаковываем деплой в Kubernetes — сервис, конфигурация, секреты и ingress как одна версионируемая единица, которую можно выкатить и откатить.","helm","logos:helm",{"title":69,"description":70,"slug":71,"category":19,"icon":72},"Kotlin","То, что мы берём, когда Flutter-приложению нужен настоящий Android под ним, — platform channels, фоновые задачи и интеграции с нативными SDK.","kotlin","logos:kotlin-icon",{"title":74,"description":75,"slug":76,"category":8,"icon":72},"Kotlin Multiplatform","Общая бизнес-логика для iOS и Android, а нативный интерфейс у каждой платформы свой, — альтернатива, когда Flutter не подходит.","kmp",{"title":78,"description":79,"slug":80,"category":30,"icon":81},"Kubernetes","Так мы запускаем сервисы в продакшене — деплой в Helm-чартах, откатываемые выкатки и масштабирование, для которого не нужен человек в три ночи.","kubernetes","logos:kubernetes",{"title":83,"description":84,"slug":85,"category":30,"icon":86},"NATS","Лёгкий обмен сообщениями между сервисами — publish\u002Fsubscribe и request\u002Freply без эксплуатационного веса полноценного кластера брокера.","nats","logos:nats-icon",{"title":88,"description":89,"slug":90,"category":8,"icon":91},"Nuxt","Vue с серверным рендерингом, роутингом и SEO из коробки — так мы делаем сайты и веб-приложения, которые должны быстро грузиться и индексироваться.","nuxt","logos:nuxt-icon",{"title":93,"description":94,"slug":95,"category":19,"icon":96},"PHP","Там, где PHP-бэкенд уже есть: дорабатываем его, интегрируемся с ним и делаем мобильные и веб-клиенты, которые он обслуживает.","php","logos:php",{"title":98,"description":99,"slug":100,"category":101,"icon":102},"PostgreSQL","Наша база данных по умолчанию — от проектирования схемы до настройки индексов мы берём её, если у продукта нет конкретной причины взять другую.","postgres","database","logos:postgresql",{"title":104,"description":105,"slug":106,"category":19,"icon":107},"Python","Наш язык для бэкендов, работы с данными и AI-интеграций — включая Python-биндинги, которые мы выпускаем к собственным инструментам на Rust.","python","logos:python",{"title":109,"description":110,"slug":111,"category":8,"icon":112},"React","Фронтенд-библиотека, в которой мы работаем, когда продукт уже на React, — компоненты, хуки и выросшая вокруг них экосистема.","react","logos:react",{"title":114,"description":115,"slug":116,"category":101,"icon":117},"Redis","Место для данных, которые должны быть быстрыми и которые не жалко пересчитать, — кэши, сессии, лимиты и очереди фоновых задач.","redis","logos:redis",{"title":119,"description":120,"slug":121,"category":19,"icon":122},"Ruby","Язык, на котором написана автоматизация наших мобильных релизов, — лейны Fastlane, кастомные действия и связка с CI, доставляющая сборки в сторы.","ruby","logos:ruby",{"title":124,"description":125,"slug":126,"category":19,"icon":127},"Rust","Куда мы идём, когда важны и скорость, и корректность, — рендеринг документов, CLI-инструменты и сервисы, которые обязаны оставаться быстрыми и предсказуемыми.","rust","simple-icons:rust",{"title":129,"description":130,"slug":131,"category":101,"icon":132},"SQLite","База данных, которая поставляется внутри приложения, — локальные кэши, offline-first хранилище и всё, что должно работать без сети.","sqlite","logos:sqlite",{"title":134,"description":135,"slug":136,"category":8,"icon":137},"Strapi","Headless CMS, к которой мы обращаемся, когда контент должны вести сами редакторы, — готовая админка и чистый API вместо самописных.","strapi","logos:strapi-icon",{"title":139,"description":140,"slug":141,"category":19,"icon":142},"Swift","То, что мы берём, когда Flutter-приложению нужен настоящий iOS под ним, — platform channels, интеграции нативных SDK, виджеты и App Clips.","swift","logos:swift",{"title":144,"description":145,"slug":146,"category":8,"icon":142},"SwiftUI","UI-фреймворк Apple, на котором мы делаем нативные поверхности, недоступные Flutter-приложению, — виджеты, App Clips и расширения.","swiftui",{"title":148,"description":149,"slug":150,"category":8,"icon":151},"Tailwind CSS","Так мы стилизуем весь фронтенд — утилитарные классы и дизайн-токены вместо таблицы стилей, которая только растёт и никогда не чистится.","tailwind","logos:tailwindcss-icon",{"title":153,"description":154,"slug":155,"category":19,"icon":156},"TypeScript","Стандарт для всего, что мы пишем для браузера и для Node-сервисов, — типы ловят ошибки интеграции раньше, чем код доходит до ревью.","typescript","logos:typescript-icon",{"title":158,"description":159,"slug":160,"category":8,"icon":161},"Vue","Наш фронтенд-фреймворк для админок, дашбордов мерчантов и веб-приложений, которые должны оставаться поддерживаемыми годами, а не спринтами.","vue","logos:vue",{"title":163,"description":164,"slug":165,"category":36,"icon":166},"Whisper","Открытая модель распознавания речи от OpenAI — движок транскрипции для голосового ввода, который работает и как бэкенд-сервис, и прямо на устройстве в приложении.","whisper","simple-icons:openai",{"id":168,"title":169,"aliases":170,"body":173,"category":383,"definition":384,"description":375,"extension":385,"links":386,"meta":390,"metaDescription":391,"metaTitle":392,"navigation":393,"ogDescription":394,"path":395,"related":396,"seo":398,"slug":399,"stem":400,"technology":401,"term":260,"updated":402,"__hash__":403},"glossary_ru\u002Fglossary\u002Fwhite-label.md","White Label",[171,172],"белый лейбл","мультитенантное приложение",{"type":174,"value":175,"toc":374},"minimark",[176,181,185,188,192,267,279,283,286,289,292,298,304,315,319,347,351,354,357,360],[177,178,180],"h2",{"id":179},"что-это-на-практике","Что это на практике",[182,183,184],"p",{},"Одна кодовая база — много опубликованных приложений. У каждого бренда своя карточка в магазине, название, иконка, палитра и контент, и всё это собрано из общего исходника. Смысл в экономике: двадцатое приложение обходится в малую долю от первого, потому что первое оплатило платформу.",[182,186,187],{},"Заказчики почти всегда одного типа. Агентства, перепродающие приложения своим клиентам. Франшизы, где каждому региону нужно своё присутствие в магазине. Мультибрендовые операторы с портфелем марок. Образовательные платформы и сообщества, выпускающие по приложению на автора. Общая фраза всегда одна: «мне нужно десять или пятьдесят, и я не могу оплатить десять проектов разработки».",[177,189,191],{"id":190},"четыре-слова-которые-путают-между-собой","Четыре слова, которые путают между собой",[193,194,195,210],"table",{},[196,197,198],"thead",{},[199,200,201,204,207],"tr",{},[202,203],"th",{},[202,205,206],{},"Что меняется под клиента",[202,208,209],{},"Сколько кодовых баз вести",[211,212,213,228,241,254],"tbody",{},[199,214,215,222,225],{},[216,217,218],"td",{},[219,220,221],"strong",{},"Перекраска",[216,223,224],{},"Логотип, цвета, название",[216,226,227],{},"Одна — но приложения остаются одним продуктом",[199,229,230,235,238],{},[216,231,232],{},[219,233,234],{},"Форк",[216,236,237],{},"Что угодно",[216,239,240],{},"По одной на клиента, расходятся с первого дня",[199,242,243,248,251],{},[216,244,245],{},[219,246,247],{},"Мультитенантность",[216,249,250],{},"Данные и контент, один деплой",[216,252,253],{},"Одна, одно приложение",[199,255,256,261,264],{},[216,257,258],{},[219,259,260],{},"White-label",[216,262,263],{},"Идентичность на сборке, контент и функции в рантайме",[216,265,266],{},"Одна, много приложений",[182,268,269,270,274,275,278],{},"Форк — честный ответ для двух клиентов с по-настоящему разными продуктами. Мультитенантность — то, что делает SaaS, когда у всех одно приложение и различаются только данные. White-label — случай, когда каждому клиенту нужно ",[271,272,273],"em",{},"своё"," приложение в ",[271,276,277],{},"своей"," карточке магазина, и именно эта карточка всё усложняет.",[177,280,282],{"id":281},"чем-это-отличается-от-перекраски","Чем это отличается от перекраски",[182,284,285],{},"Правило App Store Review Guideline 4.2.6 существует, чтобы удалять приложения, сгенерированные из шаблона, — а набор приложений с одинаковыми экранами и одинаковыми данными под разными логотипами ровно под это описание и подходит. Отказы здесь жёсткие: приложения снимают после месяцев в проде, целые флоты застревают в ревью, аккаунты разработчика получают метку.",[182,287,288],{},"Вывод, который из этого обычно делают, неверен: будто из одной кодовой базы нельзя выпускать много приложений. Можно. Проблема никогда не в общей кодовой базе — она в том, что приложения оказываются одним и тем же продуктом под разными вывесками.",[182,290,291],{},"Слоёв дифференциации два, и почти все делают только первый.",[182,293,294,297],{},[219,295,296],{},"Визуальная тема"," даёт каждому приложению свои цвета, типографику, логотип, сплэш, название, идентификатор бандла и иконку. Это необходимо и это минимум. Само по себе — ровно то, что 4.2.6 отклоняет.",[182,299,300,303],{},[219,301,302],{},"Слой «клиент — сервер»"," и есть настоящая дифференциация. Каждое приложение аутентифицируется на бэкенде как отдельный тенант и вытягивает свой мир: свой контент, свой каталог, свои данные, свой набор функций за флагами конкретного тенанта, свою удалённую конфигурацию. Два приложения, собранных из одного бинарного чертежа, становятся по-настоящему разными продуктами в момент, когда стартуют и обращаются к серверу.",[182,305,306,307,310,311,314],{},"Тема заставляет приложение ",[271,308,309],{},"выглядеть"," иначе. Серверный слой заставляет его ",[271,312,313],{},"быть"," иным — и ревьюер, открывший два таких приложения, видит два продукта, а не одно приложение дважды.",[177,316,318],{"id":317},"что-спросить-у-подрядчика","Что спросить у подрядчика",[320,321,322,329,335,341],"ul",{},[323,324,325,328],"li",{},[219,326,327],{},"Что меняется в рантайме, а не только на сборке?"," Если ответ — только тема и название, вы покупаете перекраску, и 4.2.6 за ней придёт.",[323,330,331,334],{},[219,332,333],{},"Под чьими аккаунтами разработчика выходят приложения?"," Брендам часто нужно публиковаться под собственным аккаунтом издателя, а не под вашим.",[323,336,337,340],{},[219,338,339],{},"Сколько стоит двадцатое приложение?"," Если примерно столько же, сколько первое, платформы под этим нет — есть скрипт сборки.",[323,342,343,346],{},[219,344,345],{},"Как заводится новый бренд?"," Форма в админке означает, что это масштабируется. Инженер, правящий конфигурацию сборки под каждого клиента, — что нет.",[177,348,350],{"id":349},"когда-это-неправильный-ответ","Когда это неправильный ответ",[182,352,353],{},"Когда клиентов двое, а не двадцать. Работа над платформой — модель тенантов, пайплайн сборки, конфигурация под каждого — это вложение, которое окупается только на флоте; два форка вышли бы раньше и дешевле.",[182,355,356],{},"Неправильно и тогда, когда каждому клиенту нужны функции, которые остальным не понадобятся никогда. Общая кодовая база, впитывающая по-настоящему расходящиеся продукты, превращается в груду условий, которые никто не рискнёт трогать, — и тут форк, которого вы избегали, оказывается тем самым форком, который нужен.",[182,358,359],{},"Но если флот реален, выигрыш получается необычный: новый бренд проходит путь от отправки формы до подписанного бинарника в нужном аккаунте магазина без участия инженера.",[182,361,362,363,368,369,373],{},"Длинная версия — архитектура, пайплайн сборки и стратегия подачи в магазин — в статье ",[364,365,367],"a",{"href":366},"\u002Fblog\u002Fwhite-label-app-platform-flutter","как мы выпускаем 20+ брендированных приложений из одной Flutter-кодовой базы",", а страница услуги — ",[364,370,372],{"href":371},"\u002Fservices\u002Fwhitelabel-app-development","разработка white-label приложений",".",{"title":375,"searchDepth":376,"depth":376,"links":377},"",2,[378,379,380,381,382],{"id":179,"depth":376,"text":180},{"id":190,"depth":376,"text":191},{"id":281,"depth":376,"text":282},{"id":317,"depth":376,"text":318},{"id":349,"depth":376,"text":350},"business","Один продукт, выпускаемый под многими брендами. White-label платформа собирает каждому клиенту готовое к публикации приложение со своим названием, оформлением и контентом из общей кодовой базы, а не форкает проект под заказчика.","md",[387],{"type":388,"url":389},"wikipedia","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWhite-label_product",{},"White-label платформа выпускает одну кодовую базу как множество брендированных приложений. Что это даёт, чего стоит и от какого правила App Store всё зависит.","White-label платформа приложений — что это",true,"Одна кодовая база — много брендированных приложений. Что это даёт на самом деле, чего стоит и какое правило App Store решает, выйдет ли оно вообще.","\u002Fglossary\u002Fwhite-label",[397],"mvp",{"description":375},"white-label","glossary\u002Fwhite-label",null,"2026-07-31","4KuD1aNL1LRJZmiePXyXL_W-N4SKSL0dRYq-Eviqvo4",[405,420,433,447,461,476,492,505,518,535,548,559,569,582,594,605,614,628,641,648,659,674,687,700,713,724,735,746,759,769,782,794,808,819,833,842,847,860,873,886,899,910,922,934,946,958,969,983,994,1006,1017,1030,1042],{"slug":406,"term":407,"definition":408,"category":409,"aliases":410,"links":412,"related":416,"readMore":-1,"target":418,"hasArticle":419},"aosp","AOSP","Android Open Source Project — Android без надстройки Google, который может форкнуть кто угодно. На его форках работают кассовые терминалы, киоски и автомобильные системы, а работа на этом уровне открывает части ОС, которых прикладной разработчик не видит.","platform",[411],"Android Open Source Project",[413],{"kind":414,"url":415},"website","https:\u002F\u002Fsource.android.com\u002F",[417],"host-card-emulation","\u002Fglossary#aosp",false,{"slug":421,"term":422,"definition":423,"category":409,"aliases":424,"links":425,"related":429,"readMore":-1,"target":432,"hasArticle":419},"app-clips","App Clips","Функция Apple, позволяющая запустить небольшую часть iOS-приложения — до 15 МБ — не устанавливая его целиком. Вызывается по QR-коду, NFC-метке или ссылке: для случаев, когда первое действие пользователя не должно требовать похода в App Store.",[],[426],{"kind":427,"url":428},"documentation","https:\u002F\u002Fdeveloper.apple.com\u002Fapp-clips\u002F",[430,431],"deep-linking","install-referrer","\u002Fglossary#app-clips",{"slug":434,"term":435,"definition":436,"category":409,"aliases":437,"links":438,"related":443,"readMore":-1,"target":446,"hasArticle":419},"bigquery","BigQuery","Аналитическое хранилище Google Cloud. Вы запускаете SQL по миллиардам строк, и они сканируются за секунды, а данные при этом лежат отдельно от машин, выполняющих запросы. Именно это снимает отчётность и исследование данных с базы, обслуживающей живой трафик.",[],[439,441],{"kind":414,"url":440},"https:\u002F\u002Fcloud.google.com\u002Fbigquery",{"kind":388,"url":442},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBigQuery",[444,445],"object-storage","elasticsearch","\u002Fglossary#bigquery",{"slug":448,"term":449,"definition":450,"category":451,"aliases":452,"links":456,"related":459,"readMore":-1,"target":460,"hasArticle":419},"ci-cd","CI\u002FCD","Автоматизация, которая собирает, тестирует и выкладывает каждое изменение без ручного запуска команд. В мобильной разработке это то, что превращает релиз в нажатие кнопки вместо полудня ожидания, пока освободится нужный человек.","practice",[453,454,455],"CI","непрерывная интеграция","непрерывная поставка",[457],{"kind":388,"url":458},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCI\u002FCD",[],"\u002Fglossary#ci-cd",{"slug":462,"term":463,"definition":464,"category":465,"aliases":466,"links":469,"related":472,"readMore":-1,"target":475,"hasArticle":419},"crud","CRUD","Create, read, update, delete — четыре операции, стоящие почти за каждой формой и админкой. Собирательное название для рутинной половины приложения, которая управляет данными, в отличие от частей с реальной предметной логикой.","architecture",[467,468],"Create, Read, Update, Delete","создание, чтение, обновление, удаление",[470],{"kind":388,"url":471},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCreate,_read,_update_and_delete",[473,474],"rest","graphql","\u002Fglossary#crud",{"slug":477,"term":478,"definition":479,"category":451,"aliases":480,"links":484,"related":489,"readMore":-1,"target":491,"hasArticle":419},"dev-container","Dev Container","Среда разработки, описанная один раз в devcontainer.json — ОС, инструменты и версии рантаймов, которые нужны проекту, — и открываемая одинаково внутри контейнера в редакторе любого участника, вместо инструкции по установке, которую каждый понимает по-своему.",[481,482,483],"devcontainer.json","Dev Containers","VS Code Dev Containers",[485,487],{"kind":414,"url":486},"https:\u002F\u002Fcontainers.dev\u002F",{"kind":427,"url":488},"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Fdevcontainers\u002Fcontainers",[490],"container-registry","\u002Fglossary#dev-container",{"slug":445,"term":493,"definition":494,"category":409,"aliases":495,"links":498,"related":503,"readMore":-1,"target":504,"hasArticle":419},"Elasticsearch","Поисковый и аналитический движок, который индексирует записи, чтобы их можно было интерактивно фильтровать и искать, а не сканировать. К нему обращаются, когда вопрос звучит как «покажи вот эти сессии с шестью фильтрами», а не «просуммируй колонку».",[496,497],"Elastic","ELK",[499,501],{"kind":414,"url":500},"https:\u002F\u002Fwww.elastic.co\u002Felasticsearch",{"kind":388,"url":502},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FElasticsearch",[434],"\u002Fglossary#elasticsearch",{"slug":506,"term":507,"definition":508,"category":465,"aliases":509,"links":512,"related":513,"readMore":-1,"target":517,"hasArticle":419},"fan-out","Fan-out","Чтение источника один раз и доставка каждого обновления всем подписанным на него клиентам. Наивная версия пишет подписчикам в цикле и встаёт, как только один из сокетов начинает тормозить; рабочая — держит отдельный буфер на каждого клиента и отключает тех, кто не успевает.",[510,511],"веерная рассылка","фан-аут",[],[514,515,516],"websocket","pub-sub","server-sent-events","\u002Fglossary#fan-out",{"slug":519,"term":520,"definition":521,"category":451,"aliases":522,"links":525,"related":530,"readMore":-1,"target":534,"hasArticle":419},"gdpr","GDPR","Регламент ЕС о персональных данных людей в ЕС: законное основание для сбора, настоящее согласие на трекинг, право увидеть и удалить свои данные. Он следует за вашими пользователями, а не за вашими серверами: где зарегистрирована компания, значения не имеет.",[523,524],"Общий регламент по защите данных","General Data Protection Regulation",[526,528],{"kind":414,"url":527},"https:\u002F\u002Fgdpr.eu\u002F",{"kind":388,"url":529},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",[531,532,533],"pci-dss","soc-2","hipaa","\u002Fglossary#gdpr",{"slug":536,"term":537,"definition":538,"category":451,"aliases":539,"links":543,"related":546,"readMore":-1,"target":547,"hasArticle":419},"golden-test","Golden-тест","Тест, который отрисовывает виджет и сравнивает результат попиксельно с эталонным изображением. Во Flutter это самый дешёвый способ узнать, не сломал ли редизайн пустое состояние на 320pt, в тёмной теме, при 200% масштабе текста.",[540,541,542],"golden test","золотой тест","скриншотный тест",[544],{"kind":427,"url":545},"https:\u002F\u002Fapi.flutter.dev\u002Fflutter\u002Fflutter_test\u002FmatchesGoldenFile.html",[448],"\u002Fglossary#golden-test",{"slug":474,"term":549,"definition":550,"category":465,"aliases":551,"links":552,"related":557,"readMore":-1,"target":558,"hasArticle":419},"GraphQL","Язык запросов к API, где клиент сам перечисляет нужные поля и получает один ответ ровно такой формы. Он снимает избыточную выдачу, к которой дрейфуют REST-эндпоинты, и добавляет собственный режим отказа: неограниченный запрос, обходящий всю модель данных.",[],[553,555],{"kind":414,"url":554},"https:\u002F\u002Fgraphql.org\u002F",{"kind":388,"url":556},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGraphQL",[473],"\u002Fglossary#graphql",{"slug":533,"term":560,"definition":561,"category":451,"aliases":562,"links":564,"related":567,"readMore":-1,"target":568,"hasArticle":419},"HIPAA","Закон США о защищённой медицинской информации: как её можно хранить, передавать, логировать и раскрывать. Как и PCI-DSS, это архитектурное ограничение, которое выбирают в начале, а не документ, который дописывают перед запуском.",[563],"Health Insurance Portability and Accountability Act",[565],{"kind":388,"url":566},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHealth_Insurance_Portability_and_Accountability_Act",[531,519,532],"\u002Fglossary#hipaa",{"slug":570,"term":571,"definition":572,"category":465,"aliases":573,"links":576,"related":579,"readMore":-1,"target":581,"hasArticle":419},"headless-cms","Headless CMS","Система управления контентом с админкой и API, но без собственного фронтенда. Редакторы публикуют в одном месте, а сайт или приложение отрисовывает контент само — слой представления принадлежит вам, а не вендору CMS.",[574,575],"безголовая CMS","контентное API",[577],{"kind":388,"url":578},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHeadless_content_management_system",[580,473],"server-side-rendering","\u002Fglossary#headless-cms",{"slug":417,"term":583,"definition":584,"category":409,"aliases":585,"links":589,"related":592,"readMore":-1,"target":593,"hasArticle":419},"Host Card Emulation","Режим, в котором Android-телефон программно эмулирует бесконтактную карту по NFC, без аппаратного защищённого элемента. Так платит приложение-кошелёк на терминале: телефон говорит с ним по тому же протоколу EMV Contactless, что и пластиковая карта.",[586,587,588],"HCE","EMV Contactless","бесконтактные платежи",[590],{"kind":427,"url":591},"https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fconnectivity\u002Fnfc\u002Fhce",[531,406],"\u002Fglossary#host-card-emulation",{"slug":595,"term":596,"definition":597,"category":409,"aliases":598,"links":599,"related":602,"readMore":-1,"target":604,"hasArticle":419},"impeller","Impeller","Движок рендеринга, на котором Flutter работает сегодня: по умолчанию на iOS с 2023 года и на Android с 2024-го. Он компилирует шейдеры заранее, а не во время первой анимации, что убрало главную видимую проблему Flutter в проде — джанк на компиляции шейдеров.",[],[600],{"kind":427,"url":601},"https:\u002F\u002Fdocs.flutter.dev\u002Fperf\u002Fimpeller",[603],"skia","\u002Fglossary#impeller",{"slug":431,"term":606,"definition":607,"category":409,"aliases":608,"links":609,"related":612,"readMore":-1,"target":613,"hasArticle":419},"Install Referrer","API Google Play, который передаёт только что установленному Android-приложению параметры кампании из ссылки, приведшей к установке. Android-половина отложенного диплинкинга и надёжный способ понять, откуда пришёл пользователь.",[],[610],{"kind":427,"url":611},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Finstallreferrer",[430,421],"\u002Fglossary#install-referrer",{"slug":615,"term":616,"definition":617,"category":618,"aliases":619,"links":621,"related":626,"readMore":-1,"target":627,"hasArticle":419},"jwt","JWT","Подписанный токен, несущий свои данные внутри: сервер понимает, кому принадлежит запрос, не обращаясь к хранилищу сессий. Стандарт мобильной аутентификации. Подпись доказывает, что токен не меняли, но не скрывает его содержимое.","protocol",[620],"JSON Web Token",[622,624],{"kind":414,"url":623},"https:\u002F\u002Fjwt.io\u002F",{"kind":388,"url":625},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON_Web_Token",[531],"\u002Fglossary#jwt",{"slug":629,"term":630,"definition":631,"category":451,"aliases":632,"links":636,"related":639,"readMore":-1,"target":640,"hasArticle":419},"kyc","KYC","Know Your Customer — проверки личности, которые регулируемый финансовый продукт проводит, прежде чем разрешить переводить деньги: съёмка документов, liveness, санкционный и антиотмывочный скрининг. На онбординг это влияет сильнее любого дизайн-решения.",[633,634,635],"Know Your Customer","AML","KYC\u002FAML",[637],{"kind":388,"url":638},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKnow_your_customer",[531,519],"\u002Fglossary#kyc",{"slug":76,"term":74,"definition":642,"category":409,"aliases":643,"links":645,"related":646,"readMore":647,"target":647,"hasArticle":419},"Переиспользование бизнес-логики на Kotlin между Android, iOS и сервером, при этом интерфейс на каждой платформе остаётся нативным. Альтернатива Flutter, когда UI обязан быть нативным, а правила за ним — нет.",[644],"KMP",[],[],"\u002Ftechnologies\u002Fkmp",{"slug":397,"term":649,"definition":650,"category":383,"aliases":651,"links":654,"related":657,"readMore":-1,"target":658,"hasArticle":419},"MVP","Минимальная версия продукта, которую можно показать реальным пользователям и которая при этом отвечает на вопрос, ради которого его делали. Решение об объёме, а не о качестве: MVP всё равно обязан работать.",[652,653],"минимально жизнеспособный продукт","minimum viable product",[655],{"kind":388,"url":656},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMinimum_viable_product",[399],"\u002Fglossary#mvp",{"slug":660,"term":661,"definition":662,"category":618,"aliases":663,"links":667,"related":672,"readMore":-1,"target":673,"hasArticle":419},"oauth","OAuth","Стандарт, на котором держатся «Вход через Apple», Google и остальные: пользователь авторизует ваше приложение у провайдера, которому уже доверяет, а приложение получает токен вместо пароля. Никто не заводит новый пароль, и вы его не храните.",[664,665,666],"OAuth 2.0","вход через соцсети","Sign in with Apple",[668,670],{"kind":414,"url":669},"https:\u002F\u002Foauth.net\u002F2\u002F",{"kind":388,"url":671},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOAuth",[615],"\u002Fglossary#oauth",{"slug":531,"term":675,"definition":676,"category":451,"aliases":677,"links":680,"related":685,"readMore":-1,"target":686,"hasArticle":419},"PCI-DSS","Стандарт безопасности карточной индустрии, обязательный для всех, кто хранит, обрабатывает или передаёт данные карт. Большинство приложений намеренно остаются вне зоны его действия, отдавая ввод карты сертифицированному платёжному провайдеру.",[678,679],"PCI DSS","Payment Card Industry Data Security Standard",[681,683],{"kind":414,"url":682},"https:\u002F\u002Fwww.pcisecuritystandards.org\u002F",{"kind":388,"url":684},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPayment_Card_Industry_Data_Security_Standard",[615],"\u002Fglossary#pci-dss",{"slug":688,"term":689,"definition":690,"category":383,"aliases":691,"links":694,"related":697,"readMore":-1,"target":699,"hasArticle":419},"product-market-fit","Product-market fit","Момент, когда продукт доказуемо нашёл своих людей: они им пользуются, возвращаются и платят. До него разработка отвечает на вопрос, после — на спрос.",[692,693],"PMF","соответствие продукта рынку",[695],{"kind":388,"url":696},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProduct-market_fit",[397,698],"time-to-market","\u002Fglossary#product-market-fit",{"slug":701,"term":702,"definition":703,"category":451,"aliases":704,"links":707,"related":710,"readMore":-1,"target":712,"hasArticle":419},"prompt-injection","Prompt injection","Атака, при которой текст от пользователя языковая модель читает как инструкции, а не как данные, и уходит в обход собственных правил. Родственник SQL-инъекции в эпоху LLM: возникает везде, где пользовательский ввод склеивается в промпт.",[705,706],"инъекция промпта","инъекция в промпт",[708],{"kind":388,"url":709},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPrompt_injection",[711],"rate-limiting","\u002Fglossary#prompt-injection",{"slug":515,"term":714,"definition":715,"category":465,"aliases":716,"links":719,"related":722,"readMore":-1,"target":723,"hasArticle":419},"Pub\u002FSub","Шаблон обмена сообщениями: производитель публикует событие, а любое число потребителей независимо читает его через стоящий между ними брокер. Производитель никогда их не ждёт — так путь запроса остаётся быстрым, а более медленная работа выполняется в фоне.",[717,718],"публикация\u002Fподписка","Google Cloud Pub\u002FSub",[720],{"kind":388,"url":721},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPublish%E2%80%93subscribe_pattern",[],"\u002Fglossary#pub-sub",{"slug":473,"term":725,"definition":726,"category":465,"aliases":727,"links":730,"related":733,"readMore":-1,"target":734,"hasArticle":419},"REST","Общепринятый стиль HTTP-API: URL называет ресурс, а HTTP-метод говорит, что с ним сделать. Способ по умолчанию, которым приложение общается с бэкендом, и то, что ожидает найти большинство сторонних интеграций.",[728,729],"REST API","Representational State Transfer",[731],{"kind":388,"url":732},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FREST",[514,516],"\u002Fglossary#rest",{"slug":532,"term":736,"definition":737,"category":451,"aliases":738,"links":741,"related":744,"readMore":-1,"target":745,"hasArticle":419},"SOC 2","Отчёт внешнего аудитора о том, как компания обращается с данными клиентов — безопасность, доступность, конфиденциальность, — а не сертификат, который можно купить. Корпоративные заказчики его требуют, а архитектуру он ограничивает задолго до самого аудита.",[739,740],"SOC2","System and Organization Controls",[742],{"kind":388,"url":743},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSystem_and_Organization_Controls",[531,519,533],"\u002Fglossary#soc-2",{"slug":747,"term":748,"definition":749,"category":383,"aliases":750,"links":753,"related":756,"readMore":-1,"target":758,"hasArticle":419},"saas","SaaS","Софт, который продают как постоянную подписку на размещённый у поставщика продукт, а не как разовую лицензию для установки у себя. Поставщик держит серверы, непрерывно выкатывает обновления и берёт плату за пользователя или за объём.",[751,752],"Software as a Service","ПО как услуга",[754],{"kind":388,"url":755},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_as_a_service",[757,399],"multi-tenancy","\u002Fglossary#saas",{"slug":516,"term":760,"definition":761,"category":618,"aliases":762,"links":764,"related":767,"readMore":-1,"target":768,"hasArticle":419},"Server-Sent Events","Односторонний поток от сервера к клиенту поверх обычного HTTP-соединения. Проще, чем WebSocket, и достаточен там, где только серверу есть что сказать: прогресс операции, ответ AI, приходящий токен за токеном.",[763],"SSE",[765],{"kind":388,"url":766},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-sent_events",[514,473],"\u002Fglossary#server-sent-events",{"slug":603,"term":770,"definition":771,"category":409,"aliases":772,"links":775,"related":780,"readMore":-1,"target":781,"hasArticle":419},"Skia","Открытая 2D-графическая библиотека Google, которая рисует Chrome, Android и — до появления Impeller — каждый кадр Flutter. Она умеет выводить не только на экран, но и в PDF: именно это делает «печать в PDF» в Chrome.",[773,774],"Skia Graphics Engine","skia-safe",[776,778],{"kind":414,"url":777},"https:\u002F\u002Fskia.org\u002F",{"kind":388,"url":779},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSkia_Graphics_Engine",[595],"\u002Fglossary#skia",{"slug":783,"term":784,"definition":785,"category":383,"aliases":786,"links":790,"related":791,"readMore":-1,"target":793,"hasArticle":419},"staff-augmentation","Staff augmentation","Модель найма, при которой инженеры внешнего партнёра входят в вашу команду и работают под вашим управлением — в вашем репозитории, ваших спринтах, вашем процессе, — а не сдают отдельный проект. Вы покупаете ресурс; код и контекст остаются у вас.",[787,788,789],"аутстаффинг","расширение команды","выделенные разработчики",[],[792,698],"total-cost-of-ownership","\u002Fglossary#staff-augmentation",{"slug":795,"term":796,"definition":797,"category":618,"aliases":798,"links":802,"related":805,"readMore":-1,"target":807,"hasArticle":419},"tls","TLS","Слой шифрования под HTTPS. Он подтверждает, что сервер именно тот, о ком говорит его сертификат, согласует свежий ключ на сессию и шифрует всё дальнейшее — сеть между вами видит шифртекст и не может незаметно его изменить.",[799,800,801],"SSL","HTTPS","Transport Layer Security",[803],{"kind":388,"url":804},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTransport_Layer_Security",[806,615],"end-to-end-encryption","\u002Fglossary#tls",{"slug":698,"term":809,"definition":810,"category":383,"aliases":811,"links":814,"related":817,"readMore":-1,"target":818,"hasArticle":419},"Time to market","Время от решения строить продукт до момента, когда им пользуются настоящие люди. Большинство споров о стеке и объёме работ — на самом деле споры об этом числе: каждая сэкономленная неделя — это неделя выручки, обратной связи и позиции на рынке.",[812,813],"TTM","время выхода на рынок",[815],{"kind":388,"url":816},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTime_to_market",[397,792],"\u002Fglossary#time-to-market",{"slug":820,"term":821,"definition":822,"category":618,"aliases":823,"links":825,"related":830,"readMore":-1,"target":832,"hasArticle":419},"webrtc","WebRTC","Браузерный и мобильный стандарт для передачи аудио, видео и данных напрямую между двумя устройствами; серверы участвуют только в том, чтобы их познакомить. На нём строят видеозвонок внутри приложения, когда не берут готовый SDK.",[824],"Web Real-Time Communication",[826,828],{"kind":414,"url":827},"https:\u002F\u002Fwebrtc.org\u002F",{"kind":388,"url":829},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebRTC",[831,514],"xmpp","\u002Fglossary#webrtc",{"slug":514,"term":834,"definition":835,"category":618,"aliases":836,"links":837,"related":840,"readMore":-1,"target":841,"hasArticle":419},"WebSocket","Протокол, который держит одно соединение между клиентом и сервером открытым, чтобы любая сторона могла отправить данные в любой момент, а не клиент спрашивал снова и снова. На нём работают живые котировки, чаты и статусы присутствия.",[],[838],{"kind":388,"url":839},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebSocket",[516,473],"\u002Fglossary#websocket",{"slug":399,"term":260,"definition":384,"category":383,"aliases":843,"links":844,"related":846,"readMore":395,"target":395,"hasArticle":393},[171,172],[845],{"kind":388,"url":389},[397],{"slug":831,"term":848,"definition":849,"category":618,"aliases":850,"links":853,"related":858,"readMore":-1,"target":859,"hasArticle":419},"XMPP","Открытый федеративный протокол обмена сообщениями и давняя альтернатива тому, чтобы писать чат-бэкенд самому или арендовать чужой. Он покрывает статусы присутствия, индикаторы набора и передачу файлов, а зрелые клиентские библиотеки есть под любую платформу.",[851,852],"Jabber","Extensible Messaging and Presence Protocol",[854,856],{"kind":414,"url":855},"https:\u002F\u002Fxmpp.org\u002F",{"kind":388,"url":857},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FXMPP",[820,514],"\u002Fglossary#xmpp",{"slug":861,"term":862,"definition":863,"category":383,"aliases":864,"links":868,"related":871,"readMore":-1,"target":872,"hasArticle":419},"in-app-purchase","Встроенные покупки","Продажа цифровых товаров и подписок через биллинг Apple и Google, который оба стора требуют для цифрового контента и с которого берут комиссию. Сложность никогда не в самой покупке, а в её восстановлении на новом устройстве и в честном учёте прав доступа.",[865,866,867],"in-app purchase","IAP","внутренние покупки",[869],{"kind":427,"url":870},"https:\u002F\u002Fdeveloper.apple.com\u002Fin-app-purchase\u002F",[688],"\u002Fglossary#in-app-purchase",{"slug":430,"term":874,"definition":875,"category":409,"aliases":876,"links":881,"related":884,"readMore":885,"target":885,"hasArticle":393},"Диплинкинг","Ссылка, которая открывает конкретный экран внутри установленного приложения, а не его главную или веб-страницу. Отложенный диплинкинг переживает установку: нажатие, прошедшее через магазин приложений, всё равно приводит на нужный экран.",[877,878,879,880],"deep linking","отложенный диплинкинг","Universal Links","Android App Links",[882],{"kind":388,"url":883},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMobile_deep_linking",[421,431],"\u002Fglossary\u002Fdeep-linking",{"slug":887,"term":888,"definition":889,"category":465,"aliases":890,"links":894,"related":897,"readMore":-1,"target":898,"hasArticle":419},"multi-arch-image","Мультиархитектурный образ","Один тег образа, который разрешается в разные бинарники для каждой архитектуры процессора — обычно это пара linux\u002Famd64 и linux\u002Farm64, — так что один и тот же docker pull работает без изменений и на серверах Intel\u002FAMD, и на ноутбуках с Apple Silicon.",[891,892,893],"мультиарх-сборка","multi-arch build","linux\u002Famd64 + linux\u002Farm64",[895],{"kind":427,"url":896},"https:\u002F\u002Fdocs.docker.com\u002Fbuild\u002Fbuilding\u002Fmulti-platform\u002F",[490],"\u002Fglossary#multi-arch-image",{"slug":757,"term":247,"definition":900,"category":465,"aliases":901,"links":904,"related":907,"readMore":-1,"target":909,"hasArticle":419},"Один развёрнутый бэкенд обслуживает много клиентов, и каждый видит только свои данные, конфигурацию и включённые функции, потому что контекст тенанта определяется для каждого запроса. Именно это делает линейку брендированных приложений одним продуктом, а не набором форков.",[757,902,903],"мультиарендность","тенант",[905],{"kind":388,"url":906},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMultitenancy",[399,908],"feature-flags","\u002Fglossary#multi-tenancy",{"slug":444,"term":911,"definition":912,"category":465,"aliases":913,"links":917,"related":920,"readMore":-1,"target":921,"hasArticle":419},"Объектное хранилище","Хранилище, которое держит файл целиком под ключом, а не в дереве файловой системы, — Amazon S3 и множество сервисов, совместимых с его API. Дешёвое, практически безграничное, привычное место для сырых событий, бэкапов и медиа: пишется один раз, читается редко, хранится вечно.",[914,915,916],"S3","S3-совместимое хранилище","блоб-хранилище",[918],{"kind":388,"url":919},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FObject_storage",[434],"\u002Fglossary#object-storage",{"slug":711,"term":923,"definition":924,"category":451,"aliases":925,"links":929,"related":932,"readMore":-1,"target":933,"hasArticle":419},"Ограничение частоты запросов","Предел на число запросов от одного клиента за заданный интервал. Именно он не даёт одному увлечённому пользователю, скраперу или боту потратить месячный бюджет платного API за вечер, и стоять он должен на вашей стороне интеграции.",[926,927,928],"rate limiting","рейт-лимит","троттлинг",[930],{"kind":388,"url":931},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRate_limiting",[701],"\u002Fglossary#rate-limiting",{"slug":935,"term":936,"definition":937,"category":409,"aliases":938,"links":941,"related":944,"readMore":-1,"target":945,"hasArticle":419},"platform-channels","Платформенные каналы","Мост, через который Flutter-приложение вызывает нативный код iOS и Android — Keychain и Keystore, биометрию, платёжные шторки, любой SDK без Dart-пакета. Работа рутинная, но настоящая, и первое место, где споткнётся инженер, не выходивший за пределы Dart.",[939,940],"platform channels","method channel",[942],{"kind":427,"url":943},"https:\u002F\u002Fdocs.flutter.dev\u002Fplatform-integration\u002Fplatform-channels",[76],"\u002Fglossary#platform-channels",{"slug":947,"term":948,"definition":949,"category":618,"aliases":950,"links":953,"related":956,"readMore":-1,"target":957,"hasArticle":419},"post-quantum-cryptography","Постквантовая криптография","Алгоритмы шифрования, рассчитанные на устойчивость к будущему квантовому компьютеру; стандарты уже финализированы NIST. Мигрировать нужно до появления железа: трафик, записанный сегодня, расшифруют, когда такая машина появится.",[951,952],"PQC","постквантовое шифрование",[954],{"kind":388,"url":955},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPost-quantum_cryptography",[795,806],"\u002Fglossary#post-quantum-cryptography",{"slug":959,"term":960,"definition":961,"category":451,"aliases":962,"links":966,"related":967,"readMore":-1,"target":968,"hasArticle":419},"staged-rollout","Поэтапная раскатка","Релиз сначала на небольшой процент пользователей и расширение только тогда, когда доля сессий без падений держится. Плохая сборка, пойманная на десяти процентах, — испорченный вечер; она же на ста процентах — испорченная неделя.",[963,964,965],"staged rollout","phased release","канареечный релиз",[],[908,448],"\u002Fglossary#staged-rollout",{"slug":490,"term":970,"definition":971,"category":465,"aliases":972,"links":978,"related":981,"readMore":-1,"target":982,"hasArticle":419},"Реестр контейнеров","Хранилище образов контейнеров, адресуемых по имени и тегу, — Docker Hub, GitHub Container Registry или собственный реестр облачного провайдера. Публикация сборки в реестр превращает «у меня работает» в образ, который любой может скачать и запустить без изменений.",[973,974,975,976,977],"реестр образов","Docker registry","GHCR","ghcr.io","container registry",[979],{"kind":427,"url":980},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpackages\u002Fworking-with-a-github-packages-registry\u002Fworking-with-the-container-registry",[477,887],"\u002Fglossary#container-registry",{"slug":580,"term":984,"definition":985,"category":465,"aliases":986,"links":989,"related":992,"readMore":-1,"target":993,"hasArticle":419},"Серверный рендеринг","Сборка страницы в готовый HTML на сервере, чтобы первый же ответ содержал контент, заголовки, метатеги и структурированные данные. Краулеры, превью ссылок и медленные устройства читают это, не выполняя JavaScript.",[987,988],"SSR","server-side rendering",[990],{"kind":388,"url":991},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-side_scripting",[570],"\u002Fglossary#server-side-rendering",{"slug":806,"term":995,"definition":996,"category":465,"aliases":997,"links":1001,"related":1004,"readMore":-1,"target":1005,"hasArticle":419},"Сквозное шифрование","Шифрование, которое накладывается на устройстве отправителя и снимается только на устройстве получателя, так что сервис, передающий сообщение, не может его прочитать — ни по решению суда, ни после взлома. Оно защищает содержимое, но никогда — метаданные.",[998,999,1000],"E2EE","end-to-end encryption","оконечное шифрование",[1002],{"kind":388,"url":1003},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEnd-to-end_encryption",[795,615],"\u002Fglossary#end-to-end-encryption",{"slug":792,"term":1007,"definition":1008,"category":383,"aliases":1009,"links":1012,"related":1015,"readMore":-1,"target":1016,"hasArticle":419},"Совокупная стоимость владения","Во что продукт обходится за всю жизнь, а не только на этапе разработки: поддержка, обновления, ежегодные миграции на новые ОС и правила сторов, вторая команда, чтобы две кодовые базы не расходились. Обычно больше сметы на разработку и почти никогда в неё не входит.",[1010,1011],"TCO","total cost of ownership",[1013],{"kind":388,"url":1014},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTotal_cost_of_ownership",[698],"\u002Fglossary#total-cost-of-ownership",{"slug":1018,"term":1019,"definition":1020,"category":465,"aliases":1021,"links":1025,"related":1028,"readMore":-1,"target":1029,"hasArticle":419},"state-management","Управление состоянием","То, как приложение решает, где живёт значение, кому позволено его менять и какие части экрана перерисовываются, когда оно меняется. Во Flutter выбор между Riverpod, BLoC и Provider — одно из первых архитектурных решений и одно из самых трудных для пересмотра.",[1022,1023,1024],"state management","BLoC","Riverpod",[1026],{"kind":427,"url":1027},"https:\u002F\u002Fdocs.flutter.dev\u002Fdata-and-backend\u002Fstate-mgmt\u002Foptions",[536],"\u002Fglossary#state-management",{"slug":908,"term":1031,"definition":1032,"category":451,"aliases":1033,"links":1037,"related":1040,"readMore":-1,"target":1041,"hasArticle":419},"Фиче-флаги","Переключатели, которые включают и выключают функциональность из конфигурации, а не из релиза. Один бинарник ведёт себя по-разному для разных брендов, рынков и пользователей, а рискованную фичу можно погасить, не отправляя новую сборку на ревью.",[1034,1035,1036],"feature flags","фиче-флаги","feature toggle",[1038],{"kind":388,"url":1039},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFeature_toggle",[959,399,757],"\u002Fglossary#feature-flags",{"slug":1043,"term":1044,"definition":1045,"category":465,"aliases":1046,"links":1050,"related":1053,"readMore":-1,"target":1054,"hasArticle":419},"floating-point","Числа с плавающей точкой","Двоичный формат IEEE 754, стоящий за double и float. Он не хранит 0.1 точно, поэтому 0.1 + 0.2 даёт 0.30000000000000004 — незаметно в графике и фатально в деньгах, которым место в целых минорных единицах или в decimal-типе.",[1047,1048,1049],"IEEE 754","double","плавающая запятая",[1051],{"kind":388,"url":1052},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIEEE_754",[],"\u002Fglossary#floating-point"]