YQL – Yahoo Query Language

27/5/2009 | Tags:, , , , , | Escrito por: Dirceu Pauka Jr.

YQL é uma linguagem que permite buscas nas bases de dados do Yahoo ou em documentos especificados pelo desenvolvedor.

Uma boa maneira de entender o uso dessa linguagem é ver um pouco de código.

JS-Placemaker – geolocate texts in JavaScript é uma demonstração de como utilizar a YQL para buscar informações em uma API do Yahoo chamada Placemaker.
Dê uma olhada no código.

O exemplo usou o Placemaker, porém as outras APIs do Yahoo também podem ser buscadas.

Vamos a outro exemplo, dessa vez utilizando dados de outra API.

API do Twitter pelo Yahoo! YQL

Para quem nunca usou a API do Twitter existe um guia sobre a API.

Twitts de Usuário

Para ver alguns twitts de um certo usuário existe o método statuses/user_timeline. A entrada para ele é o ID do usuário.

Como especificado, uma requisição HTTP para esse método se parece com:
http://twitter.com/statuses/user_timeline.xml?user_id=12345

No YQL é tão simples quanto:

select * from twitter.user.timeline where id=12345

Faça o teste YQL Console

twitter

Esse exemplo utilizou a tabela do Twitter que faz parte do projeto DataTables. Projeto que reúne várias tabelas criadas por outros desenvolvedores.

Então é possivel criar novas tabelas!?

É sim! É possivel até mandar o Yahoo fazer screen scraping e retornar o resultado em JSON!

Mais um exemplo!

Digamos que eu quero fazer um widget para retornar alguns produtos do Submarino.

Cumprindo seu papel de maior e-commerce brasileiro o Submarino não dá a minima para os desenvolvedores e não possui até hoje uma API. Vamos “hackear” uma ;D

A busca pelo site é feito pelo seguinte HTTP GET: http://www.submarino.com.br/busca?q=ipod
Usaremos essa URL para buscar dados no Submarino utilizando a YQL.

A primeira parte para fazer o YQL ler documentos é simples:

select * from html where url=”http://www.submarino.com.br/busca?q=ipod”

A segunda é um pouco complicada. Para entender é necessário o minimo de conhecimento sobre XPath.

Para extrair o XPath da parte desejada do conteúdo usei o Firebug, porém é possivel usar o XPather também.

No Firebug use o “Inspect” para encontrar o elemento desejado:
Firebug

Copie o XPath:
xpath

Com o XPath do elemento HTML “pai” do produto temos a chamada YQL completa.

select * from html where url=”http://www.submarino.com.br/busca?q=ipod” and xpath=’/html/body/div/div[2]/div/div/div/div/div/div/div[2]/div/div/div/ul/li/div/a[3]‘

Abra o Console do YQL e teste. Legal! Temos uma busca de produtos no Submarino retornando XML ou JSON e aprendemos a usar o YQL com APIs do Yahoo, com APIs do DataTables e com qualquer documento da Web ;D

Como fazer um widget de ofertas do Submarino com YQL

Outros artigos relacionados ao Yahoo Open Strategy:

Yahoo! Web Services – apresentação das APIs
SearchMonkey Monkey
Yahoo! SearchMonkey



Yahoo! Web Services – apresentação das APIs

23/5/2009 | Tags:, , , , , , , , , | Escrito por: Dirceu Pauka Jr.

No #brhackday08 o foco dos desenvolvedores do Y! já parecia ser o de abrir a sua API.

Parte do Yahoo Open Strategy, SearchMonkey e BOSS foram os destaques das apresentações, mas uma serie de outros serviços da empresa foram apresentados para os desenvolvedores.

API do Yahoo!

O termo é realmente vago para quem nunca olhou a lista de serviços (web services) que a empresa oferece.

Pipes e SearchMonkey são possivelmente os mais conhecidos. Mas outros produtos do Y! para desenvolvedores são interessantes.

Pipes

O serviço permite a criação de mashups entre outras fontes de dados. O fluxo de dados extraídos das paginas pode ser construído usando uma interface visual bem legalzinha.

yahoo pipes screenshot

SearchMonkey

