Arquivo do Autor: andreba

Transformer de papel: Optimus1 (protótipo)

Paper Transformer: Optimus (prototype)

Protótipo do Optimus de papel

English version below.
Depois de muito tempo, resolvi voltar ao hobby de tentar fazer um transformer de papel. O escolhido para ser o primeiro, como não podia deixar de ser, foi o Optimus.
O projeto ainda não está finalizado, estou montando um protótipo para ver se tudo encaixa certinho. Durante esta montagem fui notando erros e corrigindo. Não gostei muito das mãos, mas não achei solução melhor.
Segue algumas fotos do protótipo montado até agora. Ainda não está pronto, falta a cabeça, o resto das pernas e as rodas.


After a long time, I’m trying to do paper transformers again. I’ve chosen Optimus to be the first of this new series.
The project isn’t finished yet, I’m doing first a prototype to test and see if everything goes well. While I did this one I’ve noticed and corrected some flaws. I don’t like his hands, but didn’t found a better solution.
Below there is some pics of the prototype, not yet finished. It’s missing the head, half of the legs, and the wheels.

Optimus1 (montagem do protótipo)

Treasure Island

Memórias de infância:

Não lembro onde isso foi comprado, mas tinha quando criança e muito joguei. O jogo começava no painel da esquerda, onde o personagem tinha que tentar chegar na ilha, fugindo de tubarões e um polvo. No painel do meio você ficava jogando o tempo que quisesse, desviando dos fantasmas e catando tesouros, mas com o tempo apareciam mais fantasmas e iam ficando mais rápidos. Por fim, no painel da direita era para tentar ir embora da ilha, desviando de pedras jogadas por um pirata. Simplesinho mas bom para a época.

Lendo Gmail com Gnus & Emacs

"Mãe! Esse cara usa EMACS!"


Estou seguindo o tutorial em http://www.emacswiki.org/emacs/GnusGmail mas já encontrei várias dificuldades. Primeiro, ao usar este trecho indicado no tutorial:

(add-to-list ‘gnus-secondary-select-methods ‘(nnimap “gmail”
(nnimap-address “imap.gmail.com”)
(nnimap-server-port 993)
(nnimap-stream ssl)))

Tive que colocar assim:

(setq gnus-secondary-select-methods ‘(nnimap “gmail”
(nnimap-address “imap.gmail.com”)
(nnimap-server-port 993)
(nnimap-stream ssl)))

Segundo, o emacs reclamava do parâmetro nnimap. Resolvi isso lendo esta mensagem: http://lists.debian.org/debian-user/2001/12/msg00597.html
Basicamente, o trecho acima teve que ser mudado também para:

(setq gnus-secondary-select-methods ‘((nnml “”) (nnimap “gmail”
(nnimap-address “imap.gmail.com”)
(nnimap-server-port 993)
(nnimap-stream ssl))))

Agora aparentemente funciona, mas não aparece um “grupo” de news no gnus referente ao Gmail, só os newsgroups normais que acesso do servidor de news. Continuando a pesquisar…

Hello world!

Acabei de me mudar pra cá, ainda vou passar uns dias ajeitando algumas coisas. Depois vejo como colocar meu tema antigo.
Just moved to here, will spend the next days adjusting some stuffs. Later I’ll see some way of putting my old theme here.

De Volta Para o Futuro em 2010

Está circulando um e-mail por aí com uma foto do painel do carro do filme De Volta Para o Futuro Parte II, com a suposta data em que o Marty McFly chegava no futuro, como sendo hoje (06 de julho de 2010).


Esta é a foto que recebi no e-mail:

Foto falsa do painel, mostrando 06 de julho de 2010

De cara estranhei a data… eu tinha 15 anos em 1990 quando vi o filme no cinema, e me lembro que a estória se passava em 1985 (o “presente” no filme), e que ele viajava 30 anos para o futuro, portanto para o ano 2015. Fui conferir minha memória na Wikipedia e não só vi que realmente o ano certo seria 2015, mas que este e-mail que está circulando é lorota. A imagem foi editada. Olha aí embaixo a imagem real, cortesia da Wikipedia:

Foto com a data correta, 21 de outubro de 2015

Pois é gente, eu tô desde 1990 esperando 2015 chegar pra ver se os adolescentes vão mesmo usar a calça jeans do avesso, os carros vão voar, as roupas vão se ajustar e secar sozinhas, vai ter pilhas de laserdiscs de lixo nas ruas (hahahaha), e outras coisas do tipo. Pelo menos eu venho reclamando sobre o não surgimento dos carros voadores desde o ano 2000 🙂

Se bem que essa dos carros voadores é bem mais antiga que este filme; muitas estórias de ficção científica do século passado tinham essa ideia. Talvez os Jetsons tenham sido grandes culpados em propagar a ideia, mas eu lembro de outras… já li uma estória em quadrinhos do Mickey de 1950 (em preto e branco), onde o Mickey viajava no tempo para o ano 2000 e não só os carros voavam, como até mendigo ficava deitado em rede flutuante pedindo esmola. Só não coloco um scan dessa cena online, porque essas revistas ficaram na casa de meus pais, em outro estado.

