Обновить

Все потоки

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

Да, на Хабре появилась многофакторная аутентификация

Сразу ответим на основные вопросы: да, на дворе 2026 год; да, раньше ее не было; нет, этот пост не пролежал в черновиках с 2013-го.

Мы добавили в Хабр Аккаунт дополнительное подтверждение входа. Если включить его в настройках, после ввода пароля нужно будет подтвердить вход еще одним способом.

Доступны два способа подтверждения:

— одноразовый код из приложения-аутентификатора
— код, отправленный на электронную почту

Все настраивается в разделе «Многофакторная аутентификация» в настройках Хабр Аккаунта. 

На этом все. Включайте и возвращайтесь на Хабр с защищенного аккаунта. 

Теги:
+59
Комментарии5

SmileLadder. Как трилогия про "память и мозг" привела к циклу про управление вниманием. Пост №1 - от синтетической к реальной ЭЭГ

В прошлой статье я попробовал описать внимание как динамическое распределение весов в графе. Тогда нейронная активность, оцениваемая по ЭЭГ, были синтетическими: граф состоял из модельных узлов, а сигнал генерировался осцилляторами в модели Хиндмарша-Роуза.

Публикация получилась сложная и я этим постом попытаюсь перейти к разбору исследования вопроса управления вниманием. Первое, что я попробую - это возьму реальную ЭЭГ: Для проверки я использовал открытый датасет STEW — Simultaneous Task EEG Workload. В нём 48 участников: для каждого записаны состояние покоя и работа с многозадачным тестом SIMKAP.

На реальной EEG индекс ASI (по которому я выдвигал гипотезу, что он может быть оценкой уровня внимания) различает покой и высокую когнитивную нагрузку. Но есть важные ограничения, о которых скажу ниже.

Берём реальную EEG - там 14 EEG-каналов, частота дискретизации 128 Гц. Всего 96 записей.

Кортикальные узлы я представил 14-тью реально измеренными каналами: AF3, F7, F3, FC5, T7, P7, O1, O2, P8, T8, FC6, F4, F8, AF4.
Кортикальные узлы я представил 14-тью реально измеренными каналами: AF3F7F3FC5T7P7O1O2P8T8FC6F4F8AF4.

Каналы сгруппированы по областям: префронтальной, фронтальной, фронтоцентральной, височной, теменной и затылочной. Полная таблица соответствий лежит в репозитории.

Вот так использую свою модель

EEG делится на окна по 4 секунды с шагом 2 секунды. Для каждого окна рассчитываются четыре компонента:

  1. спектральная вовлечённость - отношение активности beta к theta и alpha;

  2. alpha gating - изменение задней alpha-активности;

  3. фазовая организация - согласованность theta-ритма между передними и задними каналами;

  4. пространственная селективность - насколько неравномерно распределена вовлечённость по каналам.

На этих 14 каналах обучается графовый attention-readout. В коде он называется узелTHAL - это скрытый вычислительный узел-оркестратор.

Практический результат: у 48 участников из этого датасета медиана ASI-EEG составила:

  • 0,5129 в покое;

  • 0,5311 при высокой нагрузке.

Медианный парный сдвиг равен +0,0218, 95% bootstrap-интервал — [0,0049; 0,0533]. Парный критерий Уилкоксона дал p = 0,00182. Это означает, что нулевая гипотеза об отсутствии различий отвергается, так как p-value меньше стандартного уровня значимости 0,05. 

На этих данных ASI-EEG действительно реагирует на изменение когнитивного состояния. Это уже не результат виртуальной EEG, а эффект, полученный на записях реальных тестов.

Есть и второй пруф: графовый классификатор проверялся с разделением участников между фолдами. На уровне целой записи он различил покой и нагрузку с точностью 88,5%, а ROC AUC составил 0,969.

Все числа сохранены в summary.json, а расчёт можно повторить по исходному коду:

python "Model GAT/stew_asi_gat_experiment.py" \
  --dataset dataset \
  --output "Model GAT/results" \
  --bootstrap 5000

Практический цикл управления вниманием я теперь вижу так:

задачи и контекст → оценка ожидаемого фокуса → EEG-маркер фактической нагрузки → обратная связь → корректировка списка задач

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

Код, данные расчёта и графики: GitHub-репозиторий - его я форкнул от задачи идентификации и дописал свою часть.

