Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
Снова про пайчарм (и другие редакторы на основе IDEA). А вы знали, что оно умеет автодополнять тэги образов с Docker Hub? Мелочь, а приятно.
Каждый раз, когда в терминале макоси набираешь python вместо python3

#meme
Там, кстати, PyCon Russia 2021 через полтора месяца собирается произойти. Если вдруг что, имейте ввиду. Событие оффлайновое, Московская область. Обещают, что состоится в любом случае.

В программе есть интересные доклады. Например, Никиту Соболева я бы послушал. Ну ничего, через пару-тройку лет как раз моя очередь просмотра выступлений доползёт до 2021 года, и посмотрю на ютубе 😅

https://pycon.ru/program
Рантайм Python 2.7 теперь официально депрекейтнут в AWS Lambda. Что это значит?

* Больше нельзя создавать новые функции на питоне 2.7 (проверил в веб-интерфейсе — и правда, такого рантайма просто нет в списке).
* Больше не будет патчей и обновлений. Тех.поддержка будет вас игнорировать, если спрашивать про этот рантайм. Дальше каждый сам за себя.
* Обновлять код существующих функций можно будет еще до 30 сентября. После этого нельзя будет ни создавать, ни обновлять, но всё ещё можно будет запускать.

https://aws.amazon.com/blogs/compute/announcing-end-of-support-for-python-2-7-in-aws-lambda/
Судя по этому рейтингу, много людей всё ещё гоняет свои функции на Python 2.7. Даже больше, чем на Java и Go. Что ж, теперь их и без того полная невзгод и тягот жизнь станет ещё чуточку сложнее. Сочувствую, но не от всего сердца.

https://www.datadoghq.com/state-of-serverless/#8
А вы используете make и Makefile в ваших проектах на питоне? Если нет, то где вы описываете ваши служебные скрипты?

https://venthur.de/2021-03-31-python-makefiles.html
Если вдруг кто совсем не вдупляет (я и сам пока не до конца вдупляю), что это за AWS Lambda и идеология серверлесс в целом, про которые я там выше упоминал, могу порекомендовать вот этот курс:

AWS Serverless APIs & Apps - A Complete Introduction

Автор Maximilian Schwarzmüller — офигенный чувак. По-моему, самый топовый лектор на Udemy. Когда-то смотрел его курсы по фронтендовым React и Vue, но, как выяснилось, он делает курсы на различные айтишные темы (в том числе есть курсы и про Python). Всегда всё красиво и понятно подано, забавные примеры. Курсы на английском, но воспринимается легко.

Кстати, не покупайте курсы на Udemy за дорого. Если вдруг вам показывает цену 7-10к рублей, то дождитесь распродажи (оно раз в месяц там точно случается), и купите потом за 1к.
JetBrains опубликовали результаты своего исследования экосистемы разработки за 2021 год.

Кроме ключевых результатов, которые на скриншоте, мне показалось интересным еще вот это:

* 53% питонистов занимаются веб-разработкой, и лишь 31% занимаются дата саенсом и машин лёрнингом (это всё равно заметно больше, чем в других экосистемах).
* О миграции на Python задумываются в основном программисты на языках, задействованных в веб-разработке (JS, TS, PHP, SQL). Питонисты же интересуются миграцией на Go, Kotlin, TS и Rust.
* Гоферы сильнее всего интересуются Rust.
* В Индии самым популярным языком является Python. Да, даже популярнее C++, вопреки распространённым мифам.
* В азиатских странах (Китай, Южная Корея) много джавистов, а в Турции C# заметно популярнее других языков.
* В США средние зарплаты в ~2 раза выше, чем в Канаде и Англии, и в ~5 раз выше, чем в РФ.
* В свободное время программисты больше всего любят играть в видеоигры и программировать. Мы за ЗОЖ (задротский образ жизни), так держать!

#jetbrains
В том же исследовании была часть для тех, кто указал Python основным языком. Это намного беднее отдельного исследования про питонистов, которое тоже проводит JetBrains (самые свежие результаты есть за 2020 год). Всё равно интересные данные.

