Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
Питонические атаки
И если у вас на гитхабе что-то ценное лежит, то вы на всякий случай склонируйте себе эти репо. Ходят слухи, что гитхаб начал блокировать аккаунты россиян. В панику не впадайте, но подготовьтесь к худшему. https://habr.com/ru/news/t/661113/
Зашёл в настройки на гитхабе, чтобы на всякий случай экспортировать оттуда архив со всеми своими данными, и заметил, что там можно назначить наследника, который после моей смерти сможет управлять моими репозиториями.

Хочу, чтобы потомки передавали мою коллекцию хелло ворлдов по наследству из поколения в поколение!

https://docs.github.com/en/site-policy/other-site-policies/github-deceased-user-policy

P.S. А на самом деле это крутая практика. С начала эпохи интернета уже прошло достаточно много времени, и люди начали умирать, и вполне логично начать как-то управлять их цифровым наследием. Такое рано или поздно должно появиться во всех приличных сервисах.

#github
👍21🥰1
Экспортировать свои данные с гитхаба можно вот на этой странице в разделе "Export account data":

https://github.com/settings/admin

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

Буквально через 10 минут после запроса гитхаб мне на почту прислал ссылку на архив с моим барахлом: репозитории и связанные с ними ишьюсы и пулл-реквесты. Мои действия в чужих репозиториях в этот экспорт, к сожалению, не попали. А ещё отдельно обидно за звёздочки — список лайкнутых репо тоже не попал в экспорт. Я звёздочками пользуюсь примерно как закладками — ставлю их на разные классные проекты. Уже поставил несколько сотен. Не хотелось бы потерять этот список годноты.

Репозитории гитхаб отдает в bare формате, то есть просто так вы ими пользоваться не сможете. Но это легко исправить: нужно лишь склонировать bare-репо в соседнюю папку, чтобы получить из него обычный, например:

git clone foo.git foo

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

#github
👍5🥰1
Для тех, кто питонами балуется Bloomberg открыл интересный тул

Memray is a memory profiler for Python
https://github.com/bloomberg/memray

Notable features:
- Traces every function call so it can accurately represent the call stack, unlike sampling profilers.
- Also handles native calls in C/C++ libraries so the entire call stack is present in the results.
- Blazing fast! Profiling causes minimal slowdown in the application. Tracking native code is somewhat slower, but this can be enabled or disabled on demand.
- It can generate various reports about the collected memory usage data, like flame graphs.
- Works with Python threads.
- Works with native-threads (e.g. C++ threads in native extensions)

Memray can help with the following problems:
- Analyze allocations in applications to help discover the cause of high memory usage.
- Find memory leaks.
- Find hotspots in code which cause a lot of allocations.
+
Тред, который подглядел в @nocproject
https://twitter.com/1st1/status/1516859294896906241
👍3🔥3
Тут часть ядра pydantic переписали на Rust и он стал в 17 раз быстрее (код бенчмарка тут) чем обычный Pydantic.

Пока что WIP, выглядит многообещающее, но нет самой интеграции с pydantic, поэтому схемы могут делаться только через словари. Целью стоит увеличение скорости работы в ДЕСЯТЬ раз.
🔥12🤔2👎1🥰1
GitPod — напомню: это сервис, предоставляющий эфемерные облачные окружения для разработки — объявил о партнёрстве с JetBrains. Раньше в их облачные окружения можно было подключаться через VSCode, vim и emacs, а теперь добавляется возможность ходить туда ещё и из пайчарма, голэнда или чем вы там пользуетесь.

Только представьте какой это кайф — подключаешь свою IDE к облачной среде разработки, а там уже интерпретатор правильный выбран, зависимости установлены (включая все дурацкие нативные либы, которые компилируются только в определенных условиях, и то полтора часа) и проиндексированы. Всё сделано заранее, можно начинать работать СРАЗУ ЖЕ! Подключился, поработал, запушил работу, выкинул грязное окружение. Для следующей таски возьмёшь новое, чистое.

Раньше для меня GitPod был «альтернативой GitHub Codespaces», но теперь они явно превзошли оригинал.

https://www.gitpod.io/blog/gitpod-jetbrains

Дисклеймер: единственный минус для россиян, что сервис хочет денег в иностранной валюте и работает на иностранных облаках и в европейской юрисдикции, поэтому снова применяются все эти уже ныне ставшие обыденностью сложности и опасения. Со всеми иностранными ништяками теперь всё не просто.
🔥3👎1
Forwarded from DevBrain
Вышла первая бета python 3.11: https://www.python.org/downloads/release/python-3110b1/
Версия 3.11 несёт в себе большое количество новых фич. Скоро выпущу подробный пост с разбором каждой фичи. Помимо этого в рамках инициативы Faster Python заявляется, что версия 3.11 в среднем на 22% быстрее чем 3.10 😲😲
🤯3👍2
У Stack Overflow запустился очередной ежегодный опрос среди разработчиков. Уже 12 год подряд.

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

