Обновить
1024K+

Python *

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

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

Какая асинхронность должна была бы быть в Python

Время на прочтение9 мин
Охват и читатели15K
В последние несколько лет ключевое слово async и семантика асинхронного программирования проникла во многие популярные языки программирования: JavaScript, Rust, C#, и многие другие. Конечно, в Python тоже есть async/await, они появились в Python 3.5.

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

Создание системы антифрода в такси с нуля

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

Добрый день. Меня зовут Никита Башун, работаю дата-аналитиком в группе компаний «Везёт». Мой рассказ будет о том, как мы командой из трёх человек с нуля создавали систему антифрода для сервиса заказа поездок.


image

Читать дальше →

Изучаем mutmut — инструмент для мутационного тестирования на Python

Время на прочтение3 мин
Охват и читатели9.4K
Мутационное тестирование позволяет выявить баги, которые не покрыты обычными тестами.

У вас есть тесты на все случаи жизни? Или может быть, в репозитории вашего проекта даже лежит справка «О 100-процентном тестовом покрытии»? Но разве в реальной жизни всё так просто и достижимо?


Читать дальше →

Apache Airflow: делаем ETL проще

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

Привет, я Дмитрий Логвиненко — Data Engineer отдела аналитики группы компаний «Везёт».


Я расскажу вам о замечательном инструменте для разработки ETL-процессов — Apache Airflow. Но Airflow настолько универсален и многогранен, что вам стоит присмотреться к нему даже если вы не занимаетесь потоками данных, а имеете потребность периодически запускать какие-либо процессы и следить за их выполнением.


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



Что обычно видишь, когда гуглишь слово Airflow / Wikimedia Commons

Читать дальше →

Как Django может обрабатывать 100 миллионов запросов в день

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

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


Действительно, Python не очень «быстрый» язык программирования, однако он прост, удобен и люди его любят. С точки зрения производительности, он не может быть таким же быстрым, как Go или Node.js, но это становится несущественным, если рассматривать современные инфраструктуры и модульную разработку.


Поскольку я уже несколько лет варюсь в этом «котле разработки на Django», я пришел к нескольким ценным выводам, которыми собираюсь с вами поделиться.

Читать дальше →

Python в Visual Studio Code — июльский релиз

Время на прочтение3 мин
Охват и читатели8.8K
Мы рады сообщить, что июльский выпуск расширения Python уже доступен для Visual Studio Code. Вы можете загрузить расширение Python из Marketplace или установить его прямо из галереи расширений в Visual Studio Code. Если у вас уже установлено расширение Python, вы также можете получить последнее обновление, перезапустив Visual Studio Code. Вы можете узнать больше о поддержке Python в Visual Studio Code в документации.

В этом выпуске мы сделали 51 улучшение, в том числе:

  • Добавлена поддержка нового языкового сервера: Pylance
  • Gather Extension
  • Экспорт записных книжек (notebooks) в HTML и PDF
  • Обратное соединение для отладчика

Если вы заинтересованы, вы можете изучить полный список улучшений в нашем списке изменений.

Читать дальше →

У геологов свой майнкрафт: как построить то, что не знаешь, по тому, что знаешь

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

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

Читать дальше →

Динамическое определение класса в Python

Время на прочтение4 мин
Охват и читатели24K
Под динамическим определением объекта можно понимать определение во время исполнения. В отличие от статического определения, которое используется в привычном определении класса с помощью ключевого слова class, динамическое определение использует встроенный класс type.

Метакласс type


Класс type часто используется для получения типа объекта. Например так:

h = "hello"
type(h)
<class 'str'>

Но у него есть другое применение. Он может инициализировать новые типы.
Читать дальше →

Стоит ли переходить с Python на Nim ради производительности?

Время на прочтение8 мин
Охват и читатели31K
Nim — это сочетание синтаксиса Python и производительности C



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

Сначала я подумал, что отстал от жизни, что это один из распространённых языков программирования, который многие, в отличие от меня, активно используют. И тогда я решил изучить его.
Читать дальше →

Декодируем JPEG-изображение с помощью Python

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

Всем привет, сегодня мы будем разбираться с алгоритмом сжатия JPEG. Многие не знают, что JPEG — это не столько формат, сколько алгоритм. Большинство JPEG-изображений, которые вы видите, представлены в формате JFIF (JPEG File Interchange Format), внутри которого применяется алгоритм сжатия JPEG. К концу статьи вы будете гораздо лучше понимать, как этот алгоритм сжимает данные и как написать код распаковки на Python. Мы не будем рассматривать все нюансы формата JPEG (например, прогрессивное сканирование), а поговорим только о базовых возможностях формата, пока будем писать свой декодер.

Устройство CPython. Доклад Яндекса

Время на прочтение21 мин
Охват и читатели43K
Мы публикуем конспект вступительной лекции видеокурса «Бэкенд-разработка на Python». В ней Егор Овчаренко egorovcharenko, тимлид в Яндекс.Такси, рассказал о внутреннем устройстве интерпретатора CPython.


— Если кратко, какой у нас будет план? Сначала мы поговорим о том, почему будем изучать именно Python. Затем посмотрим, как работает интерпретатор CPython более глубоко, как он управляет памятью, как устроена система типов в Python, на словари, генераторы и исключения. Я думаю, это займет примерно час.
Читать дальше →

Между дизайн-системой и Server Driven UI

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

