Обновить

Все потоки

Сначала показывать
Порог рейтинга
Уровень сложности

Один пользователь зарегистрировался у вас четыре раза, и все четыре легально

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели8.1K

Коллеги жаловались на дубли в базе пользователей: людей меньше, чем учётных записей, а откуда берётся расхождение - непонятно. Объяснилось оно одной строкой в коде, которая сравнивает адреса посимвольно.

В базе четыре учётные записи: Ivan.Petrov@gmail.com, ivanpetrov@gmail.com, ivan.petrov+shop@gmail.com, IVAN.PETROV@gmail.com. С точки зрения кода это четыре разных строки. С точки зрения почты - один и тот же ящик, все письма придут в одно место.

Дальше начинается интересное: акции «только для новых пользователей», лимиты на бесплатный период, «одна заявка на человека» - всё это обходится без единой уловки, просто точкой в адресе.

Читать далее

Сарайчик или музей: как выбирать между быстрым MVP и идеальной архитектурой

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.8K

В разработке почти всегда приходится выбирать между быстрым решением и технически идеальным. И почти всегда правильный ответ находится где-то между крайностями.

За последние годы я видел два почти зеркальных примера.

Первый сервис буквально дышит на ладан. Операционка съедает больше половины времени команды, релизы заставляют нервничать, а часть конструкции держится на подпорках и знаниях нескольких старожилов.

Но сервис коммерчески успешен. Он нашёл аудиторию, приносит деньги и продолжает расти.

В соседнем мире команда построила решение, которое можно ставить в музей. Красивые контракты, современный стек, продуманная архитектура и почти физическое удовольствие от того, насколько всё правильно устроено.

Только стоимость разработки оказалась в разы выше потенциальной прибыли — и сервис закрыли.

Прощаться со вторым проектом бывает даже тяжелее, чем с первым. В него вложено столько сил, что хочется продолжать уже не ради продукта, а чтобы оправдать предыдущие инвестиции.

Эти два случая хорошо показывают неприятную вещь: коммерческий успех не доказывает качество технического решения. Но и техническое совершенство ничего не говорит о ценности продукта.

Технический долг — не моральная категория

Найти ПДн, замаскировать, развернуть копию: большой разбор открытого pg_anon

Уровень сложностиСредний
Время на прочтение56 мин
Охват и читатели14K

pg_anon — полностью открытый инструмент для PostgreSQL, который ищет персональные данные по заданным правилам и выгружает копию базы уже замаскированной. За год проект заметно вырос: частичный дамп и восстановление, поддержка сложных схем, REST API, новый CLI. В статье разбираем все режимы на реалистичной демо-базе.

Читать далее

Заметки на полях: геометрия замкнутых потоков

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели9.1K

Современные геометрические формулировки релятивистской физики обычно начинают с уже готовой структуры пространства-времени. В специальной теории относительности исходно задаётся четырёхмерное пространство с лоренцевой метрикой; в общей теории относительности метрика становится динамической, но само различие времеподобных, пространственноподобных и светоподобных направлений по-прежнему входит в фундаментальное описание через локальную сигнатуру пространства-времени. Электромагнитное поле затем определяется на этом геометрическом фоне как дополнительный объект – 2-форма, антисимметричный тензор или бивектор.

Такая последовательность математически чрезвычайно эффективна, однако оставляет открытым более ранний вопрос: почему физическая геометрия вообще должна начинаться именно с лоренцева пространства-времени?

Читать далее

LLM, персональные данные и 152-ФЗ

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели11K

Мы занимаемся внедрением LLM и агентов в бизнесы, и одна из самых частых проблем — как обрабатывать данные клиентов и при этом соблюдать закон 152-ФЗ о персональных данных.

Давайте разберёмся!

Цифровая амнезия: почему ИИ‑стратегия тотального исключения человека в банках может завести в тупик?

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели11K

