Habr.com

  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM sessions WHERE timestamp >= 1789476519 AND uid = 0 in /var/www/html/includes/session.inc on line 157.
  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(DISTINCT s.uid) FROM sessions s WHERE s.timestamp >= 1789476519 AND s.uid > 0 in /var/www/html/modules/user/user.module on line 808.
Ленты новостей Хабр
Все публикации подряд на Хабре
Обновлено: 1 час 23 мин. назад

Как построили DevOps вокруг системы для клиники

ср, 09/09/2026 - 16:05

Эта статья — история о том, как небольшая команда перевела медицинскую информационную систему с устаревшей платформы 1С 7.7 на 1С 8.3 и выстроила вокруг неё современные практики разработки: контроль версий, код-ревью, автотесты, CI/CD. Дальше — сама история.

В начале двухтысячных классные специалисты разработали систему для клиники на базе 1С 7.7. Функционал включал как административно-хозяйственную часть, так и работу с пациентами. Программный продукт проработал почти два десятилетия, код отладили и протестировали самой жизнью, а идея, что новый код может оказаться лучше старого, казалась совершенно абсурдной. Система при этом технологически устарела: ручное формирование XML отнимало значительное количество времени у программиста, а запросы к БД и обработка данных таблиц для отчётов могли занимать десятки минут. Казалось бы, простые интеграции как XML и REST реализовывали через костыли. Экстренную правку кода приходилось вносить с отключением всех пользователей программы на несколько минут — динамическое обновление для семёрки попросту не разрабатывали.

В 2020 году руководство клиники приняло решение о миграции на новый технологический стек и через год привлекли разработчиков. Всерьёз рассматривался только вариант 1С 8.3: на момент принятия решения других вариантов, сопоставимых по зрелости экосистемы и доступности специалистов на рынке, просто не существовало. Речь шла не о внедрении готового отраслевого решения, а о разработке под одного конкретного заказчика — максимально повторяющей то, к чему сотрудники клиники привыкли за два десятилетия. Устоявшиеся процессы, интерфейсы документов и порядок работы заказчик менять не планировал.

Читать далее

Обзор курса «Контейнеризация в Linux: От chroot до Docker»

ср, 09/09/2026 - 16:03

Продолжая поиски интересных курсов(в этот раз не авито), я наткнулся на необычный материал по контейнеризации. Обычно всё выглядит одинаково: Docker, команды, образы, и в конце внезапно появляются Ansible и Kubernetes. Как будто без них нельзя объяснить, что такое контейнер. Или авторы просто пытаются запихнуть побольше в один курс, чтобы казалось, будто его стоимость оправдана. Ну да ладно.

А мне хотелось чего-то другого. Помните книгу про внутреннее устройство Linux Кетова?
Ещё в 2022 году мне понравилось, как подавался материал про контейнеризацию — от самых её зачатков (chroot) до самого Docker. Вот именно такое я хотел увидеть у кого-нибудь, но с актуализированной информацией.

И такой курс нашёлся на Степике(не реклама если что). Автор как раз пошёл от самого начала: chroot, пространства имён, контрольные группы, ручной запуск контейнера без Docker, и только потом — сам Docker со всеми его фишками. По сути, это получилась современная версия той самой главы из книги Кетова про контейнеризацию.

Читать далее

Почему ChatGPT дает опасные карьерные советы

ср, 09/09/2026 - 15:45

И новички, и действующие IT-специалисты всё чаще используют ChatGPT и аналоги, чтобы обсудить свои карьерные перспективы и распланировать их реализацию. 

Вместе с вымышленной Анной, которая в чате с GPT-6 Astra ищет свои жизненные перспективы, мы проверим, как текущее поколение AI-моделей справляется с подобными вызовами. Это долгосрочные задачи, а релевантных данных для того, чтобы обучить AI их решению, пока крайне мало.

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

Читать далее

Что КОМПАС-API может рассказать о 3D-модели: от данных к классификации

ср, 09/09/2026 - 15:44

