Обновить
547.78

Python *

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

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

Подружить Great Expectations с Impala: решение для больших данных

Время на прочтение7 мин
Охват и читатели469

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

Но при внедрении мы столкнулись с проблемой: GX официально не поддерживает Impala — наш основной SQL-движок для обработки данных в Hadoop. Сначала мы решили пойти обходным путем через pandas DataFrame, благо GX прекрасно с ним работает. На тестовых данных все выглядело многообещающе, однако DataFrame может обрабатывает только около 15 000 строк за раз. Данные нужно дробить на части и по результатам теста на действительно больших объемов, обработка растянулась больше чем на сутки, а часть возможностей библиотеки мы вообще потеряли.

Стало понятно — нужно возвращаться к идее использования Impala. Тем более что он обрабатывает те же объемы данных за считанные минуты. Оставалось только найти способ подружить его с GX. В документации GX ни слова о том, как запустить проверки через неподдерживаемый движок. Пришлось экспериментировать самим, и после серии проб и ошибок нашли решение. Решила им поделиться.

Читать далее

«Дебаггинг» резюме или как покорить сердце рекрутера

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

Поговорили с Денисом Хахалкиным, QA Lead — Wallarm, ex. Ozon — о том, как подготовить резюме для прохождения первичного отбора ресёрчерами и HR‑специалистами на российском рынке труда. Обсудили, как правильно выбрать опыт для включения в резюме, чтобы он был актуален для желаемой должности, почему не стоит врать в резюме и как и когда стоит упоминать о пройденных курсах и полученных сертификатах, чтобы не отпугнуть потенциальных работодателей.

Читать далее

6 разочарований при создании командного инструмента

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

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

Пока скрипты распространялись по команде, приходилось значительно дополнять их и рефакторить: код разросся до 3000 строк. И все это делалось по личной инициативе и в свободное время.

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

Читать далее

Большое обновление CV-возможностей для фреймворка Simple

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

Добрый день! Представляю большое обновление CV-возможностей (ActiveCV 2.0) андроид-фреймворка Simple, о котором писал тут https://habr.com/ru/articles/720610/. Теперь ActveCV существует не параллельно разработке на обычных экранах, а является элементом экрана, таким как кнопка или надпись. Это не просто подход к дизайну, а совершенно другие возможности работы – совмещение логики экранов и обработки видеопотока.

Читать далее

Автоматизация тестирования мобильных приложений на Python с использованием Appium и Pytest. Пишем первый тест

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

Автоматизация мобильных приложений на Python с использованием Appium и Pytest. Пишем первый тест

Активно начал изучать автоматизацию мобильных приложений на Appium + Pytest, но на просторах рунета не нашел нормальную документацию по построения проекта и запуска первых тестов. Решил написать данную статью.

Для начала работы необходимо настроить рабочее окружение. Для начала проверим установлен ли на вашей машине Python. Проверить это можно с помощью команды  python3 -V в терминале. Далее терминал должен вывести версию Python.

В моем случае Python установлен версии 3.13.0

Если после ввода в терминал команды python3 - V - терминал вывел command not found: python, то вам необходимо установить Python, сделать это можно следующими способами (необходимо установить в виртуальное окружение вашего проекта):
есть несколько способов установки, я остановился на менеджере пакетов для macOS - Homebrew.

Читать далее

tuple в CPython – мутабельный! И другие шокирующие детали из C-шной реализации

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

Привет! Меня зовут Никита Соболев, я core-разработчик языка программирования CPython, а так же автор серии видео про его устройство.

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

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

Ну и конечно – мое полное видео на полтора часа, где будет множество дополнительной информации о деталях работы VM.

Если вам такое интересно или целиком незнакомо – добро пожаловать!

Читать далее

Пишем морской бой на VueJS и Python

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

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

Читать далее

Python и нечеткое сопоставление: решение проблемы разнобоя в адресах

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

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