Теги:
+2
Комментарии0

🤖 AI-агенты для Ansible: как делегировать рутину и не писать плейбуки руками — бесплатный стрим 12 августа

Я перестал писать Ansible-плейбуки руками. Вообще. Вместо этого у меня работает AI-агент, который знает лучшие паттерны, понимает мою инфраструктуру и сам пишет роли, модули, соединяет их и поднимает всё необходимое. Недавно он за вечер собрал связку Terraform + Ansible на новом сервере — и справился лучше, чем я ожидал.

На стриме покажу, как это устроено изнутри:

🔧 Архитектура AI-агента для Ansible: база знаний, инструментарий, что дёргать и как дёргать
📜 Как агент пишет роли и модули: промпты, валидация, итеративное исправление ошибок
🖥 Живой пример: поднимем инфраструктуру с нуля руками агента — в реальном времени
💡 Границы применимости: что агент делает хорошо, а что пока лучше делать самому

Андрей Чуян — основатель DebugSkills, автор AI-агента для работы с Ansible, спикер лабораторных по AI-оркестрации и Kubernetes.

📅 12.08.2026, 19:00 (МСК)
📡 ktalk
⏱️ 45 мин контент + 15 мин Q&A

> «Я ушёл из рутины, делегировал Ansible AI-агенту, который занимается этим.» — Андрей Чуян, из диалога с участником на лекции Jenkins

Это не вебинар и не лабораторная. Это живой разговор о том, как AI меняет работу DevOps-инженера уже сегодня. Без продаж, без подписок — просто приходите и смотрите.

Ссылка на регистрацию: https://debug-skills.timepad.ru/event/4127747/

Жду вас! 🤖

Теги:
+2
Комментарии0

Как получить готовый план по оптимизации лагающего сайта с помощью аудита фронтенда

Привет! Я Рома Игнатович, лид фронтенд-разработки в Далее. Обычно задача «ускорить сайт» без конкретики превращается в перебор гипотез вслепую. PageSpeed тут не спасет, потому что он показывает только симптомы — например, низкую скорость загрузки, нестабильную вёрстку, задержку кликов, — но не причины. За одинаковыми цифрами может стоять что угодно, от тяжёлых картинок до медленного бэкенда. Поэтому вместо точечных проверок я использую аудит фронтенда — он сразу сужает область поиска и помогает быстро составить план по доработкам.

Как проходит аудит

Смотреть можно без доступа к коду, во вкладке Performance в DevTools. Берём ключевой сценарий (например, флоу покупки) и записываем performance trace: скролл, клики, переходы, ввод — ищем долгие таски, блокировки потока, просадки анимаций. Параллельно смотрим Network waterfall (какие запросы блокируют остальные), рантайм и три метрики Web Vitals: LCP, TTFB, CLS. Для мультирегиональных продуктов пригодится WebPageTest — показывает поведение сайта из разных точек и с разным качеством соединения.

В Performance можно отслеживать пропущенные фреймы, тяжелые анимации и нагруженность каждого участка флоу
В Performance можно отслеживать пропущенные фреймы, тяжелые анимации и нагруженность каждого участка флоу

Проверять стоит не только на мощной машине: CPU throttling (4–6x) имитирует медленное устройство и вскрывает лаги, а network throttling на 3G/4G показывает, насколько критичны тяжёлые изображения и порядок загрузки. Сценарии прогоняем дважды — в норме и с throttling; если с throttling сайт деградирует критично, это уже не техдолг, а прямые потери конверсии.

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

Типичные проблемы и варианты их решений

Загрузка и контент:

  • весь код в одном бандле → браузер грузит и парсит всё сразу, плюс изображения по 20–30 МБ. Фикс: разбить на смысловые чанки, грузить по страницам и сценариям;

  • устаревшие форматы вместо WebP/AVIF, нет адаптивных размеров (srcset), грузятся элементы за пределами вьюпорта. Фикс: современные форматы + lazy loading;

  • высокий TTFB значит, что тормозит бэкенд, высокий LCP может быть где угодно. Фикс: проверяем бэкенд, настраиваем отправку первичного запроса при монтировании страницы.