Всем привет! Меня зовут Владимир Касаткин, и я работаю бэкенд-разработчиком в компании ivi.ru, в команде "UX". Цель этой статьи — показать, как мы уменьшили объём клиентской разработки, но при этом увеличили количество проводимых A/B-тестов.


Раньше вся продуктовая разработка была разбита на большие направления ("платформы"): бэкенд, Smart TV, iOS, Android, веб. При этом фичи пилились достаточно долго (по полгода), а побочным эффектом были заметные различия внешнего вида и функционала одной и той же фичи на разных платформах.


Потом нас разбили по маленьким кросс-функциональным командам. Разработка пошла быстрее, костылей и платформенных различий на клиентах становилось всё больше.


Читать дальше →

Почему стоит начать использовать FastAPI прямо сейчас

Время на прочтение5 мин
Охват и читатели17K
Привет, Хабровчане! В преддверии старта занятий в группах базового и продвинутого курсов «Разработчик Python», мы подготовили для вас еще один полезный перевод.






Python всегда был популярен для разработки легковесных веб-приложений благодаря потрясающим фреймворкам, таким как Flask, Django, Falcon и многим другим. Из-за лидирующей позиции Python как языка для машинного обучения, он особенно удобен для упаковки моделей и предоставления их в качестве сервиса.

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

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

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

Spothiefy: как переехать из Яндекс.Музыки быстро, бесплатно

Время на прочтение5 мин
Охват и читатели81K
Итак, в июле жизнь в стране наконец стала меняться к лучшему, ведь произошло то, чего многие жители с нетерпением ждали: Spotify запущен в России и ряде других стран.

Но потоковая музыка появилась не вчера и наверняка есть такие, кто подсел на иглу Яндекса и пользуется подпиской на Яндекс.Музыку, которая впоследствии стала Яндекс.Плюсом.

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

Eсли хочется попробовать, но вам тоже лень, то я расскажу как перенести пожитки быстро, бесплатно. Нужно всего лишь немного питонов с батарейками.

Пётр и крышка спотифая
Завести трактор

Реализация ARP-спуфинга на Python

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

Введение


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

Предполагается, что Вы уже знакомы с тем, как работает ARP-протокол и его недостатком, если нет, то советую прочитать вот эту статью.

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

Как я заработал 30$ на ставках на спорт

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

Привет, Хабр! В этой статье я расскажу как я заработал на ставках на спорт, используя Python и базовую математику. Кому интересно, добро пожаловать под кат!


1

Читать дальше

Что может пойти не так с Data Science? Сбор данных

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

Сегодня существует 100500 курсов по Data Science и давно известно, что больше всего денег в Data Science можно заработать именно курсами по Data Science (зачем копать, когда можно продавать лопаты?). Основной минус этих курсов в том, что они не имеют ничего общего с реальной работой: никто не даст вам чистые, обработанные данные в нужном формате. И когда вы выходите с курсов и начинаете решать настоящую задачу — всплывает много нюансов.

Поэтому мы начинаем серию заметок «Что может пойти не так с Data Science», основанных на реальных событиях случившихся со мной, моими товарищами и коллегами. Будем разбирать на реальных примерах типичные задачи по Data Science: как это на самом деле происходит. Начнем сегодня с задачи сбора данных.

И первое обо что спотыкаются люди, начав работать с реальными данными — это собственно сбор этих самых релевантных нам данных. Ключевой посыл этой статьи:

Мы систематически недооцениваем время, ресурсы и усилия на сбор, очистку и подготовку данных.

А главное, обсудим, что делать, чтобы этого не допустить.

По разным оценкам, очистка, трансформация, data processing, feature engineering и тд занимают 80-90% времени, а анализ 10-20%, в то время как практически весь учебный материал фокусируется исключительно на анализе.

Давайте разберем как типичный пример простую аналитическую задачу в трех вариантах и увидим, какими бывают «отягчающие обстоятельства».

И для примера опять же, мы рассмотрим подобные вариации задачи сбора данных и сравнения сообществ для:

  1. Двух сабреддитов Reddit
  2. Двух разделов Хабра
  3. Двух групп Одноклассников
Читать дальше →

Трюки с переменными среды

Время на прочтение8 мин
Охват и читатели9.1K
Интересные переменные среды для загрузки в интерпретаторы скриптовых языков

Вступление


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

Практики хорошего code review, или что такое code review за 15 минут. Доклад Никиты Соболева на DUMP в Казани

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

В 2019 году на DUMP в Казани выступал Никита Соболев – технический директор компании wemake.services. И Никита на протяжении почти 40 минут пытался вскипятить мозги слушателей секции Backend, рассуждая о code review. Сегодня хотим привести расшифровку этого «взрывного» доклада, чтобы если уж мозги бурлили, то у всех сразу.


А вот, кстати, и сам Никита Соболев во время своего выступления.



Читать дальше →

PgGraph — утилита для архивации и поиска зависимостей таблиц в PostgreSQL

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

Сегодня я хочу представить читателям Хабра утилиту, написанную на Python, для работы с зависимостями таблиц в СУБД PostgreSQL.

API утилиты простое и состоит из трех методов:

  • archive_table — рекурсивная архивация/удаление строк с указанными Primary Keys
  • get_table_references — поиск зависимостей для таблицы (покажет таблицы, на которые ссылается указанная и ссылающиеся на нее)
  • get_rows_references — поиск строк в других таблицах, которые ссылаются на указанные строки в нужной таблице
Читать дальше →