Обновить
1024K+

Python *

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

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

Роевой интеллект: как 15 строк кода заменяют централизованное управление дронами

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

Привет, Хабр! Сегодня мы погрузимся в увлекательный мир роевого интеллекта и децентрализованных систем. Я покажу, как простые правила, заложенные в каждый элемент системы, позволяют добиться сложного группового поведения без единого центра управления. В качестве полигона используем виртуальный рой автономных дронов.

*Код и симуляция: Python 3.8+, matplotlib, numpy

Проблема централизованного управления

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

Читать далее

Магия itertools: Перестаньте писать велосипеды на циклах for

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

Почему опытные Python-разработчики редко используют циклы for для обработки данных? Потому что императивный стиль на больших объемах данных ведет к исчерпанию памяти (OOM) и замедлению работы.

Модуль itertools — это стандарт индустрии для создания эффективных конвейеров обработки данных. Он реализует концепцию ленивых вычислений (lazy evaluation), позволяя обрабатывать бесконечные потоки или огромные дампы БД, потребляя константный объем RAM.

Читать далее

Бот, который не забудет полить. Часть 1. Строим диалоговую логику на python-telegram-bot

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

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

Рассматривается пошаговая реализация консольного Telegram-бота на Python 3.13 с использованием python-telegram-bot v21+ и паттерна ConversationHandler.

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

Код ориентирован на расширяемость — заложена основа для последующей интеграции с БД (SQLite/PostgreSQL)

Читать далее

Голосовой ввод для Windows через Vosk своими руками

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

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

Лучшим выходом из моей ситуации было создать свое минималистичное решение, и вот как это было:

Читать далее

Poetry vs Pip: Почему пора перестать использовать requirements.txt

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

На моем компьютере всё работало!» — фраза, после которой начинается многочасовой дебаггинг. Вы открываете requirements.txt, а там свалка: непонятные версии, транзитивные зависимости и библиотеки, которые вы вообще не ставили.

Pip — отличный установщик, но ужасный менеджер проектов. В 2025 году стыдно таскать за собой «портянку» из текстовых файлов. В этой статье я покажу, как Poetry превращает ад зависимостей в скучный и предсказуемый процесс. Разберем pyproject.toml, магию lock-файла и переедем с Pip за 5 минут без боли.

Внутри: туториал, гайд по миграции и честный разбор минусов (да, Poetry тоже не идеален).

Читать далее

Мы добавили поддержку ещё 19 языков России и СНГ в проект silero-stress

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

Мы недавно писали на Хабр о нашей библиотеке silero-stress для простановки ударения в обычных словах и омографах. Теперь у нашего проекта silero-stress вышла версия v1.2, в которую вошло следующее:

Что вошло?

Вайбкодинг реальности: Как я заставил AI переписать физику, просто пересылая сообщения между окнами

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

Привет, Хабр. Я простой сисадмин. Моя стихия — это линуксы, серверы и чтобы прод не падал.

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

И пока я впитывал эти знания, в голове прочно засело ощущение какой-то незавершенности. Всё, что мы знаем о фундаментальной науке, казалось мне... сырым. Этот зоопарк частиц, куча разных взаимодействий, темная материя, которую никто не видел... Меня не покидала мысль: мир должен быть проще. Он должен быть сделан из чего-то единого, из одной простой сущности, которая элегантно объясняет и величественный космос, и ничтожные квантовые частицы.

С этим ощущением я жил долго. А недавно я открыл для себя вайбкодинг. Это когда ты пишешь код не руками, а идеями, используешь современные IDE с AI-агентами (я юзаю Windsurf), чтобы материализовать их, просто общаясь с ассистентом. Он сам пишет код, запускает, анализирует и улучшает. От меня только согласие на запуск и критика.

Обычно я так автоматизирую рутину. Но пару вечеров назад я поймал странный вайб. Глядя на схемы Стандартной Модели физики, я подумал: «Господи, какой же это легаси-код». Куча костылей, 20+ свободных параметров, какие-то глюоны, бозоны... Это выглядит как монолит, который писали 50 лет разные команды, и никто не знает, как он работает целиком.

И тогда я вспомнил про свою навязчивую идею. Что если нет никакого зоопарка частиц, а есть одна «Ткань» (Fabric)? И всё вокруг — это деформации разного рода. Ткань изгибается, дрожит, а складки на ней буквально стягивают полотно вселенной. Это стягивание — и есть та самая масса. Та самая гравитация, искажение пространства-времени, которое тянет всё на себя.