Интерфейс и рендеринг:

  • расчёт анимаций на CPU вместо GPU, свойства вроде width/height/top/left вместо transform — браузер пересчитывает layout. Фикс: transform/opacity, но без перебора с will-change;

  • main thread перегружен синхронными операциями и тяжёлыми вычислениями. Фикс: распределять задачи параллельно, выносить тяжёлые операции из основного потока;

  • layout shift — не зарезервировано место под контент, не заданы размеры изображений и блоков. Фикс: фиксировать размеры заранее, skeleton-заглушки.

От аудита к бэклогу

Такой аудит даёт гипотезы, которые ещё нужно перевести на язык задач. Формулирую каждую находку как цепочку: проблема → гипотеза → действие. Например:

  • интерфейс подвисает при открытии карточки → долгие JS-задачи → разбить выполнение;

  • анимация лагает → расчёты идут на CPU → перевести на GPU через transform;

  • страница долго грузится → тяжёлые изображения → оптимизировать формат и размер.

У любой оптимизации — измеримая цель: например, LCP < 2.5 с, CLS < 0.1, снижение веса страницы на 30–40% и т. п.

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

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

Подробнее обо всех этапах пишу в большой статье на Workspace: читать здесь.

Теги:
+4
Комментарии0

Вышел 9-й номер журнала Paged Out (#8 выпустили в июне), который включает в себя различные материалы на тему этичного хакинга и информационной безопасности. Издание публикуется в формате: 1 страница — 1 статья. Все остальные Paged Out выпуски можно скачать с сайта проекта.

Теги:
+5
Комментарии0

Как реализовать семантический поиск для 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)
);

Добавим данные для нескольких векторов разных объектов:

INSERT INTO items (title, embedding) VALUES
 ('PostgreSQL embeddings', '[0.10, -0.80, 0.45]'),
 ('Neural image processing', '[0.42, 0.18, -0.35]'),
 ('Sound pattern matching', '[-0.20, 0.70, 0.60]'),
 ('Document clustering', '[0.09, -0.79, 0.48]');

Теперь сравним их попарно и отсортируем по расстоянию:

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-логике и качестве поиска, а не на инфраструктурной оптимизации.

Теги:
+11
Комментарии0

Почему я перестал удалять пользователей сразу

Раньше логика удаления у меня была максимально простой:

DELETE FROM users
WHERE subscription_end < NOW();

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

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

Теперь сначала пользователь получает статус pending_deletion, а отдельная задача спустя заданный интервал еще раз проверяет его состояние. Если за это время подписка продлилась, платеж обработался или статус изменился, удаление просто отменяется. По сути это обычная перепроверка перед необратимой операцией. С тех пор я стараюсь применять этот принцип не только к удалению пользователей. Если действие нельзя легко отменить, одной проверки условия перед выполнением уже недостаточно.

Поделитесь, кто как делает? используете отложенное удаление, soft delete или сразу выполняете операцию, если условие выполнено?

Теги:
+2
Комментарии3

Случайность в биологии

Представляю статью в виде препринта. Вначале небольшое описание, затем ссылки.

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

В отличие от физики в биологии появляется новое и трудно определимое понятие случайности, не связанное с теорией вероятности. В этой статье представлены три сюжета, связанные с этим обстоятельством. Я начну со взглядов Чарлза Дарвина и Томаса Гексли, которые считали возможным совместить детерминизм с естественным отбором в биологической эволюции. В 19-м веке теория вероятности начала проникновение в физику в молекулярно-кинетической теории. Тем не менее, в целом физики были убеждены в детерминизме законов физики и у биологов не было особого выбора.

Следующие два сюжета раскрывают взгляды на случай как удачу Жака Моно и Стивена Гулда. Вначале рассмотрена борьба Жака Моно с термодинамиками-анимистами Ильей Пригожиным и Манфредом Эйгеном, которые рассматривали случайность как закономер­ность. Затем рассмотрен мысленный эксперимент Стивена Гулда, который должен был показать роль случая как удачи в макроэволюции, и противоположный взгляд сторонника конвергентной эволюции Саймона Морриса. В последнем разделе обсуждается возможное компромиссное решение.

ResearchGate или PREPRINTS.RU

Теги:
+4
Комментарии0

Команда Cursor представила исходный код проекта minisqlite. Это реализация СУБД SQLite на языке Rust и успешно проходящая официальный набор тестов sqllogictest от проекта SQLite.

