sexta-feira, 15 de outubro de 2010

Consumindo a API do Twitter com PHP e PEAR

Depois de varios exemplos de acesso a API do twitter com PHP e outras linguagens, busquei uma forma mais simples e cheguei a este result em 3 passos. Não vou explicar muito mas se alguem tiver duvidas só perguntar....


Primeiro - você tem que ter o PEAR instalado - http://pear.php.net/

Segundo - Inclua a classe RestConnection no seu projeto.

Terceiro - uma funcao exemplo para retornar uma busca por tag no twitter:

public function twitter() {
$pathParams = array();
$pathParams["{format}"] = "json"; //Formato da resposta
$queryParams = array("q" =>"carro","result_type"=>"recent"); // parametros da busca
$conn = new RestConnection("http://search.twitter.com/search.{format}", $pathParams, $queryParams, false);
$result = $conn->get();
$result = json_decode($result->getResponseBody(), true);
return $result['results'];
}

quinta-feira, 2 de setembro de 2010

CensorCheap

"CensorCheap é um projeto exclusivo, lançado em 24 de agosto de 2010, com o intuito de mapear a censura na internet pelo mundo.

 A idéia é realmente simples: Instalar um pequeno addon no seu firefox e, sempre que você tentar acessar um site que é censurado por seu ISP ou do seu país, esta informação será armasenada em um banco de dados de colaboração em tempo real. A CensorCheap irá compilar estes dados e construir um mapa da censura em todo o mundo."

 

Para saber mais sobre o projeto é só acessar o site oficial http://censorcheap.org/

Para colaborar é instalar o addon.


segunda-feira, 16 de agosto de 2010

Adobe Contribute CS5

O que é Adobe Contribute CS5?

 

Segundo a Adobe é:

O software Adobe® Contribute® CS5 é uma ferramenta poderosa de publicação na Web e gerenciamento de websites que integra criação, revisão e publicação em um editor de HTML WYSIWYG fácil de usar. Aumente a produtividade da publicação na Web em colaboração, simplificando, ao mesmo tempo, as tarefas de supervisão e aprovação.

 

Estou Fazendo este post pelo Adobe Contribute CS5, muito facil e simples mesmo.

 

 Os softweres da Adobe em geral são faceis e intuitiveis de usar. para mim o programa que você precisa de tutorial ou manual para usar não é um bom programa, mas isso é assunto pra outro post......

quinta-feira, 24 de junho de 2010

Busca CEP com google maps

Quando precisei de uma busca de cep para implementar em um cadastro encontrei diversas soluções, algumas pagas, mas nenhuma que atendia as minhas necessidades e claro, de fácil implementação.

O problema
No cadastro em questão era exigido o cep do cliente, o problema é que nem sempre o cliente sabe ou tem paciencia de buscar em outro site ou até mesmo em uma conta de luz por exemplo, esse tipo de dificuldade pode fazer com que o cliente dexista do cadastro.

Solucao Implementada

Segue uma solução simples usando a API http://code.google.com/intl/pt-BR/apis/maps/documentation/javascript/v2/basics.html do Google Maps e flamework javascript Mootools (você pode usar qualquer outro ou nenhum flamework se assim desejar)

HTML

<input type="text" name="consulta" id="consulta"/>
<input type="button" id="endResult" value="Busca Cep" />

<div id="resultado">
// div que recebe o resultado


</div>


Javascript

window.addEvent('domready', function(){
var buscaCep = function(){
var endereco = $('endereco').get('value'); //recebe o endereço de input HTML
var resultado = $('resultado'); // div onde sera apresentado os resultados
resultado.innerHTML = '';

//funcao request do Mootools, que passa via POST o endereço
// a ser pesquisado, aqui voce pode usar qualquer framework ou fazer a mao :(
// passa o parametro endereço via POST ao proxy PHP

var request = new Request.JSON({
url: "proxy.php",
onSuccess: function(locais){locais.results.each(function(item){
resultado.innerHTML += "
"+item.formatted_address+"
";
})}
}).post({'endereco': endereco});
}

//vinculando a funcao buscaCep ao evento OnClik do input
$('buscar').addEvent('click', buscaCep);
});


