Обновить
506.96

Python *

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

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

Как не увидеть то, что не хотелось бы видеть, чтобы потом не нужно было развидеть

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

Приветствую! Хочу рассказать про свой мини pet‑проект «Just Skip It!», который я разработала (и надеюсь буду развивать), чтобы автоматически пропускать нежелательные сцены в видео.

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

Так и родился проект «Just Skip It!». В предлагаемой мной реализации, я использовала медиаплеер VLC, и утилиту на Python, которая управляет плеером через его RC‑интерфейс.

Читать далее

Вышла 12 версия русского опенсорс голосового помощника Ирина (900+ звезд Гитхаб)

Время на прочтение8 мин
Количество просмотров28K

Всем привет! Я уже писал про своего голосового помощника Ирину статьи на Хабре: раз, два и три; первый раз был аж 3.5 года назад.

Самое главное — опенсорс проект жив. А если опенсорс жив в течение 3.5 лет — значит, он дошел до какой‑то точки зрелости. А если у него 900 звезд на Гитхабе — значит, им кто‑то пользуется, и даже успешно :)

TL;DR> Python с простой архитектурой. Работает оффлайн, полностью локально и приватно. Можно дописывать свои скиллы через плагины. Плагинов много, есть от комьюнити. Поддержка Home Assistant. Поддержка кучи TTS. Поддержка LLM по OpenAI‑совместимому API, можно сделать онлайн или оффлайн. Есть клиент‑сервер.

Читать далее

Что нового на Kapi.bar за год: фичи, правки и немного философии

Время на прочтение7 мин
Количество просмотров2K

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

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

За этот год в Kapi.bar многое поменялось. Мы добавили десятки фич, вычистили не один баг (правда ранее сами‑же их и допустили, но кто не ошибается), наконец начали разбираться с SEO, провели тихую, но упорную работу над повышением стабильности системы. И, что немаловажно — начали глубоко размышлять над философией Капибары и формулировать, кто мы вообще такие, для чего всё это и почему эта история — не только про код.

Эта статья — не рекламный релиз и не набор bullet‑поинтов из changelog. Мы просто хотим рассказать, что произошло за год. Что стало лучше, что сломалось и было починено. И да, немного про поисковики тоже будет — с ними, как оказалось, тоже можно подружиться.

Читать далее

Как изменения в Python сделали старую оптимизацию бесполезной

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

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

Читать далее

Кандидат сбежал в слезах. Про накрутку опыта

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

У него в резюме Python, Playwright, Pytest, Jenkins, Docker, Kafka, GitHub, GitLab, и он вёл QA-гильдию в Третьем Царстве. А потом пришёл на собес — и не смог объяснить, чем отличается UI-тест от интеграционного. Мы дали задачу. Он попытался её решить. Мы все плакали. Он — тоже.

Читать далее

Как создать MCP-сервер и научить ИИ работать с любым кодом и инструментами через LangGraph

Время на прочтение35 мин
Количество просмотров23K

В этой статье разбираемся с MCP-серверами от А до Я: что это такое, зачем нужны и как создать свой. Научимся писать инструменты для ИИ-агентов, подключать готовые MCP-серверы через LangGraph, и создадим полноценный математический сервер с нуля. В конце задеплоим его в облако и подключим к нейросети. Много практики, рабочий код и никакой воды — только то, что действительно работает.

Читать далее

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

Время на прочтение6 мин
Количество просмотров769

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

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

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

Читать далее

20 лет объяснял программистам, что делать. А теперь попробовал сам

Время на прочтение8 мин
Количество просмотров27K

В общем, решил сделать пет-проект. ЦРМ нормального фрилансера. Сам я ремесленник-одиночка и пользуюсь ограниченным набором инструментов для ведения дел: Google Таблицы, да Windows-заметки. Решил все эти данные свести воедино в рамках собственной црмки.

Я не разработчик, а проектировщик интерфейсов (UX/UI-дизайнер). Опыта в программировании совсем немного. Поэтому пет-проект был мне особенно интересен. Я уже двадцать лет готовлю проектную документацию для других — а в этот раз для себя.

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

Читать далее

Из Excel в SQL. Имеет место быть?

Время на прочтение4 мин
Количество просмотров7.9K

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

Итак, Excel-файл весит 500+ мегабайт, состоит из сотен тысяч строк, десятков листов и формул, которые «протягиваются» по 30+ столбцам — это не работа, а страдание. Именно с таким «монстром» я столкнулся, когда в компании собрались данные из разных отделов в один файл.

Вкратце структура файла — Лист «Массив» (Data_Lake — в левой части 34 столбца с которым работают специалисты и на котором отрабатывают основные формулы и правая часть с 46 столбцами, куда подтягиваются сырые данные, с которыми будет производиться обработка). И множеством листов со справочниками, правками.

Открытие этого Excel‑файла занимает 10 минут, а если обновить хотя бы часть формул — можно идти пить чай. Работать с такими данным и просто невозможно, особенно если тебе нужно анализировать их, строить отчёты или готовить выгрузки. Поэтому решил попробовать все перевести на PostgreSQL.

Для этого всего лишь требовалось переписать формулы с Excel на SQL. Хорошо, что большинство формул это условия ЕСЛИ, ИЛИ.