Проект minisqlite подготовлен в ходе эксперимента по проверке эффективности работы ИИ‑моделей GPT-5.5, Grok 4.5, Opus 4.8 и Fable 5, по воссозданию SQLite только на основе официального 835-страничного руководства, без доступа к оригинальному коду, интернету, наборам тестов и исполняемому файлу SQLite. Основная идея эксперимента — использование подробной спецификации в качестве промпта для создания сложного продукта.

Представленная реализация minisqlite основывается на результатах, полученных при использовании ИИ‑модели Opus 4.8.

Проект minisqlite включает около 200 тыс, строк кода на Rust, не содержащего unsafe‑блоков в коде библиотеки. Библиотека может открывать файлы, созданные в оригинальном sqlite3, и записывать файлы, которые можно прочитать в sqlite3. Реализация охватывает диалект SQL от SQLite, поддержку транзакций, 90 встроенных функций, планировщик запросов, движок выполнения запросов и движок хранения, совместимый с дисковым форматом SQLite 3. Из внешних зависимостей в minisqlite задействован только пакет elsa, с использованием которого реализован страничный кэш.

Теги:
+3
Комментарии3

Представлен открытый конвертер book‑to‑skill для ИИ‑агентов. Проект анализирует книги и документы в PDF, EPUB, DOCX, Markdown, считывает текст, собирает конспекты глав, словарь, паттерны и шпаргалку, а затем превращает это в skill. Инстурмент экономит токены — получается в 24–51 раз меньше затрат, чем если просто закинуть нейросети целую книгу.

Теги:
+8
Комментарии0

Эксперт «Диасофт» примет участие в круглом столе IT-World «Почему хорошие системы плохо работают вместе?»

6 августа 2026 года в 16:00 IT-World проведет круглый стол «Почему хорошие системы плохо работают вместе?». В нем примет участие Дмитрий Гаврин, заместитель директора департамента «Цифровые решения» и один из авторов блога компании «Диасофт» (Как 30 лет боли в интеграции привели нас к собственной платформе)

О чем будут говорить спикеры:           

  • Почему интеграции остаются одной из самых болезненных зон корпоративного ИТ-ландшафта?

  • Что чаще ломает взаимодействие систем - слабые API, разные модели данных, отсутствие владельца процесса или спешка внедрения?

  • Как оценивать API-зрелость решения до покупки: документация, версионирование, песочница, ограничения, поддержка изменений?

  • Как меняется ответственность поставщика ИТ-решения, если его продукт становится частью большого корпоративного контура?

  • Что должно происходить с интеграциями при обновлении продукта, смене версии или доработке соседней системы?

  • Почему единые справочники и мастер-данные остаются проблемой даже там, где уже есть MDM, НСИ или корпоративная шина?

  • Где проходит граница между быстрой автоматизацией и архитектурным долгом, который потом мешает масштабировать решение?

  • Какие требования к интеграциям, API, данным и поддержке стоит включать в ТЗ, договор и критерии выбора поставщика?

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

Регистрация по ссылке

Теги:
+3
Комментарии0

Две недели назад я получил $5 000 кредитов Azure по программе Microsoft for Startups и за четырнадцать дней я сжёг из них $2 100 на одной настройке, которую “забыл” вернуть обратно. В разработке PhotoMentor у меня работают три модели с закреплёнными ролями: GPT как CPO и исполнитель, Kimi K2.7-Code как red team – обе на Azure – и Claude как ревьюер, на моей собственной подписке. Когда я проектировал биллинг для Android, я осознанно выкрутил ризонинг на максимум по всей цепочке. Уверен, что это было правильное решение и с т.з. архитектурной прочности, и собственной психологической уверенности. Биллинг – это деньги, конфликты владения, повторная выдача прав. Тут нужна была щепотка паранойи. Но вот потом я его не вернул. Строго говоря, я не забыл, а попал в ловушку той самой психологической уверенности. Плюс спросил, и модель заверила меня, что такая глубина оправдана. Ну, возможно она в 9 из 10 так и скажет. У модели, оптимизирующей качество вывода, нет строки расходов под мой burn rate и нет представления о том, что подписка ревьюера упирается в лимит через час, и вместо релиза я сижу и жду сброса квоты. Поэтому давай, берсерк, закидывайся стимуляторами и жги. Что максимальный ризонинг купил мне на обычной, обратимой работе: — процедуру maintenance drain на staging-окружении, которым пользуется ровно один человек – я; — retry-механику такой основательности, что в одном тесте кнопку «Повторить» пришлось нажать семь раз, потому что безобидное событие blocked в IndexedDB трактовалось как фатальная ошибка; — итерации усиления runbook, каждая честно лучше предыдущей и ни одна из них не несущая. Правило, которое стоило написать в первый день: Максимальный ризонинг – для необратимого. Production-миграции, удаление данных, подписание релиза, финальный аудит. Всё обратимое – средний уровень и короткий цикл: реализация → тест → проверка. Неограниченные токены не делают мышление бесплатным. Они просто переносят его стоимость туда, куда ты не смотришь: в календарь, в лимиты и в терпение. Девять часов назад я отправил наконец Android-релиз PhotoMentor на проверку в Google Play. Жду.

