Обновить
1024K+

Программирование *

Искусство создания компьютерных программ

1 209,08
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Безопасность микроядра: где заканчивается трюизм и начинается инженерия

Время на прочтение14 мин
Охват и читатели14

Привет, Хабр!

Меня зовут Анна Мелехова, я старший архитектор ПО в «Лаборатории Касперского». Вместе с командой занимаюсь разработкой микроядерной KasperskyOS.

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

В этой статье, основанной на моем докладе для OS DevConf 2025, разберем, почему механизмы харденинга могут эффективнее работать в микроядре, чем в монолите; как «закрутить гайки» при передаче данных из user space; и насколько отличаются защитные механизмы в микроядерной архитектуре и в монолитной.

Читать далее

Новости

Летняя встреча Go-сообщества: системное и embedded-программирование

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели515

Если список литературы по Go на лето уже прочитан, пора переходить от теории к живым кейсам. 23 июля собираемся в Москве и онлайн на встрече Go-сообщества от YADRO и Postgres Professional. Начинаем в 19:00 — подключайтесь к трансляции и слушайте тех, кто работает с Go каждый день.

Отменяем summertime sadness

Go без мифов: переход с C++, highload, рынок, зарплаты и путь разработчика — интервью с Владимиром Балуном

Уровень сложностиСредний
Время на прочтение33 мин
Охват и читатели3.2K

Go часто называют простым языком. Но простота синтаксиса не отменяет конкурентности, рантайма, сборщика мусора, интерфейсов, особенностей памяти и реального production-опыта.

Я, Александр, автор телеграм-канала «Shulepov Code», поговорил с Владимиром Балуном — разработчиком на C++ и Go, автором YouTube-канала «Владимир Балун» о программировании и основателем школы программирования.

В этом выпуске мы разбираем, почему Go стал таким востребованным, кому он подходит, как на него переходить, а также сильные и слабые стороны языка. Обсуждаем реальные проекты, особенности конкурентности, память, сборку мусора и production-опыт.

Читать далее

Сможет ли DB Client от OpenIDE заменить DataGrip?

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели3.6K

Меня заинтересовал новый плагин DB Client, который идёт в составе OpenIDE. Давайте посмотрим, может ли он уже на текущий момент стать достойной альтернативой платному DataGrip? Я не предъявляю каких-то узкоспециальных требований к таким инструментам. В основном требуется писать и оптимизировать sql-запросы, просматривать структуру таблиц и диаграмму связей между ними, просматривать актуальный DDL, выполнять мелкие правки данных “на лету”, а также делать импорт и экспорт данных в различных форматах. Давайте по этим пунктам и пройдёмся.

Читать далее

Странные машины: как хакеры собирают процессор из данных

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели3.2K

Как часто нам приходится читать в бюллетенях безопасности «Уязвимость... позволяющая нарушителю выполнить произвольный код с помощью специально сформированного запроса». Но что на самом деле скрывается за этой фразой? Что это за специальные запросы и как наша программа может выполнять чужой код, если мы досконально знаем в ней каждую строчку и каждую библиотеку?

И почему тогда Apple платит до двух миллионов долларов за одну найденную уязвимость и выстраивает многоуровневую аппаратную защиту — а айфоны всё равно взламывают по нажатию одной кнопки?

Всё дело в том, что сами атаки стали другими. Когда инженеры перекрыли большинство очевидных ходов, хакерам пришлось изменить сам подход к взлому. Вместо поиска лазеек они научились брать легитимные вычисления программы и строить поверх них... виртуальный процессор. Даже стандартную функцию вывода текста printf удалось превратить в Тьюринг-полный интерпретатор — то есть вычислитель, способный выполнить любой алгоритм.

Перед нами — Data-Only атаки, где взлом превращается в программирование на «невидимом» процессоре. Процессоре, команды которого — лишь побочный эффект работы нашей собственной программы.

Но чтобы понять, как мы здесь оказались, придётся вернуться на двадцать лет назад.

Читать далее

Qwen 3.6 27b на 8-12gb vram в llama.cpp до 256к контекста

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели3K

Вышло 2 модели prism-ml/Ternary-Bonsai-27B-gguf и prism-ml/Bonsai-27B-gguf