Мое общение в последнее время с российскими банками побудило меня разобраться, как сейчас принимаются решения в отношении обычных вкладчиков. Понятно, что все банки используют систему ИИ в большей или меньшей мере. Алгоритм принятия решений у всех банков индивидуальный. Это обусловлено индивидуальной политикой банка в отношении систем ИИ, построенных в каждом конкретном банке. Эта статья - обзор существующих систем ИИ в банковском секторе с реальными примерами.

1. В чем различие банковских ИИ систем. Международная классификация: HITL, HOTL и HOOTL

1) Human-in-the-Loop (HITL). Человек является прямым участником каждого рабочего цикла системы. ИИ выполняет задачу или предлагает вариант, но финальное решение или одобрение каждого шага остается за человеком.

Пример:

HSBC, BNP Paribas: Европа находится под жесточайшим давлением Закона ЕС об ИИ (EU AI Act). Статья 14 этого закона прямо обязывает финансовые институты разрабатывать высокорисковые ИИ-системы так, чтобы их могли «эффективно контролировать физические лица».

Кейс: Потребительские кредиты и ипотека.

Как устроено: ИИ считает кредитный балл, используя сотни параметров, но если уровень уверенности модели ниже условных 95%, система обязана перенаправить заявку живому кредитному инспектору. В HSBC создан специальный AI Review Committee, который лично валидирует логику работы алгоритмов в спорных случаях.

Опросы HSBC показывают, что 62% богатых европейских инвесторов требуют, чтобы за финальным решением всегда стоял живой советник, а не алгоритм.

Читать далее

Одна цифра сломала QR. Почему успешного чтения недостаточно

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели11K

Два QR одинакового размера, одна строка и пять блоков вместо шести. С виду оба исправны, но из одного два декодера не смогли извлечь ничего. Восстанавливаем опечатку, разбираем её путь через кодировщик и проверяем, почему даже успешное чтение не доказывает правильность QR. Шесть иллюстраций, 160 сочетаний версии и уровня коррекции, 960 сравнений с Nayuki и код эксперимента для самостоятельного запуска.

Читать далее

Ручного курьера приняли за чужого: почему ID оказался плохим признаком происхождения записи

Время на прочтение5 мин
Охват и читатели9.9K

04.09 в 09:06:45 UTC ночной опрос Fleet нашёл одного «нового» курьера. Дальше автоматика отработала без единой ошибки: new_ids: 1, dispatch_alerted: 1, sms_sent: 1. В Google Sheet появилась строка 1248, в служебную группу пришёл алерт, человеку ушла SMS с просьбой подтвердить налоговый статус.

Читать далее

Claude Code взломали просьбой пересказать сайт

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели18K

Представь простую задачу: ты просишь агента пересказать содержимое сайта.
Не установить пакет.
Не запустить скачанный скрипт.
Не открыть подозрительное вложение.
Просто прочитать страницу и сделать краткое резюме. Через несколько шагов на твоей машине выполняется код атакующего, устанавливается соединение с управляющим сервером и для наглядности открывается калькулятор.

И самое интересное: агент не нарушал прямой запрет. Наоборот, в ключевой момент он поступил "безопасно" — отказался запускать неизвестный бинарный файл и написал собственный декодер на Python. Именно это решение и стало частью атаки.

Такую цепочку продемонстрировал исследователь безопасности Иоганн Ребергер на Claude Code с моделью Opus 5 в Auto Mode. В его небольших сериях тестов атака срабатывала в трёх или четырёх запусках из пяти. Это не означает, что "Claude взламывается с вероятностью 80%", но хорошо показывает более важную проблему: безопасный на вид отдельный шаг ничего не гарантирует, если вся цепочка строится в среде, которую контролирует атакующий.

И чего он там наломал?

Как микросервисный подход помог нам спроектировать обучающую платформу для Авито Рекламы

Время на прочтение6 мин
Охват и читатели11K

