Представьте, перед вами задача – после авторизации пользователя навигировать его на главный экран, или показать snackbar, например, об ошибке.
В Android для таких событий есть специальное название – One-Time Events, или же просто Effects – события, которые мы отправляем UI из ViewModel и хотим, чтобы они обработались ровно один раз. И они отличаются от состояния экрана! Состояние существует всегда, а effect отправляется и обрабатывается единожды; в состоянии существуют данные, с которыми user взаимодействует, или которые повторно могут отображаться на экране, когда как effect — совершенно противоположное.
Моделировать такой паттерн можно несколькими способами: через состояние, SharedFlow или Channel. В этой статье мы разберем на простом примере каждый подход и обсудим минусы и плюсы, а также обсудим лучшее обходное решение!
Авторы: Екатерина Гафиятуллина, менеджер по развитию бизнеса Innostage, и Артём Шмарев, руководитель центра компетенций по управлению данными Юникон Бизнес Солюшнс
Данные перестали быть вспомогательным ресурсом для отчётности или аналитики. Сегодня они лежат в основе операционной деятельности организаций, клиентских сервисов, производственных процессов и стратегических решений. Но в то же время данные становятся одной из главных мишеней для кибератак.
При этом бизнес требует мгновенного доступа к данным — для аналитики, машинного обучения, цифровых продуктов и автоматизации. Но чем активнее они циркулируют между внутренними системами, облачными хранилищами, подрядчиками и ИИ-контурами, тем сложнее обеспечить их защиту и управляемость. На этом фоне ключевой вызов для CISO (Chief Information Security Officer, директор по информационной безопасности) и топ-менеджмента — отсутствие полной картины: какие данные существуют, где они хранятся, кто имеет к ним доступ, как они перемещаются и какие риски создают для бизнеса.
В этой статье я расскажу о том, как при помощи химических манипуляций получил из фруктов хладагент для моих проектов, связанных с охлаждением. Я возьму обычные, ничем не примечательные фрукты и превращу их в этилен, а также проведу небольшую демонстрацию того, как получить из них этан. Это два основных типа углеводородных хладагентов, используемых на второй стадии в каскадной системе парокомпрессионного охлаждения. Поставщики берут за эти хладагенты безумные деньги, несмотря на то, что производить их не так сложно.
Я не буду получать более тяжёлые углеводороды, используемые как хладагенты первой стадии (в качестве предварительного охладителя), например, бутан или пропан, потому что их молекулы представляют собой гораздо более длинные цепочки, а в общем случае, похоже, чем длиннее углеводород, тем сложнее его синтезировать. Хотя этилен, теоретически, можно преобразовать в бутан даже на установке любительского уровня, после чего использовать его на первой стадии, но это уже тема для отдельной статьи или видео.
Вышел 9-й номер журнала Paged Out (#8 выпустили в июне), который включает в себя различные материалы на тему этичного хакинга и информационной безопасности. Издание публикуется в формате: 1 страница — 1 статья. Все остальные Paged Out выпуски можно скачать с сайта проекта.
Как реализовать семантический поиск для RAG-архитектуры в PostgreSQL без усложнения инфраструктуры?
Ситуация: вы разрабатываете чат-бота для техподдержки на базе RAG-архитектуры. Используете PostgreSQL как хранилище знаний и делаете поиск по текстовым полям, но качество ответов нестабильное: система плохо справляется с синонимами, профессиональным сленгом и переформулировками запросов. Обязательно ли внедрять отдельную векторную базу данных, или можно реализовать семантический поиск прямо в PostgreSQL? Возможна ли простая проверка продуктовой гипотезы без усложнения архитектуры?
Да, семантический поиск в RAG-сценариях можно реализовать прямо в PostgreSQL без выделенной векторной базы данных (ClickHouse, Opensearch, Qdrant, Milvus и т. д).
Для этого используется PostgreSQL + расширение pgvector, которое добавляет поддержку хранения эмбеддингов (векторов) и поиск по расстоянию до ближайших соседей (KNN) прямо внутри SQL-движка. Разберем, как это работает на практике.
В RAG-пайплайне текст документов и запрос пользователя преобразуются в векторные представления. PostgreSQL хранит эти векторы в таблице и позволяет выполнять поиск по смысловой близости, а не по точному совпадению слов.
Для этой задачи будем использовать pgvector — это расширение к PostgreSQL, которое добавляет тип данных vector и операторы поиска по расстоянию до ближайших соседей (KNN).
Поддерживаются три основные метрики сравнения векторов:
L2 (евклидово расстояние) — классическое расстояние между двумя точками в многомерном пространстве. Хорошо работает, если векторы не нормализованы и распределение значений относительно равномерное.
Cosine similarity (косинусное сходство). В отличие от предыдущей метрики измеряет не абсолютное расстояние, а угол между двумя векторами. Подходит для текстовых эмбеддингов, где важна направленность, а не масштаб. Требует нормализации векторов.
Inner product (внутреннее произведение) — скалярное произведение двух векторов. Может использоваться как прокси для оценки «сходства» при обучении моделей и в задачах ранжирования.
Допустим, мы получаем на наш запрос именно такой вектор от модели OpenAI. Для хранения создаем таблицу с типом VECTOR:
CREATE TABLE items (
id SERIAL PRIMARY KEY,
title TEXT,
embedding VECTOR(1536)
);
Добавим данные для нескольких векторов разных объектов:
Теперь сравним их попарно и отсортируем по расстоянию:
SELECT
a.title AS title_a,
b.title AS title_b,
a.embedding <-> b.embedding AS distance
FROM items a
JOIN items b ON a.id < b.id
ORDER BY distance;
Оператор <-> здесь вычисляет расстояние между двумя векторами. Таким образом, мы можем оценивать степень семантической близости любых объектов, представленных векторами. Какая именно метрика используется, зависит от операторного класса, заданного при создании индекса.
В подобных RAG-сценариях нет необходимости сразу вводить отдельный класс инфраструктуры типа векторная БД. Семантический поиск можно реализовать эволюционно поверх существующего PostgreSQL.
А если вы не хотите самостоятельно заниматься настройкой индексов, тюнингом памяти и производительности, а также обновлением версии PostgreSQL, то воспользуйтесь DBaaS от Selectel. Мы предоставим вам кластер PostgreSQL с преднастроенными расширениями, готовый к эксплуатации под нагрузкой. Это позволит сосредоточиться на RAG-логике и качестве поиска, а не на инфраструктурной оптимизации.
Генеративный ИИ сделал производство контента почти бесплатным. Тексты, баннеры, письма, лендинги и сценарии теперь можно создавать в промышленных масштабах. Но чем больше сообщений производит рынок, тем меньше преимуществ даёт сама способность их производить.
Проблемой становится уже не отсутствие контента, а отсутствие связной позиции.
Почему бренд говорит именно об этой проблеме? Как он объясняет её причины? Чем его версия происходящего отличается от версии конкурентов? Какие доказательства подтверждают его слова? Что должны повторить клиенты, если захотят рассказать о компании другим?
На эти вопросы традиционный контент‑маркетинг отвечает плохо. Зато политические кампании работают с ними десятилетиями.
Поэтому современный маркетинговый отдел всё чаще напоминает не редакцию, выпускающую публикации по календарю, а постоянно действующий избирательный штаб.
В комментариях к прошлой статье мне написали примерно следующее: граф связей выглядит красиво, но хороший поиск по заметкам полезнее.
Спорить было трудно. Я сам регулярно открывал Obsidian, помнил, что где-то писал нужную мысль, но не помнил ни заголовок, ни точную формулировку. Обычный поиск в такой ситуации помогал примерно как человек, который на вопрос «где мои ключи?» отвечает «там, где ты их оставил».
«Яндекс» подвёл итоги программы повышения квалификации для учителей, посвящённой использованию ИИ в образовательном процессе. По данным компании, после завершения обучения доля педагогов, применяющих ИИ при подготовке к занятиям, выросла с 46% до 74%. Всего к программе присоединились более 20 тыс. педагогов из разных регионов России. Обучение проводили совместно с региональными институтами развития образования и педагогическими вузами, рассказали Хабру в пресс‑службе «Яндекса».
Привет всем любителям физики и физического эксперимента! Сегодня день рождения Нила Армстронга, первого человека, ступившего на Луну в ходе экспедиции корабля «Аполлон-11». И тема соответствующая — по такому случаю мы даже сместили время публикации со вторника на среду. Давайте разбираться, как измерить расстояние от Земли до Луны.
В 2024 году я завела базу знаний в Obsidian, а потом полтора года её пересобирала... Ставила и выкидывала плагины, пробовала чужие методики, бросала, опять возвращалась и около полугода назад база наконец перестала разваливаться.
В статье представлена архитектура базы слоями, выживших плагины, переезд синхронизации с Google Drive на CouchDB на своём VPS и грабли, с которыми я столкнулась.
В программе INFOSTART A&PM EVENT 2026формируется секция «Прикладные компетенции аналитика». Заявок в этом направлении пока меньше, чем в других, поэтому у сильного практического кейса сейчас больше шансов пройти предварительный отбор и попасть в голосование. Первый тур голосования начнется 18 августа. Заявки принимаются до 28 августа...
4 сентября в Москве пройдет шестой инженерный фестиваль KOMPAScon для профессионалов и всех, кто интересуется 3D-технологиями. Его организатор, компания АСКОН, приглашает инженеров, опытных и начинающих пользователей КОМПАС-3D и других систем проектирования, студентов инженерных специальностей и техноблогеров.
На фестивале участников ждет обмен опытом с коллегами, лекции и мастер-классы, современные технологии, инженерный квест, призы и подарки, а также знакомство с разработчиками и техподдержкой КОМПАС-3D.
До недавнего времени миграции кода, при которых рабочую кодовую базу переносят на новый язык, занимали несколько лет.
За последний месяц отдельные разработчики Anthropic с помощью Claude Fable 5, Claude Opus 4.8 и dynamic workflows перенесли десять проектов объемом от десятков до сотен тысяч строк кода. В этой статье мы разберем два примера и лучшие практики, сформировавшиеся в ходе этих проектов.
Джарред Самнер, сооснователь Bun и технический специалист Anthropic, использовал Claude Code, чтобы перенести Bun с Zig на Rust. Менее чем за две недели было создано миллион строк кода. До слияния ветки 100% существующих тестов Bun проходили в CI. После слияния обнаружилось 19 регрессий, все они уже исправлены. В июне версия на Rust вошла в состав Claude Code.
Майк Кригер, один из руководителей Anthropic Labs, за выходные перенес кодовую базу на Python в 165 000 строк TypeScript. В процессе работали сотни агентов, использовались восемь контрольных этапов, три раунда состязательного ревью и финальная проверка, которая сравнивала вывод каждой команды с результатом оригинальной версии на Python.
Новые возможности Claude Code меняют экономику давно откладываемых проектов. Ниже описан процесс из шести шагов, который мы теперь используем, он основан на выводах из этих миграций.
Иногда небольшой пет-проект неожиданно превращается во что-то совсем другое. Сначала я делал квесты, потом решил сделать движок для Telegram-квестов, а в итоге разработал собственную виртуальную машину, язык сценариев и браузерный редактор, похожий на Scratch. В статье — история того, почему обычный код оказался плохим инструментом для написания сюжетов и что получилось в результате.
Несмотря на то что Canonical закрыла Ubuntu Touch почти девять лет назад, мобильная Linux-система продолжает развиваться силами фонда UBports и сообщества. Проект регулярно получает обновления и постепенно расширяет список поддерживаемых устройств. Новый релиз Ubuntu Touch 24.04-2.0 — очередной шаг в развитии ветки 24.04. Основные изменения затронули браузер, работу с современными дисплеями и ряд повседневных функций, которыми пользователи пользуются каждый день. Давайте разберемся, что получилось у разработчиков.
Как подключить механизм «Статусы проверки документов» к документу «Пересчёт товаров», не затрагивая другие объекты и, по возможности, не снимая объекты с поддержки.
Статья написана на примере конфигурации ERP УХ 3.2.11.5. Логика шагов применима к другим документам и близким версиям конфигурации.
Security Gate — это наша внутренняя AppSec-платформа, объединяющая инструменты и практики для проверки безопасности кода, зависимостей и других компонентов разработки. Платформа помогает находить потенциальные проблемы безопасности, приоритизировать результаты сканирования и встраивать проверки в привычный процесс работы с кодом.
В статье разберём, из чего состоит Security Gate, как устроены приоритизация находок и интерфейс и какие возможности доступны разработчикам.