Обновить

Все потоки

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

Если что, Агент Ануфрий работает на любых системах, он кроссплатформенный.

Прямо сейчас он пыхтит на Windows и за 0 руб./токен ломает сайт Пентагона, ведь запущен на локальной модели qwen3-14b на древнем железе.

Агент Ануфрий - это open source-конструктор для создания собственных ассистентов на Python. Базовый агент уже мультиплатформенный, с долговременной памятью, автоматизацией браузера через CDP/Playwright, трекером задач, и системой навыков.

Репозиторий: AgentAnufry

Теги:
Всего голосов 5: ↑0 и ↓5-5
Комментарии1

Подборка материалов, которые помогут снизить стоимость, стабилизировать прод и перестать гадать с ресурсами

Среди читателей Хабра много ML‑инженеров, дата‑сайентистов и дата‑инженеров — и мы, как команда провайдера облачных и ИИ-сервисов, догадываемся, где у вас чаще всего болит. Ниже подборка материалов, которые помогут в решении задач: чуть ускорить, чуть удешевить, чуть упростить жизнь в проде. 

👨‍💻 ML/DS‑инженеры и бэкенд

Боль №1

Суть: вы крутите LLM в проде, токены стоят денег, контекст забивается громоздким JSON, а латентность растет.
Что делать:  прочитать статью — как практическое руководство по переходу с JSON на компактный TOON‑формат для структурированных ответов. 
Почему: в ряде кейсов можно сэкономить до ~40% токенов, но есть нюансы. Формат лучше работает при небольшой вложенности (3–4 уровня) и однородных массивах. Для плоских данных чаще выгоднее CSV. Плюс потребуется свой парсер/SDK — это усложняет дебаг и интеграцию.

Боль№2

Суть: нужно обогатить поисковую выдачу или интерфейс LLM‑функциональностью, но непонятно, как выдержать нагрузку и не превратить кластер в черную дыру для бюджета.
Что делать: взять на вооружение материал от Avito Tech — эдакий «рентген» продакшен‑архитектуры с LLM/мультимоделями под серьезной нагрузкой. 
Почему: хороший слепок боевой системы с vLLM и LoRA, организацией GPU‑кластера, схемой запросов и мониторинга качества. Учитывая масштабы, команду и бюджеты Avito, «копировать-вставить» вряд ли получится, но по крайней мере есть опорная схема, как декомпозировать сервисы, и на какие метрики смотреть при проектировании.

👨‍💻 Data Science, MLOps, DevOps

Боль №3 

Суть: модели живут в «ручных» скриптах, развертывание нестабильно, автоскейлинг либо отсутствует, либо работает хаотично. Не всегда получается договориться с коллегами о процессе вывода из ноутбуков в прод, который бы всех устроил. 
Что делать: читать нашу статью, где разбирается жизненный цикл ML‑модели в Kubernetes.
Почему: показана связка контейнеризации, CI/CD и деплоя с учетом ML‑нагрузок. Это не универсальный рецепт (пример завязан на инфраструктуру Cloud.ru), но помогает синхронизировать ожидания между DS и MLOps, чтобы было от чего оттолкнуться. 

👨‍💻 ML‑инженеры и исследователи 

Боль №4

Суть: эксперименты падают из-за CUDA out-of-memory, приходится наугад крутить размер батча, длину контекста и конфигурацию кластера. Каждый запуск — лотерея и потерянные GPU‑часы.
Что делать: читать перевод зарубежной статьи с разбором оценки потребления памяти на примере GRPO.
Почему: объясняет, из чего складывается потребление памяти и как прикинуть конфигурацию до запуска. Это не калькулятор «до байта», поскольку значения зависят от стека, наличия обучения со смешанной точностью или распределенного обучения, — но как ориентир экономит время и нервы.

👨‍💻 Enterprise DS (ритейл, финтех, телеком, индустрия)

Боль №5

Суть: никаких «красивых» датасетов: данные разнородные — таблицы, тексты, временные ряды, сигналы. Поддерживать зоопарк моделей дорого, а терять качество нельзя.
Что делать: читать свежие работы про TabPFN — первую и вторую.
Почему: обе работы показывают, что вокруг TabPFN можно выстроить единое табличное ядро. С одной стороны — подключать текст через адаптеры, не теряя информацию на грубом PCA. С другой — переводить в таблицу разнородные временные ряды и решать на одном ядре разнородные задачи. Может быть удобно, когда данных немного и не хочется поддерживать много отдельных моделей. При этом придется аккуратно проектировать фичи и контекст, а адаптеры обучать под свой домен, но это все равно дешевле и проще, чем полное переобучение.

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

