Comemoração de 10 anos do meu site AURELIO.NET
Parte 4
- 10 anos de sáite
- 10anos: Vim
- 10anos: Sed
- 10anos: Expressões Regulares
————— ∞ —————
Voltemos uma década, ao ano de 1999. Fui ver o filme Matrix no cinema (a câmera girava mesmo cara!!!) e o bug do milênio seria o fim do mundo, o Apocalipse Nerd.
Pra garantir, imprimi o extrato da conta bancária no dia 31 de dezembro. Sabe como é, vai que… :)
Mas 1999 marcou minha vida mesmo por causa de uma outra coisinha que acabou cruzando o meu caminho: Expressões Regulares. Nosso encontro foi acidental. Eu não queria saber delas, aliás, eu nem sabia que elas existiam. Naquela época o que eu queria mesmo era aprender Sed, o comando mágico do UNIX. Mas isso você já leu no texto anterior, né?
Era isso, meu único objetivo era aprender Sed. Só. Mais nada. Ele já era difícil o suficiente para me manter ocupado por semanas. Mas quando fui estudar o tal Sed FAQ, ali no meio tinha uns aliens tipo ^(.*): e [0-9]{1,3}. Que isso?
— Aurélio, estas são as Expressões Regulares!
— Ãn?
— Esses aliens que você viu, são metacaracteres que compõem expressões regulares.
— Quem tá falando?
— Faz diferença?
— Mmmm… Não.
— Então?
— Tá, fala.
— Você não quer aprender Sed?
— Quero.
— Você não quer DOMINAR o Sed?
— Quero! Quero! Quero!
— Então primeiro vai ter que dominar essas expressões feiosas.
— Sério?
— Sério.
— F*deu.
Fiquei arrasado com esta revelação. Não podia ser verdade. Tentei comovê-lo:
— Mas eu só queria aprender o Sed!
— Sim.
— E essas expressões são muito mais difíceis!
— Sim!
Pô, foi uma ducha de água fria. Uma ducha não, foi um banho de cachoeira no inverno às 6 da manhã.
— Mas… Mas é que….
— Sem choro. Aprenda ou desista de uma vez.
— Desistir? Retroceder nunca, render-se jamais!
Confesso que no começo eu não gostei das expressões. Achei tudo muito obscuro, mal explicado e feio. Parecia uma grande gambiarra que no final funcionava por mágica.
Já de início foi uma confusão tremenda com os curingas da linha de comando. Eu sabia que *.txt expandia para todos os arquivos com a extensão txt, mas o asterisco em Expressões Regulares era diferente, ele sozinho não fazia nada. Ah, e o ponto também era especial. Então o similar nessa nova linguagem era .*\.txt$. Feio.
Na lista de discussão gringa do Sed, também apareciam muitas dúvidas sobre as expressões, e aos poucos fui acompanhando e entendendo um pedacinho aqui, outro ali. Sempre testava os exemplos na minha máquina, tentava fazer variações, tirava um caractere aqui, colocava outro ali e via no que dava. É triste aprender assim, sem um texto que te leve pela mão do início ao fim em uma sequência lógica, mas eu não tinha outra escolha.
Tentei compensar esse trauma no livro do piazinho :)
Mas devagar e sempre, como geralmente são as coisas para mim, fui aprendendo.
Não sei dizer quanto tempo demorou para eu conseguir fazer minhas próprias expressões, mas aquela aversão inicial transformou-se em curiosidade, depois em empolgação e finalmente em paixão. Quanto mais eu aprendia, mais tinha vontade de aprender. Eu pensava em metacaracteres o dia todo!
.oO( Qual a expressão para casar o nome de todas as pessoas deste ônibus? )
.oO( E a expressão para casar as notas do refrão de Cretin Hop? )
.oO( E a que casa o desenho das calçadas “petit pavet” de Curitiba? )
— Aurélio! Menos.
— Ops. Tá.
————— ∞ —————
Bem, mais uma vez, eu queria compartilhar aquilo que tinha aprendido, então criei uma área especial para as expressões regulares no meu site para juntar dicas e links. Dessa vez não vou deixar para o final, afinal, você já sabe: em comemoração aos 10 anos do site, essa área acabou de ser reformada! \o/ Confira.
Mas voltando à história, no ano seguinte (2000), a Conectiva, empresa em que eu trabalhava, lançou a primeira revista nacional sobre Linux, a Revista do Linux. Os funcionários foram convidados a contribuir com artigos. Eu gostei da ideia e me apressei para escrever sobre o que eu sabia. Na terceira edição da revista apareceram dois artigos meus, um sobre o modo texto e outro sobre as então misteriosas… (rufam os tambores) …expressões regulares! (Óooooh)
Relendo o texto do primeiro artigo agora, é engraçado perceber como ele é confuso, bagunçado. Mas teve um parágrafo em especial que foi o campeão: não entendi nada. Misturei ignorecase com curinga e ficou sem pé nem cabeça:
Alguns editores, com uma busca um pouco mais esperta, permitem a procura ignorando a diferença entre letras maiúsculas e minúsculas, através do uso de um curinga, geralmente o asterisco (*), que significa “qualquer coisa”. Este também funciona na linha de comando, pois quando você faz um ls *.txt, está listando “todos os arquivos com a extensão .txt”.
Depois saiu a segunda parte deste artigo. Esse já ficou melhor, pois não está tão confuso. Curioso é perceber que nesta época eu ainda não tinha achado nomes legais para alguns metacaracteres. O “ou” eu chamava de “alternância” e o “retrovisor” era o horrível “referência retroativa”, uma tentativa de tradução de “backreference”. Coisas da vida…
Foi em 2000 também que resolvi meter o pé na jaca de vez e ler o desafiador Mastering Regular Expressions. Um livro enorme, denso, completo, (posso dizer “chato” sem parecer que é invejinha?), que esmiuça cada detalhe de cada tipo de implementação das expressões regulares. É a obra-prima sobre o assunto. Mas infelizmente, em inglês.
A Conectiva comprou o livro e eu dedicava parte de meu horário de trabalho para lê-lo e (tentar) entendê-lo. Isso sim é investir no funcionário. Bons tempos aqueles…
Apanhei, mas consegui ler o tijolão. Com meu inglês tosco e falta de conhecimento sobre alguns assuntos, devo ter entendido no máximo uns 75% do livro. Mas foi o suficiente para me mostrar todo o poder que essas expressões têm. Foi um caminho sem volta, eu já não era mais um mero usuário, agora eu sentia que dominava as benditas regex.
Para praticar o conhecimento novo, escrevi o programa txt2regex, um assistente que te ajuda a compor uma expressão regular. Ele vai fazendo perguntas, você responde e plim! Lá está sua expressão, pronta para usar. Ele fez sucesso durante alguns anos, foi incluído em distribuições de Linux, apareceu em revistas gringas (França, Japão, Alemanha) e era bem quisto pelos usuários. Depois não atualizei mais e ele foi sendo esquecido gradativamente… Snif.
Lembro que foi um grande desafio na época escrever esse programa, pois eu encasquetei de só usar os comandos internos (builtin) do Bash. Mas isso fica para um futuro texto sobre shell :)
Com os artigos na Revista do Linux e o txt2regex, eu já era conhecido como “o cara das regex” lá na Conectiva e em alguns círculos nerds. Mas o assunto ainda era um nobre desconhecido para a grande maioria dos usuários. Uma lástima, pois eu sabia todo o poder que as expressões tinham, queria divulgar mais isso.
————— ∞ —————
Numa manhã qualquer de 2001, eu estava conversando com meu chefe (Wanderlei Cavassin) sobre algo relacionado às expressões. Não lembro se ele estava com uma dúvida ou se queria mostrar algo que tinha encontrado. Só lembro que em determinado ponto, do nada, ele dispara:
— Verde, já que você manja disso, por que não escreve um livro?
— Hein?
Fui pego de surpresa. Nunca tinha pensado nessa hipótese. Para mim, escrever livros técnicos era coisa de gente grande, de professor universitário com barba grande e cabelos brancos. Eu com meus 23 aninhos era apenas um girino.
Mas ele disse que a editora Novatec, aquela que fazia uns livros fininhos (Guias de Consulta Rápida), estava procurando autores. Então ele me incentivou a mandar um email para a editora. Vai que…
Desacreditado, mandei o email. Achei que não ia dar em nada, afinal, eu não tinha cabelos brancos, além de que eu achava que eram as editoras que iam atrás dos autores, e não o contrário. No email eu perguntei se eles… Péra! Será que… (vasculha, vasculha, vasculha)
ACHEI! \o/
----------------------------8<----------------------------- De: verde@conectiva.com.br Assunto: autor para guias de sed e expressões regulares Data: 12 de abril de 2001 11h45min22s GMT-03:00 Para: novo@novateceditora.com.br oi, estava olhando a página de vocês e vi que estão procurando autores de guias de consulta rápida para vários temas técnicos. se tiverem interesse em publicar algo sobre sed e/ou expressões regulares, me candidato. já tenho documentos, textos e programas publicados caso tenham interesse: sed-HOWTO http://conectiva.com.br/~aurelio/sed/sed-HOWTO txt2sgml.sed – script em sed que converte texto puro para SGML http://conectiva.com.br/~aurelio/sed/programas/txt2sgml-sed expressões regulares – parte 1 http://www.RevistaDoLinux.com.br/ed/003/ferramentas.php3 expressões regulares – parte 2 http://www.RevistaDoLinux.com.br/ed/007/ereg.php3 txt2regexp – programa “wizard” de expressões regulares http://freshmeat.net/projects/txt2regexp valeu. -- s·:(·>(·×^a]×http://www.verde666.org×^[:wq ---------------------------->8-----------------------------
A resposta veio a jato, em 10 minutos:
Temos interesse muito grande em um guia sobre Expressões Regulares. Existem muitos detalhes a serem esclarecidos e por telefone é mais prático neste momento. Favor informar o seu número de telefone e o melhor horário para eu ligar. Se preferir, ligue para mim no fone (0xx11) 6979-XXXX ou 6959-XXXX.
É difícil explicar o que senti neste momento.
Era uma manhã normal de trabalho, eu estava tranquilo lá no meu computador. Fazendo algum script, lendo email, sei lá. Um dia como qualquer outro. Aí do nada, numa conversa normal, o chefe faz uma pergunta estranha e minutos depois, tenho na minha caixa o email de uma editora dizendo que tem interesse em um livro que eu poderia escrever!

