На примере FastAPI-чата показываю, как выстроить автотесты для API с двумя транспортами: REST используется для подготовки состояния, WebSocket — для проверки событий. В статье разбираем архитектуру тестов на Python: клиенты, фикстуры, Pydantic-схемы, контрактные проверки, Allure и CI/CD.
Читать далееКогда я впервые начал работать с «1С:Элемент», казалось, что установка среды - это самая простая часть. Скачать, установить, открыть - что может пойти не так?
На практике оказалось, что именно на этом этапе многие стопорятся: у кого-то не запускаются скрипты, у кого-то проблемы с окружением, а кто-то просто теряет время на лишние настройки.
Со временем у меня сформировался простой подход: минимум действий максимум результата. Делюсь, как делаю это сейчас.
Любому руководителю, у которого к команде есть эксперт, предлагаю сделать татуировку: эксперт всегда должен быть доступен. Под экспертом я понимаю человека со сверхкомпетенциями – сеньора, суперархитектора, мегаспеца по выруливанию сложных ситуаций с клиентами.
Никогда не загружайте эксперта на фуллтайм, не давайте длинных неделимых задач (которые нельзя в любой момент отложить), не отдавайте в длинные проекты на линейных ролях (разработчик, аналитик, консультант). Любая загрузка, которая делает эксперта недоступным для команды – зло.
Читать далееОн подарил миру один из самых популярных персональных компьютеров, сколотил миллионное состояние, а потом потерял почти все. Это история Клайва Синклера, создателя Спектрума.
Читать далееКогда звонок начинается через Wi‑Fi, а продолжается уже в LTE, для пользователя ничего не происходит — разговор просто не обрывается. Но внутри сети в этот момент запускается цепочка сетевых процедур.
В статье разбираем как работает хэндовер по фазам и показываем, как переход выглядит в логах.
Читать далееНаш загрузчик оказался слишком медленным. Требование было чётким: загружаться менее чем за 500 миллисекунд. Показатели оставались не менее чёткими: 720 миллисекунд. Мы отставали от нужного значения на 44%.
Это требование не было «мягким». Загрузчик должен был работать в промышленном контроллере, обязанном реагировать вскоре после включения питания. Каждая секунда времени загрузки — это потерянная продуктивность. В спецификации к изделию был указан максимум в 500 мс. Мы обязаны были их обеспечить.
Задача загрузчика была простой:
1. Инициализировать оборудование (UART, SPI, DDR-контроллер)
2. Загрузить ядро из флэш-памяти
3. Спарсить дерево устройств
4. Перейти ко точке входа ядра
Реализация казалась логичной: стандартные структуры данных из библиотеки C. Проблема выявилась при профилировании: 45% времени загрузки тратилось на malloc/free! В загрузчике всего с 64 КБ ОЗУ динамическое распределение роняло производительность.
Читать далееПривет, Хабр! (И тебе, школьник, который пришёл на YoungCon за панамкой и Slava Marlow, и тебе, опытный разраб, который читает это и крутит пальцем у виска: «Зачем ты вообще туда поехал?», и тебе, представитель Яндекса, который, я надеюсь, дочитает это до конца.)
Сразу скажу - формат не самый привычный для моего блога. Обычно я тут разбираю, то что разрабатываю по косточкам или ною про процессы в IT мире. Но сегодня без кода, и без YAML. Сегодня - про то, как я съездил на главное молодёжное IT-событие страны и вернулся с очень смешанными чувствами.
Поехали.
Читать далееВ 2017 году в мире нейросетей произошел почти незаметный переворот. Без громких презентаций и человекоподобных роботов исследователи из Google опубликовали статью с очень скромным названием — Attention is All You Need. Но именно после нее индустрия ИИ фактически разделилась на «до» и «после».
Сегодня на трансформерах работают ChatGPT, Claude, Gemini, Midjourney и почти весь современный генеративный ИИ. И самое странное в этой истории — фундаментом революции стала одна из самых простых операций линейной алгебры: скалярное произведение векторов.
Не новая архитектура памяти.
Не сложная логика вывода.
Не биологически правдоподобная модель мозга.
А обычное перемножение чисел с последующим сложением.
Но чтобы понять, почему именно эта операция оказалась настолько мощной, нужно сначала вспомнить, в какую стену уперлись нейросети старого поколения.
Читать далееСамые интересные новости финансов и технологий в России и мире за неделю: уголовка косплееру по Warhammer, ограничение сроков льготной ипотеки, Илон Маск запустил летающую тарелку и перестал быть триллионером, падение биткоина, OpenAI выпустили GPT-5.6, а Цукерберг хочет ворваться на рынок предсказаний.
Читать далееРассказ
ИИ-офис молчал всю ночь. Это было плохо.
Обычно корпоративный ИИ-офис не молчит. Он шуршит фоном: нарезает записи в протоколы, собирает письма, подсвечивает риски, сравнивает версии договоров, ловит просрочки, пишет «рекомендовано назначить ответственного» и прочую административную поэзию, за которую раньше платили живым людям с лицами, кредитами и отпускными.
Молчание означало одно из трёх: либо всё сломалось, либо закончились токены, либо система нашла способ решить проблему без меня.
Третий вариант был самым неприятным.
Я проснулся в 5:40, потому что телефон завибрировал на тумбочке. На экране было сообщение от финансового директора:
«Андрей Сергеевич, вы точно согласовали выгрузку всего пакета по банку во внешний контур?»
Сон сразу закончился.
Есть фразы, после которых организм просыпается без кофе. «К вам пришли из налоговой». «Подрядчик снял людей». «Дизель встал, бетон греть нечем». И вот теперь в этот список добавилось: «..вы точно согласовали выгрузку всего пакета во внешний контур...»
Читать далее"Интуиция – это нечто такое, что опережает точное знание. Наш мозг обладает, без сомнения, очень чувствительными нервными клетками, что позволяет ощущать истину, даже когда она еще недоступна логическим выводам или другим умственным усилиям."
Привет, Хабр!Вы наверно знаете что высший пилотаж он же Высокий Слог С++ это шаблоны и метапрограммирование. Вы обязательно должны нагородить кучу несовместимых типов и самозабвенно искать для них универсальный алгоритм.
Вот очередная статья о том что метапрограммирование и код с шаблонами не такие уж и плохие.
Но я хочу рассказать вам историю одного детективного расследования в недрах крупного OpenBMC-проекта (экосистема серверных платформ swtSyst). Это история о том, как безудержное желание перенести всё в compile-time (constexpr), помноженное на ультрасовременный синтаксис C++20, породило идеальный «молчаливый баг» (silent failure). Он мог бы годами жить в продакшене, успешно компилировался, не выдавал ни одного ворнинга, но полностью ломал логику работы приложения.
Если вы любите метапрограммирование, шаблоны, операторы свёртки (fold expressions) и тонкости работы с памятью в C++ — устраивайтесь поудобнее. Мы отправляемся в шаблонный ад.
Читать далееЗдравствуйте! Продолжается серия статей по Direct 2D. В них были рассмотрены такие темы, как "Слои" и "Эффект", а также в конце приведён список всех тем по Direct 2D, которые я планирую рассмотреть
Читать далееAngaraBase — OLTP/HTAP СУБД, написанная с нуля на Rust. Совместима с PostgreSQL по протоколу — работает с psql, JDBC, psycopg2 и стандартными драйверами. UNDO-log MVCC без VACUUM, векторизованный исполнитель с SIMD-батчами — транзакции и аналитика под одним SQL и одним снапшотом, без ETL и второго хранилища. Fail-closed контракты ресурсов, USDT-пробы без рестарта, EXPLAIN с разбивкой по фазам исполнения. Dev preview доступен на angarabase.dev.
Читать далееПервый публичный релиз DataSafeS3 (v1.0.0) вышел 24 июня 2026. За несколько дней после него — v1.0.1 и v1.0.2. Оба патча про исправления: для тех, кто уже крутит своё S3-хранилище не только на ноутбуке, но и в тестовом или боевом контуре.
DataSafeS3 — молодой open-source проект небольшой команды: своё хранилище файлов с S3 API, веб-консолью, пользователями, ролями и журналом действий — всё на вашем железе. Мы не MinIO и не конкуренты им — стремимся к доступному open source, который может поднять любой, кто умеет Docker и Linux. Зато честно пишем, что сломалось, что закрыли и что пока не успели.
Ниже — не CHANGELOG. Для каждого изменения: что болело, как это выглядело у вас, что мы поменяли.
А что вообще было в v1.0.0???Системы и так уже многое помнят.
Они помнят действия пользователей, логи, тикеты, код, комментарии, трассировки, алерты и ответы моделей. Иногда они даже умеют сохранять контекст между шагами. Но есть одна вещь, которую они по-прежнему помнят плохо: смысл экспертного решения.
И это интересный вопрос.
Что, если софт мог бы помнить, какой эксперт был доверенным для какого типа решений, сохранять причину этого выбора и использовать её позже как совет?
Не как абсолютную истину.
Как живую память об опыте.