Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
Закончились футболки? Выход есть — 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
Git Undo — инструмент, который может отменить любое действие в Git.

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

* коммиты;
* изменение сообщения коммита (amend);
* мёрджи и ребейзы;
* переключения между ветками и коммитами;
* создание, обновление и удаление веток.

Тулза прицепляется в Git при помощи хуков и записывает все произведенные изменения. Можно отменять сколько угодно шагов назад, не только последний. Магия!

https://blog.waleedkhan.name/git-undo/

#git
Gitlint is a git commit message linter written in python: it checks your commit messages for style.

Код: https://github.com/jorisroovers/gitlint
Документация: https://jorisroovers.com/gitlint/

Есть много разных встроенных правил, например, умеет ограничивать длину первой строки, запрещать trailing spaces, требовать наличия определенного паттерна в сообщении (например, идентификатор тикета в Jira). Также умеет энфорсить Conventional Commits.

Подключается в виде гит-хука через pre-commit.

#git
tig — TUI (псевдографика в терминале) клиент для Git.

Удобно добавлять в staging отдельные файлы или даже отдельные строки в файлах. Умеет более красиво показывать диффы, списки коммитов, блеймы и т.д. Но сначала придётся научиться им управлять, хоткеи похожи на vim'овские.

#git
А вообще я люблю TUI-софт.

Нашёлся ещё один клиент — lazygit.

Сам пока не пользовался, но можно посмотреть, какую магию автор программы творит с её помощью: https://www.youtube.com/watch?v=CPLdltN7wgE

#git
Умные люди говорят, что не обязательно заставлять себя использовать консольный Git, если сложно. Есть много удобных GUI клиентов, с аккуратными кнопками вместо запутанных консольных команд. Даже просто визуализация дерева коммитов часто помогает разобраться в том, что происходит с репозиторием.

В статье автор показывает, как просто делать всякие продвинутые вещи с гитом через GUI-клиент Fork.

https://simplabs.com/blog/2021/05/26/keeping-a-clean-git-history/

#git
Кстати, прикольно, что Fork — это нативная программа для Mac (написано на Swift) и Windows (написано на С#), а не очередное Electron-приложение. Ещё более прикольно, что этот клиент — настоящий каноничный инди-проект. Его фулл-тайм разрабатывает супружеская пара Dan & Tanya Pristupov. Всегда удивляюсь, когда в нашем мире корпораций и команд разработки из сотен людей внезапно обнаруживаю такое. И оно живое. Инди-проекты всегда как-то с душой делаются.

Софтинка платная, но примерно как Sublime Text — можно бесплатно пользоваться сколько угодно, но иногда будут всплывать попапы. Говорят, что они всплывают достаточно редко и даже почти не бесят.

Узнал об этом клиенте вот отсюда и отсюда.

А какими Git-клиентами пользуетесь вы?

#git
Давайте устроим холивар. Как правильно сливать ветки?
Anonymous Poll
55%
merge
27%
squash & merge
16%
rebase
3%
другое
А вы знали, что для flake8 можно создавать локальные правила, специфичные для конкретного проекта? Код таких проверок лежит по соседству с кодом, который они проверяют. Я вот только недавно узнал. Полезная фича.

https://medium.com/alan/sharing-good-practices-linters-37c4ffe8fc4c