Cerca de três meses depois, em 31 de julho de 2001 era lançado na Fenasoft meu primeiro livro: Expressões Regulares — Guia de Consulta Rápida. O trabalho de escrita foi intenso, me internei para conseguir terminar tudo antes da feira. Mas a satisfação de ver o livro na minha mão brilhando, folheá-lo, cheirá-lo, valeu a pena.
Foi o primeiro livro sobre o assunto, escrito em português. Naquela época havia alguns poucos em inglês. Para desespero do editor, ele não conseguiu tirar da minha cabeça a ideia de disponibilizar o livro completo na Internet, e assim o fiz. Dias antes do lançamento, todo o livro já estava inteiro disponível no meu site, para quem quisesse consultar. E de fato, até hoje ele ainda está lá, livre e gratuito.
————— ∞ —————
O livro me deu uma visibilidade boa, fiquei mais conhecido e assim aumentaram as visitas no meu site, e ganhei usuários novos para meus programas. Também começaram a aparecer convites para dar palestras e cursos em eventos, e assim, aquele cara que em 1999 torceu o nariz quando viu as expressões pela primeira vez e sofreu bastante para aprendê-las, agora tinha se tornado uma referência no assunto. É... Vale a pena o esforço, pode acreditar.
Durante cerca de cinco anos o livrinho verde vendeu, devagar e sempre, cerca de 40 exemplares por mês. Ao preço de 20 reais e com 8% de direitos autorais para o autor, eu ganhava incríveis R$ 1,60 por exemplar vendido. E aí, animou-se a virar escritor(a)? :) Fazendo as contas, dava cerca de 60 pilas por mês no meu bolso. É, dava pra pagar umas passagens de ônibus e uns X-saladas...
Em 06/09/2006, Rubens Prates escreveu:
Aurélio, temos apenas 45 exemplares em estoque do ER, fora o que está consignado nas livrarias. Logo teremos que reimprimi-lo. O que deve ser corrigido, fora o que está indicado na errata do seu site?
Em 2006 o estoque do livrinho estava acabando, e em vez de fazer uma reimpressão, o editor teve a ideia de transformá-lo em um livro de verdade. Me empolguei, pois eu não gostava de chamar o guia fininho de "livro", era um --force. Fiz uma reforma geral no conteúdo, além de ter adicionado tópicos novos, o que fez o livro pular de 96 páginas estreitas para 141 páginas espaçosas. Nasceu o Expressões Regulares — Uma Abordagem Divertida.
Ah, e sabe quem também nasceu neste momento?
Em 22/09/2006, Karine Hermes escreveu:
Percebi que, no decorrer do texto, você introduz comentários, como se alguém estivesse conversando com você, lhe perguntando coisas, aprendendo... O que você acha de utilizarmos um personagem para isso? Veja, em anexo, duas páginas de teste que fiz.