Мы привыкли, что человек распознаёт тип детали почти мгновенно — вал, плита, корпус. Но можно ли передать это умение алгоритму, не загружая его тяжёлыми нейросетями и не превращая модель в картинку?
CAD-система уже хранит внутри модели множество числовых характеристик: от объёма до моментов инерции. И если правильно их извлечь и осмыслить, они становятся тем самым «цифровым отпечатком», который позволяет ускорить, классификацию и искать аналоги без сложного машинного зрения. В этой статье разберём, какие данные даёт КОМПАС-API, что физически стоит за каждой цифрой и как из сырых чисел рождается основа для инженерных решений.

Читать далее

Cursor — день прощания

ср, 09/09/2026 - 15:37

Cursor — день прощания

До прошлой пятницы проблемы с доступом к Cursor у российского пользователя были привычными. Редактор открывался, ИИ-агенты работали без проволочек. Нужны были только прокси и, если её не имелось, зарубежная карта — Stripe (кассовый сервис Cursor) с РФ-банками не работает.

3 сентября, вероятно с подачи Шуфутинского, Cursor обновил Terms of Service, включая раздел об экспортном контроле. 4 сентября российские пользователи начали массово получать от API not available in your region; одновременно появились сообщения о переставших работать агентах и автодополнении. Часть Pro-подписчиков получили письма об отмене подписки.

Официального сообщения Cursor в духе «мы прекращаем работу в России» на момент выхода этой статьи ещё нет. Тем не менее, сухой остаток для разработчика от этого меняется слабо.

Не всё так однозначно (с)

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

Как было?

Как мы сделали Cursor‑агента членом команды: hooks, safe‑list и Telegram‑бот

ср, 09/09/2026 - 15:30

Мобильное приложение, команда из шести человек. Агенты писали наш код давно — проблема была в том, что они писали «типовой React Native», а не наш: лезли в android/, тянули hex в стили, забывали lint.

Рассказываю, как мы дошли до состояния, когда большинство мелких и средних задач уходят в production через pull request, который никто из людей не писал — только ревьюил: слоистые доки под разные аудитории, Cursor hooks, которые блокируют запись в нативное дерево и не дают агенту остановиться на красном lint, safe‑list автономных задач, Telegram‑бот на Cursor Agent SDK, замыкающий цикл «QA‑агент нашёл баг → /pr_qa → PR». И раздел о том, что не сработало.

Главная мысль: агент становится членом команды не тогда, когда ему хорошо объяснили правила, а тогда, когда среда не даёт их нарушить.

Читать далее

Short Polling vs Long Polling vs WebSocket: сравнение в SCADA-системах

ср, 09/09/2026 - 15:20

WebSocket принято считать очевидным выбором, когда сервер должен постоянно отправлять клиенту свежие данные. Но что произойдёт, если вместо обычного веб-приложения у нас SCADA, а клиентов становится 1000?

Был собран тестовый стенд с OpenPLC, Modbus TCP и ASP.NET Core. Сравнивались Short Polling, Long Polling и WebSocket при 1, 10, 30, 50, 100, 500 и 1000 одновременных клиентах.

В результате данные не только про задержку, но и про CPU, память, объём полезного трафика и количество новых TCP-соединений.

Читать далее

Скорость команды разработки — свойство системы, а не скорость самого быстрого ковбоя на Диком Западе

ср, 09/09/2026 - 15:20

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

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

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

В такой среде архитектура нужна не для красивой схемы. Она нужна, чтобы изменения были дешёвыми.

Читать далее

В России ввели штрафы за вход через Gmail, Телеграм и другие иностранные сервисы: кто в зоне риска и что делать

ср, 09/09/2026 - 15:17

Вокруг требований к интернет-сервисам появилось много громких заголовков. Из них кажется, что в России запретили ленту рекомендаций, рассылки в Telegram и вход в приложения через Gmail. А что не запретили? Разбираемся!

Читать далее

200 OK от гейтвея ничего не значит

ср, 09/09/2026 - 15:05

