Обновить
837.07

Python *

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

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

Как я сделал свой АИС-Налог и для чего он нужен

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

Эта статья — описывает проект, по созданию универсальной системы для бизнеса «АIS NP», которая решает проблемы сопровождения налоговых проверок и налогового контроля в целом.

AIS NP это единое рабочее пространство, где проверки, мероприятия, сроки и документы не разлетаются по чатам, почте и «тридцати папкам на диске», а живут в одной логике. Чтобы ты в любой момент мог открыть нужную организацию и быстро понять: что сейчас происходит, какие документы уже есть, что ещё нужно собрать, какие сроки горят, где ответ готовится, а где уже отправлен.

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

Читать далее

Книга: «Анализ данных с помощью GenAI и Python»

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

Привет, Хаброжители! Эта книга — практическое руководство для тех, кто превращает данные в решения. Шаг за шагом вы разберетесь, как современные методы искусственного интеллекта помогают не просто интерпретировать массивы информации, но и находить скрытые закономерности, позволяют прогнозировать будущее и создавать конкурентные преимущества для бизнеса. Вы получите системное понимание инструментов анализа, узнаете о лучших практиках применения машинного обучения и научитесь интегрировать ChatGPT в ежедневные рабочие процессы.

Читать далее

Улучшаем Backend-разработку в Cline на примерах

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

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

Какие задачи идеально подходят для оптимизации с помощью ИИ, а какие не стоит отдавать агенту.

Читать далее

CI/CD для карьеры: как я написал бота, который проходит HR-фильтры вместо меня

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

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

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

Но когда дело доходит до поиска работы, мы превращаемся в биороботов.

Заходим на hh. Вбиваем фильтры. Читаем описание (которое на 90% копипаста). Пишем сопроводительное (которое никто не читает). Жмем кнопку. Повторить 100 раз.

Меня хватило на два дня. Потом я понял, что трачу часы на работу, которую должен делать скрипт.

Попытка №1: Тупой парсер (Python + Requests)

Сначала я решил задачу в лоб. Написал воркер, который:

Читать далее

Работа с несбалансированными данными: SMOTE мёртв, что работает

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

Бывали у вас датасеты, где класс «1» встречается в 100 раз реже класса «0»? У меня — постоянно. Модель радуется высокой точности, а на деле совершенно промахивается по редкому классу. Давайте обсудим, почему старый добрый SMOTE уже не торт, и что помогает в таких случаях.

Разобраться глубже

Антикейс — в нестандартном понимании! Клоакинг зло — а со злом надо бороться

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

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

Читать далее

Мемоизация в Python: как заставить код помнить

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

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

Решение — Мемоизация.

Это техника, при которой функция запоминает результат своих вычислений. Если вы вызываете её снова с теми же аргументами, она не считает, а просто достает готовый ответ из памяти (словаря).

Читать далее

Оптимизация маршрутов доставки заказов маркетплейса или как мы победили в E-CUP 2025

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

Хабр, привет! Недавно завершилось ML-соревнование E-CUP 2025. Наша команда из X5 Tech заняла первое место в треке «Логистика: автопланирование курьеров», где было нужно оптимизировать время, затрачиваемое курьерами на доставку 20 000 заказов. В статье расскажем про подходы, которые использовали для решения этой задачи. Посмотрим, во сколько раз можно сжать JSON с матрицей расстояний. Какой код мы использовали для быстрого решения задачи TSP с помощью LKH-3. Обсудим, на что обращать внимание при кластеризации заказов.

Постановка задачи

Требовалось распределить порядка 20 000 заказов между 280 курьерами и построить для каждого из них маршрут так, чтобы минимизировать их суммарное время работы. Оно складывалось из времени перемещения курьеров между заказами и времени выполнения самих заказов (service time). За каждый невыполненный заказ добавлялся штраф 3000 секунд...

Читать далее

Ускорение вычислений в алгоритме DRS-виртуализации через векторизацию

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

Переписать решение с Python на Go и получить ускорение в 35 раз — звучит приятно. Но можно ведь пойти дальше, вспомнить о возможностях современных процессоров и увеличить отрыв Go до 200 раз! Статья написана по мотивам доклада для Golang Conf.

Привет, Хабр! Я — Игорь Вагулин, работаю тимлидом департамента IaaS в Cloud.ru, крупнейшем в России облачном провайдере IaaS- и PaaS-сервисов. Прогресс в производительности процессоров и видеокарт привел к тому, что мы можем использовать полный перебор там, где мы раньше обходились приближениями. Сегодня на примере алгоритма DRS-платформы Cloud.ru Evolution рассмотрим, как он может быть решен на разных версиях операций с плавающей точкой процессоров x86 и Arm, в чем сложности задействования SIMD-операций, почему это сложнее на Go и как это обойти.

Читать далее

Django ORM: как QuerySet ленится, цепляется и генерирует SQL

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

Django ORM прячет SQL за красивым Python-интерфейсом. Пишешь User.objects.filter(active=True).order_by('name')[:10] — получаешь список пользователей. Круто. Но когда запросы тормозят или N+1 пожирает базу, приходится понимать, что вообще происходит.