Histórias de Usuários

Hoje, organizando uns arquivos velhos que tinha guardado, achei um texto com alguns relatos meus de dez anos atrás, quando comecei a trabalhar na área de informática e a maior parte do tempo eu fazia atendimento a usuários. Isso no tempo dos Windows 95 e 98, e com usuários que não tinham recebido nenhum treinamento de informática.
Os relatos são do final dos anos 90, quando eu trabalhei como administrador de rede em um certo lugar que contava com várias unidades em outras cidades, e por causa disso, a maioria dos atendimentos de suporte a usuário eram feitos via telefone mesmo.
Caso 1
Telefonou uma pessoa dizendo que estava imprimindo, mas na impressora HP só saía “sujeira”. Geralmente isso acontecia porque alguns computadores tinham um chaveador de impressora, e o que devia ir para uma impressora matricial foi para uma jato de tinta. Também haviam computadores com duas portas paralelas (de impressora), então podia ser configuração errada: o driver de HP imprimindo para a LPT2 ao invés da LPT1 ou vice-versa.
Por isso, perguntamos logo de cara se aquele micro tinha chaveador de impressora; “não” foi a resposta. Aí perguntamos: “Tem duas impressoras instaladas nesse micro?”
A usuária pediu um momento, afastou a boca do telefone e gritou:
“Ô fulana, tem duas impressoras nesse micro que eu estou usando?”
Caso 2
Uma usuária estava tomando um curso de um sistema para Windows 95. Só que as máquinas do curso estavam configuradas para trabalhar em rede, portanto ao ligar aparecia a tela de logon, pedindo nome de usuário e senha. Como a usuária nunca tinha visto essa tela (só tinha usado máquinas fora da rede), ela chamou o professor dizendo que tinha uma tela estranha… pedindo uma senha…
O professor, já sabendo o que era, disse: “Tecle ESC pra sair dessa tela”.
A usuária: “Aqui só tem OK e CANCELAR”.
Caso 3
Usava-se o Lotus Notes como sistema de correio eletrônico. De tempos em tempos, os usuários recebiam uma mensagem sobre “renovação do certificado Notes” e que existe uma data limite para a renovação. Geralmente eles ligavam para perguntar o que é isso, e daí o administrador Notes explicava o que fazer.
Acontece que, quando expira a data limite e o usuário não solicitou a renovação do certificado, ele não consegue acessar mais seu correio… e o adm. Notes tem de deletar o usuário e recriá-lo, mas precisa saber da senha do usuário (ou assim me explicaram os administradores do Notes, na época). Uma coisa chata de se perguntar ao usuário, mas enfim… só se chegava a essa situação porque o próprio usuário passou meses recebendo a mensagem sobre o certificado e não o renovou.
Depois de muita conversa o pobre administrador do Notes descobriu que o usuário estava fazendo o seguinte: todas as vezes que via a mensagem do certificado, ele alterava a senha. (existia uma mensagem semelhante, que pede para o usuário trocar a senha dele em um certo prazo — mas isso não tem nada a ver com o certificado).
Finalmente, o usuário foi dizer pro adm. Notes qual era a senha dele, explicando assim pelo telefone: “Fulano, minha senha é o seguinte… zero-nove-zero-nove-zero-nove, mas primeiro eu vou pra esquerda, depois eu vou pra direita”.
Tradução (obtida depois de mais vários minutos de conversa): Sabe qual era finalmente a senha do cara? o90909 (“ó”-nove-zero-nove-zero-nove). Ele chamou a tecla O (“ó”) de zero. E o caso de direita-esquerda era o seguinte: ele digitava a tecla O no lado esquerdo do teclado (parte alfanumérica), depois ia para a parte direita do teclado e digitava o 90909 restantes.
No meio da conversa toda, o usuário tentou explicar assim, para o já confuso administrador Notes: “Esse zero aqui, onde tem no teclado, i-zero-pê…”
Caso 4
Ao perguntar para um funcionária porque os formulários dela eram preenchidos todos à máquina de escrever, ao invés de com o computador, recebi a resposta:
“Minha impressora não tem Word nem Excel.”
Atualização: relendo este caso 4 agora, eu me lembrei porque a usuária deu esta resposta: é que a impressora dela era matricial, ainda muito comum naquela época, e portanto não imprimia documentos feitos em programas para Windows. Ou seja, ela não podia imprimir nada feito em Word ou Excel naquela impressora.

HTML hates Regexp

English version below.

This probably should get HTML tags out of a string...

This probably should get HTML tags out of a string...

Visto no http://www.codinghorror.com/:

