Обновить
855.11

Python *

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

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

Мифы и легенды о производительности Python

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

Антонио Куни — инженер, давно занимающийся повышением производительности Python, а также разработчик PyPy. Он провёл на EuroPython 2025 в Праге презентацию «Мифы и легенды о производительности Python». Как можно догадаться из названия, он считает многие общепринятые сведения о производительности Python как минимум вводящими в заблуждение. На множестве примеров он показал, где, по его мнению, таятся истинные проблемы. Инженер пришёл к выводу, что управление памятью в конечном итоге наложит ограничения на возможности повышения производительности Python, но у него есть проект SPy, который, возможно, станет способом реализации сверхбыстрого Python.

Он начал своё выступление с просьбы: «Если вы считаете Python медленным или недостаточно быстрым, поднимите руку»; поднялось много рук, в отличие от презентации на PyCon Italy, где руку не поднял почти никто из присутствующих. «Совершенно другая аудитория», — сказал он с улыбкой. Антонио уже много лет работает над производительностью Python, он общался с множеством разработчиков на Python и слышал кучу устоявшихся мифов, которые захотел развеять.

Читать далее

Я устал от ограничений Strava и написал свой «швейцарский нож» для анализа тренировок на Python и FastAPI

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

Всем привет! Я — разработчик и велосипедист, которому надоели ограничения Strava. Знакомы боли: GPS‑треки с «телепортами», платный анализ по зонам и неудобная загрузка сегментов на Garmin? Я решил исправить это и написал свой «швейцарский нож» для анализа тренировок.

Под катом — история создания pet‑проекта Peakline на Python, FastAPI и Vanilla JS. Расскажу, как устроен продвинутый FIT‑генератор для гонок с «призраком», как визуализировать исправление «сломанных» GPX‑треков и как заставить график и карту работать в связке. Поделюсь фрагментами кода, архитектурными решениями и подводными камнями при работе с API Strava.

Узнать, как это сделано

Литания: создаем свой язык программирования с лексером, парсером и интерпретатором

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

В наше время программирование стало очень доступным из-за развития инструментов и языков. Написать «привет, мир» может практически каждый, а количество фреймворков для JavaScript уже воспевается в шутках. Теперь, чтобы выделиться и впечатлить друзей и коллег, нужно спускаться глубже. Придумаем свой язык шуточный программирования! 

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

Это упрощенная статья, которая расширит ваш кругозор, а у некоторых вызовет интерес и любопытство погрузиться в тему.

Читать далее

Скрипты и алиасы для вашего линукса

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

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

Простейший алиас в .bashrc или .zshrc кажется небольшим открытием. Первый рабочий скрипт, сохранённый в ~/.local/bin, ощущается как прорыв. Это не просто про лень — это про эффективность, про оптимизацию работы.

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

Читать далее

Как мы воскресили русский NLP и сократили потребление памяти на 90%

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

Как мы воскресили русский NLP и сократили потребление памяти на 90%

Форкнули четыре ключевых библиотеки русского NLP (pymorphy, razdel, slovnet, natasha), которые не обновлялись годами. Сократили потребление памяти на 90%, ускорили загрузку в 30 раз, повысили точность токенизации с 70% до 95%. Всё работает offline, 100% совместимо с оригинальными API. Экосистема MAWO — production-ready инструменты для работы с русским текстом.

Помните ли вы тот момент, когда открываешь проект для обработки русского текста и видишь знакомую картину? В requirements.txt красуется pymorphy2, последний коммит в репозитории датирован 2015 годом, Python 3.12 ругается на deprecated методы, а production ждать не будет. Знакомо? Тогда эта история для вас.

Читать далее

Определение положения объектов на изображении: как найти пространственные координаты объекта, используя OpenCV

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

Как найти 3D координаты объектов на изображении?

Статья о задаче пространственной локализации объектов на изображении с одной камеры и о её решении с помощью OpenCV

Читать далее

Личный ИИ-ассистент на ваших данных. Часть 1: Векторная база ChromaDB + DeepSeek | GPT

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

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

В этой статье я подробно расскажу, как работают векторные базы данных, зачем они нужны и какую роль играют в построении эффективной связки между вашей внутренней информацией и мощью современных LLM. Если вы хотите научиться «обучать» ИИ на своих данных — добро пожаловать!

Читать далее

Оптимизация работы с REST API: когда и как использовать пагинацию (+ простой пример на Python)

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

Итак, пользователи вашего приложения уже жалуются на долгую загрузку данных, а серверы едва справляются с нагрузкой. Одна из возможных (и частых) причин в том, что API пытается выгрузить тысячи записей за один запрос. Без пагинации базы данных захлебываются под тяжестью SELECT-запросов, а клиенты уходят к конкурентам, не дождавшись ответа.

Почему пагинация — это не опция, а must-have для любого API? Как избежать типичных ошибок при ее внедрении? И почему даже стартапам с небольшим трафиком стоит задуматься о ней уже сегодня? Ответы — в разборе принципов, которые превращают пагинацию из технической детали в инструмент роста бизнеса.
Читать дальше →

Machine learning на ESP32

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

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

В этом примере используются измерения акселерометра MPU 6050 и машинное обучение (ML) для распознавания трех жестов рукой с помощью ESP32. Данные из сенсора распознаются на микроконтроллере и результат выводится в консоль в виде названия жеста и вероятности результата. Модель ML использует TensorFlow и Keras и обучается на выборке данных, представляющей три различных жеста: "circle" (окружность), "cross" (пересечение) и "pad" (поступательное движение).

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