Теги:
Всего голосов 4: ↑1 и ↓3-2
Комментарии0

⚡️ Linux Roadmap: подробный практический курс от нуля до уверенного администратора в 2026 году

Это пошаговый маршрут изучения Linux с упором на практику. Каждый раздел содержит объяснение «почему это устроено именно так», разбор команд и обязательные задания, которые нужно выполнить руками в терминале. Чтение без повторения навыка не даёт — держите терминал открытым рядом с этим текстом.

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

https://github.com/justxor/linuxfullroadmap/

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Tencent UniRL: единый RL-цикл для диффузии, LLM и unified-моделей

Команда Tencent Hunyuan выложила UniRL, инфраструктуру для обучения с подкреплением, в которой один цикл пост-тренинга работает поверх разных семейств моделей: диффузионных и flow matching, LLM и VLM, а также гибридных авторегрессионно-диффузионных генераторов вроде Hunyuan-Image 3 и Bagel.

Обычный RL-стек заточен под одну модальность. Как только нужно покрыть и текст, и картинки, и видео, проект обрастает несовместимыми репозиториями и скриптами-костылями. В UniRL модель и алгоритм разведены на две независимые оси, поэтому покрытие считается как произведение множества моделей на множество алгоритмов, а не фиксированный набор рецептов.

Сам цикл устроен просто: сгенерировали, оценили, посчитали advantage, обновили веса, синхронизировали. Этот же луп обслуживает генерацию text-to-image, text и image-to-video, vision-language задачи, чистый текстовый LLM и VLM, диффузионный prompt-enhancer на базе LLM и unified-генерацию, которую однозадачный RL-репозиторий просто не выразит.

По инженерной части все сделано под масштаб. Движки rollout подключаются как плагины (train-side, SGLang, vLLM-Omni) за единым типизированным контрактом, шардинг идет через FSDP2, а три режима развертывания переключаются одним параметром в конфиге. Прототип и распределенный прод живут на одном коде.

В релизе два собственных алгоритма. FlowDPPO оптимизирует политику для flow и диффузионных моделей с trust-region масками на основе точной дивергенции. DRPO делает RL для языковых моделей с гладким квадратичным регуляризатором, взвешенным по advantage.

Ссылки: код UniRL https://github.com/Tencent-Hunyuan/UniRL, статья FlowDPPO https://github.com/Tencent-Hunyuan/UniRL/blob/main/FlowDPPO/HY_FlowDPPO.pdf, статья DRPO https://arxiv.org/abs/2606.09821, источник https://x.com/TencentHunyuan/status/2064312869827809702

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Гайд: запуск автономного агента Ануфрия на локальной модели с LM Studio на Linux

Агент Ануфрий - это open source-конструктор для создания собственных ассистентов на Python. Базовый агент уже мультиплатформенный, с долговременной памятью, автоматизацией браузера через CDP/Playwright, трекером задач, и системой навыков.

Репозиторий: AgentAnufry