Take the survey
👍6
Небольшая подборка flake8 плагинов для тех, кто уже использует 3.10 и хочет писать тайп-хинты красиво:

1. flake8-new-union-types — заставляет переписывать Union[X, Y] на X | Y;

2. flake8-pep585 — заставляет использовать встроенные классы, например, list[dict[str, int]], без импортов из typing.

Знаете ещё полезное? Делитесь в комментариях!

#flake8
12👏1
Из комментов. А помните был такой проект flakehell? В какой-то момент он окончательно загнулся, но затем воскрес под новым именем flakeheaven. Вознёсся на небушко, так сказать.

Это обёртка над flake8, которая добавляет в него больше конфигурабельности и разных фич. Я им пользовался, потому что он поддерживает baseline (может запомнить существующие ошибки и перестать их показывать каждый раз, но зато не даст добавлять новые ошибки), что очень полезно для старых больших проектов. А ещё он под капотом запускает ещё и pylint.

#flake8
👍7
Внезапно, паттерн-матчинг в 3.10 работает сильно быстрее, чем аналогичные ему if-выражения. В некоторых случаях. Видимо, соль в том, что паттерн-матчинг компилируется в специальные опкоды, которые отрабатывают быстрее ифов общего назначения.

https://twitter.com/anthonypjshaw/status/1526034155448184832?s=21&t=tCoZUko6djSmv4NN3RKDPw

UPD: Оказалось, что дело в медленной проверке isinstance(seq, Sequence). Паттерн-матчинг тоже делает аналогичную проверку, но видимо каким-то другим образом. Так что подождите, не выпиливайте пока if-ы из своего кода.
👍5👎4🤔3
Наконец-то реальная польза от этого всего программирования
Forwarded from Chernov sharit
Прекрасно, когда TL;DR есть от автора статьи (:

———

TL;DR: I built a wifi-equipped water gun to shoot the pigeons on my balcony, controlled over the internet by a python script running openCV reading the camera image of my old iPhone.

https://maxnagy.com/posts/pigeons/

#python #fun
🔥7😁1
Оказывается, механизм разрешения зависимостей из Poetry можно использовать для решения судоку. И судоку, и разрешение зависимостей — это задачи удовлетворения ограничений (constraint satisfaction problem), поэтому достаточно лишь записать правила судоку в виде пакетов с зависимостями и заставить Poetry это установить. А если добавить флажки для подробного вывода, то Poetry еще по пути будет объяснять, почему он решает судоку именно так. Офигенно!

Статья | Тред на реддите
🤯21👍2🔥2
Недавно начали публиковать бета-релизы Python 3.11, который выйдет примерно через 4 месяца. Если начался этап бет, то значит, что новые фичи в релиз добавлять больше не будут, а сконцентрируются на стабилизации того, что уже добавили. Можно в принципе уже идти читать What’s New.

Есть и новые фичи, и изменения в стандартной библиотеке, но, пожалуй, релиз 3.11 — это в основном про скорость. С этой версией языка выходят первые наработки проекта Faster CPython. Обещают ускорение 10-60% по сравнению с предыдущими версиями, при этом переписывать для этого ничего не придётся.

Почитайте секцию про оптимизации, это интересно.
14🔥5
В комментах к предыдущему посту скинули ссылку на крутой инструмент specialist, который умеет визуально показывать оптимизации, применённые к коду интерпретатором Python 3.11.

Напомню, что в 3.11 появится нечто под названием "Specializing Adaptive Interpreter". Это такая штука, которая будет выявлять в коде часто выполняющиеся операции (hot regions) и оптимизировать их, подменяя универсальные, медленные инструкции на более специфичные, быстрые. Например, если интерпретатор поймёт, что в определенной строчке кода часто происходит сложение целых чисел (а не конкатенация строк, например), то он подменит операцию на более быструю, которая специально заточена под целые числа. Если вдруг в какой-то момент в этом же самом месте кода окажутся строки, а не числа, то оптимизированную операцию придётся заменить обратно на обычную.

Вот, specialist как раз умеет понимать все эти трюки и раскрашивать код в разные цвета, в зависимости от степени примененных оптимизаций. На гитхабе проекта есть туториал с объяснением.
👍16
Хм, не прошло и полутора лет 😅
👍2
Узнал:

• что регулярные выражения можно удобно разбивать на кусочки, а затем собирать вместе через f-строки;
• что внутри регулярок можно использовать комментарии.

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

https://death.andgravity.com/f-re
👍13🔥2
В JetBrains решили переработать UI своих IDE, сделать его более современным и простым — больше иконок, меньше панелек.

Пока что это доступно только в превью (по запросу), но в какой-то момент новый UI станет дефолтным. Переход будет итеративным и постепенным. Обещают, что ещё пару лет будут держать возможность вернуться к старому UI, чтобы все успели переучиться.

Что скажете? Уже пробовали? Пользоваться можно?

Пост 1 | Пост 2

#jetbrains
15🤮4🤔3