Я решил проверить это. Но не сам (я же не умею решать уравнения поля). Я решил устроить AI-битву. Я заставил нейросети выводить законы физики за меня.

Читать далее

ООП в Python на пальцах: Пишем свою текстовую RPG с нуля

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

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

В этой статье я раскладываю принципы ООП (Объектно-Ориентированного Программирования) на понятные атомы. Никакой сухой академической теории — только живой код на Python. Мы пройдем путь от простых переменных до масштабируемой системы классов на примере создания RPG-игры. В конце вас ждет домашнее задание для закрепления материала.

Читать далее

Лабораторная работа по тонкой настройке LLM для нестандартных задач классификации

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

Еще со времён школы меня будоражили возможности, которые дают компьютеры. Написать программу — это как создать что-то материальное своими руками. Неделю назад я за один вечер прочитал книгу Себастьяна Рашки «Строим LLM с нуля» (доступна на английском бесплатно), в которой без сложной теории матанализа описывается архитектура современных LLM и как их тюнить. 

Если вы интересовались, как работают LLM, то уже имеете представление, что модели умеют предсказывать следующее слово и что за этим стоит математика. Но на этом объяснение, как правило, заканчивается. Детали того, как они предсказывают следующее слово, часто рассматриваются как черный ящик.. В этой статье предлагаю рассмотреть эту тему подробнее и познакомиться с тонкой настройкой (fine-tuning) LLM для решения условно-практической задачи классификации с помощью примеров кода, приведенных в упомянутой книге. 

Статья устроена так, что все шаги в статье вы можете повторить и в конце получить набор скриптов для выстраивания пайплайна обучения LLM. Я же описал свои шаги, потому что лучший способ что-то понять — это применить теорию на практике и попытаться объяснить результат кому-то. 

Чтобы приступить к лабораторной работе, достаем двойные листочки, расчехляем питон и тиктокен.

Читать далее

Восемь высокопроизводительных Python-библиотек в копилку разработчикам

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

Когда в 1991 году Гвидо ван Россум представил миру Python, никто не мог предсказать, какое место через несколько десятилетий этот язык займет в веб-разработке, Data Science и Machine Learning. Сейчас Python продолжает развиваться: с новым поколением инструментов в прошлое уходят традиционные ограничения — производительность, GIL и сложность параллельных вычислений. 

Привет, Хабр! С вами Леша Жиряков, я руковожу бэкенд-направлением витрины KION, возглавляю гильдию по Python и пишу для блога MWS на Хабре. Я каждый день сталкиваюсь с вызовами высоконагруженных систем и сформировался пул инструментов, которые помогают решать критические проблемы современной разработки — от обработки данных с Polars до управления зависимостями с UV. 

В этом материале я сделаю обзор Python-библиотек, с которыми можно создавать системы, сравнимые по производительности с Go и Rust. 

Читать далее

Теория графов для программистов

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

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

Погрузиться в мир графов

Код-гольф в Яндексе: как нерды развлекаются

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

Что такое код-гольф? Это соревнование, в котором надо решить задачу по программированию (как правило, несложную), используя наименьшее количество символов. Соревнование довольно известное. Можно поиграть, например, на одноимённом сайте, есть целая секция на CodinGame, иногда такие соревнования публикует kaggle, была такая секция на HackerRank (сейчас её я не нашёл).

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

Временами мы развлекаемся таким форматом. В какой-то момент на внутренних ивентах подняли свою платформу для соревнований, а потом она протекла и на внешние конференции.

Эта статья — смесь разбора задач и истории появления соревнования по код-гольфу на конференциях Яндекса.

Про нас и кодгольф

Docker для самых маленьких: упаковываем Python-бота за 10 минут

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

Хватит запускать ботов кнопкой Run в PyCharm! Пора осваивать промышленные стандарты.
В этом туториале я простым языком объясняю, как работает Docker и зачем он нужен Python-разработчику. Мы возьмем простого Telegram-бота, напишем для него конфиг, настроим .dockerignore и запустим в изолированном контейнере. Идеально для тех, кто давно хотел разобраться с Докером, но боялся сложных инструкций.

Читать далее

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

Всегда короткий Python-код

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

