Windows Vista Declarado o Produto Mais Decepcionante do Ano.

•18/12/2007 • Deixe um comentário

A PC Magazine declarou achar o Windows Vista o produto mais decepcionante do ano na área da informática (via Slashdot). E, pelo que andam dizendo por aí, muita gente concorda. E se você olhar a lista completa, vai ver que o Zune e o Office 2007 também entraram, um pouco atrás.

"Codifier"

•17/12/2007 • Deixe um comentário

No post sobre Dificuldades Técnicas, havia mencionado que criei um script para formatar trechos de código para postar aqui. Ei-lo:

#! /usr/bin/env rubyif ARGV.size == 0  puts "Usage: #{__FILE__} (files to format)"endFile.open("out.txt", "w") do |out|

  ARGV.each do |filename|    out.puts "<pre>"    out.puts File.read(filename).gsub("<","<")    out.puts "</pre>"  end

end

Chamadas Periódicas Sem Atropelo

•17/12/2007 • Deixe um comentário

Recentemente, precisei criar uma página que fazia chamadas periódicas ao servidor, para saber se um determinado processamento longo havia acabado, e carregar os resultados no caso positivo. No Rails, a melhor maneira de se fazer isso é com a função periodically_call_remote, que dispara uma chamada AJAX em intervalos regulares. Mas, aí, como é de praxe, encontrei um pequeno problema quando o código foi para o ambiente de integração. As chamadas são assíncronas (o primeiro A do AJAX), acontecendo a cada X segundos, mas a chamada que finalmente carregava os resultados demora mais de X segundos para ser completa. Então, no meio do carregamento, uma outra chamada era iniciada e terminava justo a tempo de substituir a maravilhosa tela de resultados pela tela de “por favor espere”.

Tornar as chamadas síncronas resolvia este problema, mas fazia o browser congelar completamente nos n*X segundos que a resposta demorava para carregar. Então, a saída que eu acabei utilizando foi criar uma variável de “estado”, manipulada pelos callbacks do Prototype, para garantir que apenas uma chamada assíncrona executasse por vez.

Este é o resultado:

<script>var stop_polling = false;var polling = false;</script><%= periodically_call_remote(              :url => ping_search_search_results_url(@search),              :method => :get,              :frequency => 3,              :condition => "stop_polling == false && polling == false",              :after => "polling = true",              :complete => "polling = false"             ) %>

A primeira variável (“stop_polling”) tem seu valor mudado pelo servidor quando os resultados ficam prontos. A segunda é alterara pelo próprio script para impedir que uma nova chamada seja executada enquanto a anterior ainda está esperando sua resposta. Com isso, o browser do usuário não congela.

Dificuldades técnicas.

•17/12/2007 • Deixe um comentário

Um dos motivos pelos quais eu não tenho escrito nada nesses últimos dias é porque eu quero postar exemplos de código, e o Blogger não é lá muito bom nisso. Achei alguns “add-ons” que fazem um bom trabalho, mas para instalá-los eu precisaria ter o controle do servidor onde os posts são hospedados. E se é para fazer isso, eu vou é criar a minha própria plataforma de “blog”, eventualmente. Dizem que o Rails faz isso em quinze minutos, então vai ser uma boa oportunidade de aprendizado.

Por enquanto, vou usar um programinha que escrevi em dois minutos para embrulhar a amostra desejada em um par de tags “pre”, e substituir todos os “<” lá dentro pela entidade HTML correspondente.

Um Pouco de Computaria Explícita

•11/12/2007 • Deixe um comentário

Ouvido na Internet:

“Dizer que Java é bom porque roda em qualquer plataforma é como dizer que sexo anal é bom porque ‘funciona’ com os dois sexos.”

“Comentários em código são como sexo. Até mesmo quando são ruins, ainda são bons.”

“Não, é a programação que é como o sexo. Se você cometer um pequeno erro, vai ter que sustentá-lo pelo resto da vida.”

Steve Jobs Prega Extorsão Explícita

•06/12/2007 • 1 Comentário

O Steve Jobs recentemente teve uma daquelas idéias que movem o mundo, e prontamente a sugeriu para os grandes estúdios de Hollywood: por que não vender DVDs “premium”, que custam US$4 (20%) a mais e incluem uma versão do filme em formato próprio para colocar em um iPod?

A idéia é ruim porque qualquer um que possua um iPod capaz de tocar vídeos provavelmente também conhece um programinha para converter vídeos para o formato do iPod, a partir de um DVD ou de um arquivo em outro formato. Por que as pessoas pagariam a mais?