SearchMonkey é a ferramenta que permite modificar o visual da busca do Yahoo!
As informações que aparecerão nos resultados da buscas podem ser extraídas das paginas usando XPath.

Exemplo de resultado da busca com SearchMonkey:

Search Monkey funcionando

BOSS

Busca aberta. API que retorna os resultados da busca do Yahoo! em JSON ou XML.
É possivel facilmente “re-rankear” os resultados antes de mostrar para o usuário adicionando novas regras.

Music

Essa API pouco conhecida abre possibilidades interessantes para criação de serviços em cima.
Ela dá acesso a informações sobre artistas, álbuns, músicas e vídeos e permite buscas com diversos parâmetros.

Weather

API usada pela Apple em sua aplicação “Weather” do iPhone OS.
Além é claro de poder ser usada em gadgets como iPods e Wii, mashups (principalmente com geodata) podem ser criados com essa ferramenta disponibilizada pelo Y!

Todas essas “fontes de dados” do Yahoo! podem ser usadas de uma melhor forma com geodata.

O Google Latitude está em funcionamento a algum tempo e sua proposta (geo location) vai ajudar muito a filtrar o que rola na real-time web.

O Yahoo! não quer ficar de fora.

Yahoo! Placemaker™ Beta

Lançado recentemente em conjunto junto com o Y! Geoplanet™ o Placemaker™ não é uma solução de geo location.

O que ele faz na verdade é buscar em um documento por informações sobre “locais”.

O exemplo dado pela pagina do projeto é ruim de se entender por não enviar um texto e sim o nome exato do local.
Mas esse exemplo é interessante. Não deixe de ver.

O documento de resposta do Yahoo! contem o que é chamado de woeids.

Mas e ai, o que fazer com um “woeid”?

O woeid é na verdade uma identificação numérica referente a um local no GeoPlanet™.

GeoPlanet™

GeoPlanet é outro webservice do Y!. Lançado junto com o Placemaker promete ser útil em todo futuro desenvolvimento com geodata.
A busca por um “woeid” retorna dados específicos sobre o lugar. Dados que são organizados e catalogados pelo Y! e não exigem nenhum grande trabalho para quem for utilizar o serviço.

YQL

A linguagem de buscas YQL (Yahoo Query Language) é uma grande idéia e códigos que facilitam o uso dela já comeram a serem criados.

Conheça outras APIs do Y! (sim, existem mais!) e saiba o que é YQL e como utilizar a linguagem do Yahoo!



Código que permite produção de aplicativos para iPhone OS com JavaScript na mira da Apple

18/5/2009 | Tags:, , | Escrito por: Dirceu Pauka Jr.

A única forma oficial de colocar uma aplicação na iTunes Music Store é a produzindo na linguagem Objective-C usando a SDK de desenvolvimento da Apple.

Porem, a SDK possui um componente chamado UIWebKit. Esse componente nada mais é que uma janela do navegador Safari, que pode ser usado pela aplicação.

O UIWebKit, assim como o Safari, possui um interpretador JavaScript. Isso permite que um desenvolvedor com habilidades em HTML, CSS e JavaScript utilize toda a força de um navegador moderno como o WebKit (SQLite, HTML5, Canvas, etc) para fazer fortuna na lojinha de Jobs.

Indo além, o tal do UIWebKit pode ser estendido para executar funções da SDK de dentro do interpretador JavaScript. Por exemplo: a funcionalidade que faz o iPhone vibrar não é disponível para a API JavaScript do Safari, porém código (Objective-C) pode ser escrito de forma que o JavaScript tenha acesso a tal função.

PhoneGap

Um projeto chamado PhoneGap tem a intenção de juntar em um só lugar os códigos que fazem a ligação entre o componente UIWebKit e as APIs publicas do iPhone OS.

Ele não é um framework nem uma API. Muito menos faz chamadas a API do iPhone que são de uso somente da Apple (API privada).

O PhoneGap é somente um esqueleto de aplicação com um Safari preenchendo toda a tela da aplicação e carregando o arquivo index.html da pasta www (que vai junto com a aplicação). É simples assim. Se você manja HTML, CSS e JavaScript poderia ficar rico também na App Store.

Poderia meu irmão, poderia.