Не так давно довелось спонтанно поучаствовать в активности от T‑банка. Кроме всяких «интересных» заданий, там были задачки и на кодинг. Критерием победы в задачах «Стековки» были не O(n), не микросекунды, а краткость кода, твёрдо измеренная в символах, что тоже по своему интересно. «Как написать решение используя минимальное число символов?».

С одной стороны это были задания на компактный алгоритм, с другой стороны — на знания возможностей языка. Я к такому родам задачам не готовился, но по ходу дела мне показалось, что приёмы, которые можно придуматьприменить при таких метриках, вполне стоило бы обобщить, структурировать, и применять уже с меньшими когнитивными нагрузками. Заинтересовало? Добро пожаловать за странными конструкциями и хацкер-бонусом.

Разжать статью

Ускорение Python в 150 раз с использованием C

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

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

NumPy уже не в моде?

Простой Python, автоматический Spark: минус Kubernetes, плюс продуктивность

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

Установка и эксплуатация приложений Spark в облаке зачастую становятся препятствием для дата-инженеров (Data Engineer, DE): сложная работа с Helm-конфигурациями отвлекает внимание от анализа данных и замедляет подготовку среды. Но полностью отказываться от Spark зачастую нерационально, поэтому многие команды стремятся найти свое решение для обхода существующих сложностей.

Привет, Хабр. Меня зовут Юрий Орлов. Я руководитель команды разработки ML Platform в VK Tech. В этой статье я расскажу о том, как мы автоматизировали развертывание Spark в облаке и создали клиент на Python, который снижает требования к знаниям в области DevOps и Kubernetes, необходимым для начала работы со Spark.

Читать далее

Ваш смартфон — это сервер. Поднимаем Telegram-бота на Android без root и затрат

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

Хотите запустить своего Telegram-бота, но не желаете платить за VPS ради простого пет-проекта? А что, если я скажу, что полноценный Linux-сервер уже лежит у вас в кармане? В этой статье мы пошагово превратим любой Android-смартфон в хостинг для нашего бота на Python. Без root-прав, вложений и сложных настроек. Понадобится только приложение UserLAnd и 60 минут времени.

Читать далее

Как за 5 дней с помощью Claude я создал приложение для кошки с диабетом (и кажется запустил стартап)

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

У моей кошки Манишки диабет. Ей 13 лет, весит она всего 3 кг, и каждый день я меряю ей сахар глюкометром и колю инсулин. Первые месяцы записывал показания в блокнот на холодильнике — просто дата, время, цифра. Потом понял что так динамику не увидишь, перешёл на Excel с формулами и цветными ячейками. Потом написал Python‑скрипт который рисовал графики и сохранял их картинками.

А что из этого получилось — смотрите под катом!

Читать далее

Можно ли заменить datetime? Как Pendulum делает работу с датой и временем удовольствием

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

Работа с датой и временем в программировании — это одна из тех «темных» областей, на которой каждый разработчик набивает свои шишки. На первый взгляд все просто: from datetime import datetime, datetime.now(). Что может пойти не так?

А потом в проекте появляются часовые пояса, и начинается тихий ужас.

Вы внезапно обнаруживаете, что стандартная библиотека Python оперирует двумя видами объектов: «наивными» (naive), которые ничего не знают о своем часовом поясе, и «осведомленными» (aware), у которых эта информация есть. И datetime.now() по умолчанию создает именно «наивный» объект, который в лучшем случае бесполезен, а в худшем — источник трудноуловимых багов, когда ваш код запускается на сервере в другом конце света.

Читать далее

Критическая уязвимость в камерах v380: Как plaintext credentials раскрывали миллионы устройств

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

В 2023 году, исследуя безопасность IoT устройств, я наткнулся на критическую уязвимость в одном из самых популярных брендов IP-камер в мире. Камеры v380 используются миллионами людей — в квартирах, офисах, магазинах, детских комнатах. Они доступны, просты в настройке и работают через удобное мобильное приложение.

Проблема оказалась банальной и пугающей одновременно: учетные данные пользователей передавались по сети в открытом виде. Любой, кто знал ID камеры, мог подключиться к незащищенному relay-серверу, перехватить логин и пароль владельца, получить полный доступ к видеопотоку и даже транслировать заранее записанное видео вместо live feed — как в классических фильмах про ограбления.

Эта статья — технический разбор уязвимости, детальный анализ кода эксплойта и история о том, как правильное раскрытие уязвимостей помогает делать IoT безопаснее.

Читать далее