Обновить
1024K+

Python *

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

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

Тестовые серверы Telegram: инструкция по эксплуатации

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

Про разработку ботов в Telegram написано много текстов, а про «тестовый дата-центр» практически ничего. Ранее @Pavelgram освещал этот вопрос: он кратко рассказал, что такое тестовые серверы и как с ними работать. Я продолжу это начинание.

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

Функциональное программирование в Python: ежедневные рецепты

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели21K
Как говорится, спроси пять программистов, что такое функциональное программирование, получишь шесть разных ответов. В целом это программирование через функции в их математическом понимании, то есть когда функция принимает что-то на вход и что-то возвращает на выходе, не меняя глобального состояния.

В своей команде — команде разработки инструментов для разработчиков под KasperskyOS — мы создаем разные интересные консольные утилиты, эмулятор, обеспечиваем интеграцию с IDE и так далее. И для этого мы используем разные языки — C++, C, TypeScript; но больше всего пишем на Python.



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

Apache Spark и PySpark для аналитика. Учимся читать и понимать план запроса в SparkUI

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

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

Читать далее

Пишем АПИ автотесты на Python по шагам

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

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

Читать далее

Извлечение текста из файлов PDF при помощи Python

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

▍ Введение


В эпоху больших языковых моделей (Large Language Model, LLM) и постоянно расширяющейся сферы их применений непрерывно растёт и важность текстовых данных.

Существует множество типов документов, содержащих подобные виды неструктурированной информации, от веб-статей и постов в блогах до рукописных писем и стихов. Однако существенная часть этих данных хранится и передаётся в формате PDF. В частности, выяснилось, что за каждый год в Outlook открывают более двух миллиардов PDF, а в Google Drive и электронной почте ежедневно сохраняют 73 миллионов новых файлов PDF (2).

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

Детекция дефектов дорожного покрытия без размеченных данных: Хакатон, LiDAR, RANSAC, ICP и 44 бесcонных часов

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

Здравствуйте, читатели Хабра! Решил активнее вкатываться в DS (хотя уже больше года в "теме" и даже нет ни одной публикации, ужас) и написать первую статью на Хабре.

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

Читать далее

Преобразование markdown в pdf на Python

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

Каждому, кто ходил извилистой тропкой автоматической генерации pdf из markdown файлов ведомы связанные с этой задачей пеньки решения: Pandoc, LaTex, wkhtmltopdf и т.п.

Хочу поделиться с сообществом новым (по крайней мере для меня) вариантом решения этой задачи в Python.

Этот вариант имеет следующие плюсы.

Читать далее

Как «продать» OSS Framework? Propan -> FastStream

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

Привет, Habr! Возможно, кто-то меня даже помнит: совсем недавно я создал Python Framework для асинхронных приложений - Propan.

Два месяц назад я делился с вами прогрессом и говорил, что работа над PropanV2 активно ведется. И вот, она завершена. Вот только вместо PropanV2 свет увидел немного другой фреймворк - FastStream, разработкой которого занимался уже не только я, а целая команда AirtAI.

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

Ну что опять?

FIFO очередь asyncio в Python

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

Очереди в Asyncio могут быть полезны для создания программ, в которых используются паттерны производитель-потребитель, где одна или несколько корутин производят элементы и помещают их в очередь, а одна или несколько корутин потребляют элементы и обрабатывают их из очереди.

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

Читать далее

Тестируем API в Таверне

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

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

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

Читать далее

Проектирование высокопроизводительных кэширующих решений с использованием Redis и Memcached

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

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

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

Redis и Memcached – два из самых популярных и мощных инструментов для реализации кэширования. Redis, изначально разработанный как in-memory хранилище данных, позволяет эффективно хранить и быстро извлекать информацию в памяти, что делает его идеальным выбором для кэширования. Memcached, с другой стороны, специализируется исключительно на кэшировании данных и предоставляет простой, но мощный способ ускорить доступ к данным.

Читать далее

Протоколы семейства TCP/IP. Теория и практика

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

В сети можно найти огромное количество материала о том, как функционируют сети на базе стека протоколов TCP/IP, а также как писать компьютерные программы с сетевыми возможностями. При рассмотрении компьютерных сетей часто углубляются в описание физических основ и структур данных, передаваемых по сети, а при рассмотрении сетевого программирования основное внимание уделяют интернет-сокетам.

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

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