Привет, Хабр! Меня зовут Екатерина Юдина, я отвечаю за контент-направление в Авито Рекламе. В этой статье расскажу, как мы перестроили обучение работе с рекламным кабинетом по принципу микросервисной архитектуры и почему решили подойти к образовательному продукту так же, как к ИТ-системе.

Рекламный кабинет постоянно развивается: появляются новые инструменты, меняется интерфейс и логика настройки кампаний. Именно поэтому нам было важно создать не просто обновленный курс, а систему обучения, которую можно развивать вместе с продуктом.

Имея бэкграунд в ИТ, я предложила использовать принцип микросервисного подхода. Мы взяли готовую LMS-платформу, но выстроили обучение поверх нее как систему независимых, связанных между собой сущностей: базовый и продвинутый курсы, интерактивный тренажер, центр обновлений и практика настройки кампаний по отраслям.

Посмотреть базовый обучающий курс

Читать далее

А как у них-2: как регистрируют программы в Европе

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели9.4K

Под моей статьёй с разбором реестра российского ПО в комментариях спросили: интересно, а как регистрируют программы за рубежом.

Под статьей с разбором, как регистрируют программы в США, спросили: интересно, как регистрируют программы в Европе.

Сюжетная арка закрутилась и я пошла искать европейский аналог российского Роспатента или американского Copyright Office, но не нашла.

Читать далее

Ошибки аналитиков, проектирующих системы под себя

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели10K

Аналитик может создать логичную систему, которая окажется неудобной для тех, кто ей пользуется каждый день. Разбираем, почему возникает разрыв между ожиданиями специалиста и реальной работой пользователей, и как избежать проектирования «фантомных пользователей».

Разобрать ошибки

Свой git без gitlab‑комбайна: настраиваем gitea, подключаем ci и проверяем полное восстановление

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели14K

Как завести свой Git на небольшом VPS и не превратить его обслуживание в отдельный проект? Показываю свой путь с Gitea: настройку пользователей и SSH, перенос репозиториев из GitHub и подключение CI через Gitea Actions. А затем проверяю бэкап делом - восстанавливаю из внешней копии. С командами, ошибками и оговорками по безопасности - для личных проектов и небольших команд.

Читать далее

Ближайшие события

Как я скормил stealth/ox‑alpha 60 млн токенов, или история о том, как «навайбкодилось» 127 нод в n8n

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели11K

В финале прошлой статьи я обещал разбор контура генерации ответов с гибридным извлечением данных (LLM‑tools + regex). Но пока немного переиграем планы и переключимся в другую тему — причина практический инженерный эксперимент. Постараюсь вкратце и по существу.:‑)

Читать далее

Почему фирменный стиль ломается внутри интерфейса

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели11K

Фирменный стиль может отлично работать в брендбуке и на рекламных носителях, а в интерфейсе довольно быстро начать мешать. Шрифт оказывается неудобным для таблиц, фирменному цвету не хватает контраста, выразительная графика превращается в шум после десятого повторения, а между макетом в Figma и браузером появляются состояния и ограничения, которых раньше вообще не было. В этой статье разберу, что происходит с айдентикой при переносе в цифровой продукт и почему интерфейс почти всегда заставляет пересобирать часть исходных решений.

Читать далее

Rust: Макетирование форм для Iced 14

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели12K

Привет, Хабр!

Некоторое время назад у меня образовалось немного (вернее много) свободного времени, и я между моментами серфинга на известном сайте HH решил посмотреть в сторону освоения Rust. Кроме всего прочего мне очень интересует тема библиотек графических интерфейсов.

В Rust есть несколько подобных библиотек, я решил остановиться на Iced — текущая версия Iced 0.14. Прежде всего понадобилось понять принципы построения библиотеки и архитектурную философию паттерна ELM, которая реализована в библиотеке.

В процессе изучения родился описываемый ниже PET‑проект Iced Forms Pack. Проект представляет собой конструктор форм из базовых элементов Iced.

Читать далее

