Pull to refresh
79
0
Владимир Кириевский @vlakir

Python developer

Send message

SOLID — это несложно. С примерами на Python

Reading time16 min
Views33K

Привет, Хабр! Меня зовут Павел Корсаков, я python-разработчик в облачном провайдере beeline cloud.

Почти на всех собеседованиях задают вопросы про SOLID: что это такое, зачем нужен, как его применяет кандидат, как понимает принципы из него?

Мы тоже спрашиваем кандидатов про SOLID. Чаще всего они рассказывают, что SOLID — это акроним, озвучивают все его принципы, но объяснить и привести примеры могут лишь для половины. На остальных либо плавают, либо сливаются.

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

Читать далее

Mimesis: идеальное решение для генерации данных

Level of difficultyEasy
Reading time6 min
Views7.9K

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

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

Читать далее

gRPC в качестве протокола межсервисного взаимодействия. Доклад Яндекса

Reading time16 min
Views226K
gRPC — опенсорсный фреймворк для удаленного вызова процедур. В Яндекс.Маркете gRPC используется как более удобная альтернатива REST. Сергей Федосеенков, который руководит службой разработки инструментов для партнеров Маркета, поделился опытом использования gRPC в качестве протокола для построения интеграций между сервисами на Java и C++. Из доклада вы узнаете, как избежать частых проблем, если вы начинаете использовать gRPC после REST, как возвращать ошибки, реализовать трассировку, отлаживать запросы и тестировать вызовы клиентов. В конце есть неофициальная запись доклада.

— Сначала хотелось бы познакомить вас с некоторыми фактами про Яндекс.Маркет, они будут полезны в рамках доклада. Первый факт: мы пишем сервисы на разных языках. Это накладывает требования по наличию клиентов для сервисов.
Читать дальше →

Землю — крестьянам, gRPC — питонистам

Level of difficultyMedium
Reading time5 min
Views21K

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

Внутри кроется решение!

Масштабирование телеграм-ботов на примере aiogram

Level of difficultyEasy
Reading time9 min
Views14K

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

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

Читать далее

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

Level of difficultyEasy
Reading time4 min
Views14K

Привет, Хабр! Недавно я вышел на рынок вакансий и решил рассказать о том, что происходит на собеседованиях и как к ним готовиться.

Читать далее

Taichi и 100-кратное ускорение Python-кода

Reading time12 min
Views36K

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

Если вы когда-либо попадали в одну из следующих ситуация — тогда эта статья, определённо, написана для вас.

Читать далее

Архитектура программного обеспечения переоценена, простой и понятный дизайн — недооценен

Reading time10 min
Views47K
image

Вашему вниманию предлагается перевод поста Гергелия Ороса, занимающего должность Engineering Manager в Uber. В нем он делится своим взглядом на проектирование крупномасштабных систем, основанном на собственном практическом опыте работы в Uber и Microsoft. В сочетании с комментариями на Hacker News, которые добавляют весомые контр-аргументы и дополняют точку зрения автора, его статья стала одним из самых интересных постов недели. В статье используется термин «дизайн кода» для сравнения с традиционной «архитектурой» — о нем подробнее можно прочитать здесь.

На мою долю выпало достаточно опыта в проектировании и создании крупномасштабных систем. Я принимал участие в переписывании распределенной системы платежей в Uber, проектировании и релизе Skype на Xbox One и выпуске в открытый доступ RIBs — мобильного архитектурного фреймворка, созданного в Uber. Все эти системы имели тщательно продуманный дизайн, прошли через несколько итераций, с ними связано множество совещаний, проведенных у маркерной доски, и других обсуждений. Затем придуманный дизайн сводился к дизайн-документу, который распространялся среди других разработчиков для сбора дополнительной обратной связи, который продолжался до тех пор, пока мы не переходили к разработке.

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

Пишем и тестируем миграции БД с Alembic. Доклад Яндекса

Reading time20 min
Views92K
Приложения на бэкенде могут работать с самыми разными базами данных: PostgreSQL, SQLite, MariaDB и другими. Перед разработчиками встает задача реализовать возможность легко и безопасно изменять состояние БД. Менять нужно как структуру базы, так и сами данные от одной версии приложения к другой.


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

Python Testing с pytest. Начало работы с pytest, Глава 1

Reading time24 min
Views222K

Вернуться Дальше


Я обнаружил, что Python Testing с pytest является чрезвычайно полезным вводным руководством к среде тестирования pytest. Это уже приносит мне дивиденды в моей компании.

Chris Shaver
VP of Product, Uprising Technology


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

Асинхронный python без головной боли (часть 2)

Reading time9 min
Views66K

Продолжаем вкусно готовить asyncio

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

Выпей меня

Сказ о том, как мы Python-микросервисы для облака шаблонизировали

Reading time12 min
Views9.2K

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

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

Меня зовут Олег Чуркин. Я больше 10 лет занимаюсь разработкой на Python и сейчас руковожу разработкой нового процессинга платежей в QIWI. Расскажу, как мы реализовали boilerplate-шаблон для сервисов — на примере небольшого стартапа внутри нашей большой компании.

