Python

Desbravando o pygame 5 - Movimento e Colisão

Publicado em

Desbravando o pygame 5 - Movimento e Colisão

O movimento é uma característica que está presente na maioria dos jogos. Ao saltar entre plataformas, atirar contra a horda de inimigos, pilotar uma nave espacial e correr pelas estradas estamos exercendo movimento, interagindo com o ambiente do jogo, aplicando ações e causando reações.

Neste capítulo iremos conhecer os conceitos básicos de movimentação de objetos na tela e sua interação com outros elementos através da detecção de colisão.

Movimento

Se você vem acompanhando esta série de postagens, teve um breve exemplo de movimentação na postagem sobre game loop, onde uma bola que se movimentava quicando pela tela foi implementada.


Publicando meu primeiro Jogo

Publicado em

Publicando meu primeiro Jogo

Jogos sempre me conectam com tecnologia desde o início.

Eu e meu pai montamos nosso primeiro computador (um Pentium 286) e a primeira coisa que eu me lembro de fazer, foi jogar os jogos de DOS como Prince of Persia e Lunar Lander. Eu aprendi vários comandos de CLI só para poder jogar os meus jogos favoritos.

A paixão por jogar e fazer jogos sempre me acompanhou como um hobby. I tenho uma série de posts sobre pygame neste blog onde eu passo pelos conceitos básicos de desenvolvimento de jogos tentando explicar para pessoas que estejam iniciando seu aprendizado na área.


Libs Fantásticas: pipx

Publicado em

Libs Fantásticas: pipx

Estou começando esta série para dar dicas sobre bibliotecas que podem ser muito úteis no seu dia a dia, e também para apresentar bibliotecas interessantes nas quais que você deveria ficar de olho.

Uma das habilidades de um bom Programador é ter a ferramenta certa para realizar seu trabalho, e nada mais apropriado que começar esta série com uma ferramenta que instala outras ferramentas!

Quantas vezes você já teve que instalar algum programa Python em uma virtualenv que você acabou de criar? Já passou pela frustração de atualizar uma biblioteca e quebrar sua árvore de dependências?


TLDR: Gerando Secret Key para o Django

Publicado em

TLDR: Gerando Secret Key para o Django

Levante a mão quem nunca versionou a SECRET_KEY do Django no início de um projeto e precisou gerar uma nova na hora de subir pra produção.

Este TLDR é um lembrete rápido de como você pode regerar uma secret key localmente, sem recorrer a sites na internet para gera-la para você.

Como o Django gera a secret key no início de um projeto, já existe esta função implementada em seu código e você pode acessá-la desta forma:


TLDR: Leitura e escrita de Unicode em arquivos com Python 2 e 3

Publicado em

TLDR: Leitura e escrita de Unicode em arquivos com Python 2 e 3

Conversando no Telegram com o Mário Sérgio sobre problemas que surgem ao migrar código entre versões do Python me veio a ideia de escrever este tldr para ajudar quem precisa fazer leitura ou escrita de arquivos que contenham texto com caracteres Unicode que não estão presentes na tabela ASCII como caracteres acentuados, alfabetos diferentes do romano e emoji, através de um código que funcione em ambas versões.

No Python 2 não existe uma distinção entre byte e string, o que faz com que códigos que lidam com entrada e saída sem o devido cuidado com codificação e decodificação funcionem sem nenhum erro aparente. Mas quando ele acontece deixa muita gente perdida com mensagens deste tipo:


Enviando e recebendo emails com Python

Publicado em

Enviando e recebendo emails com Python

Um dia na terça do Python no Calango Hacker Clube surgiu uma dúvida de como ler emails do Gmail para poder categorizar as mensagens e automatizar o processo de leitura dos emails usando Python. Esta dúvida motivou esta postagem que tem o objetivo de ajudar a todos que tiverem dúvidas de como começar a interagir com sistemas de troca de emails utilizando Python.

python email

Os Protocolos de email

Sistemas de email são muito robustos pois são construídos em cima de protocolos muito bem estabelecidos e usados por todas as plataformas de email da internet. Estes protocolos são definidos e publicados através de documentos chamados de RFC que é uma sigla para Request for Comments que lembram um pouco as PEPs do Python só que para os protocolos que definem a base do funcionamento das comunicações entre sistemas como a internet.


TLDR: Dependências Dev Python no Ubuntu

Publicado em

TLDR: Dependências Dev Python no Ubuntu

Algumas bibliotecas do python como a que usamos para conversar um banco SQLite são na prática um encapsulamento de um binário externo. Nestes casos precisamos que eles estejam instalados em nosso sistema operacional para que determinado pacote python funcione.

Quando isso acontece, recebemos erros como este:

ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3

Para resolver estes problemas basta instalar esta dependência externa que normalmente o sistema já reconfigura tudo para você, mas para quem trabalha múltiplas versões do python e com pyenv é preciso recompilar todas as versões do python toda vez que lembra de uma dependência externa.


TLDR: Configurando corretamente o default de um Model Field do Django

Publicado em

TLDR: Configurando corretamente o default de um Model Field do Django

Esta postagem é o resultado de um bug que me assombrou por uns três meses até conseguir isolar totalmente o erro e, por acontecer em condições muito específicas de temperatura e pressão, tomou muito tempo quebrando cabeça até perceber que o problema era este.

Um dos atributos básicos de um Model field do Django é o default que determina o valor padrão de um campo quando criamos uma instância do Model. Você pode atribuir um valor a ele ou um callable que nada mais é que uma função ou uma classe que implemente o método __call__.


Autenticação JWT com Angular e Django

Publicado em

Autenticação JWT com Angular e Django

Quase todo sistema que opera na internet e armazena dados de usuário hoje em dia depende de uma camada de autenticação. E com o crescimento do modelo de API`s e separação do frontend do backend a implementação desta camada cresceu em complexidade.

Esta postagem tem como foco mostrar o caminho das pedras em uma stack de frontend Angular 6 e backend Django 2 utilizando o modelo de separação discutido na postagem “Separando o Frontend do Backend com Angular e Django”.


TLDR: Publicando no PyPI

Publicado em

TLDR: Publicando no PyPI

Já se perguntou como publicar seu próprio pacote Python para instalá-lo com o pip? É menos complicado que parece, e qualquer pessoa pode fazer.

Basta acessar o Python Package Index (PyPI) e criar uma conta na qual irá registrar seus pacotes.

Em seguida crie um arquivo python chamado setup.py alterando os valores que forem necessários:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from setuptools import find_packages, setup

setup(
    name='meu-pacote-python',
    packages=find_packages(),
    version='1.0.0',
    description='Descrição curta do meu pacote',
    long_description='Longa descrição do meu pacote',
    author='Meu Nome',
    author_email='meu@email.com',
    url='https://github.com/usuario/meu-pacote-python',
    install_requires=['dependencia1', 'dependencia2'],
    license='MIT',
    keywords=['dev', 'web'],
    classifiers=[
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: English',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 3',
    ],
)

O find_packages é uma ferramenta muito boa para encontrar automaticamente os arquivos que fazem parte do seu pacote qualquer dúvida veja sua documentação clicando aqui.