Na semana passada alguns revisores da Apple começaram a recusar aplicações que levam pelo menos um pouco do PhoneGap. Essa semana, conforme reportado na lista de discussão do projeto, nenhuma aplicação foi aceita. Todas recebem a mesma reposta:

Após a análise da sua aplicação, ** não pode ser enviado para App Store devido ao uso de API privada.
O uso de APIs privadas é proibido conforme descrito no ponto 3.3.2 do “iPhone SDK Agreement”:

“Uma aplicação não pode instalar ou executar outro código por nenhum meio, incluindo sem limitação o uso de plug-ins, chamadas a outros frameworks, outras APIs ou outra forma.
Nenhuma código interpretado pode ser baixado e usado em uma aplicação, exeto o código que é interpretado e executado pelo ‘Apple’s Published APIs’ e seus interpretadores.”

A API do PhoneGap implementada na sua aplicação é um framework externo.

Por enquanto nenhuma outra posição da Apple ou dos desenvolvedores do PhoneGap foi tomada. A recomendação é que quem precisar colocar a aplicação na App Store não arrisque com o PhoneGap.

Boa sorte aprendendo Objective-C.



Valley turns into meme the work of Yahoo!’s Brazilian team

16/5/2009 | Tags:, , , , | Escrito por: Stéfano Torres

The term Internet meme or meme for the short, it’s given to a kind of content that spreads really really fast threw the web, (mostly by some social network) from person-to-person.

Or at least it was until this week when the term meme was also the name of the new Yahoo! service, which turned out to be a real meme with a blog post on TechCrunch, followed by a link stream on Twitter.

Meme was developed by a Brazilian team of Yahoo!, which up until yesterday, has released some invitations by mail.

Meme has nearly the same appeal of weheartit (social image bookmarking), though at the same time, it work can be seen as inspired by many other social nets such as del.icio.us, blip.fm, YouTube, Vimeo, last.fm, Facebook, digg, orkut, Flickr, plurk, meadiciona, and so it goes with an infinity of nameless apps that I don’t even have to say so that you get it: The new Yahoo! Service follows the company’s tradition of creating mashups or buying social nets of content sharing, and is not a copy of any other product.

Currently the service finds itself closed to any new registrations while Yahoo! performs the analysis of the alpha feedback (the test period before it be released to the open public).

Alpha was open for a day so that users could send invitations to their friends. I guess it was so that it wouldn’t give a bad impression to any new user, with the lack of some functionality, the invitations system was disabled today.

I truly hope that the Brazilian team at Yahoo! keep going with the great work e I’ll take the apportunity to comment something that it’s tremendously important IMHO:

If you’re wearing a good framework, building an API as good as Flickr shouldn’t be so hard. Make it fast, before that scripts be programmed to perform actions at the service pages. Definitely this will be heavier than some JSON or any others HTTP verbs.

You know what I’m talking about (:

http://meme.yahoo.com/dirs/

Translated and edited from this post, by me.



Silicon Valley transforma em meme trabalho de equipe brasileira do Yahoo!

15/5/2009 | Tags:, , , , | Escrito por: Dirceu Pauka Jr.

O termo “Internet meme” ou somente “meme” é dado a um conteúdo que se espalha muito rápido pela internet sendo passado (muitas vezes por meio de uma rede social ) de pessoa a pessoa.

A partir dessa semana o termo meme passa também a ser o nome do novo serviço do Yahoo! que virou um meme de Internet com uma materia do blog TechCrunch seguida por um stream de links no Twitter.

Desenvolvido por uma equipe brasileira do Yahoo! o meme teve alguns convites enviados por e-mail para o começo dos testes.

O meme tem um apelo parecido com o weheartit (que é um social image bookmarking) mas ao mesmo tempo é uma obra inspirada em outras
redes sociais como o delicious, blip.fm, youtube, vimeo, last.fm, facebook, digg, orkut, flickr, plurk, me adiciona, e outra infinidade de aplicativos que não preciso citar para me fazer entender: o novo serviço do Yahoo! segue uma tradição da empresa que é a criação de mashups ou a compra de redes sociais de compartilhamento de conteúdo e não é uma copia de nenhum outro produto.

Atualmente o serviço se encontra fechado para novas inscrições enquanto o Yahoo! analisa o feedback do alpha, a fase de testes antes do produto ser liberado para as massas.

Por um dia os usuários do alpha puderam enviar convites a amigos. Creio que para não prejudicar a experiência de novos usuários com a falta de algumas funcionalidades o envio de convites foi desabilitado hoje.

Espero que a equipe brasileira do Yahoo! continue com o ótimo trabalho e aproveito para comentar algo que na minha opinião é importante:

Se estiverem usando um bom framework, fazer uma API tão boa quanto a do Flickr não deve ser difícil. Façam rápido antes que scripts sejam programados para executar funções nas páginas dos serviço. Com certeza isso será muito são mais pesadas do que um simples JSON ou outros verbos do HTTP.
Vocês sabem do que estou falando :)