Вот самая простая формула:

Читать далее

Обратный звонок с сайта: соединяем пользователя с компанией автоматически через Callback API

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров499

Привет, Хабр. Это Екатерина Саяпина, менеджер продукта в МТС Exolve.
Сегодня покажу, как реализовать анонимный обратный звонок с сайта через Callback API — ни клиент, ни менеджер не видят номера друг друга, соединение идёт через виртуальный номер. Всё на Django, просто и надёжно.

Читать далее

Решил перейти на Python и не пожалел

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

С полгода назад я начал чаще использовать для программирования Python. Почему? Конечно, из-за ИИ. Лично для меня очевидно, что сегодня эта сфера связана с очень большими деньгами перспективами во всех направлениях. А какой язык является самым распространённым для ИИ? Да-да, как-раз этот проныра.

Я уже писал на Python, но только небольшие скрипты. К примеру, вот этот скрейпит метаданные всех видео с моего канала на YouTube. Собранные метаданные выводятся в виде файла JSON, который я использую для показа красивой статистики роликов на этой статичной странице. Как можно видеть здесь, этот скромный скрипт через GitHub Actions выполняется в соло-режиме каждый понедельник. Просто реализовать всё это на Python куда проще, чем с помощью того же Batch. И не только из-за более дружественного синтаксиса, но и потому, что его интерпретатор нативно интегрирован во все дистрибутивы Unix. Разве не круто?

Читать далее

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

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

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

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

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

Читать далее

Создаем 3D карту помещения лидаром Unitree L2 на Windows без ROS

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

При обследовании зданий и сооружений практически всегда необходимо создать точную 3D модель помещения для формирования паспорта объекта или для разметки дефектов на уже существующей BIM-модели. То есть, лидар и 3D-сканер входят в необходимый джентльменский набор инженера, при этом стоит такой кит весьма недешево, в среднем 150к-1,5 млн рублей. Мы попробовали изучить возможность использования лазерных лидаров более бюджетного класса, к примеру, Unitree 4D LiDAR-L2 (далее Unitree L2), который стоит в пределах 28-40К рублей. Можно ли с помощью лидара, используемого не в промышленном сканировании, а в робототехнике (конкретно эта модель используется как навигатор для робособак) составлять из облаков точек 3D-модели зданий и сооружений? Дополнительно еще решили задачку, а можно ли это делать на Windows, так как у инженеров в поле чаще всего на ноутбуках стоит именно эта ОС, тогда как официально ПО Unitree L2 написано под Ubuntu? Наш вывод – оба ответа – да, можно!

Читать далее

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

Большой разлив чая: сервис анонимных слухов о мужиках Tea спалил персданные пользовательниц

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

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

Читать далее

«Мой код не работает!» или как я превратила баг в фичу (почти случайно)

Время на прочтение2 мин
Количество просмотров2.5K

Всем привет.

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

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

Читать далее

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

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

Ошибки в коде— не всегда вопрос невнимательности. Часто они кроются в архитектурных решениях, устаревших практиках и банальном отсутствии инструментов контроля качества. В этой статье — практический разбор того, как настроить и использовать SonarQube с FastAPI, чтобы находить баги, уязвимости и «запахи» ещё до запуска приложения. Разберёмся, как выглядит процесс статического анализа кода на практике, как развернуть SonarQube через Docker и интегрировать его в рабочий цикл через CI/CD.

Читать далее

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

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

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

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

Читать далее

Разработка браузерного расширения: путь от идеи до публикации в web store

Уровень сложностиПростой
Время на прочтение19 мин
Количество просмотров2.9K

Разработка браузерного расширения началась с простой идеи: упростить поиск по закладкам и открытым вкладкам, а также попробовать свои силы в создании проекта с элементами монетизации. В этой статье я расскажу, как за две недели прошёл путь от прототипа до публикации в Chrome Web Store и Firefox Add-ons, какие технологии использовал и с какими трудностями столкнулся. Надеюсь, мой опыт вдохновит других разработчиков попробовать свои силы в создании подобных проектов. Полный код проекта доступен на GitHub.

Читать далее

Тесты не лгут — прислушивайтесь к ним. Часть 1

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

(Статья — результат со вместной работы с Максимом Степановым)

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

Связанный код, который сложно поддерживать и расширять, сложно и тестировать. Как сказал Боб Мартин

«Тестируемый код — синоним разъединённого кода»

А значит, тестируемость может быть маркером хорошей архитектуры. Именно это мы и попробуем здесь продемонстрировать.

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

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

Читать далее

За неделю от ночных кошмаров до спокойного сна: как я автоматизировал защиту от AI-хакеров

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

Никто не любит быть тем парнем, который говорит «а давайте еще и защиту поставим». Особенно когда речь идет о блестящем новом AI‑продукте, который должен был запуститься «еще вчера». Но когда твой корпоративный чат‑бот начинает выдавать системные промпты направо и налево, а в 2 ночи тебе в Telegram прилетают сообщения «СРОЧНО! Хакеры взломали бота!» — понимаешь, что без брони в бой идти нельзя.

Читать далее

Вклад авторов