A resposta do Jobs é: porque os DVDs Premium conteriam DRM que impediria os usuários de extrair o filme por outros meios! Não necessariamente porque a proteção seria tecnicamente perfeita (todo DRM é eminentemente quebrável), mas porque as leis dos EUA tornam qualquer tentativa de contorná-la ilegal! Ou seja, algo que é perfeitamente legal e que não apresenta custos adicionais torna-se uma atividade subversiva, um privilégio pelo qual os reles mortais devem pagar aos estúdios (e à Apple). Creio que isso seja chamado de “extorsão” em círculos mais tradicionais.

O Cory Doctorow, no Boing Boing, ao comentar a notícia, compara o DRM a uma infecção urinária.

O Fim do Arco-Íris

•30/11/2007 • Deixe um comentário

Eu tenho passado um certo tempo pensando em realidade aumentada, nesses últimos dias, parcialmente devido a um jogo de Shadowrun que estou mestrando pela RPG.net. Sendo assim, tive sorte em descobrir que o Vernor Vinge, um dos mais famosos autores de ficção científica dos EUA, liberou seu livro Rainbows End gratuitamente na Internet. É uma história pós-cyberpunk, uma das melhores que eu já li, e faz um uso bastante pesado de realidade aumentada, indo muito mais longe que os cuidadosos cérebros dos autores de RPG já ousaram ir.

Alterando Plugins de Rails – O Método do "Gêmeo Maligno"

•20/11/2007 • Deixe um comentário

Uma das coisas boas do Rails é o sistema de plugins, que permite aumentar a funcionalidade do framework de várias maneiras. Mas existe um problema bem comum associado a ele: muitas vezes um determinado plugin quase faz aquilo que você quer, então você precisa alterá-lo para que ele se adapte melhor. Como fazer isso?

Este artigo do Err the blog mostra um método bastante interessante.

Pegadinhas do Internet Explorer

•12/11/2007 • Deixe um comentário

Eu ia escrever “Internet Exploder”, mas aí ia ficar mais difícil achar o post através de buscas…

Pegadinha 1: Cabeçalhos de tabela são protegidos contra alteração. Portanto, páginas com AJAX que como um de seus efeitos alterem cabeçalhos de tabela não vão funcionar no IE. Use um “div” no lugar apropriado ao invés de mexer com os cabeçalhos.

Pegadinha 2: No IE, a função Javascript “window.open” sempre deve ter o nome da janela. E esse nome não deve conter espaços. Os outros browsers aceitam isso na boa, mas o IE não.

O Uso do Flash em Animação

•09/11/2007 • Deixe um comentário

Agora há pouco eu li um artigo to John Kricfalusi (o criador do Ren & Stimpy) sobre como o Flash tem contrubuído para a criação de desenhos “sem vida”. Lá ele diz que falar que o programa é “só uma ferramenta” é errado. Eu, apesar de ser completamente leigo em animação, discordo disso.

O Flash é apenas uma ferramenta. Como toda ferramenta, ela é mais adequada para certos propósitos do que para outros. Você pode tentar fixar pregos batendo neles com uma chave inglesa, e pode até conseguir, mas seria muito melhor ter usado um martelo! Até os comentários do artigo parecem chegar à mesma conclusão.

O que o Flash faz muito bem, até onde eu sei, é conectar várias ilustrações estáticas em sequência, e preencher os espaços vazios entre elas de forma automática. O que faz os desenhos feitos em Flash parecerem estáticos ou sem vida é a escolha por parte dos animadores (e produtores, etc.) de usar a automatização ao máximo, com modelos-padrão de personagem, poucas poses primárias e transição completamente automática entre uma e outra.

Como muitas ferramentas de software, o “melhor” uso do Flash freqüentemente não é aquele para o qual os seus criadores o criaram. A julgar pelos comentários naquele artigo, e em outros do mesmo site, ele poderia ser usado como um substituto conveniente para vários passos tradicionalmente muito caros do processo de animação tradicional – mais especificamente, a filmagem, com aquelas câmeras multiplano enormes, e a edição, que costuma envolver tesoura, cola e quilômetros de película.

Para o resto (criação dos quadros de animação, reprodução do “efeito analógico” da película tradicional) com certeza existem outros programas e ferramentas mais adequadas. Creio que aprender a usá-las seja uma atividade mais produtiva do que ficar tecendo comentários luditas como alguns dos que foram postados em resposta ao artigo do Jonh K.