O piazinho em sua primeira aparição
O piazinho deu mais alegria ao texto, virou mascote e o livro foi um sucesso de vendas. Com uma média de 95 exemplares vendidos por mês, meus ganhos com direitos autorais aumentaram consideravelmente, batendo na casa do R$ 300,00 mensais. Nada mal, não dá pra viver disso, mas já pagava algumas contas.
O blog já existia quando lancei este livro, então quem é leitor mais antigo, acompanhou toda a saga em tempo real :) Você viu o nascimento, o lançamento, o sucesso de vendas, o milésimo exemplar, e comemorou junto o primeiro ano de vida. Ah sim, nesse meio tempo você também descobriu que ele é um livro para crianças e que o piazinho da capa existe na vida real :)
Em 2008 o livro branco esgotou-se, e novamente veio a dúvida se faríamos uma simples reimpressão ou se daríamos um passo adiante, fazendo uma segunda edição com conteúdo novo. Confesso que no início eu estava com preguiça, mas com o incentivo da Mog e do editor, fiz mais uma reforma geral no livro, adicionei tópicos novos e até uma tirinha do Nerdson entrou na brincadeira.
Assim nasceu o amarelão, com direito a site próprio, muito chique. No primeiro mês ele foi o mais vendido na Livraria Cultura e no mês seguinte fez dobradinha no pódio com a concha galáctica. Com nove meses de vida foi vendido o milésimo exemplar e mês que vem ele completará um aninho.
Será?
Será que dura até lá?
Eu ouvi uns rumores vindos do norte, dizendo que parece que o estoque estava meio baixo... Se isso for verdade, mais uma vez será a hora de escolher entre a reimpressão e uma nova edição. E mais uma vez estou com preguiça. A história se repete :)
E você, o que acha?
O livro tá bom como tá?
O que você gostaria de ver na 3ª edição?
bejomeliga