Для быстрого запуска нам хватит безголового (без графического интерфейса) демона llmster (https://lmstudio.ai/). Команда в терминале:

curl -fsSL https://lmstudio.ai/install.sh | bash

Перезапустите терминал или добавьте директорию lms командой, которая будет выведена в терминале.

Запускаем:

lms daemon up

Качаем нужную LLM модель (чем больше, тем умнее, но требует больше ресурсов): https://lmstudio.ai/models Для примера возьмем небольшую модель:

lms get qwen/qwen3.5-9b

После скачивания подгружаем модель в память:

lms load qwen/qwen3.5-9b

В .env скопируйте эту конфигурацию:

# ============================================
# LM Studio Configuration (Local) - ACTIVE
# ============================================
LLM_PROVIDER=lmstudio
LLM_API_KEY=lm-studio
LLM_BASE_URL=http://localhost:1234/v1
LLM_MODEL=deepseek/deepseek-r1-0528-qwen3-8b

# ============================================
# Embeddings Configuration (Local) - ACTIVE
# ============================================
# Используем локальную embeddings модель из LM Studio
EMBEDDINGS_PROVIDER=lmstudio
EMBEDDINGS_MODEL=text-embedding-nomic-embed-text-v1.5
EMBEDDINGS_BASE_URL=http://localhost:1234/v1
EMBEDDINGS_API_KEY=lm-studio

# ============================================
# Дополнительные параметры
# ============================================
LLM_TEMPERATURE=0.1
LLM_MAX_TOKENS=4096
LLM_TIMEOUT=300
MAX_ITERATIONS=20

Запустите lms сервер:

lms server start --port 1234 &

или

lms server start

Порт по умолчанию будет 1234

Запустите агента.

Шпаргалка с командами lms:

# запустить демон
lms daemon up

# запуск/остановка сервера
lms server start
lms server stop

lms server status        # статус сервера
lms ps                   # загруженные в память модели
lms ls                   # список скачанных моделей

# остановить текущую модель
lms unload

# выгрузить все модели из памяти
lms unload --all

# получить список доступных моделей
lms ls

# Удалить конкретную модель
lms rm qwen/qwen3.5-9b

# Или удалить несколько моделей
lms rm model1 model2 model3

Важно!

Чем слабее ваше железо, тем меньше модель вы сможете использовать, с меньшим объемом контекстного окна. Объем контекста в базовой версии агента (системный промпт + описание инструментов) в районе 6к товенов, это много.

Для работы с небольшими моделями сожмите системный промпт и описание инструментов или удалите лишнее (файл main.py)

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии10

Идеальный шторм — кто сломал рынок труда?

Сейчас на каждую вакансию hh.ru приходится вдвое больше кандидатов, чем год назад. Причём кризис отрасли коснулся и разработчиков: 85 % из них соглашаются на первое предложение и не торгуются, а раньше подолгу выбирали и часто меняли работу.

Кто виноват? Спойлер — не только ИИ.

Восстановим последовательность. В 2020–2021 годах на фоне ковида оказались востребованы как разработчики, так и курьеры. Это вполне компенсировало обвал во многих профессиях, особенно в сфере услуг. Это была общемировая тенденция.

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

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

В 2022 году мировые ИТ-компании начали увольнять разработчиков, которых набрали с запасом в «ковидные» годы. В России этот тренд не чувствовался до 2023 года, пока ЦБ резко не повысил ставку с 7,5 до 16 %. Некоторое время компании продолжали развитие и работали над импортозамещением. Но в 2025 году стало ясно, что высокая ставка ЦБ (а значит, и стоимость кредитов) — это надолго, а доходы от импортозамещения не могут это компенсировать.

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

Что делать?

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

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

Теги:
Всего голосов 17: ↑17 и ↓0+29
Комментарии0

TXORDER-01: 7 тестов прошли, 8-й нашёл баг

Как domain state в одном тесте сделал видимым баг в порядке операций внутри транзакции — и что это говорит о том, что на самом деле проверяют “зелёные тесты”

7 тестов прошли.

8-й нашёл баг в production flow.

Не потому что был написан лучше. Потому что запустился с другим начальным состоянием системы.

Операция и транзакция

PATCH /reschedule — перенос appointment пациента на другой слот. Атомарная транзакция: освободить старый слот, занять новый, переместить запись. Плюс promoteFromWaitlist: если на освобождённом слоте есть очередь, первый из неё автоматически получает appointment.

Порядок операций в транзакции:

  1. free_old_slot(slot1)

  2. promoteFromWaitlist(slot1)

  3. book_new_slot(slot2)

  4. move_appointment(appointment → slot2)

Почему 7 тестов ничего не нашли

Тесты 1–7 проверяли стандартные сценарии: перенести pending, перенести confirmed, попытаться перенести на занятый слот. Ни в одном из них не было пациента в вейтлисте.promoteFromWaitlist в каждом тесте — no-op. Очередь пуста, функция вызывалась, ничего не делала, возвращала успех. Это важная деталь: функция не падала. Она просто не активировалась. Порядок операций вокруг неё не имел значения — потому что одна из операций ничего не делала.

7 зелёных тестов говорили: reschedule работает корректно. На самом деле они говорили: reschedule работает корректно когда вейтлист пуст.

Что нашёл 8-й тест

Пациент 2 встал в очередь на slot1. Пациент 1 запустил reschedule на slot2.

Ответ: 409 SLOT_IN_USE.

Слот был свободен. Пациент имел право переноса. Транзакция откатилась.

Механизм

  1. free_old_slot(slot1) ← слот доступен

  2. promoteFromWaitlist(slot1) ← пациент 2 получил pending на slot1

  3. book_new_slot(slot2)

  4. move_appointment → slot2 ← appointment пациента 1 ещё на slot1

После шага 2 на slot1 два active appointment одновременно: пациента 1 (ещё не переехал) и пациента 2 (только что из промоушна). UNIQUE constraint one_active_per_slot. Откат. 409.

Транзакция дисциплинированно выполняла логически неверную последовательность — и откатывалась на constraint.

Фикс

Appointment должен покинуть slot1 до того как promote вставляет нового пациента:

  1. book_new_slot(slot2)

  2. move_appointment → slot2

  3. free_old_slot(slot1)

  4. promoteFromWaitlist(slot1)

8-й тест прошёл

Что означают 7 зелёных тестов

Тест проверяет поведение системы при конкретном начальном состоянии. Если в наборе тестов нет нужного domain state — класс ошибок невидим, сколько бы тестов ни прошло.

В данном случае критическое условие — пациент в вейтлисте — отсутствовало во всех семи тестах. promoteFromWaitlist` был no-op в каждом из них. Баг в порядке операций существовал с момента написания — просто не было состояния которое его активировало.

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

Скрытое предположение “Я решилf что если транзакция атомарна — порядок операций внутри неё можно не тестировать. На самом деле транзакция защищает от частичных обновлений, но не от логически неверного порядка внутри.”

Код проекта: GitHub

Из серии “Тихие отказы в тест-автоматизации” Разборы таких кейсов — в Telegram-канале Тесты как система

Теги:
Всего голосов 2: ↑0 и ↓2-2
Комментарии0

В Поиске Яндекса появилась мини‑игра с «пухососами». Первые запросы в «Поиске» на пухососы появились 3 июня (около 5 тысяч), а уже 4 июня интерес пользователей к ним вырос до 23 тысяч. В итоге на каждый миллион запросов к «Яндексу» почти 90 приходилось про пухососы. Люди массово пытались выяснить, существует ли этот робот в реальности, искали фото и видео, а также вбивали ироничные формулировки вроде «пухосос это ии или нет», «пухосос купить» и «где встретить пухососа в Москве».

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

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

Теги:
Всего голосов 6: ↑6 и ↓0+8
Комментарии0

Лучше не сохраняйте в сессии PHP объекты с защищенными или приватными свойствами, если сама сессия хранится в БД.

Оговорюсь, что не поддерживаю сохранение объектов в сессиях PHP, а пример взят из Legacy-проекта, в котором компонент рекомендованных продаж клиенту реализован в виде класса. Видимо предыдущие разработчики посчитали удобным не париться с сохранением рекомендаций в виде отдельной структуры, а сохраняли класс прямо в сессию клиента. Сами сессии хранятся в БД MySQL (тоже тема для отдельной дискуссии).

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

Немного теории. Оказалось, что PHP сохраняет свойства объектов в сессии с определенными особенностями:

  • публичные свойства `public $item` сохраняются как item

  • защищенные свойства `protected $item` сохраняются как \0*\0item

  • приватные свойства `private $item` сохраняются как \0ClassName\0item

причем \0 это нулевой байт. Главной проблемой стало то, что MySQL воспринимал этот нулевой байт как конец строки и сохранял в таблицу обрезанную строку. Сессия становилась невалидной.

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

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

РБПО по ГОСТ Р 56939—2024: вебинар №21 из 30 — Безопасная поставка программного обеспечения пользователям

Предлагаю вашему вниманию запись вебинара, где мы разбираем безопасную разработку ПО. Вебинар посвящен процессу из раздела 5.21. – "Безопасная поставка программного обеспечения пользователям". На YouTube. Слайды.

Цели 21-го процесса по ГОСТ Р 56939—2024:

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

Общее количество вебинаров — 30. Каждому из 25 процессов ГОСТа посвящён отдельный вебинар и ещё 5 записано дополнительно на смежные темы. Запись всех вебинаров и подборка дополнительной информации доступна по ссылке: ГОСТ56939.РФ.

Цикл вебинаров проведён компанией ООО "ПВС" совместно с учебным центром "Маском". Организаторами выступили Андрей Карпов и Виталий Пиков. Совместно с приглашёнными экспертами различных компаний мы рассмотрели 25 процессов, приведённых в ГОСТ Р 56939—2024.

P.S.

Суммарное время предлагаемых к изучению вебинаров составляет около 50 часов. Их можно смотреть на ускорении. Однако даже в этом случае с учётом дополнительных материалов и отсылок на внешние ресурсы изучение займёт около двух рабочих недель.

Это достаточно большая задача, поэтому мы решили помочь и разбили материалы на отдельные уроки. Так будет проще усваивать материал, а интерфейс позволяет отмечать, с чем вы уже познакомились.

Подробнее: НЕкурс про разработку безопасного программного обеспечения (РБПО).

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

Кейсы и инсайты по работе с ИИ от спикеров нашего митапа

> Как мы внедрили ИИ в DevSecOps и научились бороться с галлюцинациями
Спикер: Дмитрий Бабчук, руководитель направления информационной безопасности и ИТ-инфраструктуры Flowwow
YouTube | VK Видео

> Что я узнал за 2 года работы над ИИ-фичами
Спикер: Антон Проценко, руководитель направления стратегии и инноваций Яндекс 360, автор tg-канала Digital Review
YouTube | VK Видео

> Батл-дискуссия: AI — хайп, польза или риск?
Участники: Евгений Алферов (Be Emotional), Никита Тюников (FunTech), Дмитрий Бабчук, Антон Проценко
Модератор: Филипп Оссобль, Product Owner в Garage Eight
YouTube | VK Видео

А в следующий раз встречаемся уже 11 июня на UX AI митапе офлайн в Питере и на онлайн-трансляции.

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Заселение в гостиницы по MAX, новые правила сдачи на права и штраф за шпаргалки

Сегодня две новости - про гостиницы и про экзамены на права. Вторая, кстати, уже действует с 12 мая. Поехали.

Заселяться в гостиницы по всей стране можно будет без паспорта или водительского удостоверения

Граждане РФ смогут заселяться в гостиницы и другие средства размещения в том числе по цифровому ID в мессенджере MAX. Речь идёт о праве представить паспортные данные из сервиса вместо документа.

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

Сроки вступления в силу:

⦁ для средств размещения с номерным фондом более 50 помещений - с 1 сентября 2026 года;

⦁ для остальных - на 2 года позже.

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

Документ: Постановление Правительства РФ от 02.06.2026 N 674

Порядок проведения экзаменов на водительские права изменится с 12 мая 2026 года

Новые правила уже действуют. Что поменялось?

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

Новое основание прекратить экзамен. Кандидата отстранят, а результат аннулируют, если во время экзамена он использовал:

⦁ устройства связи;

⦁ фото-, аудио- и видеоаппаратуру;

⦁ справочные материалы;

⦁ иные средства хранения и передачи информации.

Последствия: следующее испытание состоится минимум через год с даты предыдущего.

По сути, это штраф за шпаргалки и попытки схитрить. Год ждать - серьёзно.

Что ещё заработает с 1 марта 2027 года:

⦁ при подаче заявления на экзамен можно будет не предъявлять медсправку, если сведения о ней есть в специальном реестре;

⦁ в ходе теоретического испытания кандидатов станут автоматически фотографировать;

⦁ сдачу теории будут фиксировать с помощью аудио- и видеозаписи (рабочие места экзаменатора и кандидата должны попадать в зону видимости камер).

Документ: Постановление Правительства РФ от 30.04.2026 N 508


А что вы думаете? Пользуетесь цифровым ID в MAX? Как вам новые правила сдачи на права - справедливо или слишком жёстко? Делитесь мнением в комментариях 👇

Теги:
Всего голосов 3: ↑1 и ↓2+1
Комментарии0

Google снова пытается захватить весь мир

Кажется, у Брейна снова появился план. Это всё та же мышиная возня, только на новом слое.

Вчера, 8 июня 2026 года, на открытии WWDC 2026 Apple представила новую версию Siri, глубже встроенную в iPhone, iPad, Mac, Apple Watch и Vision Pro. А новые Apple Foundation Models, если верить анонсу, созданы в сотрудничестве с Google и Gemini-моделями.

То есть две главные мобильные платформы мира в скором времени могут опираться на один и тот же ИИ от Google.

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

Но вопросы уже напрашиваются.

Есть ли у пользователя реальный выбор?

Позволит ли Apple подключить других AI-поставщиков?

Получат ли конкуренты доступ к тем же системным возможностям?

Не станет ли Gemini дефолтным посредником между человеком, устройством, поиском, приложениями и контентом?

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

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

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

Поэтому главный вопрос не в том, хорош ли Gemini. И даже не в том, будет ли он на iPhone. А в том, не превращается ли ИИ в новый системный слой, который снова контролирует Google.

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

Как думаете, Пинки опять ничего не поймёт?

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

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

Громкий молчаливый карт-бланш

Этим текстом открываем новый жанр – истории о применении книг.

Когда я пишу пост о книге, то много рассказать не могу – не влезет. У меня может быть 2, 5, 50 историй, связанных с конкретной книгой. Что важно – историй плохих и хороших. Ещё важнее – историй и моих, и чужих.

Книга через историю может быть понятнее. Не всем, но кому-то – точно. Так что, вроде, противопоказаний нет. Начинаем.

Сегодня – небольшая история о собственнике, который не увлекался радикальной прямотой. Поэтому за 5 лет в его компании сменилось 5 директоров, 5 главбухов, 5 финдиров, несколько главных конструкторов, начальников производства, коммерческие директоров и т.д.

Не менялся только ИТ-директор.

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

Карт-бланш объявлялся громогласно, на всех общих собраниях. Все ресурсы компании – деньги, люди, стратегия, внимание – были в распоряжении нового руководителя. Он мог – нет, должен был – устроить подлинную революцию в своей сфере ответственности. Обращу внимание: какой-то чёткой постановки цели, плана, стратегии не было. Просто «вот тебе карт-бланш, сделай красиво».

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

Всех объединяло одно: от них чего-то ждали, чего именно – непонятно, и обратной связи не давали. Точнее, давали исключительно положительную, особенно в первые три месяца. Что бы не предложил и не сделал человек – всё было отлично, превосходно, гениально. Даже если он просто продолжал линию предшественника. Или ломал то, что сделал предыдущий, чтобы построить то, чем занимался предшественник предшественника.

Дальше сценарий каждый раз повторялся. Стихало всеобщее волнение, сходил на нет карт-бланш, приходила рутина. Положительной обратной связи новичок уже не получал, потихоньку начиналась отрицательная. Не конкретная – так, скорее какое-то невыраженное недовольство. Постепенно нарастающее.

Ну и финал – внезапный взрыв и столь же внезапное увольнение. В один день. Во время взрыва – фонтан обратной связи. Но уже было поздно. Начинался поиск нового счастливчика.

Почему ИТ-директор не попал в эту струю? Потому что очень быстро понял, что обратную связь от собственника надо выпытывать. Прям требовать – оцени мою работу. Постоянно рассказывать об успехах и следить за реакцией.

Второй приём – не ждать целей и указаний, а придумывать их самостоятельно. Придумал, рассказал, сделал. Или не так – придумал, сделал, рассказал. Поставить собственника в положение зрителя с правом лайка и дизлайка. Ну и гибко следовать реакциям. При этом не попадая в положение «оправдателя ожиданий» - не было же ожиданий, объявленных и заявленных.

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

Если руководитель не умеет давать обратную связь – подчинённому придётся заниматься этим самостоятельно. Негоже ставить свою карьеру и доход в зависимость от некомпетентности руководителя. Неумение давать обратную связь, особенно отрицательную – некомпетентность, увы.

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

Из Книжного стека

Теги:
Всего голосов 4: ↑3 и ↓1+3
Комментарии0

Ваш худший кошмар, или простой regex, который удивит даже опытных программистов.

re.match(r"^abc$", "abc\n") # python
/^abc$/.test("abc\n") // Javascript
preg_match("/^abc$/", "abc\n"); // PHP

Не читайте дальше, попробуйте угадать какой вывод будет у каждого из вариантов?

False?

True ?

Правильный ответ:

False
True
False

Живите с этим :)

Всё дело в том, что в PCRE $ означает не "конец строки", а "конец строки, или позиция перед \n в конце строки". А в ECMAScript это не так.

Лично я думал, что должно быть False, но регулярные выражения продолжают меня удивлять спустя много лет.

Правильный regex для точного совпадения с концом строки:

re.match(r"^abc\Z", "abc\n")
// javascript идеален, нечего исправлять :)
preg_match("/^abc\p/", "abc\n")

== false

Теги:
Всего голосов 10: ↑7 и ↓3+8
Комментарии3

Задачка поиска CMS для статического веб сайта.

Для формирования этого отчета я попросил агента opencode (модель qwen3.6-35b-a3b) сначала поискать на github используя api и погуглить (api tavily) проекты под задачу и составить csv файл, затем другим агентом заставил работать с этим файлом построчно (искать строки без пометки ‘принят’, в соответствующей колонке) и для каждого в цикле запускать отдельного агента на исследование github соответствующего проекта, подходит он или нет.

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

Потом отдельно попросил сформировать этот список.

Проект Stars Forks Last Update

  • decap-cms (decaporg/decap-cms) 19,130 3,119 2026-06-08

  • Grav CMS (getgrav/grav) 15,511 1,411 2026-06-08

  • Front Matter CMS (estruyf/vscode-front-matter) 2,516 104 2026-06-05

  • HTMLy (danpros/htmly) 1,339 301 2026-01-25

  • Automad (marcantondahmen/automad) 901 52 2026-06-07

  • WonderCMS (WonderCMS/wondercms) 727 165 2026-01-01

  • Typemill (typemill/typemill) 597 72 2026-05-27

  • static-cms (StaticJsCMS/static-cms) 593 47 2026-06-05

  • FlatPress (flatpressblog/flatpress) 209 65 2026-06-07

  • Quiqr Desktop (quiqr/quiqr-desktop) 170 11 2026-05-01

  • barnacle (dporkka/barnacle) 1 0 2026-06-04

  • dir2site (EvanRuiz/dir2site) 1 0 2026-05-21

  • beta.vortex.name (0-vortex/beta.vortex.name) 1 0 2025-03-03

  • Editora (MrGKanev/Editora) 1 0 2026-05-26

  • Academic-website (denis-novega/Academic-website) 0 0 2026-05-17

  • primo (irismetric/primo) 0 0 2024-05-01

  • fieldscms (unculturedswine/fieldscms) 0 0 2026-02-16

  • taboola/decap-cms (taboola/decap-cms) 0 0 2024-07-02

Полный отчет

Теги:
Всего голосов 3: ↑2 и ↓1+4
Комментарии2

Импорт данных

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

В Google Sheets для решения этой задачи есть функция IMPORTRANGE:

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/abc123/edit";"Лист1!A:Z")

Про это не пишут в документации, но первым параметром вместо длинного урла достаточно передать идентификатор документа (часть между /d/ и /edit):

=IMPORTRANGE("abc123";"Лист1!A:Z")

Если исходные данные хранятся в виде таблицы, имеет смысл использовать табличную ссылку:

=IMPORTRANGE("abc123";"Сотрудники[#ALL]")

Если в исходной таблице поменяется порядок столбцов, ваши формулы сломаются. Надёжнее вместо целой таблицы импортировать конкретный столбец:

=IMPORTRANGE("abc123";"Сотрудники[ФИО]")

На практике удобно в первой строке ввести заголовки необходимых столбцов (например: ID, ФИО, Должность), а во второй протянуть формулу, которая подтянет их содержимое:

=IMPORTRANGE("abc123";"Сотрудники["&A1&"]")

Такой способ:

  1. Импортирует меньше данных и работает быстрее.

  2. Переживает добавление и перестановку столбцов в исходной таблице.

  3. В случае переименования таблицы или столбцов в исходном документе сразу покажет ошибку.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Распиновка DevKit v1, на основе модуля ESP-WROOM-32

Created by (c) zhogar
Created by (c) zhogar

Примечания

  1. Питание и базовое управление

    Pin 1 - GND (Ground) - Общая шина заземления, опорный ноль для всех сигналов и питающих напряжений.

    Pin 2 - 3V3 (Power) - Вход питания. Требует стабильного напряжения 3.3 В и тока до 500 мА для компенсации пиков потребления Wi-Fi/Bluetooth.

    Pin 3 - EN (CHIP_PU) - Enable/(Chip Power Up) Вход управления. При подаче логического нуля (GND) чип полностью отключается (сбрасывается). Для запуска на нем должен быть логический уровень «1» (3.3 В). Состояние: Внутренний Pull-up.

    Pin 38 - GND (Ground). Питание земля (0 В).

  2. Зарезервированные выводы (Внутренняя Flash-память)

    Pin 17 - SD_DATA_2 (GPIO9). Интегрированная память. SPI_HD. Состояние: Off-state.

    Pin 18 - SD_DATA_3 (GPIO10). Интегрированная память. SPI_WP. Состояние: Off-state.

    Pin 19 - SD_CMD (GPIO11). Интегрированная память. SPI_CS0. Состояние: Off-state.

    Pin 20 - SD_CLK (GPIO6). Интегрированная память. SPI_CLK. Состояние: Off-state.

    Pin 21 - SD_DATA_0 (GPIO7). Интегрированная память. SPI_Q. Состояние: Off-state.

    Pin 22 - SD_DATA_1 (GPIO8). Интегрированная память. SPI_D. Состояние: Off-state.

    P.s… Почему вы не можете их использовать? Процессор ESP32 не имеет достаточного объема постоянной встроенной памяти для хранения вашей программы. Во время работы он постоянно и на огромной скорости (от 40 до 80 МГц) считывает исполняемый код и данные из этой внешней микросхемы флэш-памяти по интерфейсу Quad SPI. Если вы попытаетесь подключить к этим выводам внешнее устройство (светодиод, датчик, кнопку) или переназначить их программно через pinMode(), вы нарушите обмен данными между процессором и памятью. Процессор потеряет доступ к коду прошивки и мгновенно зависнет или уйдет в бесконечный циклический перезапуск (Boot loop).

    P.p.s… Зачем их тогда вывели на плату модуля ESP-WROOM-32? Существует две основные причины, почему инженеры Espressif вывели эти контакты наружу корпуса модуля: a) для заводского тестирования и программирования: На этапе производства модуля эти выводы необходимы для первичной отладки, контроля качества пайки памяти и записи базового загрузчика на заводе. b) для подключения дополнительной внешней памяти: В редких сложных проектах эти выводы используются для каскадного подключения еще одной (внешней) микросхемы памяти или микросхемы внешней оперативной памяти (PSRAM).

  3. Дополнительные выводы заземления (Центральная подложка)

    Pin 32 - GND (Ground). Питание земля (0 В). Центральная теплоотводящая площадка заземления.

  4. Стробирующие пины (Использовать с осторожностью)

    Pin 14 - GPIO12 - определяет напряжение внутренней флэш-памяти при старте. Опасный пин.

    Pin 23 - GPIO15 - при старте должен быть HIGH.

    Pin 24 - GPIO2 - при старте должен быть строго LOW (или в воздухе). На платах разработчика к нему часто подключен встроенный светодиод.

    Pin 25 - GPIO0 - при падении в LOW при старте переводит чип в режим прошивки.

    Pin 29 - GPIO5 - при старте должен быть HIGH.

    P.s… Эти пины можно программно назначить под UART или I2C. Но они критически важны в момент подачи питания (Strapping pins). Если внешнее UART/I2C устройство при старте прижмет их к «земле» или «питанию», ESP32 не загрузится или уйдет в ошибку.

  5. Пины основной прошивки (Использовать только в крайнем случае)

    Pin 35 - GPIO1 / TXD0

    Pin 34 - GPIO3 / RXD0

    P.s… Эти пины аппаратно привязаны к встроенному интерфейсу UART0. Как использовать: Вы можете переназначить их под I2C или другой UART в коде, но тогда вы полностью потеряете вывод отладочных логов (Serial Monitor) в консоль ПК, а подключенное I2C-устройство может мешать заливке новой прошивки.

  6. Аппаратные пины

    Pin 27 - GPIO 16 - Аппаратный UART2 RX по умолчанию

    Pin 28 - GPIO 17 - Аппаратный UART2 TX по умолчанию

    Pin 33 - GPIO 21 - Аппаратный I2C SDA по умолчанию

    Pin 36 - GPIO 22 - Аппаратный I2C SCL по умолчанию

p.s.. вдруг кому пригодится..

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Игру запретили для коров и пришельцев

Разработчики игры Squadika запретили играть в неё представителям внеземных цивилизаций, а так же коровам, мухам и искусственному интеллекту. Пометка "For humans only" добавлена, чтобы обеспечить наилучший игровой опыт!

Теги:
Всего голосов 4: ↑2 и ↓20
Комментарии1

Решил протестировать коннектор к Blender, чтобы строить 3D-модели по текстовому описанию

MCP для этого легко гуглятся, например https://mcpcursor.com/server/blender

Есть вариации, доработанные любителями

В общем, ничего сложного - полчаса и коннектор готов:

В планах - подключение к агенту работающему на локальной машине

Теги:
Всего голосов 4: ↑2 и ↓2+2
Комментарии4