Компонентные токены за 15 минут вместо двух дней с помощью ИИ: пошаговый процесс и подводные камни

Время на прочтение12 мин
Охват и читатели12K

Первый компонент мы собирали два дня, пятнадцатый занял у нас пятнадцать минут. Всё, что появилось между ними, это файл DESIGN.md, набор правил и понимание, в каких местах нейросеть сочиняет алиасы, которых в системе никогда не было.

Привет, Хабр! Меня зовут Екатерина, я продуктовый дизайнер и развиваю дизайн-систему Сова в экосистеме «Лукоморье».

Нам нужно было связать дизайн, токены и код на уровне компонентов. Для этого пришлось описать каждый компонент до мелочей: размеры, варианты, состояния, отступы, цвета. Руками такое делать можно долго, поэтому механическую часть мы отдали нейросети. Всё получилось не с первого раза.

Ниже весь процесс целиком: как мы выгружали компоненты из Pixso, что писали в markdown-файлах с правилами и шаблонами, и как потом проверяли, что нейросеть не насочиняла лишнего.

Читать далее

Как AI меняет фарму: опыт «АстраЗенека» в России и в мире

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели12K

Фарма - индустрия с долгими циклами, сложными процессами и высокой ценой ошибки. Это особенно видно на пути разработки препарата: от поиска перспективной молекулы и доклинических исследований до нескольких фаз клинических испытаний, регистрации и вывода на рынок. В среднем разработка одного препарата занимает 10-15 лет и стоит порядка 1-2 млрд долларов, а из кандидатов, дошедших до клинических исследований, девять из десяти не доходят до регистрации1.

Мы не будем писать текст в жанре «внедрили AI → стало лучше». Таких материалов на Хабре уже много, и ввиду распространённости и повального культа AI они могут не вызывать доверия. Нам интереснее показать, что меняется в самой логике работы фармы - на конкретных примерах.

Читать далее

Код как борьба. Кратчайшая история IT. 2. Джон фон Нейман

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели11K

Прошлый герой доказал, что универсальная вычислительная машина в принципе возможна. Сегодняшний - просто взял и начертил её, между делом, работая в это же время над атомной бомбой.

Это третья статья цикла “Код как борьба: Кратчайшая история IT”. И после довольно тяжёлого прошлого выпуска про Тьюринга тон сегодня будет совсем другим - не личная трагедия, а история человека, который, кажется, физически не мог заниматься одной вещью за раз.

Погнали

Очередные извращения с DOOM: упаковали в sheet-контейнер и запустили внутри Sheeternetes в электронной таблице

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели11K

Есть проверенный закон вселенной: если у чего-то есть экран и хоть немного памяти, рано или поздно на этом запустят DOOM. Запускали на осциллографах, на тесте на беременность, на кофемашине и на тракторе. Мы в Sheet-Native Computing Foundation тоже решили побыть в этом уже достаточно запылившемся тренде и запустить DOOM в контейнере, упакованном в ячейки электронной таблицы. То есть образ контейнера с игрой физически лежит в ячейках, оттуда собирается обратно в Docker-образ, проверяется по sha256 и запускается.

В первой статье я рассказывал про Sheeternetes — оркестратор контейнеров, у которого весь control plane (Deployments, Nodes, Pods, Events) живёт внутри Google Таблицы или Excel, а на другом конце крутятся настоящие Docker-контейнеры. Там же мельком был упомянут наш формат образов — SICF (Sheet-Native Image Container Format). Эта статья как раз про него: как он устроен, как всё это воспроизвести у себя, как оно работает на bare metal (то есть в эксельке, а не гугл-таблице) без интернета и какие неожиданно интересные находки вылезли, когда мы начали пихать всё это дело в ячейки Google Sheets.

Спойлер: DOOM — настоящий (Chocolate Doom плюс свободный Freedoom, всё в Linux-контейнере, играется в браузере с клавиатуры).

Читать далее
12 ...
50