Обычная HTTP-проверка может показывать, что ИИ-сервис работает, хотя его пользователи уже не получают ответы. Эндпоинт доступен, гейтвей на месте, но до самой модели проверка не доходит.

Привет, Хабр! Меня зовут Михаил Шпаков, я развиваю Statuser — сервис мониторинга доступности сайтов. Раньше я рассказывал, как он появился и что я узнал за год, мониторя 6 500 сайтов.

Недавно мне написал пользователь Statuser. В его продукте модель разбирала обращения клиентов и готовила для операторов черновики ответов. В какой-то момент эта функция перестала работать, хотя обычный HTTP-монитор, настроенный на адрес ИИ-гейтвея, продолжал показывать зелёный статус. О проблеме сообщили операторы поддержки, а не мониторинг.

Причина оказалась простой: провайдер снял выбранную модель с обслуживания, но сам гейтвей продолжал работать. HTTP-монитор проверял его обычным GET-запросом и получал успешный ответ. Запрос на генерацию он не отправлял, поэтому состояние конкретной модели не видел.

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

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

Читать далее

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

ср, 09/09/2026 - 15:00

Я Илья, руководитель направления геймификации в PARI. До работы здесь у меня был свой бизнес в рамках холдинга EXCORP.GG: мы делали игровые спецы для EXTREMUM и CS.MONEY. Я устал от того, что каждый спецпроект собирается с нуля, живёт пару недель и умирает.

Поэтому я понял: если склеить разные игровые механики в одну систему, они будут лучше работать вместе и усиливать вовлечение. Тогда я защитил эту идею перед фаундерами и основал LVL.IO — компанию, в которой мы создали такой продукт. Эту идею я показал ex-главе киберспорта PARI Ивану Бураченко — и она легла точно под годовой контракт с BLAST, который компания подписала в 2022-м. 

Читать далее

CDN как транспорт для HTTP-туннеля: как мы намерили 5 % потерь, а через три недели не намерили ничего

ср, 09/09/2026 - 14:57

За облачным CDN у нас стоял Xray с транспортом XHTTP. Пользователи жаловались двумя фразами: «тормозит» и «отваливается насовсем». В августе я померил и увидел, что граница CDN спорадически теряет 2–5 % запросов под параллельной нагрузкой. Версия сходилась идеально: для XHTTP в режиме packet-up потерянный запрос — это дыра в последовательности, а дыра — это разрыв сессии.

Второго сентября я повторил тот же замер на том же стенде. Ноль потерь на 1350 запросах.

Ниже — обе серии, объяснение расхождения и та часть выводов, которая уцелела: четыре ограничения границы, о которые HTTP-туннель спотыкается независимо от того, теряет она что-нибудь или нет.

Почему цифры не повторились

Груминг со звёздочкой: как изменился TTM после раннего погружения в код

ср, 09/09/2026 - 14:55

Что происходит, когда команда оценивает задачу до знакомства с чужим кодом? В нашем случае это приводило к оптимистичным срокам, неожиданным A/B-реализациям, повторным итерациям ТЗ и багам, которые обнаруживались уже на тестировании.

Мы добавили Tech Discovery — раннее исследование кода до финализации требований, дизайна и оценки. В статье расскажу, для каких задач этот процесс окупается, сколько времени занимает, какие результаты должна получить команда и чем наш подход отличается от обычного технического spike.

На выборке из семи задач TTM средних и сложных проектов сместился с диапазона 1,5–3 месяца к 1–2 месяцам, а количество профильных багов на эпик — с 6–12 до 4–9.

Читать далее

Экспериментальный антивирусный сканер на основе эвристики: опыт разработки

ср, 09/09/2026 - 14:53

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

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

Мне давно было интересно другое: что, если строить детект не вокруг вопроса «знаем ли мы этот файл?», а вокруг вопроса «насколько поведение и структура этого файла характерны для вредоносной программы?»

Так появился экспериментальный проект HAV — Heuristic AntiVirus. Это не коммерческий продукт и не попытка заменить существующие решения. Это исследовательский эксперимент, цель которого — проверить, насколько далеко можно продвинуться в обнаружении вредоносного ПО с помощью статического и динамического анализа, статистики и эвристических моделей. Репозиторий проекта опубликован в открытом доступе.

