Blog do Ramalho.org

Este é o blog de Luciano Ramalho, programador-repentista e autor do livro Python Fluente.

Um buscador de emoji super simples

O cf.py é um utilitário de linha de comando para buscar caracteres unicode pelo nome. Exemplo de uso:

$ ./cf.py cat eyes
U+1F638     😸       GRINNING CAT FACE WITH SMILING EYES
U+1F63B     😻       SMILING CAT FACE WITH HEART-SHAPED EYES
U+1F63D     😽       KISSING CAT FACE WITH CLOSED EYES

Este é um dos meus exemplos didáticos favoritos, porque é simples, interativo, e aborda dois temas que me interessam: Unicode e conjuntos.1

O cf.py está na 2ª edição do Python Fluente. É uma variante bem simplificada do charfinder que apareceu na 1ª edição do Python Fluente.

continua...

"Python é interpretada ou compilada?"

Certa vez chegando nos EUA o agente de fronteira perguntou qual era o propósito da minha viagem. Falei que ia palestrar em um evento sobre Python e ele disparou:

— Python é interpretada ou compilada?

continua...

PEG Parsing Series Overview

by Guido van Rossum1

My series of blog posts about PEG parsing keeps expanding. Instead of updating each part to link to all other parts, here’s the table of content:

continua...

Érico e o novo Papa

Érico Andrei é um grande amigo meu e da comunidade Python mundial.

Em outubro teremos a Python Brasil em São Paulo pela 2ª vez; em 2024 tivemos a Plone Conference (mundial) em Brasília pela 2ª vez, todas organizadas pelo Érico—além de N outros eventos pelo Brasil e pelo mundo. Ele também contribui código e trabalho voluntário para a comunidade Plone há uns 20 anos.

continua...

Dadoware

Dadoware é um método para criar senhas aleatórias fortes e fáceis de lembrar usando dados ⚂ ⚃ ⚅ ⚅ ⚁, papel e lápis para sortear palavras e formar uma frase-senha (passphrase). Se já sabe como usar, vá direto para dadoware-palavras.

O método original Diceware™ foi inventado por Arnold G. Reinhold. A parte mais complicada é ter uma lista de palavras para sortear lançando 5 dados. A lista precisa ter exatamente 65 (7.776) palavras familiares. No site original não havia uma lista de palavras em português, então eu e colegas da Thoughtworks Brasil criamos a lista dadoware-palavras.

continua...

Passdrill: para praticar senhas fortes

Você pode usar o Dadoware para criar uma frase-senha forte, mas para usá-la no dia-a-dia ainda vai precisar:

Com Passdrill, você pratica a digitação de uma senha longa em um ambiente seguro: seu console local.

O passdrill não salva a senha digitada, mas sim uma assinatura digital (hash) derivada da senha, através dos algoritmos scrypt ou pbkdf2—projetados para tornar os ataques de força-bruta mais difíceis.

continua...

O Grande Dalmuti (jogo)

Um jogo de cartas simples, rápido e inteligente criado por Richard Garfield (inventor do Magic).

O jogo foi lançado originalmente com o título “The Great Dalmuti”, com uma temática medieval e um baralho com 78 cartas de 1 a 12, mais 2 curingas, bom para até 6 jogadores.

Depois foi relançado como “Dilbert Corporate Shuffle”, ilustrado com personagens de Scott Adams, e um baralho com 55 cartas de 1 a 10, mais 2 curingas e 3 cartas especiais, limitado a 4 jogadores.

continua...

Eleusis: um jogo de raciocínio indutivo

Eleusis é um jogo de cartas que exercita o método indutivo característico da ciência. A partir de experimentos e observações, os jogadores precisam formular hipóteses sobre uma Regra Divina.

O jogo foi criado pelo inventor de jogos Robert Abott em 1956, e depois aperfeiçoado em colaboração com Martin D. Kruskal e John Jaworski até a versão descrita aqui, chamada Novo Eleusis, publicada em 1977.

Minha referência foi o livro Jogos de Cartas, da coleção Todos os Jogos da Abril, de onde vieram muitas frases neste texto.

continua...

Bánffy e o hash criptográfico

Ricardo Bánffy e Luciano Ramalho em Dublin, durante a EuroPython 2022, 26 anos depois desse causo.

