Обновить
1024K+

Python *

Высокоуровневый язык программирования

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

Охота на невидимку: пишем стегоанализатор для LSB-атак на Python

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

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

В нашем блоге мы говорим о стеганографии — искусстве сокрытия информации. Встроить секретное сообщение в картинку методом LSB (замены младших значащих бит) достаточно просто. Но как насчет обратной задачи? Как понять, является ли безобидный с виду файл троянским конем, несущим скрытые данные?

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

Сегодня мы не будем прятать. Мы будем охотиться. В этой статье мы с нуля напишем простой, но эффективный стегоанализатор на Python. Мы разберем:

Читать далее

HackRF на Windows: работа через DLL и создание Python-библиотеки

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

Небольшая статья для начала работы на питоне с приемником HackRF One под Windows. Когда мне захотелось работать с приемником HackRF напрямую из Python, я обнаружил, что существующая библиотека pyhackrf работает только на Linux. Это подтолкнуло меня к доработке подхода для работы под Windows через прямое взаимодействие с DLL. Возможно, мой опыт кому-то пригодится.

Читать далее

Создание Системы генерации ответов на истории тикетов поддержки. Личный опыт. Часть 1

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

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

Меня зовут Анатолий, занимаюсь диалоговыми системами, автоматизацией бизнес-процессов, применением Искусственного Интеллекта в бизнесе.

Кейсовая задача - создать ассистента оператора службы поддержки, используя существующую историю тикетов.

Читать далее

Двойное дно: реализуем свой формат шифрования .CHA на Python и прячем его в стеганографии

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

Привет, Хабр! Когда речь заходит о защите конфиденциального файла, на ум приходят два пути: шифрование и стеганография. Первый делает файл нечитаемым для посторонних. Второй — делает сам факт существования файла незаметным. А что, если объединить эти два подхода, создав по-настоящему надежное "двойное дно" для ваших данных?

В этой статье мы не просто обсудим теорию, а пошагово, с подробным разбором кода, создадим собственный простой и надежный формат шифрования .cha (сокращение от Chameleon) на Python. А затем покажем, как его синергия со стеганографией в нашем приложении «ChameleonLab» обеспечивает многоуровневую защиту.

Читать далее

Мой личный экзамен: как я разработал MVP LLM-агента на Google ADK

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

В этой статье я делюсь личным опытом разработки MVP LLM-агента на базе Google ADK в образовательных сценариях. Рассказываю, как строил архитектуру от монолитного агента до модульной системы, с какими вызовами столкнулся (память, токены, оркестрация) и какие инженерные лайфхаки помогли справиться. Но главное — делюсь философией: почему работа с LLM похожа на экзамен, как меняется роль CTO и чему учат такие проекты. В финале — 10 уроков, которые я вынес из этого «AI-экзамена».

Читать далее

Библиотека OutboxML от Страхового Дома ВСК

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

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

Меня зовут Семён Семёнов, я руковожу Data Science и Machine Learning в Страховом Доме ВСК. В этой статье расскажу, как мы создали систему автоматического обучения и развёртывания моделей машинного обучения с открытым исходным кодом.

Первый вопрос, который может задать себе читатель, знакомый с темой современного машинного обучения:
«Почему бы не взять одну из десятков (если не сотен) открытых AutoML-библиотек?»

Ответ прост: мы не стремились создать ещё один «стандартный» проект AutoML. Наша цель — сфокусироваться на вещах, которые редко встречаются в готовых решениях:

Читать далее

Градиентный бустинг для новичков

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

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

Сначала мы рассмотрим на простейшем примере принцип его работы, а потом посмотрим, как реализовать его с помощью Python.

Читать далее

Spring Boot + Python: от эксперимента до open-source

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

Как исполнять Python внутри Spring Boot?

Я прошёл путь от сырых AOP-костылей до production-ready библиотеки с REST, gRPC и безопасным исполнением скриптов. В статье: опыт, архитектура и базовые примеры использования.

Читать далее

От консоли к GUI: Как написать игру «Сапёр» на Python с нуля версия GUI (часть вторая)

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

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

Читать далее

Оптимизация инференса больших языковых моделей: комплексный анализ современных подходов и практических реализаций

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

В процессе разработки RAG-системы для обработки видеоконтента передо мной встала задача генерации качественных описаний для большого объема видео-клипов с использованием мультимодальных языковых моделей. Клипы имели продолжительность около 10 секунд, в отдельных экспериментах мы тестировали материал длиной в несколько десятков секунд. Финальные описания составляли от 300 до 2000 токенов и после генерации разбивались на чанки для индексации в векторной базе данных. При тестировании различных подходов обнаружились значительные различия в скорости и качестве обработки. Компактные модели, работающие с отдельными кадрами изображений (Phi, DeepSeekVL2, Moondream), демонстрировали существенно более высокую скорость по сравнению с моделями полноценной обработки видео, однако качество генерируемых описаний оставляло желать лучшего. Типичный workflow включал конкатенацию описаний отдельных кадров, при этом в DeepSeekVL2 дополнительно использовался system prompt для более интеллигентного объединения результатов анализа кадров. Модели для обработки изображений стабильно укладывались в временные рамки 3-5 секунд на клип, что значительно быстрее требуемого лимита. Полноценные видео-модели, получающие на вход целые видеоклипы, изначально генерировали описания за 30 секунд на vanilla PyTorch. Применение VLLM ускорило процесс до 12-15 секунд, а SGLang позволил достичь целевых 8-10 секунд на клип. Эти временные рамки позволили настроить обработку на кластере из 20 RTX 4090 и сгенерировать около миллиона описаний за месяц для production-системы. Благодаря применению различных техник оптимизации инференса удалось не только достичь поставленных временных целей, но и существенно превзойти их, завершив генерацию необходимого объема описаний за две недели вместо месяца. Система успешно развернута в продакшене и демонстрирует стабильную производительность. Данная статья представляет систематизированный анализ практического опыта оптимизации инференса мультимодальных LLM, полученного в ходе решения реальной production-задачи. Особое внимание уделяется сравнению эффективности различных подходов к ускорению, включая современные специализированные фреймворки VLLM и SGLang, а также аппаратные оптимизации на базе TensorRT.