#jetbrains
Там есть ещё результаты и по другим языкам, поищите там свой любимый. Вот тут, например, результаты про Rust.

* Большинство проектов всё ещё разрабатываются либо как хобби, либо как пет-проекты. Это объясняет, почему проекты на этом языке чаще всего разрабатываются в одиночку. Только 16% разработчиков пишут на расте на работе.
* Большая часть людей только вкатывается в язык (от 1 до 6 месяцев).
* Большинство разработчиков на Rust пишут код в VS Code. Код часто дебажится принтами, но среди пользователей CLion заметно выше процент использования визуального отладчика.
* Среди разработчиков на Rust намного выше вовлеченность в опен-сорс, чем в среднем по больнице.

#jetbrains
Это, конечно, уже давно не новость, но тем не менее.

У робота Spot от BostonDynamics есть Python SDK, позволяющее им управлять. Других SDK производитель не поставляет.

Пожалуй, это даже хорошо, что мой код не ходит. Так безопаснее для окружающих, для меня и для него самого. Добром бы это не кончилось.
Если работаете с Python и PostgreSQL, то точно знакомы с psycopg2. Вот уже наверное 15 лет это самый популярный драйвер для постгреса на питоне. Де-факто стандарт.

Циферка 2 в названии указывает на вторую версию. Сейчас автор библиотеки (Daniele Varrazzo) очень активно работает над следующей, третьей версией, написанной с нуля, несовместимой с предыдущей версией, зато с новыми полезными фичами и исправлениями давних решений в плане API и принципа работы.

Например, psycopg3:

* поддерживает async/await из коробки; пожалуй, учитывая позитивный опыт работы с psycopg2, я делаю ставку на этот драйвер для асинхронных приложений (aiopg и asyncpg далеко не идеальны, к сожалению);
* полностью обмазан тайп-аннотациями 🥰;
* умеет делать подготовленные выражения (prepared statements) и курсоры на стороне сервера.

Вот тут можно посмотреть презентацию новой версии от автора: https://www.youtube.com/watch?v=XH5_Hc_BHaE

А вот здесь инструкция, как можно установить и пощупать бета-версию уже сейчас: https://twitter.com/psycopg/status/1410221901323063299?s=20

#psycopg
Вот так в psycopg2 передаются параметры в запрос. Это называется биндинг. Это правильный способ, так надо делать. Обратите внимание, это не форматирование строк через процент (старая фича языка, но до сих пор поддерживается)!

А если собирать запрос вручную при помощи f-строк или конкатенаций, и где-нибудь забыть заэкранировать значение, которое ввёл юзер, то будут SQL-инъекции, и все ваши данные либо будут безвозвратно удалены, либо будут потом продаваться по аукционам в даркнете. Так не надо делать.
Похоже, в отличие от меня, половина людей все-таки внимательно читает документацию (хотя я так и не нашел, где бы это было упомянуто явно), и знает, что psycopg2 делает client-side binding. Для меня это сегодня стало новостью. Я почему-то был уверен, что psycopg2 просто делегирует подстановку данных в запрос серверу БД через подготовленные выражения.

В целом, наверное, нет особой разницы, где происходит подстановка данных в запрос. Если на стороне клиента это сделано хорошо, то оно может быть точно так же безопасно, как и server-side binding. Но всё-таки остаётся какая-то вероятность, что psycopg2 вычищает/экранирует не все опасные символы из данных. Вот будет веселье-то, если вдруг такое обнаружится. А если данные попадают в уже распаршенный запрос на стороне сервера, то это уже гарантированно, что они не смогут поменять логику запроса (уже слишком поздно для этого).

psycopg третьей версии будет делать server-side binding, хотя для нас (программистов) интерфейс не поменяется.

#psycopg
Клиент создаёт в СУБД подготовленное выражение

#meme
Классическая пикча с XKCD по поводу SQL-инъекций.

В документации к psycopg2 велят распечатать эту картинку и повесить над рабочим местом.

https://xkcd.com/327/

#xkcd