http://meme.yahoo.com/dirs/



Melhore seu jQuery-fu, escreva plugins

3/5/2009 | Tags:, , , , | Escrito por: Dirceu Pauka Jr.

Essa é uma tradução de “Improve your jQuery-fu, write plugins” de Tomáš Kramár Trnava.
Escolhi traduzir esse texto pois ele foi o tutorial mais simples que encontrei quando precisei escrever um plugin. No final dele você será capaz de entender como o jQuery trabalha com plugins e poderá escrever os seus próprios.


jQuery é um framework JavaScript simples e poderoso que mudou minha forma de programar JavaScript. Um novo JavaScript dizem alguns com certa razão. O código que você cria é pura elegância.

Você começa com 10 linhas de jQuery que poderiam ter sido 20 linhas do tedioso JavaScript manipulando DOM. No final você acaba ficando com duas ou três linhas.

E esse numero pode ficar ainda menor se você refatorar o código para um plugin do jQuery.

Quando o assunto é escrever plugins, pessoas (tipo eu) normalmente pulam fora com medo. Eu ouvi sobre plugins de jQuery a bastante tempo mas nunca havia tentado escrever um. Quando pensava no assunto algumas idéias vinham na minha cabeça:

  • Deve ser difícil e por isso deixe isso somente para jedis
  • Isso deve precisar de um conhecimento profundo do jQuery
  • O que eu vou ganhar?

(Eu vim do mundo Java, imagine).

Nota do tradutor:
(Eu vim do mundo Ruby ;D).

Nada do que eu imaginava é verdade. Escrever um plugin é facil como escrever algo usando o jQuery. Não é necessario nenhum conhecimento especial. Tudo o que é preciso é extender um objeto jQuery. Algo como:

Lembra? Isso é JavaScript, não Java. O código acima é tudo que você precisa para criar um plugin. Dentro da função, $this é a referencia ao objeto jQuery de onde o plugin foi chamado.

No exemplo, $this é um objeto com os elementos

e você pode fazer de tudo com eles. Como o plugin retorna $this, você pode continuar executando metodos do jQuery usando “Method Chaining”.

De volta a minha última questão. O que você possivelmente vai ganhar criando um plugin?

Alto nivel de reusabilidade
Muitos pedaços de JavaScript são geralmente reaproveitáveis, mas criando um plugin você passa ele para outro nível.

Configuração
Isso é ligado ao ponto anterior. O cenário sem plugin é ter um pedaço de código que você copia e cola modificando para seu proposito. Isso pode ficar muito mais fácil com plugins. Você pode escrever o seu para, por exemplo, aceitar algumas opções. Veja como fica agora:

Elegância
O código acima parece melhor que um script inteiro, não parece?

Agora é a hora de mostrar um exemplo real. Vamos fazer um script para tornar clicável cada linha da tabela.

Sempre que eu queria fazer as linhas clicáveis eu copiava esse código e mudava a URL ou o nome do parâmetro.

Com o plugin fica assim:

settings = $.extend(defaults, settings); // escreve em cima das opções default com as opções enviadas
$this = $(this);

$(”tr”, $this).click(function() {
location.href = settings.href + ‘?’ + settings.paramName + ‘=’ + $(”td:first”, $(this)).html();
});

return $this;
}

E então:

Ou quando eu quiser outra configuração:

Para saber mais sobre o desenvolvimento de plugins para jQuery, leia o guia oficial de desenvolvimento ou esse excelente artigo de Mike Alsup.
Espero ter inspirado você.