Оригинал: ‘AsyncIO for the Working Python Developer’ by Yeray Diaz; перевод был впервые опубликован на Хабрахабре.
Я помню тот момент, когда подумал «Как же медленно всё работает, что если я распараллелю вызовы?», а спустя 3 дня, взглянув на код, ничего не мог понять в жуткой каше из потоков, синхронизаторов и функций обратного вызова.
Тогда я познакомился с asyncio, и всё изменилось.
Если кто не знает, asyncio — новый модуль для организации конкурентного программирования, который появился в Python 3.
Оригинал: ‘Getting Mars photos from NASA using aiohttp’ by PAWEŁ FERTYK; перевод был впервые опубликован на Хабрахабре.
Я большой фанат книги «Марсианин» Энди Вейера. Читая её, мне было интересно, что же Марк Уотни чувствовал, гуляя по красной планете. Недавно наткнулся на пост на Twillo, в котором упоминалось, что у NASA есть публичный API для доступа к фотографиям с марсоходов. Так что я решил написать собственное приложение для просмотра изображений непосредственно в браузере.
Оригинал: ‘Yes, Python is Slow, and I Don’t Care’ by Nick Humrich; перевод был впервые опубликован на Хабрахабре.
Я беру паузу в моём обсуждении asyncio в Python, чтобы поговорить о скорости Python. Позвольте представиться, я — ярый поклонник Python, и использую его везде, где только удаётся. Одна из причин, почему люди выступают против этого языка, — то, что он медленный. Некоторые отказываются даже попробовать на нём поработать лишь из-за того, что «X быстрее».
Оригинал: ‘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() и выведены в одной строке через пробел.
Оригинал: ‘Why Python 3 exists’ by Brett Cannon
В этом месяце я отвечал на канале Q&A at PuPPY, что в конце концов заставило меня разобраться почему в Python3 появилось разделение по работе со строками и байтами. В итоге я получил благодарности по поводу объяснения, что несколько удивило меня, т.к. я наивно предполагал, что все знают зачем так было сделано. Хотя было бы глупо с моей стороны полагать что каждый - будь то новичок или продвинутый питонист - задавался этим вопросом и пытался найти объяснение.
Как известно, есть 2 проблемы программирования: выбор имени переменной и инвалидация кеша. Вторая меня на этой неделе прям достала. Извините, наболело… Итак, кеширование - классная штука, она позволяет существенно ускорить работу приложения, но привносит свои проблемы. Главная из них - поддержание кеша в консистентном состоянии. Вроде бы ничего сложного - на сигнал post_save вешаем функцию по перерассчёту и радуемся жизни, но не всё так просто. В Django есть несколько адаптеров для работы с кешем, рассмотрим парочку из django.
В своей игре GeoPuzzle мне понадобились некоторые данные о странах: флаги, столицы, население… Откуда бы их взять? Наверно, с Википедии :) Задача, вроде, достаточно распространённая, так что спросим Google как это делается, авось и библиотека найдётся. Сразу бросается в глаза то, что настоятельно не рекомендуют парсить инфобоксы. Это верно - я сходу нашёл 3 разных их шаблона на 10 страницах. В одном из ответов на StackOverflow настоятельно рекомендовали использовать SPARQL. Так я узнал о том, что есть некий язык запросов для Википедии (на самом деле это реализовано в качестве плагина для MediaWiki).
слайды
Всем привет!
Postgres 🔗Да, тема большая, так что я уточнил словом «Начало». Цель моего доклада — заинтересовать вас, рассказать о преимуществах и обсудить недостатки. В конце слайдов будут ссылочки на интересный материал на мой взгляд.
В основу баз данных была положена так называемая CAP-теорема. Она гласит, что для распределённых систем вы можете выбрать только 2 свойства из 3х: согласованность, доступность, партицирование. Ну это как создание сайта — выберите 2 из 3х: быстро, дёшево или качественно.
Рано или поздно, но всем нам приходится работать с графикой. Заказчики просят добавить ватермарки, сделать превьюшки картинок, построить графики… В мире python для этого есть библиотека Pillow, которая действительно умеет если не всё, то очень многое.
Установка pillow 🔗Pillow далеко не самостоятельная библиотека, ей необходима поддержка форматов сжатия файлов. Для ubuntu как правило хватает установки следующих пакетов:
$ sudo apt-get install libjpeg-dev libfreetype6-dev zlib1g-dev libpng12-dev То есть работы с jpg, png, ttf (шрифты) и gzip (нужен для некоторых форматов).
Рано или поздно перед каждым разработчиком встаёт задача что-нибудь стянуть с какого-нибудь сайта :) На этот раз я улетал туда, где интернета не было, так что хотел получить некую оффлайновую копию информации с сайта. Сам я не поощряю такие вещи (всё-таки авторы приложили немало усилий для наполнения контентом), но один разочек исключительно для личных нужд можно :) В интернете есть куча библиотек для парсинга сайтов, но я бы хотел найти реализацию на питоне.