В следующей части рассмотрим как настроить Bluetooth LE (BLE) на ESP32 и Android устройстве. Передадим квантированный набор ускорений сенсора по BLE. Настроим Модель ML для распознания жестов на Android.

Читать далее

Repository Pattern в управлении базами данных: пример интеграции NocoDB в Django

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

Классический сценарий: есть база данных и приложение на бэкенде. Для подключения достаточно знать адрес, порт, имя пользователя, пароль — и прямой доступ перед вами. Но что делать, если необходимо подключить no-code базу данных, которой можно управлять только через REST API? Есть ли способ интегрировать такие подключения в логику «красиво», не поломав архитектуру?

Привет, Хабр! Меня зовут Влад, в свободное время я занимаюсь разработкой. В этой статье расскажу, как мне удалось относительно нативно интегрировать работу с платформой NocoDB на бэкенде, какие можно использовать паттерны и зачем мне понадобилось разработать собственный Python-модуль. Подробности под катом!

Читать далее

Производительность интерпретатора Python 3.14 с оптимизацией хвостовых вызовов

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

Примерно месяц назад проект CPython смерджил новую стратегию реализации интерпретатора байт-кода. Первоначальные результаты были очень впечатляющими, продемонстрировав среднее повышение производительности на 10-15% в широком спектре бенчмарков на различных платформах.
Читать дальше →

Не позволяйте словарям портить ваш код

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

Как часто ваши простенькие прототипы или предметные скрипты превращаются в полномасштабные приложения?

Простота естественного разрастания кода не лишена и обратной стороны — такой код становится трудно обслуживать. Количественное размножение словарей в качестве основных структур данных чётко сигнализирует о наличии технического долга. К счастью, сегодня Python предоставляет для простых словарей много адекватных альтернатив.
Читать дальше →

Особенности Python, о которых вас точно спросят на техническом собеседовании

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

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

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

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

Читать далее

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

Я не люблю NumPy

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

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

NumPy — это ПО для выполнения вычислений с массивами на Python. Оно невероятно популярно и очень сильно повлияло на все популярные библиотеки машинного обучения, например, на PyTorch. Эти библиотеки во многом имеют те же самые проблемы, но для конкретики я рассмотрю NumPy.

Читать далее

Это путь воина: как я выучил Python и Go с помощью Цеттелькастена и кому точно не рекомендую метод

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

Привет, Хабр! Меня зовут Дмитрий, я работаю в YADRO. Я прошел большой путь в самостоятельном изучении языков программирования: от SQL до Go. Сначала я вообще не документировал процесс обучения, затем стал вести заметки по «академическому» принципу — писал конспекты, как в университете. Пока не открыл древовидную систему хранения данных, которая лежит в основе метода Цеттелькастен. 

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

Читать далее

OpenSearch как сервис: обзор и тривиальный пример использования на Python

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

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

Меня зовут Гришин Александр, я продакт-менеджер в Selectel и отвечаю за развитие объектного хранилища и облачных баз данных. В этой статье расскажу, как описанные проблемы решает OpenSearch, как развернуть кластеры этой платформы за несколько минут и начать с ней работать в Python.
Читать дальше →

Байесовская собака: анализ пёсьего компаса

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

Ориентируются ли собаки по компасу, когда делают свои грязные дела? Оказывается — да! Если вам интересно, как можно это подтвердить в домашних условиях, используя компас, Байесовскую статистику и собаку (собака не включена), то добро пожаловать под кат. 

Читать далее

«LLVM для AI». Крис Латтнер и язык программирования Mojo

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

Крис Латтнер (Chris Lattner) — создатель CPU-компилятора LLVM и соавтор Swift — предложил новый язык программирования Mojo, спроектированный для одновременного программирования CPU, GPU и TPU (тензорные ядра, оптимизированные для матричного умножения, а это и есть инференс LLM), без всяких лишних библиотек типа CUDA, ROCm и XLA.

Mojo — это надмножество Python с производительностью С и потенциальная замена Rust. Код на нём легко переносится между различными GPU, при этом платформа Modular быстрее обновляется под новые модели GPU, чем сама Nvidia выпускает обновления для своего софта (новые attention kernels).

Простой и мощный язык для написания и деплоя LLM-приложений независимо от оборудования (AMD, Nvidia, Intel и проч.), с метапрограммированием во время компиляции и прочими штуками. Что-то вроде единой «LLVM для AI». Унифицированная программная платформа, которая запускается на любом железе. Это ещё и самый простой способ ускорить Python-приложение в 10−1000 раз, не переписывая его фрагменты на Rust или C++ (что по сути делают NumPy и PyTotch).

Читать далее

Проклятие легких побед: как вайбкодинг убивает волю к решению проблем

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

«Вайбкодинг» ‑ это просто ролевая игра для парней, которые хотят чувствовать себя хакерами, не делая сложной работы, или это мощный инструмент, меняющий процессы даже ML‑инженера? Я думал, что это просто игрушка, пока не попробовал.

Привет, меня зовут Марк, я ML-инженер уже более 4-х лет и за несколько дней я навайбкодил приложение не зная ни языка ни технологий. А еще я навайбкодил кучу техдолга и получил неочевидные трансформации личности.

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

Читать далее

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

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

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

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

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

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

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