AsyncIO для практикующего python-разработчика

Оригинал: ‘AsyncIO for the Working Python Developer’ by Yeray Diaz; перевод был впервые опубликован на Хабрахабре. Я помню тот момент, когда подумал «Как же медленно всё работает, что если я распараллелю вызовы?», а спустя 3 дня, взглянув на код, ничего не мог понять в жуткой каше из потоков, синхронизаторов и функций обратного вызова. Тогда я познакомился с asyncio, и всё изменилось. Если кто не знает, asyncio — новый модуль для организации конкурентного программирования, который появился в Python 3.

Получаем фотографии NASA с Марса с помощью aiohttp

Оригинал: ‘Getting Mars photos from NASA using aiohttp’ by PAWEŁ FERTYK; перевод был впервые опубликован на Хабрахабре. Я большой фанат книги «Марсианин» Энди Вейера. Читая её, мне было интересно, что же Марк Уотни чувствовал, гуляя по красной планете. Недавно наткнулся на пост на Twillo, в котором упоминалось, что у NASA есть публичный API для доступа к фотографиям с марсоходов. Так что я решил написать собственное приложение для просмотра изображений непосредственно в браузере.

Да, Python медленный, но меня это не волнует

Оригинал: ‘Yes, Python is Slow, and I Don’t Care’ by Nick Humrich; перевод был впервые опубликован на Хабрахабре. Я беру паузу в моём обсуждении asyncio в Python, чтобы поговорить о скорости Python. Позвольте представиться, я — ярый поклонник Python, и использую его везде, где только удаётся. Одна из причин, почему люди выступают против этого языка, — то, что он медленный. Некоторые отказываются даже попробовать на нём поработать лишь из-за того, что «X быстрее».

Почему print стал функцией в python 3?

Оригинал: ‘Why print became a function in Python 3’ by Brett Cannon После моего поста “Почему Python3 получился именно таким”, в котором я ответил на самые популярный вопрос почему в python 3 разделили текстовые и бинарные данные, меня попросили ответить на второй по популярности вопрос: почему в python3 print стал функцией. Кто это сделал? 🔗print как выражение 🔗В самом простом случае выражение print A является эквивалентом sys.stdout.write(str(A) + '\n'). Если вы укажите дополнительные аргументы через запятую, то они будут переданы в str() и выведены в одной строке через пробел.

Почему Python 3 получился именно таким

Оригинал: ‘Why Python 3 exists’ by Brett Cannon В этом месяце я отвечал на канале Q&A at PuPPY, что в конце концов заставило меня разобраться почему в Python3 появилось разделение по работе со строками и байтами. В итоге я получил благодарности по поводу объяснения, что несколько удивило меня, т.к. я наивно предполагал, что все знают зачем так было сделано. Хотя было бы глупо с моей стороны полагать что каждый - будь то новичок или продвинутый питонист - задавался этим вопросом и пытался найти объяснение.

Ода кешированию в Django

Как известно, есть 2 проблемы программирования: выбор имени переменной и инвалидация кеша. Вторая меня на этой неделе прям достала. Извините, наболело… Итак, кеширование - классная штука, она позволяет существенно ускорить работу приложения, но привносит свои проблемы. Главная из них - поддержание кеша в консистентном состоянии. Вроде бы ничего сложного - на сигнал post_save вешаем функцию по перерассчёту и радуемся жизни, но не всё так просто. В Django есть несколько адаптеров для работы с кешем, рассмотрим парочку из django.

Получаем данные из Википедии через SPARQL

В своей игре GeoPuzzle мне понадобились некоторые данные о странах: флаги, столицы, население… Откуда бы их взять? Наверно, с Википедии :) Задача, вроде, достаточно распространённая, так что спросим Google как это делается, авось и библиотека найдётся. Сразу бросается в глаза то, что настоятельно не рекомендуют парсить инфобоксы. Это верно - я сходу нашёл 3 разных их шаблона на 10 страницах. В одном из ответов на StackOverflow настоятельно рекомендовали использовать SPARQL. Так я узнал о том, что есть некий язык запросов для Википедии (на самом деле это реализовано в качестве плагина для MediaWiki).

Выступление на Krasnodar Dev Days о Postgres

слайды Всем привет! Postgres 🔗Да, тема большая, так что я уточнил словом «Начало». Цель моего доклада — заинтересовать вас, рассказать о преимуществах и обсудить недостатки. В конце слайдов будут ссылочки на интересный материал на мой взгляд. В основу баз данных была положена так называемая CAP-теорема. Она гласит, что для распределённых систем вы можете выбрать только 2 свойства из 3х: согласованность, доступность, партицирование. Ну это как создание сайта — выберите 2 из 3х: быстро, дёшево или качественно.

Pillow всемогущий

Рано или поздно, но всем нам приходится работать с графикой. Заказчики просят добавить ватермарки, сделать превьюшки картинок, построить графики… В мире python для этого есть библиотека Pillow, которая действительно умеет если не всё, то очень многое. Установка pillow 🔗Pillow далеко не самостоятельная библиотека, ей необходима поддержка форматов сжатия файлов. Для ubuntu как правило хватает установки следующих пакетов: $ sudo apt-get install libjpeg-dev libfreetype6-dev zlib1g-dev libpng12-dev То есть работы с jpg, png, ttf (шрифты) и gzip (нужен для некоторых форматов).

Библиотека для парсинга сайта Scrapy

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