Mean Machine Angel, Судья Дредд. Оригинальный арт Давида Содерстрема (Disse86), опубликован на его странице DeviantArt.
Mean Machine Angel, Судья Дредд. Оригинальный арт Давида Содерстрема (Disse86), опубликован на его странице DeviantArt.
Теги:
+3
Комментарии3

С 29 июля по 5 августа на Бирже Инфостарта появились новые задачи по доработке и интеграции 1С. В подборке — обмены между конфигурациями, настройка УНФ и БП, интеграции с внешними системами и консультации.

Новые заказы

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

Перейти на Биржу заказов

Теги:
+8
Комментарии0

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

Как проверить VDS до покупки: ядра, память, диск?
Слово VDS не закреплено ни за одной технологией. У одного это машина KVM, у другого контейнер, у третьего просто тариф подороже с пометкой dedicated. За одинаковой строкой характеристик стоят разные модели распределения ресурсов, и утренний тест дает результат, который вечером не повторится.

Что стоит выяснить до тестов? KVM запускает гостя с собственным ядром на аппаратной виртуализации, OpenVZ и LXC делят ядро хоста. Распространенное заблуждение: KVM якобы исключает оверкоммит. Не исключает, провайдер назначает машинам больше vCPU и памяти, чем есть на хосте. Отсюда вопросы к тарифу. Закреплены ли vCPU за физическими процессорами. Зарезервирована ли память. Есть ли лимит IOPS и что при его превышении. Слова dedicated, isolated и NVMe без этих ответов не значат ничего.

Ядра. Под dedicated понимают физическое ядро, закрепленное за машиной. Pinning эксклюзивности не дает: на тот же процессор оператор может посадить чужие vCPU. Проверяется это наблюдением.

mpstat -P ALL 1 60

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

cat /sys/fs/cgroup/cpu.max /sys/fs/cgroup/cpu.stat
200000 100000
nr_throttled 1843
throttled_usec 21904331

Ненулевой nr_throttled означает, что режет лимит, а не сосед. В виртуальной машине таких значений не будет. Дальше sysbench в один поток и на всех ядрах, одна версия утилиты и один cpu-max-prime на кандидатах.

sysbench cpu --threads=1 --cpu-max-prime=20000 --time=60 run
sysbench cpu --threads=$(nproc) --cpu-max-prime=20000 --time=60 run

Строгого удвоения при удвоении потоков не будет, мешают кеш и шина памяти. Настораживает обратное: многопоточный результат равен однопоточному, а mpstat показывает steal.

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

free -m && swapon --show
stress-ng --vm 1 --vm-bytes 70% --vm-keep --timeout 10m --metrics-brief

Тест гоняйте на пустой машине и параллельно смотрите vmstat. Использование swap само по себе ни о чем не говорит, оно зависит от настроек гостя. Тревожат устойчивые si и so при умеренной нагрузке и падение MemAvailable. Если процесс исчез раньше срока, ответ в журнале ядра.

journalctl -k --since "-15 min" | grep -Ei "oom-kill|killed process"

Диск. Лимит в 20000 IOPS без размера блока, соотношения чтения и записи и глубины очереди это просто число. Те же 20000 при iodepth 32 ничего не обещают при iodepth 1, а именно так работает приложение, ждущее ответа на запрос. Файл сначала заполняют целиком, иначе чтение из пустых областей завысит результат.

fio --name=randrw --filename=/var/tmp/fio.test --size=4G \
    --rw=randrw --rwmixread=70 --bs=4k --direct=1 --ioengine=libaio \
    --iodepth=1 --time_based --runtime=120 --refill_buffers=1 \
    --group_reporting --percentile_list=50:95:99:99.9