PHP


<?php
$adress = str_replace(" ","+", $_POST['endereco']);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://maps.google.com/maps/api/geocode/json?address=$adress&sensor=false");
curl_exec($ch);
curl_close($ch);
?>


para o exemplo eu peguei somente o "formatted_address" retornado pelo Google,
se você quiser formatar o resultado de outra forma esta é a resposta.

{
"status": "OK",
"results": [ {
"types": [ "street_address" ],
"formatted_address": "Av. Afonso Pena, 643 - Amambaí, Campo Grande - MS, 79005-000, Brazil", // usei esta opçao por que em alguns testes o resultado do google veio de formas diferentes em alguns casos.
"address_components": [ {
"long_name": "643",
"short_name": "643",
"types": [ "street_number" ]
}, {
"long_name": "Av. Afonso Pena",
"short_name": "Av. Afonso Pena",
"types": [ "route" ]
}, {
"long_name": "Amambaí",
"short_name": "Amambaí",
"types": [ "neighborhood", "political" ]
}, {
"long_name": "Campo Grande",
"short_name": "Campo Grande",
"types": [ "locality", "political" ]
}, {
"long_name": "Mato Grosso do Sul",
"short_name": "MS",
"types": [ "administrative_area_level_1", "political" ]
}, {
"long_name": "Brazil",
"short_name": "BR",
"types": [ "country", "political" ]
}, {
"long_name": "79005-000",
"short_name": "79005-000",
"types": [ "postal_code" ]
} ],
"geometry": {
"location": {
"lat": -20.4668048,
"lng": -54.6306711
},
"location_type": "RANGE_INTERPOLATED",
"viewport": {
"southwest": {
"lat": -20.4699625,
"lng": -54.6338140
},
"northeast": {
"lat": -20.4636672,
"lng": -54.6275188
}
},
"bounds": {
"southwest": {
"lat": -20.4668249,
"lng": -54.6306711
},
"northeast": {
"lat": -20.4668048,
"lng": -54.6306617
}
}
},
"partial_match": true
}, {
"types": [ "street_address" ],
"formatted_address": "Travessa Afonso Pena, 643 - Chácara Cachoeira, Campo Grande - MS, 79031-010, Brazil",
"address_components": [ {
"long_name": "643",
"short_name": "643",
"types": [ "street_number" ]
}, {
"long_name": "Travessa Afonso Pena",
"short_name": "Travessa Afonso Pena",
"types": [ "route" ]
}, {
"long_name": "Chácara Cachoeira",
"short_name": "Chácara Cachoeira",
"types": [ "neighborhood", "political" ]
}, {
"long_name": "Campo Grande",
"short_name": "Campo Grande",
"types": [ "locality", "political" ]
}, {
"long_name": "Mato Grosso do Sul",
"short_name": "MS",
"types": [ "administrative_area_level_1", "political" ]
}, {
"long_name": "Brazil",
"short_name": "BR",
"types": [ "country", "political" ]
}, {
"long_name": "79031-010",
"short_name": "79031-010",
"types": [ "postal_code" ]
} ],
"geometry": {
"location": {
"lat": -20.4612687,
"lng": -54.5633648
},
"location_type": "RANGE_INTERPOLATED",
"viewport": {
"southwest": {
"lat": -20.4644168,
"lng": -54.5665221
},
"northeast": {
"lat": -20.4581215,
"lng": -54.5602269
}
},
"bounds": {
"southwest": {
"lat": -20.4612696,
"lng": -54.5633842
},
"northeast": {
"lat": -20.4612687,
"lng": -54.5633648
}
}
},
"partial_match": true
} ]
}