Обновить
770.91

Python *

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

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

Execution completion

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

Во время инференса LLM не выполняется побочных эффектов, вместо этого генерируется последовательность токенов, которые можно интерпретировать как намерение вызвать инструмент. Это напоминает мне ту часть шаблона transactional outbox, в которой намерение сущности (entity) отправить запрос внешней системе записывается в специальную таблицу, а не реализуется сущностью самостоятельно.

В статье приведен proof-of-concept модели выполнения, вдохновленной chat completion, в которой управление возвращается вызывающей стороне при необходимости выполнить побочный эффект.

Читать далее

Large-v3 на Ryzen 5500U: как я оцифровал архив диктофонных записей без GPU и облаков

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

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

О чем пойдет речь:

Large-v3 на CPU: почему 40 ГБ RAM важнее видеокарты и как добиться стабильной работы без «замерзания» PyTorch.

От скрипта к приложению: как с помощью «вайб-кодинга» и Google Antigravity (Gemini 3.0) превратить одиночный скрипт в модульный менеджер очередей с Drag-and-Drop и пакетной обработкой.

Техническое «мясо»: установка через uv в один клик, борьба с конфликтами OpenMP и система пресетов (от Turbo до Russian Expert).

Реальные цифры: нагрузка на железо, температуры и честная скорость обработки на Ryzen 5500U.

Разбираем, как современные LLM позволяют собирать сложные инженерные инструменты «над» ML-моделями, даже не погружаясь в их низкоуровневую реализацию.

Репозиторий проекта: whisperx-batch-gui

Читать далее

Нейросетевой арт для начинающих

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

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

Перейти к статье

Как я построил Graph RAG систему с точностью 96.7% за 5 дней: от научных статей до production-ready пайплайна

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

Я реализовал Graph RAG систему, которая комбинирует 5 техник из свежих научных статей (KET-RAG, HippoRAG 2, VectorCypher) в единый пайплайн с декларативным Datalog reasoning-движком, полной провенансной трассировкой и типизированным API. Результат: 174/180 (96.7%) на билингвальном бенчмарке из 30 вопросов, оценённых в 6 режимах retrieval. Три режима достигли 100%. В статье — архитектура, 10 уроков оптимизации и эволюция от 38% до 96.7% за 10 итераций.

Читать далее

Брокеры, инфраструктура и почему умер масс-маркет алготрейдинг

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

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

Также узнал что онлайн версии не будет, а основными темами будет инфраструктура, алгоритмы, математика и количественная аналитика. Это как раз те темы, которыми я интересуюсь, живя в Перми.

А раз так, то я принял решение полететь на мероприятие и возможно получить новые ориентиры, познакомиться с людьми, взглянуть на рынок без маркетинговых очков. Получится ли это сделать? К концу статьи вы об этом узнаете.

Алгоклуб

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

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

Привет, сообществу Habr!

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

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

Чтобы удовлетворить ожидания заказчика, выполнить вверенную нам работу и достичь высоких результатов при разработке функционала, нам нужны данные для тестирования, близкие к реальным. Тут возникает сложность – на тестовом контуре либо небольшой срез не консистентных промышленных данных, на которых нельзя протестировать полноценно функционал (например, витрину по операциям определенного сегмента клиентов с глубиной месяц, квартал), либо мы начинаем генерировать синтетику, не всегда попадая в нюансы вариативности данных, тратя на это дополнительные ресурсы.

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

Читать далее

Urich: DDD и CQRS для микросервисов на Starlette без ручной раскладки роутов

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

Когда строим бэкенд по DDD и CQRS, роуты и OpenAPI обычно собираем вручную. Urich делает иначе: описываешь ограниченный контекст одним объектом — маршруты и документация появляются сами. Обзор фреймворка на Starlette и примеры кода.

Читать далее

Разработка кастомного плагина FreeIPA для работы с ролями ALD PRO

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

В работе с системами управления идентификацией, такими как ALD PRO (решение на базе FreeIPA), администраторы часто сталкиваются с рутинными операциями, которые в веб-интерфейсе выполняются долго и не поддаются автоматизации. Одна из таких задач — массовое создание и клонирование ролей с сохранением политик и привилегий.

