В современных веб-приложениях хранение файлов часто отдают специализированным объектным хранилищам, таким как S3. Это удобно, масштабируемо и надежно. Однако здесь возникает классическая проблема проектирования: как обеспечить безопасный доступ к файлам, когда архитектура требует, чтобы хранилище было приватным, а бизнес-логика прав доступа — централизованной? Оставлять S3-бакет публичным — плохая практика, а проксировать каждый запрос на скачивание через бэкенд-сервис — значит, превратить его в «бутылочное горлышко», которое неизбежно захлебнется при росте трафика.
В этой статье я познакомлю вас с реализацией бэкенд-сервиса, который решает эту проблему элегантно: S3 отвечает за хранение и отправку данных, а мое приложение — за проверку прав и генерацию одноразовых, короткоживущих ключей доступа (Pre-signed URL). Я разберу архитектуру решения, покажу, как настроить безопасное разграничение доступа между публичными и приватными объектами, а также продемонстрирую механизм, который позволяет клиентам скачивать файлы напрямую из хранилища, минуя сервер приложения.
Материал будет полезен бэкенд-разработчикам, системным архитекторам и DevOps-инженерам, которые сталкиваются с задачами организации безопасного хранения и выдачи файлов, ищут способы снижения нагрузки на API своего сервиса и стремятся построить надежную систему разграничения прав доступа с использованием современных объектных хранилищ.
Читать далееСтатья про то, как удалёнка незаметно меняет тело. Перед длинными выходными особенно актуально :)
Картинка: Д.Ильин, Pajs
Можно ли наблюдать потенциально проблемные места технических конструкций почти невооружённым глазом? Причём буквально на микроуровне, когда ещё ничего не произошло?
Как я уже неоднократно говорил, я, можно сказать, обожаю простые, но эффективные подходы — и сегодня мы поговорим об одном из них, который позволяет с лёгкостью анализировать искажения под воздействием физической нагрузки, наблюдая их даже просто визуально!
Причём изначально даже сам объект не демонстрировал каких-то особых свойств к этому. Однако специфическим техническим подходом это вполне можно изменить…
Впервые эффект появления радужной окраски прозрачных объектов был открыт ещё в 1800-х годах шотландским физиком Дэвидом Брюстером, который в ходе своих исследований изобрёл схему поляризации света, располагая стопку стеклянных пластин под углом к свету.
Читать далееПривет, Хабр!
Меня зовут Алексей Шмелёв, я руковожу группой аналитики и безопасности данных в «Гарде». Мы занимаемся настройкой «решающих правил» в таких продуктах «Гарды», как DBF и DLP.
Когда заказчики начинают использовать DBF в продакшене, обычно ждут чего-то такого: «Сейчас мы увидим, где у нас утечка». На деле в первый месяц вскрывается совсем иное. Например, ручное повышение привилегий, массовые выборки данных, нарушение порядка доступа к данным и другие аномальные действия сотрудников и админов.
Причем по отдельности каждое такое действие легко оправдать производственной необходимостью. И как тут поспоришь, если сроки горят, а бумажки безопасников только тормозят рабочие процессы. Но когда таких эпизодов набирается достаточно, они, как перенесенная на ногах простуда, начинают незаметно подрывать работу бизнеса. Аудит превращается в формальность, а расследования — в поиск иголки в стоге сена. В таком шуме реальная угроза проскальзывает незаметно.
Под катом — десять паттернов, которые мы встречали на проектах чаще других. Я расположил их в порядке убывания частоты: от того, что видим почти на каждом внедрении, до редких, но от этого не менее интересных кейсов. Для каждого разберу, как аномалия проявляется, почему возникает, чем рискует заказчик и как перевести ситуацию из зоны «серого шума» в управляемый процесс.
Какие аномалии живут в СУБДНемного практики для "пощупать" HPA в кластере, поиграться параметрами масштабирования. Можно было бы быстро перейти от теории к практике, ну или наоборот. В примерах используется масштабирование на основе очереди RabbitMQ. Можно использовать minicube, MicroK8s, или где вам удобно... Для удобства развёртывания примеры k8s-hpa-rabbitmq-demo.
МасштабироватьМожно ли построить шифрование, если под рукой есть только SHA-256? В этой статье разберем рабочую схему, где каждый байт кодируется через подбор salt.
Читать далееЕсли вы читали восторженные статьи о том, как ИИ трансформирует финансовые услуги, у вас могло сложиться впечатление, что внедрение больших языковых моделей и агентных систем в институциональные торговые среды — это в первую очередь инженерная задача: нужно лишь выбрать подходящую модель, настроить нужные параметры и дождаться роста эффективности.
В этой статья мы постарались привести архитектурный взгляд на внедрение языковых моделей в высокочастотную торговую инфраструктуру.
Читать далееСалют, Хабр!
Я Марк, Android-разработчик, работаю над мобильным приложением для управления умным домом Салют. Для мира Android-разработки вопросы архитектуры, её надёжности и качества актуальны, но… на самом деле не так уж интересны. Интересно, чтобы приложения были надёжными, устойчивыми к ошибкам, поддерживаемыми и легко масштабируемыми. Самый популярный подход — по-прежнему архитектурные паттерны (MV* паттерны) и разделение архитектуры по слоям. Что никак не избавляет от ошибок.
При этом существует множество подходов, которые делают архитектуру надёжнее, а в перспективе исключают целый класс ошибок, как введение в Котлине Null Safety избавило от класса ошибок NPE. Это проектирование на основе состояний (state-oriented programming), логика Хоара, программирование по контракту Бертрана Мейера. Возможно, и более серьёзные — например, формальные методы верификации. Отмечу, что в целом это общие принципы computer science, независимые от платформы. Но мой фокус — Android-разработка клиент-серверных приложений.
Сейчас хотел бы поговорить, как создание своей системы типов в проекте исключает популярный класс логических ошибок — semantic type error. Поехали!
Читать далееСтатья о том, как превратить TypeScript-схему в единый источник истины для работы с базой данных: из одного определения получить типы строк, имена таблиц и колонок, типизированные запросы, связи, миграции и unit-of-work поверх Knex.
Читать далееПривет, на связи Настя из Cloud.ru. В прошлый раз поговорили о простых материях: контексте, расширенном промпте и ролях. А в этой части обсудим, что делать, если хорошего промпта уже недостаточно: RAG, файнтюнинг, работу с ИИ-агентами. Ну и ограничения, в которые ИИ упрется, даже если вы все сделали правильно.
Читать далееГенерация карточек в нейросетях помогает быстрее собрать визуал, инфографику, тексты, УТП, сценарии фото и обложки для маркетплейсов. Задача ИИ — помочь покупателю быстрее понять товар и снять сомнения до клика по кнопке «Купить», а ещё протестировать как можно больше вариантов для наилучшей CR.
Читать далееУ нас есть форма, куда пользователь вводит ИНН контрагента, а мы по нему идём за данными в ЕГРЮЛ. Если заглянуть в логи этой формы, видно сколько туда прилетает мусора. ИНН из одиннадцати цифр (кто‑то добавил лишнюю), номера со срезанными ведущими нулями, ОГРН в поле для ИНН, и классика жанра — две соседние цифры переставлены местами. Каждый такой ввод это поход в чужой API, таймаут, ожидание, и в конце честное «ничего не найдено». А пользователь в этот момент уверен, что сломались мы.
Разобраться, кто сломалсяВсем привет, меня зовут Михаил, я работаю главным экспертом в ОТП Банке.
До банка я почти не работал в командах с выстроенными процессами. Суета, спешка, неадекватные сроки, переработки до ночи и постоянное тушение пожаров - всё это было привычной частью работы. Я видел, как команды выгорали, а проекты разваливались из-за отсутствия процессов.
В какой-то момент я сказал себе: «Стоп. Хватит. Пора уходить в компанию, где всё организовано правильно». Мне казалось, что там не будет хаоса, бессмысленных авралов и вечной гонки за дедлайнами.
Ну что могу сказать - я попал.
Только вот ожидания и реальность оказались совершенно разными.
В этой статье я расскажу, всегда ли выстроенные процессы идут на пользу, скучаю ли я по тому самому рабочему хаосу и что в итоге выбрать разработчику: свободу и скорость или предсказуемость и порядок.
Читать далееВсем привет! Я Дмитрий Милов, Python-разработчик компании МУЛЬТИФАКТОР в команде продукта MULTIDIRECTORY, мы разрабатываем собственную службу каталогов.
Как это обычно бывает в процессе развития продукта, код постепенно перестает помещаться в привычные рамки. Мы начали обсуждать, какое архитектурное решение лучше подходит нашей системе. Спор об определениях затянулся: у каждого были аргументы, почему одно решение лучше другого.
Почему продолжается путаница в концепциях, которые давно описаны и формализованы?
Читать далееИзначально цели у меня свергнуть с пьедестала популярные сетевые инструменты типа BloodHound и иже с ними не было. Нет ее и сейчас. У них было, есть и будет заслуженное место в арсенале redteam и blueteam‑команд. Все нижеописанное можно воспринимать с легкой иронией, как необычный побочный эффект моих изысканий.
Вопрос у меня был простой — какие компоненты подсистемы COM лежат в основе AD? Если вкратце, то Windows управляет AD через ADSI — Active Directory Service Interfaces. Это довольно замороченная COM‑абстракция над LDAP, которую использует сама Windows, когда компоненты, подключенные к домену, запрашивают каталог. Её используют процессы групповой политики, оснастки MMC и так далее
И, не сказать, чтобы прям совсем неожиданно, как побочный эффект ковыряния, вдруг обнаружилось, что вам не нужно самому пытаться построить топологию локальной сети под управлением AD — Windows это уже сделала за вас. И попросить у Windows эти результаты может кто угодно. Даже простой пользователь, без повышенных прав.
Поймать BloodHound'аКогда-то музыку слушали на пластинках, затем на кассетах, CD-дисках, потом пришёл Winamp и mp3-плееры.
Теперь же у нас есть музыкальные стриминговые сервисы, с которыми прослушивание музыки вышло на новый уровень и достигло максимального удобства.
Или же всё-таки не достигло? Я вот, например, пользуюсь Spotify. И казалось бы, это лидер среди музыкальных стримингов, у них-то точно должно быть всё на высоте. Но мне постоянно приходят мысли, что в их приложении не хватает той или иной функции.
К счастью, мы постепенно вступаем в ИИ-эпоху. А это значит, что если какой-то сервис предоставляет официальный API, то даже без знания программирования можно сделать себе нужную автоматизацию или даже построить полноценное альтернативное приложение.
Так и я недавно сорвался, засел на выходных с Codex и начал пилить свой собственный Spotify-улучшайзер.
В этой статье расскажу, что на данный момент получается и как это облегчает мне жизнь. А также покажу, как вы можете запустить себе такую же автоматизацию локально на своём ПК или на облачной платформе.
Читать далееПривет, Хабр! Меня зовут Мария Абросимова, я автор Projecto.
Когда говорят про управление проектами, обычно представляют IT-команду, разработчиков и спринты. Но если посмотреть на организацию работы, нет разницы между диджитал-агентством, строительной компанией и научным центром: везде нужно координировать людей, соблюдать сроки и понимать, что происходит по каждому проекту прямо сейчас.
В этой статье я расскажу, как научно-исследовательский центр «Дом Фармации» переехал из Excel в систему управления проектами. Их история показалась мне интересной для кейса по одной простой причине: большинство проблем, с которыми они столкнулись, знакомы любой компании, где одновременно идет много проектов. Только у них вместо маркетинговых кампаний или разработки продукта — научные исследования и разные сложнопроизносимые процессы типа «патоморфология» или «фармакокинетика».
Читать далееВ 2026 году скорость и анонимность перестали быть единственными критериями успешной работы в сети. Сегодня главный критерий — это безопасность данных, потому что интернет превратился в поле битвы, где каждый неверный шаг может стоить конфиденциальности или бизнеса. В погоне за доступом к глобальному контенту или обходом ограничений многие воспринимают прокси как простую техническую прослойку для выхода в интернет. Однако в действительности современные технологии проксирования представляют собой сложные многоуровневые системы, от которых напрямую зависит целостность и конфиденциальность данных.
В этой статье разберем, как устроен механизм работы прокси, чем отличаются типы соединений и протоколы передачи данных, а также какие риски несут бесплатные и публичные решения и как подходить к выбору собственной инфраструктуры.
Читать далееЕсли вы хоть раз тестировали локальную модель (да и нелокальную тоже) и замечали, как она посреди нормального текста вдруг выдает иероглиф, то заголовок статьи вам не покажется странным. И к концу будет ясно, что именно происходит когда ИИ-шка вам подсовывает иероглифы.
Статью я решил поделить на два уровня. Первая часть (без которой сложно понять вторую) — для тех, кто слышал слово «эмбеддинг», но не трогал его руками: разберем на пальцах и со стрелочками, что модель держит внутри своего цифрового серого вещества, в общем объясню простые вещи простыми словами. Вторая часть — для тех, кому интересно копнуть чуть дальше базы: туда я поместил grokking, фурье-частоты и суперпозицию, и там мы вытащим реальное пространство обученной модели и посмотрим, как оно устроено.
Читать далееСтатья написана, вычитана, проверена, картинки добавлены, кнопка «Опубликовать» нажата. И тут приходят они.... Кто эти люди, которые пишут комментарии? Ниже полный список «фантастических существ», обитающих под любой хабровской статьёй: от программирования до менеджмента и даже в хабе «Здоровье». Статья дополнена новыми видами, которые читатели предложили в комментариях. +БОНУС!
Читать далее