Pull to refresh
-5
@andmerk93read⁠-⁠only

User

Send message

Как создавать красивые карты с помощью Python

Reading time4 min
Views24K
Мне всегда нравились карты городов, и несколько недель назад я решил создать свою собственную, художественную версию. Немного погуглив, я обнаружил крутое руководство, написанное Фрэнком Себальосом. Оно увлекательно и полезно, но я предпочитаю более подробные/реалистичные карты-схемы. Из-за этого я решил создать свою собственную версию карт. Итак, давайте посмотрим, как мы можем создавать красивые карты с помощью Python и данных OpenStreetMap.

Приятного чтения!

Подробная анатомия простого плагина для XBMC

Reading time20 min
Views33K

Предисловие


Похожая статья на Хабре уже публиковалась, но в ней основное внимание было уделено парсингу сайта с видео — так сказать, бизнес-логике плагина, а вопросы взаимодействия с XBMC затронуты вскользь. Я же хочу рассказать о том, что превращает скрипт на языке Python (далее — Питон) в плагин XBMC.
Читать дальше →

Построение пайплайна обработки данных в реальном времени с использованием Python

Level of difficultyHard
Reading time11 min
Views9.5K

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

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

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

Читать далее

Github Actions. Простой пример для уверенного знакомства

Reading time7 min
Views60K

Здесь я буду расссказывать о моем опыте настройки CI/CD c помощью GitHub Actions.

Эта статья поможет тем, кто хочет настроить автоматический деплой для личного/учебного проекта на свой удаленный сервер, пользуясь бесплатным сервисов GitHub Actions. Причем этим сервисом можно пользоваться бесплатно даже с приватным репозиторием (на момент написания статьи).

Акцентирую на тех моментах, которые для меня оказались не самыми очевидными, читая краткое руководство от Github.

Предполагается, что вы уже знаете, как пользоваться Github. По большому счету, не важно, какой у вас язык программирования или стек: главное - понять, как работают Github Actions и уметь применить его для любого проекта.

Читать далее

Слезаем с иглы Siemens: промышленная вентиляция бассейна и спортивного комплекса

Level of difficultyEasy
Reading time14 min
Views11K

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

Из‑за закрытой экосистемы доработка стала невозможной, было принято решение переходить на автоматизацию российского производителя.

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

Также мы рассмотрим и масштабирование: отличаются ли принципы работы промышленной вентиляции от домашних систем?

Читать далее

JAMstack — зачем, почему и за что

Reading time9 min
Views16K

Доброго времени суток. 

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

Читать далее

Вся правда об ОСРВ от Колина Уоллса

Reading time9 min
Views21K
Вся правда об ОСРВ. Статья #1.

Операционные системы реального времени: введение

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

Заглянув во внутрь ОСРВ, мы посмотрим, как работает планировщик задач. Благодаря многопоточности создается впечатление, что ЦП выполняет несколько операций одновременно. Это не магия, понимание принципов работы планировщика задач доступно даже неопытному инженеру-программисту. Мы поговорим и о других объектах ОСРВ: о взаимодействии между задачами и синхронизации, о режиме реального времени, об управлении памятью и т. д., все будет точно описано и подкреплено примерами кода.
Читать дальше →

Кто отвечает за развитие Python

Level of difficultyEasy
Reading time6 min
Views6.9K

Начиная с первой версии Python, развитием языка занимался его создатель — голландский программист Гвидо ван Россум, нареченный в рамках языка неофициальным, но очень солидным для open-source сообщества титулом Benevolent Dictator for Life (BDFL), что можно перевести как Бессрочный Великодушный Диктатор. По мере усложнения Python всё большую роль в его развитии стало играть комьюнити, и в июле 2018 года Гвидо отказался от титула. Начиная с версии 3.8, за будущее Python отвечает руководящий совет в составе нескольких известных разработчиков. В этом посте мы подробней расскажем о том, кто и как направляет развитие одного из главных языков программирования в современном мире.

Читать далее

Введение в асинхронное программирование на Python

Reading time8 min
Views65K
Всем привет. Подготовили перевод интересной статьи в преддверии старта базового курса «Разработчик Python».




Введение


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



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

Асинхронные задачи с FastAPI и Celery

Level of difficultyEasy
Reading time10 min
Views32K

Если в приложении есть длительные процессы, то вместо того, чтобы блокировать основной поток, вы должны обрабатывать их в фоновом режиме.

Чтобы достичь этого, мы расскажем вам о процессе настройки Celery и Redis для обработки длительно выполняющихся процессов в приложении FastAPI. Мы также будем использовать Docker и Docker Compose, чтобы связать все воедино. Наконец, мы рассмотрим, как протестировать задачи Celery с помощью модульных (unit) и интеграционных тестов.

Читать далее

Как подружить Celery и SqlAlchemy 2.0 с асинхронным Python

Level of difficultyMedium
Reading time3 min
Views11K

Недавно, я столкнулся с задачей, когда с проекта на Python нужно было стряхнуть пыли и заставить работать чуточку производительнее. В следствии чего монолит был распилен на микросервисы, а брокером между сервисами стали всем знакомый RabbitMQ и такой же старый как сам Python - Celery. Проект был перенесен с Django на FastAPI, который по-моему субъективному мнению является идеальным решением для любых бэкендов на Python. Проблема с которой я столкнулся во время подключения Celery описана в данном посте.

