A Internet cresceu 75,3% no Brasil nos últimos 3 anos.
Dezembro 13, 2009
De acordo com o IBGE, o número de usuários de internet no Brasil cresceu 75,3% entre 2005 e 2008, e esse crescimento deve-se à forte inclusão digital de pessoas de baixa renda.
Do total de novos usuários no Brasil, 17 milhões ganham até dois salários mínimos per capita mensais.
O relatório do IBGE aponta que, em 2008, o país tinha 104 milhões de pessoas que não acessavam a internet, mas o contingente diminuiu em relação a 2005, que era de 120,3 milhões de brasileiros.
Nas regiões consideradas mais pobres do país, o acesso à internet também aumentou. Na região Norte, o total de usuários passou de 12% para 27,5% da população com dez anos ou mais de estudo. No Nordeste, passou de 11,9% para 25,1%.
Em 2008, 51,7% dos internautas brasileiros acessaram a rede mundial de computadores de casa e 35,2% a partir de lan houses, contra 49,9 e 21,9%, respectivamente. Nas regiões mais ricas do Brasil, os percentuais de acesso são bem mais elevados, como na região Sudeste, em que o índice foi de 40,3%.
“O Brasil tem uma das piores distribuições de renda no mundo e não é novidade que essa diferença social tenha reflexo também no acesso à internet. A desigualdade de renda é um empecilho para um maior acesso”, disse o coordenador da pesquisa, Cimar Pereira Azeredo. Ele destacou que quanto maior a renda e a escolaridade, maior é o acesso à rede mundial de computadores. A pesquisa mostra que famílias com renda per capita domiciliar acima de cinco salários mínimos têm um percentual de acesso à web de 75,6%. Em média, os conectados têm 10 anos de estudo, o equivalente ao ensino fundamental.
A idade média dos internautas em 2008 era de 27,6 anos contra 28,1 anos em 2005. Na faixa entre 15 e 17 anos, o percentual de conectados alcança 62,9%, aponta a pesquisa.
Como nasceu o nome Google?
Novembro 10, 2009
O nome Google foi escolhido devido a expressão googol, que representa o número 1 seguido de 100 zeros, para demonstrar assim a imensidão da Web.
A expressão googol surgiu de um fato um tanto curioso. O matemático Edward Kasner questionou o seu sobrinho de 8 anos sobre a forma como ele descreveria um número grande – um número realmente grande: o maior número que ele imaginasse. O pequeno Milton Sirotta emitiu um som de resposta que Kasner traduziu por “googol”. Mais tarde, Kasner definiu um número ainda maior: o googolplex.
Segundo o documentário do Biography Channel sobre os criadores do Google, quando o primeiro investidor da empresa passou um cheque de 100 mil dólares perguntou a que ordem o devia passar. Brin e Page disseram que estavam a pensar dar o nome de “Googol” à empresa, mas o empresário, possivelmente por ignorância, escreveu “Google”, obrigando, assim, a que a empresa tivesse este nome.
Parece aquelas pessoas com nomes escritos totalmente errados porcausa da incompetência da “mulher do cartório”.
Mas no caso do Google, isso pode ter sido a causa da sua grandesa, pois o nome “Google” parece mais universal do que “Googol”. Vai saber…
fonte: Wikipédia
Traçar rota do endereço mais próximo com a API do Google Maps
Novembro 9, 2009
Fala amigos, estive precisando de um script que traçava a rota do endereço (previamente marcado) mais próximo com o endereço que eu digitei.
Eu encontrei um script no blog andafter.org e melhorei ele, segue o script:
observação: A distância que a API utiliza para calcular é uma distância reta do ponto A para o ponto B. Se você quer saber a distância da rota, deverá utilizar o método getDistance(). Se eu ver que muita gente precisará disso eu criarei um post ensinando como faz.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Endereço mais próximo utilizando a API do Google Maps | Por Lucas Martins</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAh-4-WXT7vryB4zWcSDKIThSuBLcACnbYAIBxS9eHfruCpUv1BBRZi-GSNoVlnTofbgShokT-TgG8BA" type="text/javascript"></script>
<script type="text/javascript">
/*
variáves globais / globals vars
*/
var geocoder = new GClientGeocoder();
var map;
var directionsPanel;
var directions;
var gdir = new GDirections();
var addr = new Array(3);
var distances = new Array(3);
// Ao carregar / After load
window.onload = function() {
// Seta o país que será usado na API / Set the country that will be used in the API
geocoder.setBaseCountryCode("pt_BR");
map = new GMap2(document.getElementById('map'), { size: new GSize(710,480) })
map.addControl(new GLargeMapControl());
map.setCenter(new GLatLng(-23.547779, -46.639366), 12); // São Paulo / Sao Paulo (brazilian city)
// Adiciona marcação dos endereços das bibliotecas públicas de São Paulo / Add marks of addresses of public libraries in Sao Paulo
showAddress("Rua Cisplatina, 505 - Ipiranga, São Paulo - SP, 04211-040", 1);
showAddress("Rua Arsênio Tavolieri, 45 - Jabaquara, São Paulo - SP, 04321-030", 2);
showAddress("Rua Sena Madureira, 298 - Vila Mariana, São Paulo - SP, 04021-050", 3);
// No clique do botão / On click of button
document.getElementById("trace_route").onclick = function() {
// Verifica o endereço digitado pelo usuário / Check the address entered by the User
geocoder.getLocations(
document.getElementById("myAddress").value,
function(point) {
// Verifica se o endereço que o usuário digitou é válido e existente / Check if the address that the user entered is valid and existing
if(point.Placemark) {
// Cria o objeto GLatLng e grava a latitude e longitude do endereço digitado pelo usuário
// Creates the GLatLng object and records the latitude and longitude of the address entered by the User
var a = new GLatLng(point.Placemark[0].Point.coordinates[1], point.Placemark[0].Point.coordinates[0]);
/*
usa método da classe GLatLng() que retorna a distância, em metros, entre
duas coordenadas de latitude/longitude
use method of the GLatLng() which returns the distance in meters between
two latitude / longitude
*/
var b = new GLatLng(addr[0][1], addr[0][0]); // inicia no primeiro ponto / start in the first point
var x = b.distanceFrom(a);
/*
variáveis que serão usadas para comparar distâncias entre coordenadas
de latitude e longitude
variables that will be used to compare distances between coordinates
latitude and longitude
*/
var smallestDist = x;
var smallestDistId = 0;
//
for(var i = 0; i < 3; i++) {
b = new GLatLng(addr[i][1], addr[i][0]);
x = b.distanceFrom(a);
// Verifica qual dos endereços tem menor distância entre um ponto e outro
// Check It addresses which is less distance between one point and another
if(x < smallestDist || i == 0) {
smallestDist = x;
smallestDistId = i;
}
}
/*
cria um array de dois objetos GLatLng, com as coordenadas do endereço digitado pelo
usuário e o endereço do ponto mais próximo a esse endereço
creates an array of two GLatLng objects, with the coordinates of the address entered by
User and address of the nearest point to this address
*/
var pointsArray = [a, new GLatLng(addr[smallestDistId][1], addr[smallestDistId][0])]
directions = new GDirections(map); // instancia objetos / instance objects
// usa o array de pontos para traçar a rota entre os dois endereços / uses the array of points to trace the route between two addresses
directions.loadFromWaypoints(pointsArray, {"locale":"pt_BR"});
}
}
);
}
}
/*
função que será usada para manipular endereços
function that will be used to manipulate addresses
*/
function showAddress(address, k) {
geocoder.getLocations(
address,
function(point) {
addMarker(point, k);
}
);
}
/*
função que será usada para marcar o mapa
function that will be used to mark the map
*/
function addMarker(response, k) {
if(!response.Placemark) { return; }
place = response.Placemark[0];
if(k) {
// salva a latitude/longitude do endereço / save the latitute/longitude of address
addr[k-1] = place.Point.coordinates;
}
point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
var marker = createMarker(point, place.address, k); // cria o marcador no mapa / creates the marker on the map
map.addOverlay(marker); // adiciona o marcador no mapa / adds the marker on the map
}
/*
função que será usada para criar os marcadores
function that will be used for creating markers
*/
function createMarker(point,html, k) {
var marker = new GMarker(point, false);
return marker;
}
</script>
</head>
<body>
<form action="#" method="POST">
<fieldset>
<label for="from">Seu endereço:</label>
<input type="text" name="myAddress" id="myAddress" />
</fieldset>
<input type="button" class="button" id="trace_route" value="Encontrar biblioteca próxima" />
</form>
<div id="map"></div>
</body>
</html>
Com algumas modificações desse código você também poderá obter todos os locais num raio de 100 metros de um endereço digitado. Ou um monte de outras situações.
Abraços!
PHP + JSON
Novembro 9, 2009
A partir do PHP 5.2.0 temos uma extensão para JSON que facilita o transporte de dados do PHP para o JavaScript (via AJAX) e vice-versa.
Com o advento do Ajax, JSON se tornou um formato para intercâmbio de dados bem mais eficiente e compacto que XML. E nada como tratá-lo como um objeto também no lado do servidor, assim como fazemos no JavaScript. As duas funções que tratam da conversão objeto-string e string-objeto no PHP são json_encode e json_decode, respectivamente.
Vou lhes mostrar um exemplo de como trabalhar com PHP + JSON. Primeiramente vamos formatar corretamente o código PHP que será chamado via AJAX no Javascript.
<?php
$produto = array(
'id' => 32,
'nome' => 'Camera Digital Sony W220',
'fabricante' => 'Sony',
'valor' => 'R$ 799,00'
);
$produtoJSON = "var produto = " . json_encode($produto);
echo $produtoJSON;
// var produto = {"id": 32, "nome": "Camera Digital Sony W220", "fabricante": "Sony", "valor": "R$ 799,00"}
?>
Agora no javascript vamos dar um alerta com os dados separados:
<script type="text/javascript">
/*
... requisição ajax ...
*/
eval(ajax.responseText); // transformo a string do resultado em formato de código válido do javascript
alert(" id = " + produto['id'] + "\n nome = " + unescape(produto['nome']) + "\n fabricante = " + unescape(produto['fabricante']) + "\n valor = " + unescape(produto['valor']));
</script>
Resolvendo Erros: Dreamweaver
Novembro 6, 2009
Hoje, tive um problema com o Dreamweaver CS4, pois sempre quando abria ele me aparecia o seguinte erro:
“The following translators were not loaded due to errors: ICERegions.htm: has configuration information that his invalid.”
Resolvi o problema e gostaria de compartilhar para que as próximas vitimas possam resolver também.
Resolvi deletando o seguinte arquivo de cache do Dreamweaver:
obs: A pasta AppData está oculta, ative antes a opção para mostrar os arquivos ocultos que está em Ferramentas > Opções de Pasta… > Modo de exibição
Pasta: C:\Users\<usuario do sistema>\AppData\Roaming\Adobe\Dreamweaver CS4\en_US\Configuration
Arquivo: WinFileCache-3012BA81.dat
Não se preocupe em deletar este arquivo, pois ele é um arquivo de cache que é criado após fechar o dreamweaver. E pelo que eu andei vendo, deletando este arquivo pode resolver diversos outros problemas de caching.
Abraços
RSS - Posts