Затем тот же вызов с iodepth 32 и проверка в разделе IO depths, достигнута ли глубина. Сохраняйте IOPS и процентили clat, а не среднее. Один прогон шумного соседа не покажет, нужны три в разные часы. Растущий p99 при стабильной медиане это и есть нестабильность.

Как сравнивать? Не складывайте IOPS, миллисекунды и баллы в один рейтинг. Сначала отсеките тарифы, не проходящие пороги приложения, потом расставьте веса: базе важнее p99 диска, агенту сборки процессор, медиасервису исходящая полоса. Для каждого прогона сохраняйте дату, локацию, образ, версии утилит и команду.

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

Теги:
+5
Комментарии0

Почему «прошли обучение по ИИ» и «трансформировались» — это разные вещи

За последний год почти каждая компания среднего и крупного размера так или иначе прошла через «программу по ИИ»: закупили лицензии на Copilot/GigaChat/что-то ещё, провели серию тренингов, отчитались перед руководством цифрой охвата — «80% сотрудников обучены».

И почти в каждой такой компании через полгода-год возникает один и тот же вопрос от руководства: «А почему мы не видим эффекта на процессы?»

Вы задумывались о том, какие причины могут способствовать тому, чтобы так происходило? Коротко о причинах:

Проблема прокси-метрик:

1. Когда руководство оценивает прогресс ИИ-трансформации, оно почти всегда смотрит на прокси-показатели:

- куплены ли лицензии на инструменты;

- проведён ли тренинг;

- какой процент сотрудников этот тренинг прошёл.

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

2.      HR и T&D-функции попадают в ту же ловушку с другой стороны: они отчитываются охватом обучения и NPS тренинга. Обе метрики хорошо описывают процесс обучения, но не описывают его результат.

Аналогия, которая обычно заходит: это как измерять уровень фитнеса по количеству купленных абонементов в спортзал.

Чтобы измерять не процесс, а результат, нужна шкала, построенная на поведенческих индикаторах, а не на самооценке сотрудника («оцените по шкале от 1 до 5, насколько уверенно вы используете ИИ» — это почти всегда бесполезный вопрос, люди систематически завышают самооценку в подобных опросах).

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

Так почему один тренинг не двигает всех одинаково? Как определить уровень ИИ-зрелости компании? По какой метрике и как оценивать?

На эти и другие вопросы команда «Авандок» ГК «КОРУС Консалтинг» ответит на открытом вебинаре «Пять уровней ИИ-зрелости сотрудников: диагностика, типовые барьеры, роли в ИИ-трансформации» 11 августа в 14:00 (Мск)

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

Теги:
-2
Комментарии0

Для MacBook вышло открытое приложение Himekuri, которое позволяет переворачивать календарь на рабочем столе. Бумага на календаре мнётся, рвётся и улетает вниз экрана. Причём вернуть ее обратно уже нельзя. Закрепить проект можно на рабочем столе, поверх всех окон или использовать как обычное приложение.

Теги:
+4
Комментарии1

Полтора года пентестов Active Directory сводились к одному и тому же неудобству: для аудита нужен PingCastle (только Windows, только скоринг, ничего не проверяет на практике), для графа путей атаки — BloodHound плюс отдельный коллектор (SharpHound или RustHound-CE), а для реальной эксплуатации — Impacket на Python со всем шлейфом зависимостей. Три инструмента, три экосистемы, и ни один не даёт честного ответа на вопрос "эта уязвимость реально эксплуатируется в этом домене прямо сейчас, или только теоретически светится в отчёте".

Я решил закрыть это одним инструментом — adhammer.

Что внутри

adhammer — это Rust-тулкит для AD security assessment, который совмещает три слоя:

  1. Аудит в стиле PingCastle — сканирует домен, скорит находки по severity, размечает MITRE ATT&CK тегами.

  2. Граф путей атаки в стиле BloodHound — строит и визуализирует attack paths до Domain Admin.

  3. Валидация с реальным PoC — вот это ключевое отличие. Guided-режим проходит по каждой находке и предлагает: "провалидировать и получить PoC?". Если да — запускает реальную атаку и помечает finding как "validated" только если получен настоящий артефакт — хеш $krb5tgs$/$krb5asrep$, реплицированный секрет krbtgt, реально выпущенный сертификат. Если атака не удалась — честно "attempted", а не тихо пропускается.

