Покажу вам практическую реализацию семантического поиска на основе векторных представлений - эмбеддингов из текста. Здесь я создам систему, которая анализирует статьи с Хабра, извлекает из них темы и ключевые слова с помощью локально работающих больших языковых моделей LLM, и на основе этих данных создает векторные представления для эффективного поиска по смыслу, а не по запросу на вхождение определенного текста.
Читать далееПривет, Хабр!
В этой статье разберём мутный, но крайне важный инструмент ‒ std::launder. Мы поглядим, зачем его протащили в C++17 и что компилятор делает, когда видит launder.
Читать далее«We have a phrase inside Intel. We are supposed to be a data driven company and the phrase is, "Don't argue with the emotions, argue with the data."»
Andrew S. Grove, Chairman of the Board, Intel Corporation, August 9, 1998
В июле 2023-го года в «Байкал Электроникс» стартовал проект по разработке собственного AI-процессора. В данной публикации мы хотим рассказать, почему мы выбрали именно архитектуру GPGPU, какими данными при решении мы руководствовались, а во второй части немного рассказать о ходе разработки и поделиться полученным опытом.
Читать далееИдея этой статьи родилась во время задушевных разговоров на кухне и за утренним кофе с коллегами. Началось все с вопроса: «Что ты сказал бы себе прошлому, чтобы релизы стали легче, а спринты прекраснее?» Конечно, в тот момент я ничего дельного не ответил, но, кажется, наконец‑то сформулировал идеальную фразу: «Настоящий разработчик, Слав, это не тот, кто с сияющим макбуком и вкусным смузи. Разработчик — тот, кто делает то, что нужно сделать. И в легаси покопаться приходится, и memory leak дебажить, а он всё равно делает, потому что так надо».
Привет, Хабр! Меня зовут Вячеслав Чащухин, я — разработчик в МойОфис. Занимаюсь мобильной версией Squadus — цифрового рабочего пространства для совместной работы и деловых коммуникаций.
Обращаю ваше внимание на то, что эта статья — не инструкция по решению всех проблем. Скорее, чек‑лист причин, которые, по моему мнению, чаще всего приводят к тем или иным проблемам. Поэтому в некоторых пунктах будут ссылки или упоминания возможных решений. Я объединил проблемы по группам. Если вы обнаружили в своем приложении подлагивания или не хотите их обнаружить в будущем, рекомендую пройтись по пунктам :)
Читать далееМоё приложение представляет собой каталог, который объединяет профили исследователей безопасности с различных платформ, таких как HackerOne, Bugcrowd, GitHub и других. Фронтенд подключается к Supabase, и я создал его с помощью инструментов Lovable и Cursor. Вся автоматизация, которая подает данные в базу данных, обрабатывается отдельно.
Изначально я планировал разрешить пользователям самостоятельно регистрироваться через Supabase Auth и запрашивать профили, которые они хотели бы агрегировать. Но в процессе реализации я понял: это создаёт риски, ведь нужно корректно управлять как аутентификацией (какой именно пользователь), так и авторизацией (что ему разрешено). Я отказался от саморегистрации… но упустил важную деталь. (Подробнее об этом чуть позже.)
Читать далееВ рамках статьи расскажем о расширении pg_trace, предназначенном для сбора трассировок запросов в PostgreSQL, соберем трассировку на реальном примере работы приложения, оценим влияние сбора трассировки на производительность и агрегируем данные трассировки.
Читать далееСегодня хочу поговорить с вами про такую животрепещущую тему, как интеграция новых процессов в команду. Неважно, идёт ли речь о канбане, скраме, каких-то ритуалах которые вы проводите с утра - как только вы приносите что-то новое, начинается сопротивление. Даже если оно пассивное, даже если люди говорят «да-да, окей» - это ещё не значит, что процесс будет принят и заработает как надо.
Важно: мы сейчас не обсуждаем, стоит ли вообще что-то вводить. Предположим, вы уже всё проверили: провели анализ, посмотрели на команду, сравнили с метриками и точно уверены что изменения нужны. Тогда начинается настоящая работа: как это донести до людей и внедрить так, чтобы не вызвать саботаж.
Читать далееВ RAG-решениях все чаще обращаются к графовым базам данных. В этой статье я опишу своё мнение относительно того, в каких ситуациях графовые базы данных действительно оправданы в RAG, а в каких стоит остаться на традиционном векторном подходе. Это может быть полезно для разработчиков и исследователей, которые ищут оптимальные инструменты для построения RAG-решений и хотят понять, когда графовые базы данных могут помочь в их задачах.
Читать далееСегодня я расскажу о баге, который позволял мне захватить любой аккаунт пользователя. Сначала это была проблема уровня P4, но я не стал сообщать о ней, а довёл до уровня P1 с помощью цепочки уязвимостей. Без лишних слов — начнём!
Я не имею права раскрывать информацию о цели, поэтому давайте назовём её example.com. Это был обычный сайт. Ничего особенного: можно создать аккаунт, войти, поменять пароль и так далее.
Как обычно, я создал два аккаунта. Сначала зарегистрировался и вошёл в аккаунт жертвы, после чего проверил все запросы и ответы через Burp Suite. Я обнаружил, что сайт использует какой-то CSRF-токен для защиты от CSRF-атак. В исходном коде страницы я заметил, что сайтом каждому пользователю присваивается userID. Это шестизначный идентификатор, поэтому его можно легко угадать.
Далее я перешёл в настройки аккаунта, изменил часть своей информации (я всё ещё нахожусь в аккаунте жертвы) и зафиксировал этот запрос.
Читать далееВ 70 световых годах от Земли астрономы обнаружили удивительный мир — планету, чья орбита направлена противоположно движению второй звезды в системе. Главное светило там чуть массивнее Солнца, его компаньон — белый карлик. Планета, зажатая в узком пространстве между двумя светилами, не только существует в сложной гравитационной среде, у нее еще и ретроградная орбита. Все это делает ν Октанта настоящей загадкой для науки. Давайте попробуем разобраться.
Читать далееСинтетические данные – это искусственно сгенерированные наборы, имитирующие структуру и статистические закономерности реальных данных. В последние годы вокруг этой технологии возник значительный ажиотаж. Еще недавно аналитики прогнозировали, что уже к 2024 году до 60% данных, используемых для разработки ИИ, будут синтетическими. Однако на практике полностью перейти на «искусственные» данные пока не удалось. Экспертные отчеты отмечают, что возможности синтетических данных сейчас несколько переоценены и что они вряд ли смогут в ближайшем будущем полностью заменить реальные данные. В разных отраслях синтетические данные используются скорее точечно, а не повсеместно. Ниже мы рассмотрим ключевые причины, почему применение таких данных остается редким – от технических ограничений и бизнес-факторов до правовых барьеров.
Читать далееВсем привет, меня зовут Дмитрий Лоренц, я iOS-разработчик в IT-компании GRI. Наш основной клиент — Sunlight, для него мы разрабатываем нескольких мобильных приложений по полному циклу и поддерживаем сайт.
В этой статье я расскажу про нашу новую архитектуру для iOS-приложения и поделюсь некоторыми советами, как упростить себе жизнь и сделать код более лаконичным и читаемым.
Развертывание Bitwarden с AWS RDS и Terraform — безопасное и масштабируемое решение
Особое внимание уделено валидации переменных в Terraform , которая помогает избежать ошибок при настройке облачной инфраструктуры.
Собрали вдохновляющие истории от IT-специалистов, чтобы узнать, как им удается совмещать спорт с напряженной рабочей рутиной и не терять мотивацию (и как и когда они эту мотивацию нашли).
Читать далееПривет, Хабр!
Вы запускаете многопроцессную задачу, кидаете данные в multiprocessing.Queue(), а потом вдруг замечаете... что всё тормозит. Муторно. Медленно. Местами прям отвратительно. Вы смотрите в монитор, на top, на htop, на код — и не понимаете: ну ведь должно же летать! А не летит.
Читать далееКоманда Spring АйО перевела и адаптировала доклад Даниэля Гарнье‑Муару «Spring Security Architecture Principles», в котором на наглядных примерах рассказывается, как пользоваться возможностями Spring Security, не запутываясь на каждом шагу и не зарабатывая себе головную боль.
Доклад публикуется тремя частями. В первой части было рассказано об основных подходах к созданию цепочек фильтров, а также разработан простейший фильтр. Во второй части мы рассказали об Authentication объектах и продемонстрировали, как разработать специализированный фильтр для обеспечения доступа программы-робота к основному приложению. В третьей части мы поговорим об абстракции AuthenticationProvider и приведем пример ее использования.
Читать далееКоманды по разработке ПО, работающие самостоятельно, используют более широкий набор инструментов, чем когда-либо прежде. В обычной команде по разработке ПО может быть двадцать или даже тридцать инструментов.
В этой статье мы обсудим набор инструментов для тестировщика, о том, как выбрать между проприетарным и открытым исходным кодом, а также разберем краткое упражнение по выбору инструмента.
Читать далее