O documento discute o conceito de mashups, apresentando exemplos e tecnologias envolvidas. É definido como uma composição incomum de conteúdo de origens não-relacionadas para consumo humano. Exemplos incluem mapas com fotos e buscadores com notícias. Tecnologias como APIs, AJAX, REST, scraping e semântica web são explicadas.
SlideMeme - Habilitando o SlideShare dentro do Yahoo! Meme - Yahoo! Open Hack...
Mashups: Criando Valor na Web 2.0 (BandTec)
1. Mashups: Criando
Valor na Web 2.0
Carlos Duarte do Nascimento
chester@apontador.com
@chesterbr http://chester.blog.br
2. O que vamos ver
● O que é um Mashup?
(e por que isso me interessa?)
● Exemplos
● Tecnologia
● Prática
(exercício(s?) - aprenda fazendo!)
3. Palestrante
(quem é esse cara?)
● Bacharel em Matemática Aplicada e
Computacional (IME/USP)
● Desenvolvedor de Software (20 anos)
● Entusiasta do Software Livre
● Gerente de Produto no Apontador
● Twitter: @chesterbr
● Mais informações: http://chester.me
10. Mashup
“uma composição incomum ou
inovadora de conteúdo (tipicamente
vindo de origens não-relacionadas)
feita para consumo humano”
11. Mashup
“uma composição incomum ou
inovadora de conteúdo (tipicamente
vindo de origens não-relacionadas)
feita para consumo humano”
Mashups: A nova raça de aplicações Web
Duane Merril, 2006/2009
14. Web 2.0
● Web como plataforma
● Sempre em beta
● Múltiplas plataformas
● Experiência rica
● Cavalgando a inteligência coletiva
O'Reilly, 2005
15. Mashup
“uma composição incomum ou
inovadora de conteúdo (tipicamente
vindo de origens não-relacionadas)
feita para consumo humano”
Mashups: A nova raça de aplicações Web
Duane Merril, 2006/2009
16. Tipos de Mashup
● Mapas
● Fotos e Vídeos
● Busca e compras
● Notícias
37. AJAX
● Navegador chama HTML principal
● Usuário clica/interage
● Cada interação gera uma chamada ao
servidor (em background)
● Respostas do servidor acionam eventos
(JavaScript), que redesenham partes da
Página (usando DOM)
39. AJAX com jQuery
<script type=”text/javascript”>
$.getJSON("http://api.flickr.com/services ↵
/feeds/photos_public.gne?tags= ↵
cat&tagmode=any&format=json& ↵
jsoncallback=?",
function(data){
$.each(data.items, function(i,item){
$("<img/>").attr("src",
item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});
</script>
40. REST
● Representational State Transfer
● Usa apenas HTTP (RFC 2616)
● Entidades são caminhos, ex.:
/clientes/empresaX/pedidos/32
● Verbos HTTP: GET, PUT, DELETE...
41. Crawling / Scraping
● Extrair dados “na marra”
● Último recurso (sujeito a quebra
e problemas legais)
● Cuidados: não sobrecarregar o
servidor, obedecer ROBOTS.TXT
● Sugestão: XPath
44. Web Semântica/RDF
● Grosso modo: “descrever o
significado do conteúdo”
● RDF (Resource Description
Framework) é um meta-formato
● Pode ser embutido no próprio
HTML
● Dica: pesquise “microformats”
45. RDF (FOAF) embutido
<html>
<head>
</head>
<body>
<p >Oi, eu sou o
Carlos
Nascimento .
<img src="chester.jpg"
/>
</p>
</body>
</html>
47. RSS
● Sigla com vários significados
(dica: Really Simple Sindication)
● Descreve / agrega conteúdo
(web syndication) em uma timeline
● Publish / Subscribe
● É só um XML! (1.0 era RDF)
48. KML
● Keyhole Markup Language
(Keyhole Earth Viewer ⇒ Google Earth)
● Descreve pontos geográficos
● É um XML
● Extensível e tem subsets, ex.: ARML
(Augmented Reality ML)
49. KML
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
<name>New York City</name>
<description>New York City</description>
<Point>
<coordinates>
-74.006393,40.714172,0
</coordinates>
</Point>
</Placemark>
</Document>
</kml>
53. Exercício: Mashup JavaScript
● Cadastre-se:
http://www.apontador.com.br
● Crie o aplicativo, anote
o key e o secret
● Aprenda sobre a API Apontador:
http://api.apontador.com.br
● Faça uma busca no navegador:
http://api.apontador.com.br/v1/
search/places/byaddress
?state=sp&city=Sao+Paulo&term=museu
54. Exercício: Mashup JavaScript
● Exemplo da API do Google Maps:
http://aponta.me/1yr
● Crie o mapa.html copiando e
colando o exemplo
● Mude o local e o zoom:
var latlng = new google.maps.LatLng(
-23.57775, -46.64326);
var myOptions = {
zoom: 15,
55. Exercício: Mashup JavaScript
+
O ideal seria criar uma página no
servidor (museus.php), ex.:
<?php
header("Content-Type: application/vnd.google-
earth.kml+xml")
echo file_get_contents(
“http://$key:$secret@
api.apontador.com.br/v1/search/places...”)
(e na real, usaríamos libcurl no lugar de file_get_contents)
56. Exercício: Mashup JavaScript
+
mas vamos ganhar tempo e
chamar uma página já pronta:
var layer = new google.maps.KmlLayer(
"http://chester.blog.br/museus.php",
{preserveViewport: true});
layer.setMap(map);
58. Links Úteis
Textos
● What is Web 2.0, Tim O'Reily: http://aponta.me/2F9q
● Mashups: The new breed of Web app: http://aponta.me/11tYX
Documentação
● Apontador API: http://api.apontador.com.br
● Google Maps API “Hello World”: http://aponta.me/4Dbf
Mídia
● Vídeo do Girl Talk: http://aponta.me/AA8
● Grey Album (DJ Danger Mouse): http://aponta.me/1CV