Читать далее

Учимся квантовому программированию с помощью примеров. Доклад Яндекса

Reading time12 min
Views32K
Сегодня любой желающий может воспользоваться методами квантового программирования, написать простой код на Python и запустить его на реальном квантовом вычислителе. Ришат Ибрагимов rishat_ibrahimov разобрал основы квантовых вычислений на примерах с кодом, показал, как запускать программы на локальном симуляторе и удаленном квантовом компьютере.


— Всем привет, меня зовут Ришат. Я почти три года работаю над качеством поиска Яндекса. Но поговорить сегодня хочу не о работе, а о том, чем я занимаюсь в свободное время. Занимаюсь я квантовой информатикой, а на самом деле — самыми разными моделями вычислений, в том числе квантовыми.
Читать дальше →

Вычисление определённых интегралов: базовые алгоритмы

Reading time13 min
Views99K

image
В этой публикации описаны простейшие методы вычисления интегралов функций от одной переменной на отрезке, также называемые квадратурными формулами. Обычно эти методы реализованы в стандартных математических библиотеках, таких как GNU Scientific Library для C, SciPy для Python и других. Публикация имеет целью продемонстрировать, как эти методы работают "под капотом", и обратить внимание на некоторые вопросы точности и производительности алгоритмов. Также хотелось бы отметить связь квадратурных формул и методов численного интегрирования обыкновенных дифференциальных уравнений, о которых хочу написать ещё одну публикацию.

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

Как посчитать синус быстро

Reading time13 min
Views23K

... и точно. Точнее, с заданной точностью, простите за каламбур.

Под катом я расскажу, как сделать это с использованием школьного курса алгебры и целочисленной арифметики, при чём здесь полиномы Чебышёва I-го рода, и дам ссылки на примеры реализаций для ПК и Cortex-M3.

Читать далее

Проект Лунного микроспутника готов! Что дальше?

Reading time3 min
Views11K

В 2015 году я предложил спроектировать космический аппарат для фотосъемки следов американцев на Луне. На эту работу 1232 человека в сумме скинулись на 1,75 млн руб. Пять с половиной лет ушло на поиск оптимальной конструкции и расчеты всех обстоятельств полёта. В июне 2021-го мы завершили проектирование Лунного микроспутника, провели презентацию, и спонсоры проекта получили итоговый документ с техническим описанием проекта. Что же дальше?

Читать далее

Как объединить 5 языков программирования в одном Python проекте?

Reading time7 min
Views35K

На сегодняшний день существует несколько тысяч языков программирования, каждый из которых создавался с определенной целью, пытаясь изменить и улучшить недостатки своих предшественников. Так, например, появился язык Kotlin, который был нацелен на замену Java в мобильной разработке. В 2010 году увидел свет язык Rust, разработчики которого пытались создать быстрый и безопасный язык, который закрывал бы многие недостатки C/C++.

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

Но как объединить несколько разных языков в одном приложение, чтоб это работало?

Ознакомиться

Софт для SpaceX (интервью с разработчиками)

Reading time9 min
Views7.2K
image


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

От закупки и получения сырья, создания и выполнения рабочих заказов для создания космических аппаратов, отслеживания качества и управления изменениями, внедрения процедур для запуска ракеты — система должна быть достаточно надежной, чтобы справиться с производством и запуском Falcon 9. Эта ракета может доставлять грузы или людей на Международную космическую станцию или доставлять спутники на орбиту; надежность является первостепенной задачей.

«Одним из примеров нашего применения является система управления деталями, которая говорит, что определенная деталь существует на заводе. Она была изготовлена. Где же она находится? Наша система помогает этой детали переместиться в то место, где она должна быть, чтобы ракеты строились как можно эффективнее. Другой пример — управление изменениями и отслеживание дефектов. Мы должны тщательно отслеживать, как детали связаны друг с другом и как дефекты или изменения в одной конструкции будут отражаться на всех остальных деталях ракеты», — объясняет Роуз.
Читать дальше →

Балансирующий робот на Arduino Nano и шаговых моторах

Reading time5 min
Views24K

Моя версия популярного балансирующего робота. Для тех, кто хочет разобраться в математике, железе и алгоритме стабилизации.

Читать далее

Мониторинг сервисов с Prometheus

Reading time10 min
Views178K
Prometheus

В предыдущих публикациях мы уже затрагивали вопросы мониторинга и сбора метрик. В сегодняшней статье мы хотели бы вернуться к этой теме и рассказать об интересном инструменте под названием Prometheus. Он был создан в 2012 году в качестве внутренней системы мониторинга небезызвестного проекта SoundCloud, но впоследствии получил более широкое распространение.
Читать дальше →
1

Information

Rating
Does not participate
Location
Новочеркасск, Ростовская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Middle
Python
SQL
High-loaded systems
Git
Docker
PostgreSQL
MySQL
OOP
MongoDB