Читать далее

Celery: проясняем неочевидные моменты

Reading time8 min
Views91K

Да, действительно, в этом посте не будет гайда, как поднять Celery в Django. Это статья для тех, кто уже пощупал Celery и хочет погрузиться в детали.

Мотивацией перевести эту статью были следующие вопросы, на которые я не знал ответа: при запуске создается процесс или поток? В какую очередь попадают отложенные задачи с ETA? А какие бывают очереди (спойлер: она не одна)? А в какой момент задача удаляется из очереди? Если я создам задачу с ETA=завтра_в_12:00, она ровно в этот момент и выполнится (спойлер: нет)?

Ответы на все эти вопросы в статье, велком!

Запустить таску

Парсинг для взрослых или Инфраструктура для промышленного парсинга

Reading time7 min
Views19K

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

Читать далее

3 кейса для использования Celery в Django-приложении

Reading time4 min
Views33K
image

Я занимаюсь созданием веб-приложений на Django. В основном, это SaaS сервисы для бизнеса. Во всех этих приложениях есть необходимость в асинхронных задачах. Для их реализации использую Celery. В статье расскажу о ситуациях, в которых применяю Celery, с примерами кода.
Читать дальше →

Миграция приложения из Docker Compose в Kubernetes. Как, зачем и с какими проблемами я столкнулся

Reading time25 min
Views26K

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

Стоявшая передо мной задача: улучшить инфраструктуру и качество работы приложения, успевшего вырасти из MVP и стенда для одного клиента в популярный SaaS. Отсутствие отказоустойчивости и масштабируемости компонентов сервиса начало ощутимо мешать пользователям. Настала пора адаптировать приложение под кластерный режим.

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

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

Читать далее

50 оттенков Celery

Reading time18 min
Views60K
Вам сюда, если хотите знать, как приручить широкоизвестный в кругах Python-разработчиков фреймворк под названием Сelery. И даже, если в вашем проекте Celery уверенно выполняет базовые команды, то финтех опыт может открыть вам неизведанные стороны. Потому что финтех — это всегда Big Data, а с ней и необходимость фоновых задач, пакетной обработки, асинхронного API и т.д.


Прелесть рассказа Олега Чуркина про Celery на Moscow Python Conf ++ помимо подробных инструкций, как настроить Celery под нагрузку и как его мониторить, в том, что можно позаимствовать полезные наработки.


О спикере и проекте: Олег Чуркин (Bahusss) 8 лет разрабатывает Python-проекты разной сложности, работал в многих известных компаниях: Яндексе, Рамблере, РБК, Лаборатории Касперского. Сейчас техлид в финтех-старапе StatusMoney.

Как Philips изменили мир музыки. История аудиокассет

Level of difficultyEasy
Reading time13 min
Views11K

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

Ровно 60 лет назад в Берлине на выставке IFA (Internationale Funkausstellung Berlin) произошла самая настоящая революция, полностью изменившая наш мир: компания Philips в 1963 году представила первую аудиокассету привычного нам формата Compact Cassette, а вместе с ней — первый портативный аудиопроигрыватель кассет EL 3300. Творение голландского инженера Лу Оттенса навсегда изменило индустрию музыки и не только — его кассеты применялись на заре массовой компьютеризации в качестве накопителя информации как альтернатива дискетам. В 1970-е годы недорогая и надёжная аудиокассета имела большой успех: молодёжь теперь могла легко записывать хиты с радио и составлять микстейпы. В 1980-х годах популярность кассет еще больше возросла благодаря появлению портативных карманных магнитофонов, таких как Sony Walkman. До появления в конце 1990-х годов CD-дисков и цифрового формата MP3 аудиокассета оставалась преобладающим носителем записи.
Читать дальше →

Как научиться разработке на Python: новый видеокурс Яндекса

Reading time6 min
Views256K
Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.

Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.
Читать дальше →

Инструменты Domain Driven Design

Reading time11 min
Views27K
Синий кит — отличный пример того, как проектирование сложного проекта пошло не по плану. Кит внешне похож на рыбу, но он млекопитающее: кормит детенышей молоком, у него есть шерсть, а в плавниках до сих пор сохранились кости предплечья и кистей с пальцами, как у сухопутных. Он живет в океанах, но не может дышать под водой, поэтому регулярно поднимается на поверхность глотнуть воздуха, даже когда спит. Кит самое большое животное в мире, длиной с девятиэтажный дом, а массой как 75 автомобилей Volkswagen Touareg, но при этом не хищник, а питается планктоном.

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



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

Что такое DDD и какие инструменты в нем есть, мы расскажем в статье на основе доклада Артема Малышева. Подход DDD в Python, инструменты, подводные камни, контрактное программирование и проектирование продукта вокруг решаемой проблемы, а не используемого фреймворка — все это под катом.

Information

Rating
Does not participate
Registered
Activity

Specialization

Инженер АСУТП
SQL
Python
Network administration
System administration
Server administration
PLC
PLC programming
SCADA
APCS