Я хотел решить именно эту проблему: быстро копировать существующие роли в ALD PRO для новых организационных подразделений (OU), сохраняя все настройки и права. Веб-интерфейс не позволял делать это быстро, а главное — не давал возможности интегрироваться с системами автоматизации.

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

Читать далее

Лучший перевод Шекспира с точки зрения математики

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

За переводы сонетов Шекспира брались многие мастера и любители. Мне стало интересным провести лексико-семантический анализ нескольких переводов 74 сонета и сравнить их с оригиналом. Я взял авторов, авторитет которых как поэтов и переводчиков вне сомнения Маршака и Пастернака. И двух переводчиков, не известных как поэты - Николая Гербеля и Модеста Чайковского. Я захотел проверить, кто из переводчиков точнее всего передал смысл, ритм и эмоции оригинала, используя алгоритмы машинного обучения.

Читать далее

Работа с объемными данными в Python для начинающих

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

Наверняка каждый, кто начинает погружаться в анализ данных, сталкивался с этой классической проблемой. Вы скачиваете гигантский CSV-файл, по привычке пишете pd.read_csv(), запускаете ячейку и... кулеры начинают выть, система жутко тормозит, а в итоге скрипт падает с ошибкой нехватки памяти.

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

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

Читать далее

Базовый минимум. Часть 3:  RAG-системы

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

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

В современных прикладных системах это ограничение часто скрыто за инструментами, поиском и дополнительными модулями. Однако именно архитектурный подход Retrieval-Augmented Generation, RAG стал стандартным способом расширения возможностей модели без ее дообучения. Он позволяет подключать внешние базы знаний, работать с актуальными документами и заметно снижать количество галлюцинаций.

В третьей части серии Базовый минимум разбирается как устроен RAG и как реализовать его минимальную рабочую версию на практике.

Читать далее

Переверни его. Переверни наоборот

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

Пара слов о том, как программисты разных конфессий справляются с самой очевидной задачей в Computer Science.

Примеры правильных и неправильных разворотов списка на десяти разных языках.

От питона до идриса

Автоматизация браузера и развёртывание функций прямо из терминала

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

Notte — платформа для автоматизации браузера. Недавно мы выпустили CLI, который позволяет управлять браузерными сессиями, запускать AI-агентов, извлекать структурированные данные и развёртывать функции автоматизации — всё это прямо из терминала.

В этой статье разберём, что он умеет и как устроен.

Какую проблему мы решали

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

Notte CLI подключается напрямую к облачным браузерным сессиям. Браузер запущен не у вас — он работает у нас. Это означает, что то, что вы делаете в терминале, в точности совпадает с тем, что будет работать в продакшне.

Как работают сессии

Весь CLI построен вокруг сессий. Сессия — это живой экземпляр браузера (headless или headed), запущенный в облаке.

Запустить её можно так:

notte sessions start --headless

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

При запуске сессии поддерживается широкий набор настроек: кастомные viewport'ы, user agent'ы, ротация прокси, решение капч, файловое хранилище, переопределение CDP URL и сохранение профиля браузера.

Видимость

При запуске headless-сессии в выводе появляется viewer URL. Откройте его в браузере — и вы наблюдаете за живой сессией в реальном времени, пока команды выполняются в терминале. Удобно для отладки без переключения в отдельный интерфейс.

Читать далее

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

Генерация лабиринтов с использованием алгоритма Recursive backtracker

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

Расскажу о том, как сгенерировать рандомный лабиринт, используя алгоритм Recursive backtracker. Все подробности об алгоритме, структуре кода, асимптотике и итоговых лабиринтах здесь.

Читать далее

Как устроены задачи (Task) в asyncio

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

В прошлой статье мы разобрали механику событийного цикла asyncio.

В этот раз поговорим о задачах, объектах класса asyncio.Task (они же по‑простому «таски»). Тема важная, потому что по сути вся работа событийного цикла сводится к постоянному жонглированию задачами: запустить, приостановить, разбудить, завершить. Если понять, как устроена таска изнутри, изрядная доля магии asyncio (как и нелюбви к нему) исчезнет.

