Feed aggregator

Почему нормализация контактных данных сложнее, чем кажется: опыт разработки движка очистки CRM-баз на Python

Habr.com - 1 hour 59 min ago

Грязные данные в CRM — это всегда дубли, ошибки в рассылках и «кривая» аналитика. В статье рассказываю, как я реализовал API для автоматической нормализации телефонов, email и имен на FastAPI, и почему простая проверка регулярками не заменяет систему оценки качества данных (QC).

Попробовать Demo API

Как мы отсеиваем 95% мусора из Telegram-чатов до того, как сообщение попадёт в LLM

Habr.com - 2 hours 12 sec ago

Привет, Хабр!
Меня зовут Артём, я фаундер Leadl.ai. Мы строим AI-агента для поиска b2b-клиентов, и одна из его ключевых задач это мониторинг чатов и различных источников.
Звучит просто, пока не сталкиваешься с масштабом.

У нас в пуле 20000+ чатов в 15 источниках. Суммарно около 1000 000 000 сообщений в сутки. Из них реально полезных (запросы на услуги, поиск подрядчиков, вакансии) от силы 3-5%. Остальное: флуд, криптоспам, «доброе утро», мемы и бесконечные стикеры.

Задача: вытащить эти 3-5% качественных сообщений. Первой мыслью было отдать всё на откуп большой LLM типа GPT-4o. Посчитали. Среднее сообщение 50 токенов. 100 000 сообщений 50 токенов/сообщение ($10 / 1M токенов) = $50 в день только на input. Добавьте сюда output и prompt — и счёт легко перевалит за $100-150/день или $3000-4500/месяц. Для стартапа это путь в никуда.

Нам нужен был pipeline, который бы отсеивал мусор на ранних этапах, чтобы до дорогого LLM-скоринга доходило не более 5-10% от всего потока. Вот как мы его построили, через какие грабли прошли и что из этого вышло.

Читать далее

[Перевод] Temporal: долгий процесс решения проблемы времени в JavaScript

Habr.com - 2 hours 13 min ago

Как меняется JavaScript?

JavaScript уникален тем, что работает во всех браузерах. У него нет какого-то одного «владельца», поэтому нельзя внести изолированное изменение и ждать, что оно будет применено везде. Эволюция происходит через TC39 — Технический комитет, отвечающий за ECMAScript.

Предложения должны пройти последовательность этапов развития:

• Этап 0: идея.

• Этап 1: принято пространство задач.

• Этап 2: выбрана архитектура драфта, но работа продолжится.

• Этап 2.7: предложение одобрено в принципе; ожидает тестирования и обратной связи.

• Этап 3: реализация и обратная связь.

• Этап 4: предложение стандартизовано.

В 2018 году, когда я впервые изучал Temporal, он находился на Этапе 1. Комитет TC39 был убеждён, что проблема реальна. Это было радикальное предложение по добавлению в JavaScript новой библиотеки дат и времени. Она должна была:

• Стать заменой Date.

• Добавить новые типы DateTime (вместо единого API).

• Стать неизменяемой.

• Добавить поддержку часовых поясов и календаря.

Но как мы к этому пришли? Почему Date вызывает столько проблем? Чтобы ответить на эти вопросы, нужно вернуться назад.

Читать далее

[Перевод] Как писать изолированные интеграционные тесты с Testcontainers

Habr.com - 2 hours 13 min ago

Интеграционные тесты любят все на словах, пока не доходит до окружения, зависимостей и плясок с подготовкой стенда. В статье разберем более практичный подход: как писать изолированные интеграционные тесты с Testcontainers, не превращая их в хрупкую конструкцию из моков и костылей. На примере PostgreSQL и .NET посмотрим, как собрать тестовую среду, которая ведет себя достаточно близко к реальности, но при этом остается воспроизводимой и управляемой. Тема не новая, а боль до сих пор вполне живая — так что давайте разбираться.

Разобрать подход

Как недорогой MacBook Neo за $600 меняет рынок ноутбуков на Windows

Habr.com - 2 hours 14 min ago

Apple неожиданно выкатилa MacBook Neo — ноутбук всего за шесть сотен долларов. Само по себе устройство не выглядит чем-то экзотическим: компактный корпус, фирменный чип, обычный набор возможностей. Но именно цена сразу привлекла внимание. Макбуков за такие деньги раньше просто не было, поэтому новинка быстро стала одной из самых обсуждаемых тем в индустрии. Последствия для рынка могут быть весьма неожиданными. Попробуем разобраться, почему эта модель вызвала столько внимания и что она способна изменить.

Читать далее

Что больнее OT или CRDT в совместном редактировании? И почему до сих пор нет идеала?