Приложение — простое и понятное и, надеюсь, упростит изучение материалов статьи. Ведь именно радость первой победы даёт мотивацию, достаточную для того, чтобы потратить гораздо больше времени на изучение темы.

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

Год ожиданий — и мы получили Python 3.12. Изменения, новшества и дополнения

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

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

Кроме того, запущен процесс альфа-тестирования Python 3.13, где заявлен режим сборки CPython без глобальной блокировки интерпретатора (GIL, Global Interpreter Lock). Тестировать ветку будут в течение семи месяцев, исправляя ошибки и добавляя новые возможности. Затем еще три месяца — тестирование бета-версий и еще через два месяца появится пред-финальная версия. Но будет потом, а сейчас поговорим о том, что уже есть в руках — о Python 3.12.
Читать дальше →

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

Создание рекомендательных систем на основе анализа поведения пользователей на сайте

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

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

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

Читать далее

Создание рекомендательных систем с использованием библиотеки Surprise

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

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

Surprise - это мощный инструмент, предоставляющий широкий набор алгоритмов и инструментов для построения и оценки рекомендательных систем. Эта библиотека основана на Python, является простой в использовании и гибкой в применение, что делает ее прекрасным выбором для как начинающих, так и опытных разработчиков.

Читать далее

Объединение открытых данных Open Street Map и Landsat для уточнения площадей зеленых зон

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

Привет, Хабр! Под катом мы хотели бы поговорить о том какие преимущества привносит в нашу жизнь объединение пространственных данных из различных открытых источников. Рассматривать, для примера, будем следующую задачу: оценить насколько в “зеленом” районе расположен тот или иной объект недвижимости. Без долгих предисловий - переходим к делу!

Ну и что там еще с OSM можно делать?

Создание консольной игры Супер Ним на Python

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

Приветствую всех хабровчан! Я являюсь студенткой Финансового Университета при Правительстве РФ и обучаюсь на направлении Прикладная математика и информатика. Сегодня мне хотелось бы поделиться своим туториалом для изучающих Python с нуля. Идея для создания этой статьи появилась на паре практикума по программированию, где данная задача была проектом для сдачи. Если этот туториал зайдет, то будут следующие выпуски.

В этом уроке мы напишем несложную консольную игру Супер Ним по следующим правилам:

На шахматной доске в некоторых клетках случайно разбросаны фишки или пуговицы. Игроки ходят по очереди. За один ход можно снять все фишки с какой-либо горизонтали или вертикали, на которой они есть. Выигрывает тот, кто заберет последние фишки.

В нашем случае примем за фишки/пуговицы единицы, а пустые клетки станут нулями. Создадим шахматную доску при помощи списков и random:

Читать далее

Вы кто такие, я вас не знаю, или Как мы делаем JWT-аутентификацию

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

Привет! Меня зовут Данил, я backend-разработчик в Doubletapp. Почти во всех наших проектах есть пользователи, которые могут войти в систему. А значит, нам почти всегда нужна авторизация. Мы используем авторизацию, построенную на JSON Web Token. Она отлично сочетает в себе простоту реализации и безопасность для приложений.

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

Путеводитель:

Что такое JSON Web Token?
Использование и реализация
Простая реализация JWT
Access и refresh tokens
Как отозвать токены
Доступ с нескольких устройств
Удаление старых данных
Резюмируем

Читать далее

Hadoop в любой непонятной ситуации. Как выжить кластеру в большой ML команде

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

Привет, Habr !

Я работаю инженером по машинному обучению в Мегафоне. Занимаюсь аналитикой данных и являюсь частью команды разработки MLOps платформы. Задача нашей команды состоит в том, чтобы выстраивать и оптимизировать процессы разработки и продуктивизации моделей машинного обучения, предоставлять функционал для основных этапов (сбор данных, MQ/DQ, продуктивизация).

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

Видеозапись по мотивам статьи можно посмотреть здесь.

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

Читать далее

Многопоточность в Python: очевидное и невероятное

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

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

Изначально я планировал что это будет простая и короткая заметка, но пока готовил и тестировал код нашел интересный неочевидный момент связанных с внутренностями CPython, так что не спешите закрывать вкладку, даже если вы уверены что вы знаете о потоках в Python всё :)

Читать далее