Читать далее

От консоли к веб-интерфейсу: создание автоматического веб-инсталлятора для ALD Pro на Flask и Python

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

Программисты делятся на два типа: те, кто автоматизирует установку ALD Pro, и те, кто ещё не понял, сколько времени они теряют. Когда-то я вручную прописывал DNS, как средневековый монах переписывающий манускрипты, но потом осознал, что компьютеры должны работать вместо нас. В этой статье — мой путь от консольных скриптов, которые пугали коллег, до веб-интерфейса, где даже бухгалтер (почти) разберётся.

Читать далее

Python: генераторные функции

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

По утверждению Роберта Мартина, объектно-ориентированный подход был предложен 1966-м году. Для эмуляции объектов они использовалась возможность языка ALGOL, позволяющая переместить кадр стека вызова функции в динамическую память (кучу).

В этом смысле в 2001 году Гвидо ван Россум переизобрёл объекты, добавив Python 2.2 генераторные функции.

Читать далее

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

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

Привет, я разработчик программного обеспечения в компании 1221Systems и хочу рассказать об опыте перевода проекта с монолитной архитектуры на микросервисную: как выглядел исходный проект и с какими проблемами мы столкнулись, какую архитектуру построили после рефакторинга и какие преимущества в итоге получили.

Что у нас было

Проект состоял из двух частей.

Читать далее

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

Как устроены AI агенты: разбираемся на примере ReAct и Reflection

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

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

2025 стал годом AI агентов. Мы видим, как их пытаются применить повсюду: от школ до банковского сектора.

Но все ли понимают, как они работают? Или разработчики просто используют готовые реализации, как create_react_agent из langchain? В этой статье мы заглянем в устройство этих шаблонов.

Читать далее

Балансируя на грани: как внедрить Differential Privacy в аналитические пайплайны на Python

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

В этой статье я расскажу, как добавить механизмы Differential Privacy (DP) в ваши ETL‑ и аналитические пайплайны на Python, чтобы защитить пользовательские данные и при этом сохранить качество ключевых метрик. Пошаговые примеры с реальным кодом, советы по настройке ε‑бюджета и интеграции в Airflow помогут вам избежать самых распространённых подводных камней.

Читать далее

Автоматизация ответов на часто задаваемые вопросы (Эмбеддинги и косинусная близость)

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

Кейсовая задача — предоставить клиентам возможность составлять вопрос на естественном языке, а не искать вопрос в списке FAQ‑раздела сайта. При этом система должна выдавать ответ из существующей базы знаний «Вопрос‑Ответ» существующего FAQ‑раздела.

Задача реализована с помощью определения контекстной близости вопросов.

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

Читать далее

Google Indexing API для SEO-специалиста: пошаговая инструкция «без кода» для быстрой индексации

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

Медленная индексация страниц — вечная боль. Вы опубликовали статью, а Google замечает это через неделю, когда актуальность уже потеряна. Решение есть — Google Indexing API, который позволяет почти мгновенно сообщить поисковику о новых страницах.

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

Готовый скрипт лежит здесь, но не спешите его качать, сначала всё подготовим.

Читать далее

Автотесты как документация: «чистый» код и генератор на Regex

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

Привет, Хабр! Проблема рассинхронизации автотестов и тестовой документации знакома многим. Код постоянно меняется, а кейсы в Confluence — нет. В итоге документация становится бесполезной, а время команды тратится на выяснение того, что же на самом деле проверяет тот или иной тест.

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

Читать далее

Anchor Optical TrackeR Update: Улучшенная система трекинга с адаптивной стабилизацией при ветре

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

Спустя время после публикации первой версии Anchor Optical TrackeR, провел значительное улучшение системы трекинга, добавив адаптивные механизмы, повышающие устойчивость к внешним воздействиям, особенно к ветровым нагрузкам. В новой версии реализована интеллектуальная система управления путевыми точками по принципу «верёвочной лестницы» и адаптивное увеличение плотности точек при обнаружении сильного ветра.

Читать далее

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

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

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

Меня зовут Ярослав, я магистрант AI Talent Hub в ИТМО. Сегодня расскажу об одной из самых интересных статей ICLR 2025 — AFlow: Automating Agentic Workflow Generation.

В ней предложен подход к автоматическому созданию мультиагентных систем для решения прикладных задач с помощью LLM и алгоритма Monte Carlo Tree Search (MCTS). Разберёмся, как это работает и почему это важно.

Читать далее