Você usa `print` do #python para depurar durante o desenvolvimento?

Mesmo com vários tipos de debuggers disponíveis e o novo `breakpoint` do Python 3.7, na maioria das vezes um simples `print` é mais fácil para inspecionar uma variavél no Python.

Dá para deixar isso melhor 🧵
Primeiro um exemplo do uso do print nativo do python para debugar objetos complexos.

Como dá para perceber o output não é tão amigável de inspecionar. print do terminal executando um código python e com o outpu
Dá para deixar isso melhor usando `debug` no lugar de `print`

Porém Python não tem essa função debug nativa, você vai precisar **hackear** seu Python local para adicionar a função debug. O mesmo código anterior, porém print foi substituido por d
1. Execute

pip install -U devtools[pygments]

O -U vai dizer para isso ser instalado no seu espaço de usuário do sistema.
2. Descubra onde fica o `site` do seu Python, `site` é o diretório onde o interpretador é inicializado.

`python -m site`e é sempre o terceiro item desta lista. output do código `python -m site`
3. Altere seu Python adicionando a Função `debug` como se fosse uma função nativa, desta forma você não vai precisar ficar importando sempre que precisar usar. hack para adicionar `debug` aos builtins
Use com moderação, lembre-se que `debug` só existe no seu Python local e nas virtualenvs locais que tenham acesso ao mesmo `site`.
Qualquer objeto que for adicionado a `__builtins__` no sitecustomize .py ficará disponível sem precisar importar, lembre-se que isso é APENAS para ferramentas de desenvolvimento, no ambiente de produção isso não estará disponível.
correção (notado pelo @luzfcb) aqui é para ser `--user` e não `-U` :)

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Bruno Rocha - https://hachyderm.io/@rochacbruno

Bruno Rocha - https://hachyderm.io/@rochacbruno Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @rochacbruno

Feb 6
Decidi pesquisar meu nome no Google, e então descobri uma empresa, que tem funding da @ycombinator fazendo Bad Patterns (marketing feio) de SEO usando meu nome e o nome de muito criador de conteúdo educacional e escola.

🧵
E usam essa estratégia bem ruim com várias outras pessoas e empresas que criam treinamentos.

Eles enchem o site deles de texto para simular relevância e aparecer nas buscas, em Agosto de 23 as keywords "Python Bruno Rocha LINUXtips" estavam em alta pois fizemos a Python week..
Então eles aproveitaram esse tráfego que não é direcionado ao conteúdo deles para ENGANAR e vender os cursos deles.

Veja só como funciona essa prática bem ruim da @awari_brasil

(continua) Image
Read 20 tweets
May 23, 2023
Dicas de LinkedIn que ninguém pediu, mas eu vou compartilhar assim mesmo:

🧵
Coloque palavras-chave na sua bio, isso ajuda a aparecer primeiro nas buscas, search engines vão indexar sua Bio com maior boost. Image
Use palavras-chave na descrição das suas experiências, geralmente quem te procura já tem uma Stack para pesquisar e se der match aparece primeiro.

BAD: Created high scale API.

GOOD: Created high scale API using the Jynx framework on Onix architecture with Natu caching. Image
Read 9 tweets
May 22, 2023
Eu não sei de onde surgiu essa "crença" de que conteúdo educacional tem que ser de graça, é algo muito frequente na nossa comunidade este tipo de questionamento.

Devemos incentivar conteúdo grátis, acessível (e fazemos MUITO) mas isso não anula a existência de conteúdo pago.
Existe uma linha tênue nesse assunto, eu acredito que todo o conhecimento deve ser livre e acessível, não deve existir copyright e patentes etc.. por isso todo o material dos meus treinamentos estão abertos lá no meu github, e sempre priorizo tecnologias livres.
Quando cobro pelo curso não é copyright, o material está aí livre, e sempre que posso vou publicar conteúdo grátis.

Mas cobrar é apenas o pagamento pelo meu tempo dedicado em explicar as coisas com a melhor didática que posso.

Também pagamos boletos!
Read 4 tweets
Aug 25, 2022
Existe um projeto Python que tem uma história sensacional e quase ninguém fala sobre ele.

🧵
O webpy.org é um dos primeiros micro frameworks que surgiu para Python

Foi criado por ninguém menos que o Aaron Swartz @aaronsw para a primeira versão do @Reddit que rodou nesse framework durante algum tempo.

A filosofia por trás do webpy foi a seguinte...
O Django permite que você escreva Django web apps. O TurboGears permite escrever TurboGears web apps. Webpy permite escrever Python Web Apps”

A idéia dele era usar Python da forma mais pura possivel para escrever apps de acordo com o padrão WSGI sem acoplamento excessivo

#noqa
Read 17 tweets
Aug 24, 2022
Did you know you can create an InfiniteLoop using __getitem__ and a for statement in #python?

I just discovered this by accident 🤯

Can´t find it documented have you seem this before?
I am curious on how the for loop decides that this object is an Iterable without having explicit __iter__ or any other impl from the protocol.

This is a good way to crash your computer

print(list(InfiniteLoop()))
If I make a function accepting an iterable and passing this InfiniteLoop() object, mypy claims it is not an iterable.

Argument 1 to "function" has incompatible type "InfiniteLoop"; expected "Iterable[Any]"
Read 5 tweets
Sep 3, 2021
Percebi que grande parte dos projetos que usa versões x.y.z não segue de verdade o versionamento semântico.

Dá trabalho sim, mas é possível fazer múltiplos releases e em ordem cronológicas completamente distintas, e o mais importante: manter a compatibilidade reversa.

🧵
Versão inicial 0.1.0

Na branch main:

- Nova feature super legal
- Outra feature nova que ainda precisa de mais testes
- Bugfix que não influencia na experiência de uso
- Bugfix que altera parametros de função
- Security patch
- Disable a magic function

+ backlog enorme.

🧵
Não precisa ficar esperando o backlog estar todo resolvido ou a branch main estar toda estável para fazer um release 0.2.0.

Para isso existe o z-stream e o cherry picking

🧵
Read 17 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(