Обновить
256K+

Python *

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

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

RAVEL-VB — модель для детекта игроков в волейбол на площадке

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

Всё началось с того, что на «Хабре» мне попалась статья о модели TAPe — Theory of Active Perception, или «теории активного восприятия». В статье были громкие заявления и интересные описания, но попробовать модель на практике не удалось.

Я собрал ключевые тезисы о TAPe и обратился к ChatGPT с запросом:

Читать далее

ИИ в медицине. Часть 1

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

В 2026 году активно выходят новые фронтир LLM-ки, агентные системы и принципиально новые подходы в самых разных областях. Медицинский AI периодически перенимает наработки, однако область применения ИИ в медицине сейчас остается ограниченной.

Обсудим, какие сложности скрываются под капотом медицинского ИИ-сервиса, какие типы данных бывают в медицине, как с ними работать, какие модели подходят и как быть с этическими тонкостями при внедрении ИИ-сервисов в медицинский контур

Читать далее

Рекурсия в RegEx с условиями выхода

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

Для создания подсветки синтаксиса мне требовалось регулярное выражение, которое может подсветить разные фрагменты пути. При этом оно должно следовать условию "только путь в кавычках" и обходить мимо переменные, продолжная парсинг пути.

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

Читать далее

Как я без опыта программирования создал Telegram‑бота, который уже два года ведёт новостной канал

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

Два года назад у меня практически не было опыта программирования. Когда‑то в школе мы немного изучали Pascal, но после этого я не написал ни одного скрипта. Я впервые открыл PyCharm, по ходу работы узнал, что такое API, SSH, виртуальная машина, системная служба и облачные задачи. При этом за несколько месяцев я создал систему, которая собирает новости из турецких источников, переводит и сокращает их, помогает администратору отбирать материалы, готовит полноценные публикации и размещает их в Telegram по расписанию.

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

Читать далее

Я попытался расшифровать манускрипт Войнича. Спойлер: не расшифровал — но выяснил, почему это не удалось и АНБ

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

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

Читать далее

Как я сделал AiRevit: от обычного текста до BIM-модели в Revit б без LLM

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

Сейчас в тренде - внедрение ИИ вообще в любой проект, в любой чайник или пылесос. Я давно ковыряюсь в проектировании и Revit, и меня стабильно бесило одно и то же: куча рутины, одинаковых действий, которые можно было бы спокойно автоматизировать. Глядя на то, какие чудеса сейчас творят языковые и диффузионные LLM, генерируя целые детализированные миры, очень хочется сделать тоже самое в строительной сфере.

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