Почему Rust, а не поверх Impacket

Изначально пробовал строить поверх существующих Python-библиотек — уперся в то, что тащить весь стек зависимостей ради одного бинарника, который должен без проблем компилироваться и запускаться и с Kali, и с Windows-хоста внутри AD-сети, неудобно и хрупко.

Поэтому пришлось написать протокольный стек с нуля: DCE/RPC, NTLM, SMB2, Kerberos — практически "impacket для Rust", которого в экосистеме ещё не было. Результат — один статический бинарник без рантайм-зависимостей, кросс-компилируется под Linux и Windows.

Что дальше

Инструмент build как security research, соседствует с раскрытым в MSRC 0-day в ядре Windows. Сейчас думаю над тем, чтобы вынести протокольный стек в отдельные переиспользуемые crates — уже начал переписку с мейнтейнерами sspi-rs и RustHound-CE на предмет пересечения усилий.

Код и write-up: github.com/icedracon/adhammer

Использование — только на системах, где есть явная авторизация. SECURITY.md в репозитории описывает это подробно.

Буду рад issues, PR и просто фидбеку от тех, кто занимается AD security на практике.

Теги:
+4
Комментарии0
скрин виртуальной АТС за 1 день и второй немного зацепило, это просто провал
скрин виртуальной АТС за 1 день и второй немного зацепило, это просто провал

"Лиды плохие": почему этот спор невозможно выиграть

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

Причём, мало продаж - собственник идёт в отдел маркетинга с вопросами, мы показываем проблему в отделе продаж и тишина. Как с этим бороться, вообще не понимаю. Такое ощущение, что в СНГ вообще не умеют выстраивать отделы продаж.

И это я говорю о начальном этапе обработки квалификаторами, дальше ещё больнее. Квалификаторы отквалили, отдел маркетинга видит процент квала 30-35% и понимает, что трафик ок, а далее продаж нет либо мало, спрашивают с меня, отдел продаж орёт, что лиды плохие, но квалификаторы квалят и я-то вижу другую картину. Остаётся вопрос к РОПу: а как так составляли регламент для квалификаторов, что процент квала норм, а по факту все лиды г**но. И снова тишина.

Теги:
+2
Комментарии0

Представлен открытый проект skales — ИИ‑агент, который запустится даже на слабом ПК:

  • работает как обычное приложение в Windows, macOS и Linux;

  • агент получает доступ к файлам, браузеру, почте и календарю;

  • умеет выполнять сложные задачи в фоновом режиме;

  • можно запланировать любую таску по таймеру;

  • своя встроенная память для важного контекста;

  • при этом команды отправлять можно даже со смартфона — агент выполнит их на ПК;

  • можно тестировать на бесплатном пробном режиме, подключить API или локальную модель.

Теги:
+6
Комментарии3

unreal‑assets‑to‑glb

Это небольшой pip пакет, позволяющий вам конвертировать ресурсы unreal engine времени редактирования (не сборки игры) в модели формата glb.

особенности:

  • интерфейс cli с поддержкой команды help

  • поддерживает предварительный просмотр уровней (umap)

  • фильтрация ассетов для экспорта только определенных моделей

  • кэширование текстур для ускорения экспорта в будущем (если несколько раз выполняете экспорт)

  • извлечение текстур базового цвета / альбедо, а также других текстур путем сохранения в формате png

  • базовая поддержка сеток без анимации или костей без автоматического масштабирования с коэффициентом 100 к 1

В видео я показываю, как модель отображается в другом игровом движке после импорта конвертированных uasset-файлов

главное преимущество: вообще не требуется устанавливать UE

исходный код: https://github.com/Prikalel/unreal-assets-to-glb. пакет pip: https://pypi.org/project/unreal-assets-to-glb/

сгенерированные файлы могут быть легко импортированы в другие движки, такие как godot / unity и т.д.

в настоящее время поддерживаются 2 версии UE engine: 5.5 и 4.27.2

вы также можете заметить, что некоторые материалы в тестовой сцене частично затемнены - это связано с тем, что пакет не позволяет вам правильно экспортировать все настройки материалов / все настройки шейдеров (ограничения перечислены на странице github, это освещение, положение камеры и другие параметры, но базовое извлечение 3d-сетки работает идеально).

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

Лицензия GPL-3.0

Теги:
+3
Комментарии0