На десерт шок-контент: почему await далеко не всегда является точкой, где управление возвращается событийному циклу, чтобы он мог переключиться на другую задачу.

Погружаемся

Как я сделал автоматический перевод постов у себя в блоге с помощью ChatGPT

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

Я регулярно выкладываю посты в блог НормЦРМ. На двух языках: русском и английском.

Написал пост, придумал заголовок. Тут всё просто. А дальше неприятный процесс. С помощью ИИ перевести пост на английский — и перенести перевод в блог. А ещё сгенерировать мета-данные и og-данные (это для поисковиков и мессенджеров), тоже перевести их на английский и руками поставить в нужные поля.

Всё это занимает минуты, но такая работа раздражает. А пишу я довольно часто (публикация раз в пару дней). И решил сделать в интерфейсе одну кнопку, которая возьмёт на себя всю эту рутину. Решил — и сделал. Теперь в один клик переводится пост и генерируются все мета-данные.

Сейчас расскажу во всех деталях, как именно это реализовано. Вдруг вы тоже так захотите?

Читать далее

Первые мысли питониста о Си на примере игры «камень-ножницы-бумага»

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

Привет, Хабр! Недавно я задумался: Python — не единственный инструмент, которым я хочу оперировать в своих инструментах. Python, понятно, легко освоить и он применяется везде, но язык-то не идеальный! Ресурсов требует много, да и время выполнения не ахти, а учитывая нынешние темные времена... Мне нужно что-то получше. В общем, тут я вздумал попробовать Си.

Читать далее

Три аккаунта ChatGPT и один прокси: как перестать следить за лимитами

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

У меня три ChatGPT-аккаунта. На каждом свои лимиты, своя история, свои причины существовать. И на каждом они кончаются в самый неподходящий момент.

Переключаться вручную то ещё удовольствие. Особенно когда работаешь через Codex CLI или OpenCode и хочешь просто писать код, а не следить за тем, на каком аккаунте сейчас крутится запрос.

Именно под эту боль и написан codex-lb.

Читать далее

Авторизация 2026: Почему вам больше не нужна форма регистрации (и как внедрить Яндекс ID, VK и Google)

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

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

Давайте честно: если ваш пет-проект или стартап сегодня встречает юзера формой Email + Пароль + Повторите пароль, вы теряете конверсию. Никто не хочет запоминать очередной набор символов для "очередного сервиса". Все хотят одну кнопку: "Войти как...".

В этой статье разберем джентльменский набор авторизации для 2026 года: что ставить для рунета, что для мира, и как это реализовать технически на примере Яндекс ID.

Читать далее

3D-Packing на стероидах: как запихнуть 200 000 объектов в «Левиафана» и не вылететь по MemoryError

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

Если вы следили за моими предыдущими статьями, то знаете, что я одержим скоростью в задачах оптимизации.Сначала была «точка»: мы приручили задачу коммивояжера (TSP), решив её векторным способом — 10 000 точек за 0.4 секунды. Затем была «топология»: мы усложнили мир, победили злую спираль и упрямый трилистник, научились работать с графами (искать тупики) и упаковали 45 000 стандартных контейнеров в трюм, учитывая LIFO, весовые лимиты и еще 4 критических параметра. Тогда наш воркер на FastAPI + Redis справлялся за 2 минуты. И вот подошли к царь-задаче Упаковка разногабарита. Результатом этой работы станет публичный API. Логика простая: вы отправляете JSON с параметрами груза и склада (нужен ли обсчет крена, лимиты по весу, LIFO), а на выходе получаете готовый план загрузки. Но чтобы этот API не «висел» под нагрузкой, мне нужно было решение, которое работает не минуты, а доли секунды. Результатом этой работы станет публичный API. Логика простая: вы отправляете JSON с параметрами груза и склада (нужен ли обсчет крена, лимиты по весу, LIFO), а на выходе получаете готовый план загрузки.

Читать далее