You can’t parse [X]HTML with regex. Because HTML can’t be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML.
Regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML. HTML is not a regular language and hence cannot be parsed by regular expressions. Regex queries are not equipped to break down HTML into its meaningful parts. so many times but it is not getting to me. Even enhanced irregular regular expressions as used by Perl are not up to the task of parsing HTML. You will never make me crack. HTML is a language of sufficient complexity that it cannot be parsed by regular expressions.
Even Jon Skeet cannot parse HTML using regular expressions. Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The <center> cannot hold it is too late. The force of regex and HTML together in the same conceptual space will destroy your mind like so much watery putty. If you parse HTML with regex you are giving in to Them and their blasphemous ways which doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane, he comes.

Artigo completo: http://www.codinghorror.com/blog/archives/001311.html
Nunca cheguei a fazer nenhum parsing sério de HTML com expressões regulares, mas pelo visto não é uma boa idéia. A menos que você queira apenas checar algumas tags simples.
Este comentário no artigo esclarece um pouco mais:

For the brave of heart: Write a regular language to recognize all strings of balanced parens.
Actually, don’t, because this is provably impossible.
Why? Because regular expressions recognize *regular languages*, a specific, well-defined class of languages. HTML, like the balanced parens problem above, doesn’t conform to this pattern.
Every once in a while, I’m reminded of why studying bona fide computer science in college was the right idea. It won’t necessarily make you a better programmer, but it has saved me from doing really stupid things from time to time, like trying to parse html with a regex.
David R. Albrecht on November 16, 2009 10:23 AM

Realmente, regexps não podem ser usadas para nada além de checar tags simples, e nunca para um texto HTML inteiro: (http://www.perlmonks.org/?node_id=8624)

you cannot write a regexp that will match any level of nested balanced parentheses. You can always write one to match a specific number of balanced ones, but not one that can match a non- fixed number of these. I think there is an explaination in the Friedl book.

Um comentário retirado do Regular Expression HOWTO que resume bem a situação:

(Note that parsing HTML or XML with regular expressions is painful. Quick-and-dirty patterns will handle common cases, but HTML and XML have special cases that will break the obvious regular expression; by the time you’ve written a regular expression that handles all of the possible cases, the patterns will be very complicated. Use an HTML or XML parser module for such tasks.)

Portanto… não faça isto.


This probably should get HTML tags out of a string...

This probably should get HTML tags out of a string...

Visto noSeen at http://www.codinghorror.com/:

You can’t parse [X]HTML with regex. Because HTML can’t be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML.
Regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML. HTML is not a regular language and hence cannot be parsed by regular expressions. Regex queries are not equipped to break down HTML into its meaningful parts. so many times but it is not getting to me. Even enhanced irregular regular expressions as used by Perl are not up to the task of parsing HTML. You will never make me crack. HTML is a language of sufficient complexity that it cannot be parsed by regular expressions.
Even Jon Skeet cannot parse HTML using regular expressions. Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The <center> cannot hold it is too late. The force of regex and HTML together in the same conceptual space will destroy your mind like so much watery putty. If you parse HTML with regex you are giving in to Them and their blasphemous ways which doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane, he comes.

Full article: http://www.codinghorror.com/blog/archives/001311.html
I never used regular expressions to do any serious HTML parsing, but thinking about it it doesn’t looks a good idea. Unless you just want to check some simple tags.
This comment in the article is interesting:

For the brave of heart: Write a regular language to recognize all strings of balanced parens.
Actually, don’t, because this is provably impossible.
Why? Because regular expressions recognize *regular languages*, a specific, well-defined class of languages. HTML, like the balanced parens problem above, doesn’t conform to this pattern.
Every once in a while, I’m reminded of why studying bona fide computer science in college was the right idea. It won’t necessarily make you a better programmer, but it has saved me from doing really stupid things from time to time, like trying to parse html with a regex.
David R. Albrecht on November 16, 2009 10:23 AM

Indeed, regexps cannot be used to anything else beyond checking simple tags, and never for a full HTML text: (http://www.perlmonks.org/?node_id=8624)

you cannot write a regexp that will match any level of nested balanced parentheses. You can always write one to match a specific number of balanced ones, but not one that can match a non- fixed number of these. I think there is an explaination in the Friedl book.

A comment taken from the Regular Expression HOWTO that sums it up well:

(Note that parsing HTML or XML with regular expressions is painful. Quick-and-dirty patterns will handle common cases, but HTML and XML have special cases that will break the obvious regular expression; by the time you’ve written a regular expression that handles all of the possible cases, the patterns will be very complicated. Use an HTML or XML parser module for such tasks.)

So… don’t do this.

Licenças de Software Livre e de Código Aberto

Ontem dei uma palestra no Serpro, onde trabalho, na Regional Brasília. sobre o tema Licenças de Software Livre e de Código Aberto. O conteúdo está disponível para download na página aulas e palestras.
UPDATE: pode-se assistir ao vídeo da apresentação e baixar o vídeo aqui.