Читать далее

Неделя после Хабра: почта человека нашлась в его же коммитах, а мой скоринг раздавал 50 очков даром

ср, 09/09/2026 - 14:41

Шесть дней назад я рассказал здесь про resume2human — программу, которая из резюме делает список вакансий и по каждой находит 1–3 живых человека с именем, ролью и адресом, чтобы написать им напрямую. За неделю в проект уехал 21 коммит в девяти PR, тестов стало 746 вместо 345, и я нарушил ровно половину обещаний, которые дал в том тексте. Внутри: бесплатная ступень поиска личных контактов, которая держится на git вместо платных баз; три бага, из-за которых прогон честно искал не то, что просили; и разбор того, почему покрытие пустого множества равно единице и что это стоило мне в скоринге.

Читать далее

Зачем я поставил «калитку» перед reverse proxy и почему обычного логина мне оказалось мало

ср, 09/09/2026 - 14:40

Есть Grafana.

Есть n8n.

Есть Dockge.

Есть несколько внутренних админок и staging-сайтов.

У каждого из них уже есть собственная авторизация. Казалось бы, что ещё нужно?

Но меня долго смущала одна простая вещь: почему форму логина вообще должен видеть весь интернет?

Да, за ней стоит пароль. Возможно, MFA. Возможно, очень хороший механизм аутентификации.

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

Можно решить вопрос VPN.

Можно поднять Authentik или Authelia.

Можно использовать Cloudflare Access или другой Zero Trust.

Можно добавить Basic Auth перед обычной авторизацией и получить прекрасный UX из двух логинов подряд.

Но для нескольких моих сервисов всё это казалось слишком большим решением для очень маленькой задачи.

Мне хотелось буквально следующего:

Читать далее

Вместо конвертации ассетов перепишу с нуля рантайм игры

ср, 09/09/2026 - 14:37

Допустим, вы хотите перенести модельку из одной игры в другую.

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

OpenAssetTools / ZoneTool автоматизируют процесс конвертации для Call of Duty

UE Viewer экспортирует данные Unreal в GLTF, PSK, DDS и др.

Мы сегодня рассмотрим альтернативный путь. Как вам идея переписать рантайм целевой игры с нуля и добавить нативную поддержку чужих ассетов? Моя попытка сделать что‑то подобное привела к созданию экспериментального движка IW4L, основой для которого является IW4 (Call of Duty Modern Warfare 2 2009).

Читать далее

Как мы запустили Sales Camp и обучили студентов сложным ИТ-продажам: внутренний трек, параллельный открытому найму

ср, 09/09/2026 - 14:37

В статье расскажу, как в КОРУСе запустили для студентов внутреннюю программу Sales Camp, куда привлекли руководителей из бизнес-направлений в качестве наставников. О причинах запуска, воронке отбора, двухэтапной системе обучения и главном бизнес-эффекте от программы — далее.

Читать далее

Игрок ДнД-бота отрезает себе палец. Но такого правила нет

ср, 09/09/2026 - 14:36

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

Читать далее

Контекст растёт, KV-кэш — нет: Qwen3.8-27B на ограниченной VRAM с CMF формате

ср, 09/09/2026 - 14:34

Qwen3.8-27B в Q4TP занимает около 14,3 GB весов, но при длинном контексте упирается ещё и в KV-кэш. Для 16 full-attention слоёв этой гибридной модели FP16 KV-state растёт на 65 536 байт с каждым токеном: на 64K это около 4 ГиБ только для K/V.

В экспериментальном режиме O(1) рантайм CMF заменяет растущий KV-кэш этих 16 слоёв фиксированным состоянием: четыре sink-токена, точное окно последних 128 токенов и 32 опорных представлений для дальней части. В использованном профиле GPU-state attention составляет 44,1 МиБ, и не увеличивается с длиной контекста.

Читать далее

Сейчас на сайте

Сейчас на сайте пользователей и гостей.