Как подход Docs-as-a-code применили в создании документации для TestY TMS
Команда разработки системы управления тестами TestY объединилась с командой технических писателей, чтобы создать удобную документацию.
Для ведения документации выбрали подход Docs-as-a-code. Документация хранится вместе с кодом приложения. Для написания и сборки использовали более-менее классическое сочетание: rST-формат в связке со Sphinx.
Инженеры уверены, что такой вариант предоставляет большую гибкость, чем стандартный MD. К тому же, rST в связке со Sphinx — стандарт документации для open source-проектов.
Одна из страниц документации
Разработчики поддерживают документацию в актуальном состоянии, поэтому рассчитывают, что в дальнейшем любое изменение текущей функциональности, как и разработка новой, будет сопровождаться обновлением документации. Это будет одним из Definition of Done для реализации фич.
Помимо документации в релизе 2.1 появилась темная тема и другие обновления интерфейса. Читайте о них в статье →
Бесплатная магистратура в Сириусе: ИИ для промышленности и безопасность КИИ
Университет «Сириус» открыл приём на две магистерские программы. Обе — очные, двухлетние, с обучением в кампусе на берегу Чёрного моря, практикой на реальных проектах и стипендией от 20 до 40 тыс. рублей. Обе - при поддержке Росатома.
— Приём заявок — до 25 июля
— Старт обучения — сентябрь 2025
— Обе программы: бесплатные, с проживанием
1. Критическая информационная инфраструктура: разработка и безопасность
Для тех, кто хочет работать на стыке системной архитектуры, кибербезопасности и импортонезависимых технологий в промышленности, энергетике и транспорте.
В фокусе — проектирование, защита и устойчивость ИТ-систем, от SCADA до SIEM.
Треки:
— Разработка защищённых систем
— Информационная безопасность
Выход: архитекторы КИИ, специалисты по ИБ, ИТ-менеджеры, разработчики промышленных решений.
Выложили в открытый доступ Kodify Nano – модель для кодинга
Это уже вторая опенсорс-модель от MWS AI (ранее MTS AI) – первую, Cotype Nano для работы с текстами, выпустили в конце прошлого года.
Ключевые характеристики:
1,5 млрд параметров;
контекст 32 768 токенов;
ключевые языки: Python, Java, JavaScript, C# и Go
Функции:
генерация и автодополнение кода;
документирование разработки;
генерация юнит-тестов;
объяснение чужого кода.
Встраивается в среды разработки, работает в формате чат-ассистента. Поставляется в трех версиях, все можно скачать на Hagging Face:
Kodify‑Nano – рекомендуется на видеокартах Nvidia c не менее, чем 10 Гб памяти.
Kodify‑Nano-GPTQ (4bit) – квантизированная версия Kodify Nano, которая в три раза меньше оригинальной модели. Рекомендуется на видеокартах Nvidia c не менее 6 Гб памяти.
Kodify‑Nano-GGUF – сконвертирована для работы с Ollama/llama.cpp. , на случай, если нет мощной видеокарты. Есть варианты 16 бит, 8 бит и 4 бита.
Мы рекомендуем использовать модели с нашим собственным плагином (скачать тут), он уже настроен для работы с Kodify Nano. Есть версии для VS Code и IntelliJ IDEA (и других IDE Jet Brains).
Знаем, 1,5B параметров – это совсем немного. Основная корпоративная модель – Kodify 2, вышедшая ранее, – тоже не гигант, 7B. Вот тут в статье рассказываем, почему пошли по пути создания легковесных моделей, и что делаем, чтобы они справлялись со своими задачами достойно.
Помните старый анекдот? Учительница спрашивает: дети назовите слово на букву Ж. Вскакивает Вовочка и кричит: жоп@. Учительница говорит: Вовочка нет такого слова. Вовочка: как же так? жоп@ есть, а слова нет?
Программист С++ сейчас находится в положении Вовочки. Когда создать вложенный класс есть возможность
struct Foo {
struct Bar {
};
};
А написать опережающее описание мы не можем.
struct Foo;
struct Foo::Bar; // error: use of undefined type 'Foo'
Слова нет-с.
И этот "кассовый" разрыв длится с 1998 года. Больше чем некоторым С++ программистам лет. Очевидно, что такая скорость разработки языка никуда не годится. А причина этого в том, что С++ разрабатывается комитетом по старому доброму принципу, лебедь, рак и щука. При этом со стороны комитета идут возражения, что мол все надо тщательно обдумать, но при этом кривые решения внедряются регулярно.
Поэтому единственный способ спасти С++ это создание форка языка и разработка этого форка непосредственно разработчиком компилятора. Это устранит эффект лебедя-рака-щуки, ускорит выход новых фич и исправления ошибок. Ну и новые баги будут проявляться чаще, но можно хотя бы надеяться на их быстрое исправление. Комитет же в этом плане безнадежен.
Я же со своей стороны тоже хочу внести посильный вклад и предлагаю название:
Производительность Nintendo Switch 2 проверили с помощью Minecraft. В сети появился ролик, в котором показано, как новая консоль справляется с игрой, если установить в ней тысячу блоков TNT (динамит), а затем взорвать их.
Манипуляций довольно много, но мы все к этому привыкли и это кажется нормальным.
Но с withComponentInputBinding() все стало намного проще: 1. Создаем сигнальный инпут... и... Вот и все!
Никаких дополнительных манипуляций, и значение «у вас в кармане». Все, что вам нужно, чтобы это работало, — это передать withComponentInputBinding() в качестве аргумента в provideRouter().
Функция не новая (кажется, появилась в Angular 16), но я редко ее видел в проектах.
Немного технической информации из документации:
🔍Маршрутизатор передает данные в input() из:
Параметров запроса (?page=1&sort=asc)
Параметров пути и матрицы (/users/123;details=true)
Статических данных маршрута (data: { role: 'admin' })
Результатов резолвера (resolve: { user: userResolver })
🔍 Приоритеты: Если есть дублирующиеся ключи, данные переопределяются в порядке выше — резолверы имеют наивысший приоритет и перезапишут остальные.
🚩 Важный нюанс Если в маршруте нет данных для input(), он получит undefined (например, если параметр запроса удален из URL).
ℹ️ Как задать значения по умолчанию?
✔ Через resolver (чтобы данные всегда были в маршруте) ✔ Через transform в input() (если нужно обрабатывать undefined)
Спасибо разработчикам Angular за эту функциональность 🙏.
Разработка или Vibe Coding продолжается 3 день. Я все ещё использую Bolt и смог сделать вполне рабочий сервис. Вручную программисту потребовалось бы около 1-2 недель на такой функционал.
Авторизация
Редактор форм
Просмотр ответов форм с фильтрами
Выгрузка ответов в csv
Шаблоны форм
Загрузка файлов в хранилище
Публикация формы для клиента
Все уже работает и связано с БД
Остальные скрины и ДЕМО версию пришлось опубликовать в телеге т.к. тут лимит на 1 картинку.
Уязвимость в протоколе REALITY XTLS/Xray-core: быстрый фикс уязвимости Aparecium
На прошлой неделе была обнаружена уязвимость в известном ПО для создания прокси соединений XTLS/Xray-core, а именно в протоколе REALITY, позволяющая выявлять работу этого протокола.
Для тех, кто не в курсе: REALITY — это уникальный протокол прокси, который позволяет маскировать прокси-трафик под легитимное посещение реальных сайтов (например, google.com или любого другого), при этом не требуя покупки домена и настройки TLS-сертификата на своем сервере.
Обнаружение уязвимости
В начале июня 2025 года исследователь под ником ban6cat6 опубликовал утилиту под названием Aparecium. Ее цель — находить серверы, использующие протоколы вроде REALITY.
В чем была суть уязвимости? Утилита обнаружила, что серверы на базе OpenSSL после завершения основного TLS-рукопожатия (handshake) обычно отправляют клиенту один или два служебных сообщения NewSessionTicket. Это стандартное поведение, позволяющее возобновлять сессии. Протокол REALITY в своей реализации это поведение не имитировал.
Это тонкое различие позволяло Aparecium с высокой точностью отличать настоящий веб-сервер от сервера с REALITY, просто проанализировав последовательность TLS-сообщений.
Быстрый фикс
Информация об уязвимости была опубликована в виде issue #4778 в репозитории Xray-core. Разработчики, в частности RPRX, отреагировали практически молниеносно.
Вместо того чтобы добавить отправку фейковых NewSessionTicket, они пошли по более правильному пути. Уже через несколько дней в версии Xray-core v25.6.8 появилось «предварительное» решение:
Теперь при первом запуске сервер REALITY, используя отпечаток клиента Chrome, сам подключается к целевому сайту (dest), «подсматривает», какие именно post-handshake сообщения и какой длины тот отправляет, кэширует эту информацию и в дальнейшем идеально имитирует именно это поведение.
На это «зондирование» уходит около 30 секунд при первом старте сервера, но оно по большей части решает основную проблему. Вместе с этим был исправлен и неприятный баг с производительностью из-за неработающего аппаратного ускорения AES-NI.
Глубокий анализ
Казалось бы, проблема решена, однако разработчики начали копать глубже, и вот что выяснилось:
Загадка «лишнего пакета» от bilibili.com Один из разработчиков заметил, что при подключении к некоторым сайтам (например, bilibili.com) с отпечатком Chrome, сервер возвращает не только NewSessionTicket, но и еще один небольшой пакет. После анализа выяснилось, что это не TLS-сообщение, а кадр настроек HTTP/2 (settings frame). Это значит, что для идеальной маскировки нужно имитировать не только TLS-уровень, но и поведение прикладного протокола (HTTP/2), который был согласован в ходе рукопожатия.
Проблема разных отпечатков (fingerprints) Выяснилось, что один и тот же сайт может по-разному отвечать на ClientHello от разных клиентов. Например, на запрос с отпечатком Chrome он может отправить два NewSessionTicket и settings фрейм, а на запрос от Go-клиента — только один NewSessionTicket. Похоже, что статического зондирования недостаточно.
Идея «живого обучения» В ходе мозгового штурма родилась идея для долгосрочного решения, которое было оформлено в issue #4788. Суть в том, чтобы сервер REALITY, получив ClientHello от нового клиента, не просто использовал стандартный отпечаток для зондирования, а копировал отпечаток реального клиента и именно с ним обращался к целевому сайту. Это позволит динамически адаптироваться под любого клиента и достичь практически идеальной мимикрии.
Разработчики рекомендуют всем обновить сервера и клиенты, использующие Xray-core, до версии 25.6.8.
Задание будет интересно всем, кто любит CTF-турниры или просто не боится вызовов. Особенно — новичкам или опытным специалистам по информационной безопасности.
Условие Вы — участник CTF-турнира. Ваша задача — как можно быстрее найти флаг. Что известно: флаг находится на нестандартном порту сервера. Чтобы его получить, необходимо проанализировать адрес 79.141.77.70.
Задача Найдите флаг — строку в формате slcctf{}.
Предлагайте свое решение в комментариях. Подсмотреть его можно в Академии Selectel.
Магия упрощения пользовательского опыта на примере установки n8n
В апреле мы, в Amvera Cloud, запустили n8n как преднастроенный сервис и столкнулись с тем, что разворачивать его неудобно.
Для работы сервиса требовалось после запуска создать домен, открыть порт, добавить домен в переменную и перезапустить проект. Звучит просто, но без документации далеко не каждый пользователь справлялся.
Плюс, не все могли найти преднастроенный n8n у нас в интерфейсе.
А простота создания и эксплуатации — это важно, особенно для такого сервиса, как наш.
Что мы сделали
– Теперь домен создаётся прямо при запуске проекта и сразу добавляется в нужную переменную. Это сократило создание n8n буквально до ввода названия проекта и нажатия кнопки “создать”.
– Добавили плитку с преднастроенными сервисами, чтобы их создание было максимально простым.
Плитка преднастроенных сервисов
Результат
Создание таких сервисов как n8n, Keycloack и других, от нажатия первой кнопки до перехода по выделенному бесплатному домену занимает буквально 20 секунд и требует нажатия двух кнопок и заполнения одного поля с названием проекта!
В ближайшие дни мы добавим возможность обновлять версии сервисов одной кнопкой и сделаем несколько инструкций для таких нестандартных ситуаций, как использование ffmpeg.
В моем канале IT Talks можно скачать бесплатный методический материал, где ты найдешь шаблоны пяти основных диаграмм на PlantUML в практических кейсах с описанием.
Для каждого шаблона подробно описан процесс, для которого построена диаграмма, а также есть сама диаграмма и исходный код на PlantUML. В гайде можно найти диаграмму активности, последовательности, прецедентов, состояний и компонентов.
Вышла нейросеть для расшифровки скриншотов — Snippai. Работает Gemini или GPT-4. Умеет перегонять формулы со скринов в LaTeX-формат, решать задачи и примеры, генерировать код по скринам или тексту, преобразовывать таблицы в Markdown, извлекать, переводить и пояснять текст. Доступна на macOS, Windows и Linux.
В развитие темы Bare Metal VM, над которой я время от времени размышляю начиная аж с 2010 года, предлагаю ознакомиться с интересным и, на мой взгляд, перспективным проектом OSv.
Ещё в 10-м году я подумывал над тем, что имея сервера приложений наподобие Томката и серьёзную взрослую изоляцию на уровне загрузчика классов - можно выкинуть подлежащую ОС со всеми её ненужными сервисами из нашего стека, оставив сервер приложений на голом железе. Тогда же выяснилось, что не я один так думаю, было коммерческое предложение Oracle JRockitVE. Судя по всему, наследница вот этого приобретения Bea.
Ранее я уже писал статью об этой идее на Хабре и пытался защищать в дискуссии.
Можно попробовать снова.
Ещё можно смотреть на развитие ОС на базе грааля. Или вспомнить про JaOS.
К современным ОС типа Линукса у меня есть много претензий, и есть несколько идей, которые можно было бы реализовать для их улучшения. Некоторые из них описаны в указанном проекте. Некоторые в том или ином виде наличествуют в специализированных коммерческих предложениях (Юникс) крупных вендоров типа АйбиЭм или того же Оракла. Это касается, например,
файлово-дискового стека,
оптимизации сети,
использования ГПУ в неожиданных местах,
гибкости в использовании СУБД при разработке с контейнером.
Дал одинаковое задание ChatGPT и Claude: создать интерактивную игру с кодом и интерфейсом. Задача комплексная — нужно и код написать, и текст придумать, и интерфейс сделать
Наши испытуемые
ChatGPT: 4.1, o3, Codex-1
Claude: Sonnet 3.7, Sonnet 4, Opus 4
💬 Исходный промпт для всех моделей выбрал такой Каждая модель ИИ получила идентичное задание
Давай сделаем игру на основе этого промпта
Придумай 10 заранее заготовленных Change (сам придумай) - и в формате истории рассказываешь что бы произошло
I want to simulate a new reality by altering a single variable. I'll give you the change, and you'll break down the cascade of consequences — starting from the most fundamental shift down to specific, real-world effects — so I can trace the full chain of cause and reaction. Let's begin with: [change]
Напиши код с интерфейсом
Да, промпт без всяких изысков и правил написания правильного промпта. Без указания ролей, структуры и тому подобного. Специально, что бы не фреймить модели на слишком точную задачу
Результаты по моделям ⤵️
ChatGPT семейство 💫
GPT o3 — 80 строк, 6KB Самый компактный код, но с серьезными косяками: текст размазан по экрану, нет viewport для мобилок, поверхностное выполнение основной задачи.
GPT 4.1 — 137 строк, 5KB Наиболее сбалансированный результат среди ChatGPT. Есть viewport, чистый ES6+ код, корректная мобильная версия. Но отсутствуют медиазапросы и не подсвечивается выбранный вариант.
Codex-1 — 105 строк, 6KB Единственный из ChatGPT написал интерфейс на русском. Технически грамотно, но слабо раскрыл суть задачи — вместо каскада последствий дал простые описания в 2-3 предложения.
Claude семейство 💗
Sonnet 3.7 — 317 строк, 20KB Структурированный подход с выпадающими списками и кнопками выбора. Хорошо выполнил часть с "каскадом последствий". В 3.2 раза тяжелее ChatGPT решений, но функциональность это оправдывает
Sonnet 4 — 562 строки, 33KB Появились переходы между страницами с искусственными загрузками через setTimeout. Модель уже начала осознавать UX-принципы: время ожидания увеличивает вовлеченность
Opus 4 — 497 строк React, 26KB Полноценный React-компонент с JSX, анимациями и пошаговым интерфейсом. Opus реализовал не прототип, а интерактивный полноценный опыт, который можно хоть сейчас отправлять на прод
Главные выводы
ChatGPT: Vanilla JS, минимализм, работает и хорошо, файлы 5-6KB Claude: Продуманная архитектура, UX-решения, выглядит вау, файлы 20-33KB
Разница в подходе и результате очень значительная — от HTML до React-приложений
Детальный разбор каждой модели, анализ кода, ссылки на GitHub, сравнение стоимости токенов, любопытные наблюдения о "личности" моделей и практические рекомендации для выбора — всё это в полной статье 👈
Как интеграция SRM-системы и портала поставщика сокращает цикл закупки на 23%
Эксперты расскажут, как интеграция ELMA365 «Закупки для работы с поставщиками» и «Портала поставщика» на базе «Бустрейд» позволит сократить цикл сделки и повысить эффективность закупочных процессов.
Российский бизнес тратит на закупки до 65% от выручки и до нескольких недель времени из-за ручных согласований участников процесса. Коммуникация с поставщиками в закупках часто не систематизирована: заказы в почте и чатах теряются, дублируются, требуют ручной обработки. Ручной сбор КП и подбор позиций отнимает время, приводит к ошибкам и недопониманию. А не унифицированные процессы провоцируют потерю ресурсов компании.
На партнерском вебинаре эксперты «КОРУС Консалтинг» и ELMA365 Закупки расскажут, как интеграция «Портала поставщика» на базе «Бустрейд» и SRM-системы помогает ускорить закупочный цикл на 23% и сделать его одновременно выгодным для бизнеса и удобным для контрагентов.
На встрече обсудим: ✔️ Тренды рынка. Что происходит с закупками в России и почему автоматизация — стратегическая необходимость; ✔️ Кейсы из практики. Как компании сокращают закупочные циклы и добиваются прозрачности в работе с поставщиками; ✔️ Демо-интеграции. Сквозной процесс: как «Портал поставщика» на базе платформы «Бустрейд» и ELMA365 Закупки автоматизируют весь цикл — от сбора потребностей до взаиморасчетов. ✔️ Сессия Q&A + бонус. Отвечаем на ваши вопросы и дарим участникам полезный материал
Кому будет полезно: Директорам и руководителям отделов по закупкам Специалистам по закупкам Коммерческим директорам Директорам по цифровой трансформации и CIO Бизнес-аналитикам и руководителям по автоматизации
Что получите на вебинаре: ✔️ Понимание рыночных трендов в сфере закупок ✔️ Реальные кейсы компаний ✔️ Понимание, как автоматизация может оптимизировать ваши закупки с помощью демо-презентации ✔️ Ответы на вопросы, разбор типичных ошибок и первый шаг к действию
Присоединяйтесь к вебинару, и вы узнаете, как получать больше выгоды за рекомендацию решений Cloud.ru 💸
📆 Когда: 17 июня в 11:00 мск
📍 Где: онлайн
Реферальная программа Cloud.ru — это возможность получать стабильный доход, рекомендуя облачные сервисы. За каждого привлеченного клиента партнер получает процент от суммы его чеков, а клиент — бонусные рубли.
Недавно мы обновили условия реферальной программы, чтобы вы могли еще выгоднее рекомендовать сервисы клиентам, коллегам или друзьям. На вебинаре мы расскажем:
про новые условия программы: сколько теперь вы сможете зарабатывать вместе с Cloud.ru;
про сценарии использования сервисов: как предлагать решения и какие вопросы задавать для выявления потребностей;
как подключиться к программе: пошаговая инструкция и сопровождение от наших сотрудников;
кейс реального партнера — как он привлекает клиентов, оптимизирует доход и взаимодействует с Cloud.ru.
Кому будет полезно: разработчикам частного ПО, DevOps-инженерам, системным интеграторам, IT-консультантам, маркетинговым агентствам, веб-студиям и всем, кто хочет монетизировать свои знания и предлагать клиентам надежные облачные решения.