Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
Ого, оказывается Python активно используется при производстве фильмов и всяких анимационных мультфильмов.

Чувак, который работал в Sony Pictures, в частности над Spider-Man: Homecoming, рассказывает как Python помогает на разных этапах производства фильма. Там ещё есть ссылки на целую серию постов про разбор разных фильмов. Чувак даже сделал курс на Udemy, где обучает как скриптовать в Maya на питоне.

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

https://www.gfx.dev/python-for-feature-film
Don Syme (создатель языка F#) учит Гвидо писать функциональщину. Забавно, что два дизайнера языков собрались, и один презентует свой язык другому.

Напомню, что Гвидо в одном из предыдущих интервью говорил, что он никогда не увлекался функциональным программированием. Судя по всему, в этом видео он увидел F# впервые (я тоже).

Хорошее вводное видео в F#. Оттуда я узнал, что на нём можно делать фуллстэк — можно бабахать бэкенды, и даже есть какая-то забавная обёртка над React, так что можно делать SPA фронтенды.

https://www.youtube.com/watch?v=e2J9PGC-K1E
Forwarded from DevBrain
Годнота подъехала. Подробная статья про FastAPI, асинхронный SQLAlchemy через новую балалайку SQLModel: https://testdriven.io/blog/fastapi-sqlmodel/
Java 17 подрезает Python 3.10 на финишной прямой (кстати, релиз запланирован на 4 октября) и релизит паттерн-матчинг на две недели раньше 😅

Забавно, что паттерн-матчинг уже был в Haskell в 1990 году. А Википедия говорит, что были и другие языки с паттерн-матчингом до Haskell, начиная с 1955-х годов. Получается, теорию разработали ещё раньше.

После хаскеля потребовалось ещё 30 лет, чтобы эта фича из разряда «снова эти наркоманы что-то выдумали» перешла в «нам всем это очень надо». Думаю, что успех Rust тут сыграл не последнюю роль.

Это замечательно иллюстрирует, насколько медленно к нам в мейнстримные языки проникают инновации. Говорят, что для теории языков программирования — это норма. Ребята там сейчас придумывают вещи, которые до нас дойдут лишь лет через 20-30, если повезёт.

Но похоже, что скоро паттерн-матчинг будет везде! Например, есть пропозал для JS.
День Docker'а на канале.

Все, кто пользуется Docker, знают, что он кэширует сборку слоями, команда за командой. Но знали ли вы, что с недавних пор помимо кэширования слоями можно ещё закэшировать отдельную папку? Например, таким образом можно заставить работать встроенный в pip кэш и не перекачивать все ваши 1000 пакетов старых зависимостей из PyPI каждый раз, если вы вдруг решили добавить ещё одну новую.

Магия активируется вот таким набором заклинаний:

1. устанавливаем переменную окружения, чтобы задействовать новый механизм сборки:

$ export DOCKER_BUILDKIT=1

2. в начало Dockerfile добавляем строчку с указанием на новый синтаксис:

# syntax = docker/dockerfile:1.3

3. в команду RUN добавляются новые аргументы:

RUN --mount=type=cache,target=/root/.cache \
pip install -r requirements.txt

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

Как минимум, это удобно для сборки образов на локальной машине. Если в CI настроить сохранение кэшей Docker'а между запусками, то это тоже будет работать.

https://pythonspeed.com/articles/docker-cache-pip-downloads/

#синийкит #docker
Ещё одна классная фича, доступная с новым синтаксисом Dockerfile — многострочные команды, т.е. поддержка полноценных скриптов! Умные люди называют такой синтаксис heredoc. Теперь можно больше не писать эти дурацкие амперсанды и бэкслеши в конце каждой строчки в длинной команде.

Раньше:

FROM debian
RUN apt-get update \
&& apt-get install -y vim

Сейчас:

# syntax=docker/dockerfile:1.3-labs
FROM debian
RUN <<eot bash
apt-get update
apt-get install -y vim
eot

А ещё таким образом можно запускать даже скрипты на python (да и вообще любые скрипты). Скрипт выполнится, результаты его работы останутся в образе, но сам он никогда туда не попадёт, потому что он вообще не сохраняется на диск. Пока не придумал, зачем такое может пригодиться, но прикольно:

# syntax=docker/dockerfile:1.3-labs
FROM python:3.9-slim-buster

RUN python3 <<EOF
for i in range(10):
with open(f"/{i}.txt", "w") as f:
f.write(f"File {i}")
EOF

Источник: https://twitter.com/iximiuz/status/1436357612740694016?s=20

#синийкит #dockerо
Forwarded from Geeks (жук невывожук)
Вышла версия 1.0.0.beta0 python-библиотеки httpx. Это - достаточно известная библиотека для осуществления HTTP-запросов, и она предоставляет разработчику как синхронное API, так и асинхронное. Использую её достаточно давно и всем устраивает. Как приятный бонус - вызовы полностью идентичны таковым в широко распространенной библиотеке requests. Тех, кто использует тайпинг, порадует то, что библиотека полностью аннотирована.

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

Если хочется быстро попробовать, то скачиваем пакет:

pip install --pre 'httpx[cli]'

И пробуем:

httpx --verbose https://httpbin.org/json

Ссылка на GitHub библиотеки https://github.com/encode/httpx
Ну и ещё одна фича — команда COPY в Dockerfile тоже получила поддержку heredoc.

# syntax=docker/dockerfile:1.3-labs
COPY <<EOF /usr/share/nginx/html/index.html
<html>
<head></head>
<body>Hi!</body>
</html>
EOF

Теперь можно разные небольшие файлы создавать прямо в Dockerfile.

Источник: https://twitter.com/iximiuz/status/1436361338696183815?s=20

#синийкит #docker
Знаю, что на канале есть некоторое количество пользователей OpenWRT — свободной прошивки для роутеров на линуксе.

Если вдруг пропустили, то вышла новая версия 21.02. Пора обновляться!

Попробую обновиться и по возможности адаптирую пост про точечный обход блокировок. Хотя, почитав последние грустные новости про суверенный интернет и ТСПУ, я уже начинаю склоняться к более простому и надёжному варианту — пересесть на VPN полностью.

#оффтоп
Закончились футболки? Выход есть — Hacktoberfest 😝

Ежегодный фестиваль-флешмоб длиной в один месяц, посвященный open-source. Не знаю, какие будут условия в этом году, но в предыдущие годы за 4 pull-реквеста в участвующие проекты на GitHub или GitLab выдавали приз-футболку и ещё какие-то наклейки-сувениры.

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

https://hacktoberfest.digitalocean.com/

Накидайте в комменты репозиториев, куда вы хотели бы законтрибьютить 👇
Питонические атаки
Закончились футболки? Выход есть — Hacktoberfest 😝 Ежегодный фестиваль-флешмоб длиной в один месяц, посвященный open-source. Не знаю, какие будут условия в этом году, но в предыдущие годы за 4 pull-реквеста в участвующие проекты на GitHub или GitLab выдавали…
Проясню насчёт Hacktoberfest.

Я, конечно же, шучу насчёт того, что нужно участвовать там лишь ради футболок. Надо участвовать там из принципа и ради поддержки важных проектов, а футболка — не более чем трофей за проделанную работу.

В прошлом году была драма из-за наплыва большого количества участников, которые начали ради футболок отправлять всюду кучу спамных пулл-реквестов, где яростно добавляли и удаляли запятые в README.md, что вызвало волну возмущения. Есть даже аккаунт в Твиттере, где собирают такое. Не будьте как эти чуваки. Не заставляйте мейнтейнеров разгребать за вами спам. У них и так достаточно забот. Делайте ценный вклад. Фиксите баги, которые вам мешают. Добавляйте фичи, которых вам не хватает. Улучшайте документацию — это тоже почётно. Только если это действительно важно, а не про расстановку запятых.
В репозиторий Deno — рантайм для TypeScript — кто-то хотел добавить песню. Не хватает музыки!😅

https://twitter.com/frunkad/status/1312309284957351936?s=21
Интересная мысль про языки программирования. Мы любим новые сияющие языки, на которых в основном всё пишется с нуля. Но мы ненавидим старые языки, которые могут быть не плохими сами по себе, но на них уже накопился багаж кода, который теперь приходится поддерживать. Все любят писать свой код, но мало кто любит поддерживать чужой код.

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

https://earthly.dev/blog/brown-green-language/
boltons — коллекция утилит, расширяющая стандартную библиотеку. Это почти как built-ins, только boltons 😉

Есть ли у вас в проекте файл utils.py или что-то подобное? Скорее всего, то что вы там храните, есть в boltons.

Код: https://github.com/mahmoud/boltons
Документация: https://boltons.readthedocs.io/

Там есть очень много всего, но вот, что мне особенно нравится:

* словари на любой вкус и цвет — и с поддержкой нескольких значений для одного ключа, и которые маппят ключ в значение и одновременно обратно значение в ключ (биекция);
* список, состоящий под капотом из множества других списков, оптимизированный для более эффективной работы при интенсивных вставках и удалениях;
* очень много функций для работы со строкамиcamel2under, under2camel, slugify, ordinalize, cardinalize, pluralize, bytes2human, ...;
* утилиты для работы с датами — например, там есть функция, умеющая делать относительные человекочитаемые даты типа "yesterday", "1 week ago", "3 days from now".

Пакет не имеет зависимостей. Все функции самодостаточны, так что можно даже просто скопипастить к себе оттуда нужные (но лучше не надо). Конечно же, всё покрыто тестами.

#library
Forwarded from гиг пиг ниг
Если хочется странного, то можно начать использовать в питоне goto и показать этим сосункам-коллегам кто на районе джигит.

from goto import with_goto

@with_goto
def range(start, stop):
i = start
result = []

label .begin
if i == stop:
goto .end

result.append(i)
i += 1
goto .begin

label .end
return result

ссылка на репу https://github.com/snoack/python-goto
Эрик Айдл (Eric Idle) — актёр и автор многих скетчей комедийной группы Monty Python.

В честь него назван IDLE — Python’s Integrated Development and Learning Environment — простенький редактор кода, распространяющийся в составе стандартной библиотеки.

А ещё есть Eric IDE — редактор кода, написанный на питоне. Тоже отсылка к Эрику Айдлу.

#montypython
Эрик Айдл уже в преклонных годах. Он сидит в Твиттере, и однажды до него дошли слухи, что в честь его комедийного шоу придумали какой-то язык программирования. В тред пришёл Гвидо ван Россум, большой фанат скетчей Monty Python.

"very nice" — это отсылочка к сцене с французами на стене замка в "поисках святого грааля".

https://twitter.com/gvanrossum/status/1355310333875773444?lang=en

#montypython
День Git на канале!

Git сложен: легко всё испортить, и нереально понять как исправить. Документация Git - это финиш: чтобы найти решение, тебе заранее надо знать название фишки, которая вернет всё на место.

Разбор частых проблем с Git с командами для починки.

https://ohshitgit.com/

#git