📍 "д. Малое Шилово, ул. Березовая, д. 7" и "Березовая 7_М Шилово".
📍 "п. Ласьва, ул. Весенняя, д. 5" и "Весенняя 5_Ласьва".
📍 "Луговой пер 5, Краснокамск г" и "г. Краснокамск, пер. Луговой, 5".
📍 "д. Новая Ивановка, ул. Солнечная, 18" и "д.Новая Ивановка, ул.Солнечная, 18".

Уже выделенные отдельно адреса могут выглядеть как на скриншоте Экселя. А пример поставленной задачи может звучать так: «В реестре поданных объектов отметить все согласованные объекты (из общего списка согласованных)».

Если отбросить вариант ручного исполнения и обратиться к скриптам, то мне видится всего два решения:

✅ Использовать алгоритмы нечёткого сопоставления.
✅ Использовать геокодинг адресов.

Ищем приемлемый вариант сопоставления

Антиспам бот модератор в телеграм. Защищаем группу за три минуты

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

Недавно мы столкнулись с волной спама. И написали антиспам бота, который удаляет спам сообщения и помогает блокировать нарушителей.

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

В статье вы найдете

ссылку на файлы проекта;

инструкцию, как его запустить без навыков программирования.

Бот умеет удалять спам сообщения, отправлять их на модерацию и дообучаться в случае ошибок.

Читать далее

Руководство по восстановлению удаленных сообщений и медиаданных в Telegram

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

Удаление сообщений и файлов в Telegram часто воспринимается как необратимый процесс, но способ вернуть потерянные данные все же есть.

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

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

Восстановить!

Когда начинать ходить на собеседования продуктовому аналитику?

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

Этот вопрос волнует многих начинающих аналитиков и даже тех, кто уже частично освоил профессию, но не уверен, пришло ли время делать следующий шаг.

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

Читать далее

Делаем Телеграм-бота в Cursor AI без знания кода

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

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

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

Недавно услышал про Cursor AI от Claude и уже успел протестировать его на другой задаче, поэтому был уверен, что он справится.

Читать далее

Зачем мы написали библиотеку для создания телеграм ботов на С++?

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


Сейчас телеграм боты крайне популярны, казалось бы, если всё так просто и есть спрос, то наверняка уже сотни библиотек для удобного создания ботов?

Вкратце - нет, если вы захотите написать телеграм бота, то вы (были) вынуждены делать это на python. Библиотеки на...

Читать далее

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

Архитектура для средненагруженных приложений: делюсь опытом и ищу ваши советы

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

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

Читать далее

Создание ETL-движка для репликации данных из Apache Hive в Clickhouse

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

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

Читать далее

Эконометрика в ритейле: как не потратить миллионы на заведомо неэффективные эксперименты

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

Всем привет! На связи команда ad-hoc аналитики X5 Tech. Если вы уже знакомы с нашими статьями, то наверняка знаете, что нашей ключевой темой является А/Б тестирование. Важной составляющей А/Б теста является дизайн: для успешного проведения эксперимента необходимо оценить размер пилотной и контрольной групп, зафиксировав предварительно ожидаемый эффект. Но возникает вопрос: как убедиться в обоснованности гипотезы и рассчитать ожидаемые эффекты от инициативы?

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

Читать далее

Контроль и порядок. Разворачиваем платформу учёта затравок для БЯМ

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

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

Под катом расскажу, как поднять платформу для учета и версионирования затравок Langfuse.

(Обложка сгенерирована DALL-E от OpenAI)

Читать далее

Гравитационные маневры

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

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

Читать далее

Практическое обучение с подкреплением: от забав с MuJoCo'м до битв на арене

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

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

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

Готовы? Тогда — вперед!

Внимание! Тяжёлые гифки под катом.

На арену!

Перенос JWT-токенов в куки: Django REST + React

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

Привет, Хабр!

Эта статья родилась из моего опыта реализации авторизации с использованием JWT-токенов, хранящихся в куки. Я решил поделиться этим опытом, чтобы зафиксировать свои знания и, возможно, помочь тем, кто столкнется с похожими задачами

Статья будет полезна тем, кто хочет разобраться в реализации авторизации с JWT-токенами в куки с помощью Django REST Framework.

Читать далее

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