Как стать автором
Обновить
71
0
Владимир Кириевский @vlakir

Python developer

Отправить сообщение

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

Время на прочтение16 мин
Количество просмотров31K

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

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

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

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

Читать далее
Всего голосов 24: ↑19 и ↓5+15
Комментарии43

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

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

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

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

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии3

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

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

— Сначала хотелось бы познакомить вас с некоторыми фактами про Яндекс.Маркет, они будут полезны в рамках доклада. Первый факт: мы пишем сервисы на разных языках. Это накладывает требования по наличию клиентов для сервисов.
Читать дальше →
Всего голосов 28: ↑24 и ↓4+30
Комментарии12

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

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

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

Внутри кроется решение!
Всего голосов 14: ↑12 и ↓2+14
Комментарии30

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

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

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

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

Читать далее
Всего голосов 14: ↑10 и ↓4+9
Комментарии16

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

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

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

Читать далее
Всего голосов 11: ↑9 и ↓2+18
Комментарии4

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

Время на прочтение12 мин
Количество просмотров35K

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

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

Читать далее
Всего голосов 53: ↑53 и ↓0+53
Комментарии5

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

Время на прочтение10 мин
Количество просмотров47K
image

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

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

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

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

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


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

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

Время на прочтение24 мин
Количество просмотров206K

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


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

Chris Shaver
VP of Product, Uprising Technology


Читать дальше →
Всего голосов 31: ↑22 и ↓9+13
Комментарии2

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

Время на прочтение9 мин
Количество просмотров55K

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

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

Выпей меня
Всего голосов 11: ↑10 и ↓1+11
Комментарии17

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

Время на прочтение12 мин
Количество просмотров8.9K

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

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

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

Читать далее
Всего голосов 27: ↑26 и ↓1+33
Комментарии8

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

Время на прочтение12 мин
Количество просмотров30K
Сегодня любой желающий может воспользоваться методами квантового программирования, написать простой код на Python и запустить его на реальном квантовом вычислителе. Ришат Ибрагимов rishat_ibrahimov разобрал основы квантовых вычислений на примерах с кодом, показал, как запускать программы на локальном симуляторе и удаленном квантовом компьютере.


— Всем привет, меня зовут Ришат. Я почти три года работаю над качеством поиска Яндекса. Но поговорить сегодня хочу не о работе, а о том, чем я занимаюсь в свободное время. Занимаюсь я квантовой информатикой, а на самом деле — самыми разными моделями вычислений, в том числе квантовыми.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+16
Комментарии6

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

Время на прочтение13 мин
Количество просмотров95K

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

Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии39

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

Время на прочтение13 мин
Количество просмотров22K

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

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

Читать далее
Всего голосов 38: ↑36 и ↓2+50
Комментарии53

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

Время на прочтение3 мин
Количество просмотров11K

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

Читать далее
Всего голосов 51: ↑47 и ↓4+58
Комментарии131

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

Время на прочтение7 мин
Количество просмотров33K

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

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

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

Ознакомиться
Всего голосов 18: ↑17 и ↓1+17
Комментарии10

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

Время на прочтение9 мин
Количество просмотров7.1K
image


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

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

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

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

Время на прочтение5 мин
Количество просмотров23K

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

Читать далее
Всего голосов 64: ↑64 и ↓0+64
Комментарии23

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

Время на прочтение10 мин
Количество просмотров171K
Prometheus

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

Информация

В рейтинге
Не участвует
Откуда
Новочеркасск, Ростовская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

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