Я решил собрать свой вариант и назвал его AiRevit. Это не чатик с LLM поверх Revit. Тут вообще не предполагается использования такой архитектуры, которая бы основывалась на угадывании токена (нам не нужно ничего угадывать, нужно соблюдать строгие строительные правила). Это детерминированный pipeline, где текст сначала превращается в структурированный program_graph, потом в layout_solution, а уже потом в реальные элементы Revit через Dynamo и Python-скрипты. В репозитории это разложено на Node 3, Node 4 и Node 5, чтобы не было каши и чтобы каждый кусок отвечал за свою часть работы. (https://github.com/Rearks/AiRevit)

Читать далее

Трилемма Святого Грааля типизации: почему нельзя всё сразу

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

Все мы знаем, что языки делятся на динамические и статические: Python или JS позволяют молниеносно прототипировать, но расплачиваться нестабильностью в продакшене приходится потом, тогда как C++, Java или C# требуют прописывать типы сразу, оплачивая монументальную надежность замедлением разработки.

В 2006 году Джереми Сиек предложил разрешить этот конфликт концепцией постепенной типизации в работе «Gradual Typing for Functional Languages»: язык остается динамическим по умолчанию, однако разработчик может аннотировать типами отдельные модули или функции, не покрывая ими всю кодовую базу, а типизированный и нетипизированный код взаимодействуют через специальный динамический тип Dyn. Звучит как сказка — быстрое прототипирование с постепенным наращиванием стабильности. Однако при детальной проработке вскрылись фундаментальные нюансы: в серии последующих работ Сиек, Таха, Вадлер и другие показали, что стыковка типизированного и нетипизированного кода требует операции приведения типа (cast), а дизайн этого каста упирается в противоречие между тремя желаемыми свойствами — надёжностью системы типов (soundness), собственно постепенностью (gradual typing) и отсутствием рантайм-обёрток на границах (no wrappers).

Позднее сообщество, и я в том числе, переосмыслило третью вершину: no wrappers — это забота о производительности и прозрачности рантайма, безусловно важная, но с позиции программиста, а не математика-оптимизатора, правильнее говорить о удобстве разработчика (developer-friendly). Это свойство вбирает в себя no wrappers как частный случай, добавляя понятные сообщения об ошибках, низкий порог входа и отсутствие многослойных типовых аннотаций, ведь если ради производительности приходится городить бесконечные теоремы типов, такая система едва ли приживётся на суровом рынке опенсорса.

Так родилась трилемма Святого Грааля системы типов: выбрать можно любые два свойства, а третье неизбежно пострадает, и в этой статье мы разберём, как создатели языков пытались достичь всех трёх и на какие компромиссы шли.

Читать далее

Почему умирают торговые роботы: дрейф рынка, переобучение и охота на альфу

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

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

На это есть несколько причин!

Давайте разберём, какие из них реальны, а какие — упрощение, пусть и корректное.

Ознакомиться

Логарифм для аналитика: где он спасает отчет, а где его ломает

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

Помесячный прогноз выручки стабильно недобирает, не скачет, а именно недобирает: факт всегда выше прогноза, из месяца в месяц, примерно в одну и ту же сторону.
Стабильное смещение — это уже не шум, это баг, поэтому я полезла в модель.
Модель прогноза выручки занижала цифры вдвое.
Ошибка была в одной строке – np.exp() вместо честного возврата из логарифмов.
Разбираю этот кейс и всё остальное, что аналитику нужно знать про логарифм: декомпозиция роста, эластичность, A/B-тесты и поправка Дуана.
С кодом и цифрами.

Читать далее

Shorts Maker v2: как я превратил AI-генератор видео в возобновляемый production pipeline на Python

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

Как превратить работающий AI-прототип в надёжный production pipeline? Разбираю архитектуру Shorts Maker v2 — генератора коротких видео на Python с DDD, возобновлением после сбоев, checkpoint’ами после каждой сцены, ограниченной конкурентностью и заменяемыми AI-провайдерами

Читать далее

Как мы построили IAM для Telegram поверх Telethon и автоматизировали управление сотней корпоративных Telegram-чатов

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

В этой статье расскажу, как мы построили отдельный модуль управления корпоративными чатами и каналами на Django, PostgreSQL и Telethon. Без привязки к нашей внутренней инфраструктуре — только архитектура, технические решения и несколько выводов, которые могут пригодиться при решении похожей задачи.

Когда количество рабочих Telegram-чатов у нас приблизилось к сотне, выяснилось, что проблема уже не в добавлении одного человека в одну группу. Проблема — доказуемо выполнить десятки однотипных действий и не пропустить единственный чат. При этом не допустить утечку ресурсов (ведь кому-то на это всё понадобится тратить время, а новых или уволенных сотрудников может быть больше одного).

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

Обо всём этом в статье!

Читать далее

Как проверить все Python‑окружения на опасные пакеты без запуска Python

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

Вредоносная зависимость может годами лежать в забытом проекте, а обычная команда pip freeze — запустить оставленный злоумышленниками код. Разберём, как собрать реестр виртуальных окружений и с помощью uv безопасно проверить версии пакетов во всех локальных проектах.

Проверить пакеты

Интеграция Asterisk с веб‑интерфейсом и управление звонками через WebSocket: кейс имплементации под ключ

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

Привет! Меня зовут Андрей Нелюбин, я руководитель функции фронтенд-разработки.
В рамках проекта для заказчика требовалось доработать сценарий работы колл-центра: связать телефонию на Asterisk с операторским интерфейсом, где рядом со звонком доступны данные клиента, заказы, статусы и действия управления.

Для этого в 2022 году была реализована собственная прослойка поверх Asterisk: backend на Python/Django, обработка событий через Django Channels, WebSocket для передачи изменений в интерфейс и frontend на Vue. В статье расскажу, как устроили архитектуру решения, как обрабатывали события звонков, зачем понадобился BFF-слой на Django и почему в рабочей конфигурации аудио осталось в SIP-клиенте, а контекст и управление — в операторском интерфейсе

Читать далее

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

Книга: «Python. Экспресс‑курс. 4-е изд.»

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

Привет, Хаброжители! Автоматизация систем. Высокопроизводительные веб‑приложения. Облачные и серверные службы. Передовые технологии искусственного интеллекта. Чем бы вы ни занимались, умение читать и писать на Python всегда пригодится!

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

Читать далее

Автоматизируем первую линию диспетчерской службы на примере управляющей компании

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

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

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

Привет, Хабр! В этом материале делимся подробным гайдом, как собрать голосового робота и автоматизировать первую линию диспетчерской с помощью сервиса API МТС Exolve. Так срочные звонки будут мгновенно попадать на линию, а несрочные — в очередь для обработки в рабочие часы. 

Читать дальше

Почему C++ или Rust никогда не смогут заменить Python

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

На Хабре периодически появляются статьи с анализом феномена Python - как один из самых медленных языков программирования стал королём нейросетей, и ответ всегда один: за счёт простого синтаксиса и развитой экосистемы. Но экосистема у C++ значительно больше и богаче, значит, дело не в ней и остаётся только синтаксис. А если проблема действительно в синтаксисе, тогда должен быть ответ и на другой вопрос: почему C++ не стал основой для исследований в этой (или любой другой) области?

Раньше я уже подходил к вопросу об эмпирической оценке сложности синтаксиса языков программирования, что называется «в лоб»: взять исходный код компилятора и посмотреть, сколько строк в нём занимает синтаксический анализатор. Ведь чем сложнее синтаксис, тем больше кода нужно, чтобы его распознать. И сотни тысяч строк кода только на анализ синтаксиса C++ - это измеримое свидетельство того, в какого монстра превратился C++ за сорок лет развития.

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

Читать далее

Excel в HTML: сервер для публикации Excel‑отчётов

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

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

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

Но сотрудники всё равно продолжали пользоваться Excel.

Причина довольно простая: корпоративные системы хорошо решают заранее предусмотренные задачи, а Excel позволяет быстро сделать то, чего в них нет. Построить дополнительный расчёт, проверить данные, объединить несколько выгрузок или посмотреть на показатель под другим углом.

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

Читать далее

Соленоид без иллюзий: считаем поле честно и визуализируем результат

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

   Рассмотрим следующую задачу: Пусть соленоид имеет следующие размеры:высота 2h, внешний радиус R2, внутренний R1<R2.В полость вставлен цилиндрический стальной сердечник  радиуса R1, высоты 2h.На него равномерно, очень плотно и под прямым углом намотана медная проволока круглого сечения  диаметра d, причём d очень мало по сравнению с размерами соленоида. По обмотке течёт постоянный ток I(рассмотреть возможность переменного тока I(t)) , направленный по часовой стрелке. Требуется определить магнитное поле B (x,y,z, t) внутри, снаружи соленоида и в сердечнике.

Читать далее

Автоматизация реверс‑инжиниринга через локальную LLM

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

Облачные LLM сливают IOC в общие базы и цензурят описание опасных модулей. Реализуем анализатор вредоносного программного обеспечения с помощью локальной LLM, Ghidra и Neo4j.

Читать далее

Архитектурный паттерн «LangGraph, гибридный RAG + Сигнатурный движок»: универсальный граф для потоковых данных

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

Мы попытались автоматизировать первую линию SOC. Захотелось объединить гибкость ЛЛМ и надежность сигнатурных движков. Поместилось все это в один асинхронный граф.

Под капотом гибридный RAG (Vector + BM25), zero‑cost фича для экономии токенов и параллельный сигнатурный анализ.

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

Читать далее