Habr.com - 2 hours 24 min ago

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

Меня зовут Антон Леонтьев, я старший разработчик в команде ядра редакторов МойОфис. Мы создаём офисные приложения, которыми ежедневно пользуются более 12 500 организаций, и совместное редактирование — одна из ключевых возможностей наших продуктов.

И знаете, что самое обидное в этой теме? За 35 лет исследований были опубликованы сотни научных работ. Google Docs работает с 2006 года. У Figma, Notion и Linear свои реализации. Казалось бы, задача давно решена, но стоит копнуть глубже, и становится понятно: универсального решения нет.

В Google Drive и Dropbox до сих пор всплывают баги с одновременным перемещением папок. В Notion при параллельном редактировании одного и того же абзаца можно потерять часть изменений. Даже Yjs — самая популярная CRDT-библиотека — не хранит полную историю документа в привычном для нас виде.

В этой статье разберём теорию, узнаем, какие проблемы решают Operational Transformation (OT) и Conflict-free Replicated Data Types (CRDT), на каких математических идеях они основаны, чем отличаются архитектурно и какие компромиссы неизбежно возникают в каждом подходе.

Интересно узнать, почему даже Google не смог сделать идеальное решение? Детали под катом.

Читать далее

Вы считаете ИИ-ускорение неправильно, сливая бюджет в трубу, пока 7 из 10 проектов умирают ещё на этапе пилотов

Habr.com - 2 hours 38 min ago

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

Мы взяли секундомер и устроили жёсткий тест четырём нашим производственным направлениям: мобилке на Native и Flutter, аналитике и QA. Дали командам доступ в Cursor и Claude Code, чтобы вытащить на свет реальные цифры. По итогу — разрыв между цифрами и действительностью оказался шокирующим. 

Читать далее

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

Habr.com - 2 hours 40 min ago

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

Читать далее

Как раздать десятки публичных IP сотням виртуальных машин и не упасть

Habr.com - 2 hours 42 min ago

Недавно в MWS Cloud Platform появилась поддержка Egress NAT. В статье разберём архитектуру распределённой системы трансляции адресов, почему мы выделяем порты блоками и как обеспечиваем корректную передачу обратного трафика в условиях ECMP-маршрутизации. Плюс как это всё переживает рестарты, потерю событий и рассинхронизацию и всё равно сходится к правильному состоянию.

Читать далее

От простыней к DSL: эволюция UI-тестов на Java

Habr.com - 2 hours 43 min ago

В этой статье я хочу поделиться личным опытом эволюции UI-тестов в AQA-проекте. Речь пойдет о том, как из типичных простыней с assertEquals(), множественными прямыми вызовами методов страницы и деталями реализации можно прийти к более выразительному и читаемому подходу - внутреннему DSL поверх Page Object.

Читать далее

Автоматизируем виртуализацию: концептуальные подходы на базе Terraform и Ansible

Habr.com - 2 hours 44 min ago

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

Серверная виртуализация, как и zVirt в частности, не стала исключением среди других рабочих процессов. Пользователи желают решать задачи быстрее, операторы хотят уменьшать количество шагов и ручных операций, время доставки виртуальной машины потребителю — основная функция серверной виртуализации — должно уменьшаться. И снижение влияния человеческого фактора — благодатная почва для оптимизации.


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

Это первая часть цикла статей. В ней мы определимся с объектом автоматизации, обсудим ее основные концептуальные подходы и попытаемся сформировать глобальное видение результата. Для новичков в применении Ansible и Terraform данная статья может служить еще и небольшим введением в тематику. В последующих статьях сосредоточимся на инфраструктуре провайдера, поддержке ресурсов и их жизненных циклов и т.п. 

Читать далее

ИИ-помощник для поиска работы на hh.ru

Habr.com - 2 hours 54 min ago

Привет, Хабр! Меня зовут Кияшева Екатерина. В начале марта я активно занялась поиском работы после творческого отпуска и сама столкнулась с радикальным изменением рынка:

- Нет откликов: открыть резюме на пару дней больше не работает.

- Фильтрация на hh.ru, на мой взгляд, сильно забагована. Автопоиск сбрасывает часть фильтров. В рассылку попадают вообще не интересные вакансии, а интересные не попадают. В чате поддержки отвечает бот, так что сообщить девелоперу о баге невозможно.

- Статистика по вакансиям показывает резкий пик откликов с первого дня публикации. До поздних откликов рекрутеры похоже не добираются.

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

Читать далее

Git workflow для частых и независимых релизов веб-сервиса

Habr.com - 3 hours ago