Модели представлены в 2-битном и 1-битном вариантах и занимают всего 7,2 и 3,8 ГБ соответственно. Но самое интересное здесь не размер, а качество после столь агрессивного сжатия. По заявленным результатам, 2-битная версия сохраняет около 95% качества FP16, а 1-битная - примерно 90%.

Благодаря столь компактному размеру 1-битную модель можно запускать даже на смартфонах. Например, на iPhone 17 Pro Max скорость генерации достигает примерно 11 токенов в секунду.

Для запуска потребовался форк PrismML-Eng/llama.cpp. На RTX 3090 мне удалось получить около 60 токенов в секунду. Скорость вполне достойная, однако потребление видеопамяти меня не устроило: при контексте в 256 тысяч токенов 2-битная версия заняла около 18 ГБ VRAM. В это значение входят примерно 3 ГБ, используемые Windows 11.

Я привык работать с TurboQuant версиями llama.cpp, которые заметно эффективнее расходуют память, при использовании параметров: -ctk tbqp3 -ctv tbq3 объём памяти занимаемый контекстом, сокращается в 4.71 раза. При этом качество такого сжатия контекста, согласно результатам тестов, оказывается примерно на 8% выше, чем у F16.

Читать далее

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

Время на прочтение8 мин
Охват и читатели3.6K

Эта история началась не с продуктовой сессии, не с исследования рынка и даже не с запроса заказчиков. Отправной точкой стала встреча с коммерческой командой.

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

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

Читать далее

4 ошибки в A/B‑тестах, из‑за которых случайный шум выглядит как эффект

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели3.5K

Сплиттер работает корректно, метрика посчитана, а p‑value уверенно опустился ниже 0,05 — результат кажется готовым к раскатке. Однако ошибка в оценке дисперсии способна превратить случайное различие в статистически значимое.

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

Читать далее

Как установить OpenJarvis: разворачиваем локального ИИ-агента

Время на прочтение7 мин
Охват и читатели4.7K

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

Команда из Стэнфорда как раз выпустила OpenJarvis — открытый фреймворк для создания персональных ИИ-агентов. Давайте посмотрим, как его развернуть на собственной инфраструктуре и действительно ли проект оправдывает свое название.

Читать далее

Что внутри #[derive(Serialize)]: TokenStream, syn, quote и почему этот serde так долго компилируется

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели3.9K

Привет, Хабр!

#[derive(Serialize, Deserialize)] это какая-то одна строка в коде. На холодной сборке за ней прячется двадцать с лишним секунд компиляции, даже если в проекте больше ничего нет. Откройте cargo build --timings на любом не самом маленьком проекте с serde, и serde_derive почти наверняка окажется в первой тройке самых медленных крейтов. При том что в самом serde_derive всего несколько тысяч строк.

Между этой строкой и этими секундами лежит вся инфраструктура процедурных макросов: TokenStream, syn, quote, proc-macro2, watt. Пройдёмся по ней в этой статье.

Читать далее

Учу 1С за две недели или что не так со студенческой практикой и ИТ-образованием

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели5.8K

Давно хотел собрать в одном месте всё, что понял за годы работы со студентами и учебными заведениями. Ко мне регулярно приходят студенты на практику, бываю на экзаменах по компетенциям «Тестировщик», «Веб-разработчик» и «Программист». То есть я вижу студентов как наставник, работодатель и как эксперт на оценке работ.

Я Денис — ведущий разработчик Outlines Tech и руководитель регионального 1С-франчайзи. Расскажу, какие проблемы увидел в обучении, что происходит на экзаменах и почему за две недели практики невозможно ничему научить. После прочтения приглашаю подискутировать на тему образования в комментариях.

Читать далее

ИИ зависимость и лекарство от prompt injection (в том числе от системного промпта провайдера)

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.1K

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

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

Читать далее

Сможете ли вы найти пять ошибок в Python‑коде, который вызывает LLM

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели14K

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

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

Читать далее

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

Бенчмаркая поиск по строке: самописные циклы проигрывают от ×14 до ×154

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели11K

Уважаемые читатели, в этой статье я хочу рассказать про поиск по строке и представить свои выводы. Началось с оптимизации: сравнил поиск символа циклом со string.IndexOf — и получил разницу в разы. Заодно выяснилось, что серверный Xeon с AVX-512 в этой задаче медленнее игрового десктопа с AVX2. Ниже разбор обоих фактов с дизасмом и замерами.