Entre os primeiros usuários do Brasil Online em 1996 havia uns tantos “VIPs”: executivos de mídia, publicitários, políticos, celebridades, pessoas que a Abril queria agradar. Um desses VIPs esqueceu a senha e pediu para sua assistente ligar para a Abril para recuperá-la. O recado chegou até o meu chefe, Antonio Machado—diretor do Grupo Exame—que pediu para eu resolver.

continua...

O grande ataque ao MetaLouvre

Turistas fotografando a moldura da Mona Lisa, com o emoji 'FACE SCREAMING IN FEAR' no lugar da pintura de Leonardo Da Vinci

Após enfrentar longas filas para entrar no MetaLouvre, turistas do Metaverso ficaram chocados quando viram centenas de pinturas nas galerias renascentistas sendo trocadas por emojis. Na moldura da Mona Lisa apareceu o emoji Unicode U+1F631, “Rosto Gritando de Medo”, inspirado na pintura “O Grito” de Edvard Munch.

continua...

O erro fatal das applets Java

Em 1995 eu e um time excelente de jornalistas, designers e programadores na Abril S/A estávamos criando o Brasil Online, o bol.com.br na sua primeira fase (eu registrei esse domínio para a Abril; 5 anos depois foi reutilizado para o serviço de e-mail grauito do UOL).

A tecnologia de applets Java era novidade. Era tentador usar, porque o JavaScript e a API do DOM eram muito limitadas para fazer componentes interativos na página.

continua...

Porque cada pessoa deve ter seu site na Web

A Web (e a própria Internet) são construções maravilhosas porque têm arquiteturas descentralizadas: qualquer pessoa que tem acesso à Internet pode ter seu próprio site na Web. E eu acredito que cada pessoa deve ter seu próprio site.

É muito mais saudável politicamente e seguro tecnicamente se cada pessoa tem o seu site, em vez de termos a maioria do conteúdo novo colocado dentro de plataformas centralizadas como Facebook, Medium, Blogger etc.

continua...

Left-recursive PEG Grammars

by Guido van Rossum

I’ve alluded to left-recursion as a stumbling block a few times, and it’s time to tackle it. The basic problem is that with a recursive descent parser, left-recursion causes instant death by stack overflow.

Consider this hypothetical grammar rule:

expr: expr '+' term | term
continua...

Visualizing PEG Parsing

by Guido van Rossum

Last week I showed a simple PEG parser generator. This week I’ll show what the generated parser actually does when it’s parsing a program. I took a dive into the retro world of ASCII art, in particular a library named “curses” which is available in the Python standard library for Linux and Mac, and as an add-on for Windows.

[This is part 4 of my PEG series. See the Series Overview for the rest.]

continua...

Generating a PEG Parser

by Guido van Rossum

Now that I’ve sketched the infrastructure for a parser and a simple hand-written parser in part 2, let’s turn to generating a parser from a grammar, as promised. I’ll also show how to implement packrat parsing using a @memoize decorator.

continua...

Building a PEG Parser

by Guido van Rossum

Inspired by only a partial understanding of PEG parsing I decided to build one. The result may not be a great general-purpose PEG parser generator — there are already many of those (e.g. TatSu is written in Python and generates Python code) — but it was a good way to learn about PEG, and it furthers my goal of replacing CPython’s parser with one built from a PEG grammar.

continua...

PEG Parsers

by Guido van Rossum

Some years ago someone asked whether it would make sense to switch Python to a PEG parser. (Or a PEG grammar; I don’t recall exactly what was said by whom, or when.) I looked into it a bit and wasn’t sure what to think, so I dropped the subject. Recently I’ve learned more about PEG (Parsing Expression Grammars), and I now think it’s an interesting alternative to the home-grown parser generator that I developed 30 years ago when I started working on Python. (That parser generator, dubbed “pgen”, was just about the first piece of code I wrote for Python.)

continua...

Language Creators Panel 2019

Transcript of «A Language Creators’ Conversation» recorded April 2, 2019, with Anders Hejsberg (Turbo Pascal, Delphi, C#, TypeScript), James Gosling (Java), Guido Van Rossum (Python) and Larry Wall (Perl), hosted by Carol Willing (Jupyter Project).

continua...