Git стал таким же привычным явлением, как электричество в розетке. Его можно использовать совершенно по-разному — он либо сделает вашу жизнь удобнее, либо причинит боль и доставит кучу проблем.

Привет, меня зовут Макс Мартынов и я ведущий разработчик в Атвинте. В этой статье расскажу про наш подход к Git workflow, в котором баги одной фичи не блокируют деплой другой. Существует множество подходов и наш, конечно, не единственно верный.

Читать далее

Рынок труда ИТ-2025: зарплаты, конкуренция, общее состояние

Habr.com - 3 hours 11 min ago

Каждый год мы проводим исследования рынка труда, в том числе, конечно, сферы ИТ. И делимся результатами с Хабром — у нас в блоге можно посмотреть предыдущие, за 2023 и 2024 годы. А сегодня предлагаем читателям свежие сводки.

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

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

Узнать подробности

Как не стать «шлангом», работая в системе

Habr.com - 3 hours 15 min ago

У любой большой системы есть неписаные правила. Формально они нигде не закреплены, но именно по ним в итоге и живет организация.

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

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

Это вполне рабочая модель поведения, которая внутри системы действительно поощряется. Причем, как справедливо заметили в комментариях к предыдущей статье, касается это не только ФНС.

И моя проблема была не в том, что я этого не замечал. Просто довольно долго я считал, что

Читать далее

Влияет ли безель на охлаждение сервера: результаты стресс-тестирования OpenYard RS201I

Habr.com - 3 hours 17 min ago

Может ли фронтальная панель сервера повлиять на его охлаждение? Такой вопрос обязательно возникает при проектировании серверов, особенно в системах с высокой плотностью размещения и повышенной температурой входного воздуха. 

Чтобы проверить это на практике, мы провели стресс-тест сервера OpenYard RS201I на базе процессора Intel третьего поколения и сравнили его работу в двух сценариях ― с установленным безелем и без него.

Узнать больше

ПМК и Кастанеда. Неорганические существа

Habr.com - 3 hours 23 min ago

Следуя традиции древних видящих, статьи КЭИ (Клуб Электронных Игр) из журнала ТМ, фактически, содержали две части. «Обучение для правой стороны» давалось в виде повести Михаила Пухова «Путь к Земле» и серии «космических программ», позволявшим вместе с героями повести совершить перелёт с Луны на Землю. 

«Обучение для левой стороны» постепенно раскрывало возможности ПМК в состоянии «повышенного осознания» - во время использования «недокументированнных операций». 

Находки исследователей советских ПМК были не менее впечатляющими, чем открытия шаманов древней Мексики. Поэтому, с моей точки зрения, они вполне заслуживают чести называться советскими видящими.

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

Читать далее

Как делать внешние API, если сервисов слишком много

Habr.com - 3 hours 24 min ago

Когда у вас один‑два сервиса и несколько интеграций, внешний API легко держать под контролем. Но если их десятки и каждый хочет выставиться наружу, приходится придумывать свой велосипед.

Меня зовут Юрий Коберман, я технический продакт в Точка Банк. Мы в команде несколько раз меняли систему работы с API. Начинали с одной команды, которая писала всё вручную, и постепенно пришли к универсальному инструменту, с помощью которого сервисы могут выходить наружу самостоятельно без очереди и потери качества. Подробности — в этой статье.

Читать далее

МVP случился. Что дальше?

Habr.com - 3 hours 42 min ago

Всем привет, я Артем Герасимов, владелец продукта SimpleOne SDLC. Чуть больше года назад я пришел в компанию в момент, когда продукт только прошел стадию MVP, которую мы делали быстро, чтобы проверить гипотезу. Гипотеза подтвердилась, появились клиенты, но вместе с ними пришел беспорядок: запросы терялись между почтой и чатами, сроки срывались, процессы перестали работать.

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

Читать далее

Владение и локальность

Habr.com - 3 hours 45 min ago

Итак, Вы – руководитель разработки (главный инженер, архитектор и т.п.) большой системы. После здравых размышлений Вы (обосновано) выбираете для системы микросервисную архитектуру. Далее Вы (и опять обоснованно) разделяете систему на микросервисы, продумываете API, рисуете стрелочки и диаграммы и можно программировать.

Можно? Наверное, но лучше сначала рассмотреть принципы владения данными, обеспечения передачи данных потребителям, поддержки версионирования контрактов данных.

В этой статье мы рассматриваем два принципа: «Данными владеет только владелец» и «Локальность данных». Понимание принципов, понимание возможностей проектирования доступов к данным позволит Вам спроектировать устойчивые и надежные системы. 

Читать далее

Who's online

There are currently 0 users and 0 guests online.
Syndicate content