Будет четыре истории, и в каждой — вопрос, на который я искал ответ:

Читать далее

Разбор пяти ошибок в модулях Linux, которые проходят сборку и валят систему под нагрузкой

Уровень сложностиСложный
Время на прочтение9 мин
Охват и читатели9.9K

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

Разобрать ошибки

Роботы в деле: создаём реестр интеграторов в сфере промышленной роботизации

Время на прочтение3 мин
Охват и читатели8.1K

Промышленные производства во всём мире активно внедряют роботов, и Россия старается не отставать от этого тренда. В 2025 году плотность роботизации в стране достигла 29 роботов на 10 тысяч занятых. Это на 36% больше, чем было годом ранее, но даже с таким показателем мы только на 43-м месте в мире. Государство ставит цель: к 2030 году 145 роботов на 10 тысяч человек и 25-е место в мире. 

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

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

Читать далее

Ошибки операторов Kubernetes: как мы их исправляли и чему научились

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.7K

Ошибки в разработке неизбежны, но они помогают расти. Я Стас Иванкевич, техлид в команде разработки управляющего слоя Platform V DropApp в СберТехе. Наша команда придерживается простого принципа: не наступать на одни грабли дважды. Из каждой ошибки стараемся извлечь урок и больше её не повторять, а ещё лучше — учиться на ошибках других. Поэтому мы развиваем культуру открытого обсуждения ошибок и не закрываем глаза на возникающие сложности.

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

Я уже рассказывал о подводных камнях и лучших практиках при разработке операторов Kubernetes: материал в трёх частях можно почитать тут, тут и тут. А в этой статье я собрал ошибки, которые часто встречались мне в реальных проектах при работе с Kubernetes-операторами. Расскажу, как мы их исправляли, какие выводы сделали и что теперь делаем иначе. Надеемся, наш опыт будет полезным для вас и поможет их не повторить.

Читать далее

Как мы выбирали планировщик GPU-задач для Nova AI: Volcano, Kueue и KAI Scheduler. Часть 1

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели8.4K

Всем привет! Меня зовут Дима Матушкин, я инженер в команде Nova и занимаюсь развитием Nova AI.

В этой статье разберем одну из задач, с которой сталкивается почти любая команда, запускающая AI/ML-нагрузки в Kubernetes: как эффективно использовать GPU в кластере, где одновременно живут инференс, обучение, эксперименты, ноутбуки дата-сайентистов и batch-задачи.

На старте кажется, что достаточно установить NVIDIA GPU Operator, прокинуть видеокарты в Kubernetes и начать указывать nvidia.com/gpu в манифестах. Для простых сценариев этого действительно хватает. Но как только нагрузок становится больше, а GPU начинают конкурировать между собой, выясняется, что проблема не только в том, чтобы "выдать видеокарту" конкретному поду.

Нужно уметь запускать связанные поды как единое целое, управлять очередями, учитывать приоритеты, не ломать распределенные задачи из-за сетевой топологии и делить GPU так, чтобы дорогие ресурсы не простаивали. Обычный планировщик Kubernetes не закрывает эти сценарии комплексно, поэтому для Nova AI мы начали смотреть в сторону специализированных планировщиков для AI/ML нагрузок.

Читать далее

Говорят, спортивное программирование портит код. Почему я с этим не согласен

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.8K

В IT тема спортивного (соревновательного, олимпиадного) программирования очень спорная. Я это замечал и здесь на Хабре, и в работе. Не раз я слышал о том, что навыки, полученные на соревнованиях или при подготовке, никак не помогают в работе, а в худшем случае, даже мешают и создают проблемы другим.

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

Читать далее

Разрушители мИИфов – тестируем Headroom. Правда ли умная прокся может сэкономить вам токены?

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.4K

Признаю: в прошлой статье про тестирование Caveman я в конце написал, что такие инструменты, как RTK, действительно, могут помочь сэкономить токены. Я доверял самому принципу возможности экономии токенов, но не доверял конкретным цифрам эффективности, которые заявляет Headroom. Был уверен, что, садясь за тесты, скорее всего, увижу, не 60–95% экономии токенов, а типа 10% — или что-то такое. Но результат меня удивил в худшую сторону. Итак, тестируем Headroom вместе:

Читать далее