Разберём внутренности QuerySet: почему он ленивый, как работает chaining, когда запрос реально выполняется, и чем select_related отличается от prefetch_related на уровне SQL.

Читать далее

Mini Tower Kit для Raspberry Pi 5: Переделываем проект под Raspberry Pi 4 с Ubuntu Server

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

Переработка проекта Mini Tower Kit для Rasberry Pi 5 под Rasberry Pi 4 с приятным тюнингом или когда Pi 5 не завезли, а руки всё равно чешутся

Читать далее

Перечень всех «белых» IP-адресов Интернета

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

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

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

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

Ну и как в жизни бывает, автоматизация работы привела к гораздо большим трудозатратам, нежели явная работа руками. Проблема оказалась там, где не ждали — готового перечня внешних IP-подсетей найти не удалось. А раз нет, значит придется делать самому.

Читать далее

Линейная регрессия, встряска рейтинга и первое место. Часть 1: Ёлочка, живи

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

Сказ о том, как после долгого перерыва я "взял в руки шашки" (поучаствовал в ML-соревновании) и дотащил задачу на "таблички" до первого места на финальном "приватном" лидерборде с помощью простейшей подготовки фич и классической линейной регрессии с регуляризацией, внезапно обогнав при этом всех модных катбустеров, банально переобучившихся на "паблике".

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

Узнать, что влияет на "выживаемость" ёлки

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

Poisk: однофайловый поисковик для изолированной корпоративной сети

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

В изолированной корпоративной сети с полумиллионом файлов стандартный поиск превращается в рутину. Облачные сервисы недоступны, серверные решения избыточны, а встроенные инструменты ОС не справляются с объёмами и разнородностью клиентов (Windows и Linux).

Мы столкнулись с этой задачей и вместо развёртывания сложной инфраструктуры пошли другим путём: упаковали весь поисковик в один HTML-файл. Фоновая индексация на Python раз в сутки — и сотрудники получают мгновенный поиск по путям прямо в браузере.

В статье разбираем архитектуру решения: как относительные пути решают проблему разных точек монтирования, почему плоский JS-массив оказался эффективнее сложных структур, и как уместить индекс 560+ тысяч файлов в 120 МБ без потери скорости.

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

Читать далее

Генетический алгоритм как инструмент инженера: практический кейс раскроя полотен

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

Генетический алгоритм как инструмент инженера: практический кейс раскроя полотен

Генетический алгоритм — это «умный» инструмент для автоматизации раскроя материалов (металл, ткань, пластик). Вместо ручного подбора или полного перебора он по принципам естественного отбора ищет компактное размещение деталей, минимизируя отходы. В статье показан практический кейс на Python: как без сложной математики создать алгоритм, который экономит материал, время. Этот подход можно адаптировать под ваши производственные задачи.

Читать далее

Как я построила систему раннего обнаружения падений активности игровых провайдеров

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

Стек: Python, Airflow, ClickHouse, Slack

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

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

Вся логика работает внутри DAG в Airflow. Он запускается каждые 6 минут и анализирует активность игровых провайдеров в реальном времени. При обнаружении начала падения или восстановления система отправляет уведомления в Slack.

Читать далее

Как Питолис мир создавал

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

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

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

(спойлер: Что-то вроде даже получилось)

Вперёд, создавать миры

Работа с реестром Windows на Python на библиотеке Unishell 2.3.2

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

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

Читать далее

История одного коннектора: как мы научили Qlik говорить с каталогом данных

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

В статье рассказывается, как команда интегрировала Qlik с OpenMetadata, создав собственный коннектор вместо использования коробочного решения. Авторы объясняют, почему стандартный подход не обеспечивал нужного lineage и привязки к глоссарию, и как они решили проблему с помощью парсера скриптов Qlik, поддержки include-файлов и доменной модели Business Views. В результате удалось связать дашборды с источниками данных и бизнес-терминами, сократив время поиска отчётов с 2 часов до 2 минут и обеспечив покрытие lineage более чем для 85% приложений. Статья будет полезна тем, кто сталкивается с управлением метаданными в крупных BI-инфраструктурах.

Читать далее

Как мы мигрировали с Zeppelin и что из этого вышло. Часть 2. Формы

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

Это вторая (и заключительная) часть цикла статей о нашей миграции с Zeppelin. О причинах и первом опыте перехода с Zeppelin я рассказал здесь. В данной статье я хочу большее внимание уделить второму виду Zeppelin notebook, которые срочно нуждались в переносе.
Конечно, отчеты для клиентов не были настолько "забагованы" как рассылки: большая часть проблем с Zeppelin крылась именно в cron-е, который временами работал как хотел (или в интерпретаторах, мы так и не смогли разобраться, но ошибка интерпретатора возникала только когда запускали через cron). В отчетах этого звена не было, поэтому их перенос был плавным и основан скорее на особенностях UI/UX дизайна.
Данная статья может быть полезна аналитикам, которые не знают, какой инструмент использовать для своих задач и думают, что писать графический интерфейс крайне сложно (спойлер, нет), а также для команд, которые устали от Zeppelin как UI-инструмента (и от Zeppelin в целом)

Как аналитики пишут UI?