Pingback: 10anos: Sed | AURELIO.NET
Já ia procurar o artigo sobre o Twitter para amaldiçoa-lo
Quanto ao ER, o que posso dizer é que eu amo ele :). Tenho uns scripts aqui com umas linhas bem cabulosas. Ta certo que eu desconfio que seria possível reduzi-las pela metades, mas ai perderia o charme :D.
Mas esse amor deve-se ao fato de consegui-lo entender o que acontece. Culpa do livro do piá.
Um dia eu acerto o balanço entre o que postar no twitter e o que postar aqui, mas por enquanto tá algo tipo:
twitter: “escuta essa!”
blog: “senta que lá vem história…”
:)
Aurélio!
Quanto tempo :)
Cara… Eu adorei o livro do Piazinho! Consegui entender esse bicho sem ler o tijolão ;)
Sou suspeito pra dizer, pois admiro seu trabalho e fui muito surpreendido pela maneira que vc abordou o tema: com diversão! Então pra mim tá bom, mas por favor não dê bola pra mim… sei que vc pode fazer coisas ainda melhores!
Abraços e muito sucesso,
Thiago
Valeu pelo depoimento, amigo!
Tá, vou te ignorar então ;)
Olá Aurelio,
Cara muito bom esse livro é como se abrisse um compartimento na minha cabeça e as idéias ficassem mais amplas. Muito bom nos prende ao livro e ao mesmo tempo nos deixa livres.
Uma dica construtiva>>>>
Não seria melhor se as palavras que se referem aos metacaracteres
nos textos, fossem em itálico???
Flw. Abraço!
Valeu pelo depoimento e pela dica Áquila!
Vou ver se rola de fazer essa mudança.
Ou alguma forma de destacar ?
Fala Aurélio! :)
Eu comprei os livros de ER e do Bash (e ainda contribui com o canivete). O livro de ER é muito bom pois tem conteúdo e é de leitura ágil e fácil compreensão. Me permitiu então ir mais a fundo em ER usando outras referências e então pude construir um script BASH de cerca de 600 linhas para um trabalho de forense digital utilizando ferramentas GNU/Linux. Se for trabalhar em uma nova edição, gostaria de sugerir mais exemplos práticos de uso de retrovisores em bash e sed principalmente, mostrando a implementação na versão GNU e na standard, acho que vai dar um grande ‘plus’ …
Keep up the excellent work, mate!
Danilo.
Oi Danilo,
Muito obrigado pelo apoio e pelo depoimento!
Na segunda edição do piazinho há exemplos de uso de retrovisores no Bash (pág 141) e Sed (pág. 139). Mas são exemplos genéricos para você aprender como faz, e então aplicar no seu problema.
Eu estou pensando em algo mais prático, de mostrar exemplos completos com situações reais, mas daí isso não pode ser específico de uma linguagem, teria que ser feito para todas.
Bem, foi continuar aqui matutando para amadurecer a ideia.
Valeu!
Parabéns Aurelio.
Eu sou jornalista, não manjo nada de programação,
mas já brinquei com comandos do seu guia no meu FreeBSD.
Acho que vc é um programador competente e um escritor com estilo.
Continue publicando, traduza seus livros para o inglês.
Vai vender em dólar a nível global.
vc merece.
Fico na torcida.
Abraço
Valeu a força Avelar! Quanto à tradução, já conversei algumas vezes com o editor sobre isso. Apareceram algumas oportunidades de traduzir para o inglês e para o espanhol, mas elas não se concretizaram. Como não é somente a tradução em si, mas todo o esquema de distribuição e venda, é mais complicado. Mas eu penso nisso sim, seria muito bom poder expandir o público dessa maneira…
Sensacional diagramação do seu post…
até gosto da linha de comando,
mas sou péssimo em expressões regulares,
mas só pra manifestar o parabéns por 10 anos de livro!! (10 anos? quantos anos vc tinha quando escreveu? Ah, deixe, é o tempo mesmo…)
parabéns xuxu!
100 milhões de livros vendidos é o que desejo pra vc!
Daê Gaz!
Opa, só pra deixar claro, é 10 anos de site e Expressões Regulares, mas o livro escrevi somente em 2001, eu tinha 23 anos. Tá, isso não muda tanto assim as coisas, continuo velho do mesmo jeito hehe Mas como estudamos juntos, se eu tou velho você também tá :P
Ah, e obrigado pelo comentário sobre a diagramação. Acho que deve ter sido o primeiro aqui no blog. Eu perco bastante tempo formatando o texto para que fique agradável a leitura, sem ser muito cansativo. É bom saber que alguém apreciou isso.
Abração amigo!
Eu tinha o livro do piazinho da capa branca. Depois de andar comigo vários dias entre o trabalho e a minha casa, ele “sumiu”…. :( Esse livro me ajudou muito na eleboraração de alguns scripts em Perl. Meu chefe olha os códigos e fala: Parecem aqueles palavrões das histórias em quadrinhos!!! hahahahaha. Parabéns pelo site.
Tomara que quem afanou tenha lido o livro em vez de usar como apoio do monitor ou algo assim :)
E não é que eu tava relendo a versão amarela hoje mesmo, antes de ver esse post? Não vejo a hora de chegar a terceira edição.
\o/
Nesse filme de 10 anos eu fui um mero figurante (melhor que apenas um espectador) onde conheci a aprendi muito sobre a aclamada expressão regular.
Não me lembro quando, mas lembro que faz muito tempo que escrevi uma doc para o Dicas-L e ganhei o “Expressões Regulares — Guia de Consulta Rápida” o qual está na minha ao meu lado.
Aqui onde trabalho estava debugando o funcionamento de uma ferramenta produzida por uma grande multi nacional e percebi que o desenvolvedor usava perl para fazer alguns parsing, porém quebrando o log dentro de um array e fazendo um loop para pegar os campos. Consegui melhorar a performance traduzindo essas várias linhas em uma única regexp.
Sei que aqui não é a Universal, entretanto este é um dos meus casos de sucesso com o que aprendi sobre regexp e com a sua ajuda.
Obrigado!
Muito obrigado pelo seu testemunho irmão Ricardo! :)
Massa mesmo saber destas histórias, fico feliz por ter feito parte delas de alguma maneira.
Quem sabe não dá pra dar um jeito de colocar um pouco disso dentro do livro? Vou pensar a respeito. Quem tiver mais histórias pra contar, desembucha! :)
Cheguei atrasado xD
Um dos melhores livros que já li foi Expressões Regulares – Uma Abordagem Divertida, 2º Edição. Confesso que fiquei babando três semanas por este livro, até que consegui pagar as continhas e finalmente compra-lo, e faria tudo novamente por uma edição nova xD
Abraço Verde.
Xi, então prepara o bolso que já tou aqui escrevendo conteúdo novo pra 3ª edição :)
Um belo dia estava no shopping indo comprar presentes de natal, quando um indivíduo pergunta ao vendedor do meu lado “Estou procurando um livrinho de Expressões Regulares”, eu continuei olhando para as prateleiras como se não tivesse ouvido nada. Então o vendedor fuça em vários livros pensando “Que porcaria é esta que esse cara quer”.
Cansado de ficar neutro na conversa, eu acho o livro do verde e dou na mão do vendedor… “É esse mesmo que eu queria” responde o indivíduo.
Eu até esqueci de comentar o fato aqui, mas lembrei dele agora. O cara foi determinado a comprar o livro do verde, quem pode pode!
Procurando um livro para presente no setor de informatica?
isso sim é nerd.
Ps. poucos presentes superam um livro.
Eu não fui comprar livro, estava indo comprar acessórios de informática que estava perto.
Massa a história Alexandre! E obrigado pela ajuda, graças a sua boa vontade mais uma alma pôde ser iluminada pelos conhecimentos milenares das expressões regulares! \o/
Meu caro, meus parabéns por esse sucesso! Siga em frente publicando mais livros divertidos (e se precisar da minha ajuda novamente, estou à disposição ;-)!
Abração!
Valeu Nerdson! :D
Agradeça ao Karlisson a venda de mais um livro ! (Ja tenho leitura para as ferias !) e pode me chamar de n00b. Eu nunca tinha ouvido falar desse livro e a novatec colaborou pra isso ! #fail_novatec.
Agora vamos ver se aqueles enjambres que chamo de scripts melhoram um pouco ! #unix_gambiarra
Opa, espero que curta a leitura, obrigado a você pela compra e ao Karlisson pela indicação!
Se você curte fazer scripts, de repente depois pode se interessar em ler a concha galáctica também :) http://www.shellscript.com.br
você mudou do SourceForge para o GoogleCode, agora seria interessante passar para o github ………
Olá caro colega, quero dizer que em poucas, ou pouquíssimas palavras, você fez com que eu aprendesse muito, mas muit mesmo, minha praia, é PHP, MYSQL, JAVASCRIPT, e com a adição das ER’s, o mundo das trevas ganhou um pouco de luz . . . pode crer . . .
Continue sim, sua didática é simplesmente ótima
Abraç [ão]
Djalma !!
Esse é o cara! Só acho sacanagem chamar as expressões de regulares, essas expressões são DEMAIS!!!