Eu já escrevi aqui sobre como é bom que a forma como temos usado XMLHttpRequest tenha um nome. Mas o pessoal está exagerando por aí.
Se você requisita XHTML do servidor, e não XML (mesmo que XHTML seja XML) então você está usando Ahah, um subset do Ajax. (É como quem diz: Ahah! Pensou que estava usando Ajax, hein! Desculpe, não resisti.)
Ops, será que é Ahah mesmo? Talvez seja Ahax (sem trocadilhos aqui.)
Chega, né pessoal? Que tal esquecer o preciosismo e chamar tudo de Ajax mesmo? Ou tem alguma coisa ali que não estou percebendo? Se você entendeu algo que eu não consegui, por favor, deixe um comentário.
Tag: Programação
Robô de Google Ranking Corrigido
Consertei o Robô de Google Ranking. Levei uns dois minutos. O Google tinha mudado o código deles. Ficar brincando de gato-e-rato com o Google não é divertido, principalmente numa época em que estou trabalhando tanto. Vou abrir o código desse treco, só achar 10 minutinhos de tempo…
Excelente repositório de Javascript
Estava lendo a ArqHP hoje e o Jonas Raoni, assíduo colaborador da lista, enviou um link interno de um site que ele mantém junto com o Carlos Rodrigues: JSFromHell.com.
Já tinha visitado o site no passado, mas o conteúdo cresceu um bocado. É uma coleção de exemplos em Javascript. Coleções de javascript a gente encontra às pencas por aí, mas essa é diferente. Não são códigos prontos para você copiar e colar. São códigos para quem trabalha com Javascript. Muito código útil para quem pretende construir seus próprios scripts, e também para quem está aprendendo Javascript agora e gostaria de ler um pouco de código bom. Recomendo.
RSSficador está de volta
Os scripts ASP de geração de RSS RSSficador e FeedFácil estão de volta.
Quando fiz a migração de servidor, tirei do ar tudo o que era em ASP e não era essencial. Por isso eles estavam fora. Alguém me escreveu perguntando do FeedFácil. Então está aí, os dois de volta. Bom proveito.
Pílulas
- Lumine: o autor do site me escreveu, mas não incluiu seu nome no e-mail. Também não achei o nome no site. De qualquer maneira, um trabalho interessantíssimo. Uma ferramenta de mapeamento de banco de dados em PHP. A idéia é que você não tenha que escrever SQL. Muito interessante.
- ONG descobre códigos secretos em impressoras: putzgrilo! Apavorante! Quero saber se é o hardware que faz, se funciona também no Linux. Se sim, só vou usar papel e caneta 😉
- Flock: tá todo mundo falando disso. As pessoas andam reclamando que ele não funciona, que tem bugs. Ei pessoal, eles avisaram, leiam o texto lá. É uma versão 0.4.9 apenas. O interessante do Flock para mim hoje não é o que ele pode fazer, mas o fato de essas coisas serem possíveis. Falar com sistemas tão diferentes como o Flickr, o Del.icio.us e o meu WordPress! Web 2.0, entendem? Esse tipo de coisa vai se tornar cada vez mais possível e cada vez mais comum.
- Firefoxit: widgets no Firefox. Uma versão 0.1, ou seja, não serve ainda para absolutamente nada. Mas a idéia é fantástica. Eu uso SuperKaramba. O Diego usa Konfabulator. Seria muito bom poder trocar widgets com ele ou escrever um Widget que rode em Windows e Linux. Seria também muito bom se os widgets pudessem ser escritos com HTML e Javascript comuns, isso tornaria essa coisa toda muito mais popular.
- Se a Forbes e as corporações que ela defende não se abrirem para o mantra “mercados são conversações” serão simplesmente atropeladas por outro mantra, “adaptem-se ou desapareçam”. Vi nas sinistras
Tutoriais de ajax
O servidor do Tableless está tendo problemas com o PHP. Uma porção de gente tem escrito a respeito dos tutoriais de Ajax que eu havia publicado lá.
Então, enquanto o pessoal do suporte não resolve o problema por lá: elcio.com.br/ajax.
Ventos de mudanças
Você sabe o que é Web 2.0? Excelente. Essencial para quem chegou agora e não está entendendo nada desse papo de “Ajax“, “GMail”, “RSS”, “tagsonomia”, etc…
O time que escreveu também é de primeira.
Concordo com tudo, sem tirar nem por (exceto, claro, picuinhas como alguém ter escrito que Ajax é linguagem de programação e outras imperfeições sem importância.) Essas são as coisas que tem tirado meu sono, sido objeto do meu estudo, e inspirando algumas das coisas que eu faço, como o Robô de Google Ranking que eu anunciei há pouco.
Percebem como o pessoal parou de falar sobre RIA rapidinho? Estamos todos fazendo RIA, sem flash, e é legal pra caramba! Fica aqui minha lista de coisinhas para você ficar de olho:
- Padrões Web: o caminho da simplicidade. XHTML, CSS e Javascrip
t são o material de alvenaria dessa nova web. XML são os tijolos.
- RSS/Atom: ainda tem muuuuita gente que nem sabe o que é isso. Mas, para quem já usa, é hora de dar um passo adiante. Pense em RSS ou Atom para outras coisas além de monitorar sites de notícias, e pense em RSS ou Atom sendo acessado por máquinas que vão fazer mais do que simplesmente te avisar das novidades. Há muito espaço para ser criativo aqui.
- Ajax: você sabe, a RIA descomplicada e acessível. Ando escrevendo um bocado sobre isso, não?
- Tags: manja del.icio.us? Coisa assim, classificação pelos usuários.
- Microformatos: esqueça a looonga espera por uma web semântica. Vamos construir coisas úteis e simples com a semântica que temos hoje.
- Spiders: e outros tipos robôs de acesso, claro. Pense em máquinas acessando a web e fazendo o trabalho sujo por você. Elas já estão por toda parte. É o Google, o Buscapé e o Bondfaro, o Yahoo!, o Adsense do Google (que lê minha página para exibir anúncios relevantes.) Chegou a hora desses robôs se multiplicarem. Acessando HTML (pense nisso com microformatos,) RSS, Web Services, seja o que for, há muitas oportunidades aqui.
- Internet Móvel: você vai querer fazer muito mais do que apenas ler seu email em seu celular
Se você quer acrescentar alguma coisa à lista, já sabe, comentários aí embaixo.
Por hoje é só pessoal. Parabéns ao pessoal do Carreirasolo pelo excelente post.
Robô de Google Ranking
Há algum tempo que o Robô de Google Ranking da Atípico está fora do ar. Como foi desenvolvido em ASP, eu estava sem vontade nem paciência para mexer nele.
Parei ontem à noite para desenvolver um em Python. Duas horas depois ele havia nascido: novo Robô de Google Ranking, ainda beta. Veja um exemplo de como usá-lo aqui. Feito com Python e PSE, ainda tem muito o que melhorar, mas já pode ser usado. Durante essa fase do trabalho comentários, bugs e sugestões são muito bem vindos. Tem algo que você queria que essa ferramenta fizesse ou algo em que ela poderia melhorar? Escreva aqui nos comentários.
Biblia em Python e XML
Me consumiu umas duas horas: Bíblia XML 2. Agora vou cuidar da interface, colocar um conjunto de radios para o sujeito dizer se quer fazer busca exata, todas as palavras, ou uma referência bíblia.
Fiz com Python e PSE. Muito produtivo.
PSE é uma ferramenta muito interessante. Tenho feito uma porção de coisas com Django, mas não é uma ferramenta para qualquer tarefa. Quando você vai desenvolver simplesmente um formulário de contato, ou uma aplicação de uma única página, como é a Bíblia XML, o trabalho de criar e configurar uma aplicação Django não compensa. Até descobrir o PSE eu usava (Argh!) PHP.
Agora a coisa toda mudou de figura. PSE é tão simples de começar a escrever quanto PHP ou ASP. A idéia é a mesma, um arquivo é uma página. Você pode inserir seu código Python em um arquivo separado ou pode mesclá-lo com HTML como faz com PHP. Suporta includes, sessions, application e custom tags, com uma sintaxe muito mais elegante que (Argh!) JSP. E, é claro, é Python, que tem um módulo pronto para praticamente qualquer coisa que você possa querer fazer na face da terra.
ShSFX, a self-extracting maker
ShSFX é um shell script que facilita a criação de arquivos self-extracting para sistemas Unix usando bash e tar.
Ajax (parte 2): encarando o mundo real
Este artigo é uma continuação do primeiro: Ajax para quem só ouviu falar. Se você ainda não leu o primeiro, pare e faça isso agora, pois vou começar exatamente de onde parei lá.
Leia o artigo: Ajax (parte 2): encarando o mundo real
CSS e cache
Uma dica:
Durante o desenvolvimento, costumo usar:
@import url(estilo.css?<%=rnd%>);
Assim não tenho problemas com cache.
Depois que o site vai pro ar, coloco:
@import url(estilo.css?1);
Quando preciso fazer alguma alteração, mudo o número:
@import url(estilo.css?2);
Assim, quem costuma visitar constantemente o site não vai ficar com a versão antiga em cache.
Obviamente, você pode fazer a mesma coisa com PHP, Python, JSP, ColdFusion… Basta trocar rnd pela função de random da sua linguagem.
Ajax e SEO
Dica boa, ao produzir Ajax, contrua primeiro o HTML acessível, depois coloque CSS, em seguida coloque javascript, como uma camada sobre o site que já funcionava. É o que eu sugeri no artigo que escrevi para o tableless. Isso garante a acessibilidade, inclusive para o Google. Veja os resultados.
Upload ASP sem componentes
Como fazer upload de arquivos no ASP sem usar componentes no servidor?
- Baixe esse arquivo: upload.asp.zip e descompacte em seu servidor. Eu costumo deixar arquivos como esse, que só contém funções genérica, na pasta /api no servidor, de onde eu posso fazer um include virtual em todas as aplicações em que precisar.
- O formulário tem que ser submetido de um jeito especial, assim
<form action="arquivoquerecebeopost.asp" method="post" enctype="multipart/form-data">
- Na página que vai receber o post, você não pode usar
Request()
nemRequest.Form()
, apenasRequest.QueryString()
. - No começo da sua página, chame a função
upload_ReadRequest
- Onde precisar ler os valores do formulário, use
uRequest("nomedocampo")
- Para salvar o arquivo:
upload_SalvaArquivo "nome_do_campo_file", "C:\Caminho\PodeUsarServerMapPathSeQuiser\", "nomedoarquivo.jpg", "jpg"
. O último parâmetro é uma lista das extensões permitidas (algo como “doc,txt,rtf,pdf”.) - Se quiser obter o nome do arquivo, use
UploadRequest.Item("nome_do_campo_file").Item("FileName")
. Vem o caminho completo, você precisa tratar a string se quiser apenas o nome. Isso não é difícil, eu costumo fazer com split.
Ajax
Tinha prometido, não é? Então toma: Ajax para quem só ouviu falar.
Coisas interessantes que ando fazendo com Python
Coloquei no ar há duas semanas minha primeira aplicação de verdade em Django. Interessantíssimo. Muito fácil, e está amadurecendo muito rápido.
Descobri o Glade, descobri a pyGTK e descobri que isso tudo roda bastante bem em Windows. Estou me perguntando como eu pude viver tanto tempo sem isso!
Acabo de descobrir a classe SimpleXMLRPCServer. Genial, duas linhas de código para servir webservices, mais uma para cada função que você quiser registrar. Amo Python!
Ajax e o hype
Minha primeira aplicação com XMLHTTPRequest foi feita em 1999. Era uma sala de bate-papo e naturalmente, só funcionava no Internet Explorer. Muito tempo antes disso eu já usava requisições em frames ocultos para evitar requisitar uma página inteira. De lá para cá as coisas evoluiram. O XMLHTTPRequest se tornou parte do padrão ECMA e os navegadores amadureceram em seu suporte, de modo que hoje é possível que aplicações como o GMail funcionem em pelo menos quatro navegadores diferentes.
Tenho uma ferramenta de bate-papo e navegação assistida que usamos nos cursos de padrões web. Quando a desenvolvi, como o suporte a XMLHTTPRequest ainda era incipiente, ela só funcionava no Mozilla e, às custas de muitos hacks, no Internet Explorer. Depois disso nunca mais mexi no código. Hoje ela funciona com perfeição no Opera 8 e no Konqueror 3.4 (alguma boa alma feliz proprietária de Macintosh poderia me ajudar a testar no Safari?)
Esse é um excelente exemplo de algo que eu vivia dizendo aqui: quem usa padrões não tem medo do futuro.
Além dessa aplicação, há uma série de outras, como a de preenchimento automático de endereços na tela de matrícula do curso (preencha o CEP e clique em buscar).
Assim como eu, muita gente já vinha desenvolvendo Ajax há bastante tempo. Você vê bons exemplos por aí, em todo lugar. E é natural que muita gente se levante contra o uso do termo. Afinal de contas, porque dar um nome novo e uma aparência de ser a descoberta do século para algo que eu já usava no século passado?
Isso me faz lembrar que muitos de nós tivemos o mesmo sentimento quando a Macromedia começou a falar em RIA. Ora, RIA para a Macromedia nada mais é do que Flash se comunicando com o servidor, provavelmente usando XML. Eu já fazia isso com o Flash 4, sem XML. Com o Flash 5 comecei a fazer a mesma coisa, dessa vez usando XML. Não há nenhuma novidade nisso!
A despeito de nossos protestos, a Macromedia continua falando em RIA, e o mercado adotou a idéia. Seu chefe, seus professores, ou talvez até seu cliente estão falando de RIA como se fosse a oitava maravilha do mundo.
Se não pode vencê-los, junte-se a eles! Vamos desenvolver RIA, usando Ajax! Vamos mostrar que também sabemos usar o hype e colocar nossas siglas na boca do povo. Vamos escrever comparativos entre Ajax e Flash, e mostrar que Ajax é a melhor solução para RIA na maioria dos casos. Vamos ver nossos gerentes e diretores falando sobre a nova tecnologia que a equipe de TI implantou sob o comando deles: Ajax. Vamos continuar defendendo padrões abertos baseados na simplicidade, mas vamos falar a língua deles. Assim você pode continuar fazendo seu trabalho e ao mesmo tempo satisfazer a necessidade que algumas pessoas tem de “algo novo que venha revolucionar o atual esquema de coisas” (seja lá o que queiram dizer com isso.)
Ajax neles!
Agora, sejamos honestos: o hype pode ser bom também para te fazer pensar. O Gmail para mim foi um tapa de luva de pelica. Os recursos estavam lá há bastante tempo, prontos para ser usados, e quantas oportunidades eu perdi de facilitar a vida das pessoas que vão usar meus sistemas porque subutilizei ou não utilizei XMLHTTPRequest. Talvez dar nomes às coisas ajude a torná-las ferramentas. Talvez da próxima vez eu vá me perguntar: não seria interessante aplicar Ajax aqui?
Para terminar, estou gostando do rumo que as coisas estão tomando. Estou fazendo experiências, estudando, de olho no que andam dizendo, e logo trago novidades para vocês (inclusive uma aplicação de exemplo que estou quase terminando.)
IEs 4 Linux
Finalmente tomei tempo para testar o IEs 4 Linux. Excelente! Merece um ícone mágico no Kurumin! Parabéns ao Sergio pelo fantástico trabalho!
Saiu!
Sistema Multi-idioma em ASP
Muitas vezes a melhor solução que se pode dar a um problema é a coisa mais simples que se consegue fazer. Foi exatamente o que aconteceu com esse sistema. Ao fazermos o planejamento do site da Santos Stones, sentimos que o site era simples demais para precisar do Prodo, nosso CMS. Desenvolvi então um pequeno script para obter dados de texto em vários idiomas de um arquivo XML. Não é que o pessoal do conteúdo aqui adorou editar direto o arquivo XML? Resolvi o problema do multi-idioma com 20 minutos de trabalho e, para minha surpresa, não tive que melhorar a solução. Serviu exatamente como estava.
Essa semana, na lista do GADW alguém estava procurando por algo semelhante. Bom, então estou publicando o sistema multi-idioma para quem quiser ver ou usar. Bom proveito.
UPDATE: Consertei o link para download. Obrigado ao pessoal que escreveu avisando.