Archive for julho, 2009

12th jul 2009

O POG nosso de cada dia #13

O Internet Explorer ainda me persegue. Quando não é o 6, é o 7… consegui na empresa onde trabalho não ter mais que validar sites no IE6, mas não é que o 7 agora veio me pregar umas peças?
Vamos lá, o pessoal da minha equipe montou um monte de htmls para um projeto novo, e eu coemcei a fazer a programação em cima deles. Altera daqui, altera de lá, num formulário tive que colocar um campo novo.

O código

<label>Cidade:</label><input type="text" name="city value="" />

O problema

Vejam só como saiu na tela

city

Eu sei que isso tem a ver com o CSS, mas o quê exatamente?

O POG

Vi nos campos dos formulários, que estavam abaixo, um <!–&nbsp;–> antes de fechar as tags label. Fiquei encafifado, e coloquei o mesmo, assim:

<label>Cidade:<!--&nbsp;--></label><input type="text" name="city value="" />

Enão é que funcionou??? Vai entender, IE…

Posted by Posted by Chris under Filed under POG Comments 7 Comments »

11th jul 2009

Mostrando o potencial da JS Calls PHP #5 – geolocalização

Fazia muito tempo que não postava nada sobre a JS Calls PHP – muito trabalho, pouco tempo livre… coisas da vida.

Aproveitei um tempinho livre nesse sábado para integrar uma classe que vi de geolocalização com a biblioteca, possibilitando que sejam retornados dados como cidade e estado relativos a um IP via javascript, requisitando assincronamente uma classe PHP.

Veja aqui uma página de exemplo!

A classe original pode ser baixada aqui, só tive que fazer algumas modificações na mesma, conforme o código abaixo:

<?php
include 'PHP45.XML.php';

class GeoLocalizacao {
// XML document
var $doc  = null;
// string describing the host of the geo location service
var $host = "http://api.hostip.info/?ip=<IP>";

// string describing the city
public $city      = 'unknown';
// string describing the country
public $country   = 'unknown';
// longitude
public $longitude = '0';
// latitude
public $latitude  = '0';

public function __construct() {

}

public function geoLocation($ip) {

$this->doc = new PHP45XML();
$this->doc->preserveWhiteSpace = false;

// prepare url of service
$host  = str_replace( "<IP>", $ip, $this->host);

$reply = $this->fetch($host);

// decode the reply and make it available
//echo $reply;
//return false;
$this->decode($reply);
return array("city"=>$this->city, "country"=>$this->country, "lng"=>$this->longitute, "lat"=>$this->latitude);
}

function fetch($host) {
$reply = 'error';
// try curl or fopen
if( function_exists('curl_init') ) {
// use curl too fetch site
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL           , $host);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$reply = curl_exec($ch);
curl_close ($ch);
} else {
// fall back on fopen
$reply = file_get_contents($host, 'r');
}
return $reply;
}

function decode($text) {
// load in php version independent manner
$this->doc->loadXML($text);
// use the PHP4/5 XML wrapper to decode the result
$result = $this->doc->xpath("//gml:name");

$this->city      = $result['city'];

$this->country   = $result['country'];
$this->longitude = $result['lng'];
$this->latitude  = $result['lat'];
}
}
?>

Essa classe utiliza a API do site http://api.hostip.info, que passando um endereço IP retorna um XML com as informações. A classe trata esses dados e retorna um array com as chaves/valores para cidade, estado, longitude e latitude.

Depois de expor essa classe no config.php (conforme explicado na documentação oficial) sob o nome geo, o único trabalho foi fazer um html que chama o método geoLocation passando o valor de um input como parâmetro, e no retorno dou um alert exibindo a cidade e o estado.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>IP</title>
<script type="text/javascript" src="../engine.js"></script>
<script type="application/javascript" src="../interface/geo.js"></script>
<script type="application/javascript">
window.onload = function() {
document.getElementById("submit").onclick = function() {

var ip = document.getElementById("ip").value;

geo.geoLocation(ip, function(myIp) {
alert("cidade: " + myIp.city + "\npaís: " + myIp.country);
})

}
}
</script>
</head>
<body>

Digite um endereço de IP para ver qual a cidade e país de origem:
<input type="text" name="ip" id="ip" />
<input type="button" value="checar" id="submit" />
</body>
</html>

Funcionamento simples, como sempre, com a JS Calls PHP!

Faça download da JS Calls PHP aqui

Posted by Posted by Chris under Filed under javascript, js calls php, php Comments 3 Comments »

10th jul 2009

Google Chrome OS – o que você fará?

Muito está se falando sobre o Google Chrome OS: primeiro ele virá nos netbooks, mas já ficou clara a intenção de que o sistema operacional seja usado, no futuro, em notebooks e desktop.

Esse OS rodará em cima de um kernel Linux, e isso está movimentando muito a comunidade – tanto usuários, como desenvolvedores – opensource. Muito tem se falado dos impactos: é certamente já a notícia de maior repercussão no mundo dos sistemas operacionais nos últimos anos, inclusive porque um novo (gigante) player está entrando no mercado, e uma nova distro Linux já nasce com uma marca que outras ainda batalham para conseguir – pelo menos para o grande público.

Isso pode ser ruim – o Google Chrome OS pode roubar demais as atenções, que estão voltadas hoje em dia a distros mais antigas, que há anos batalham – como pode ser bom – a marca Google, associada ao Linux, pode fortalecer o conceito de que Linux não é só para os geeks e, com isso, abrir novas portas (veja esse post a respeito).

Ainda não se sabe exatamente o que vai rolar (até porque, vai saber, o Google Chrome OS pode nem sair do papel, se a venda dos netbooks não for bem), mas muito se especula. O que você pretende fazer?

O que você pretende fazer com relação ao Google Chrome OS?

View Results

Loading ... Loading ...

Posted by Posted by Chris under Filed under Tecnologia, enquetes, linux Comments 9 Comments »

09th jul 2009

Hostings de SVN e Git gratuitos

Nunca fui muito organizado, a despeito da tal história de que todo virginiano é organizado.

Até que quando as coisas envolvem outras pessoas, tento me organizar e tal, mas para as minhas próprias, é uma confusão só. Incluindo o lado digital.

Tento fazer controle dos meus arquivos, backups, mas sempre me perco, e ou não acho o que quero, ou tenho tudo em vários HDs, CDs, DVDs e serviços de diretório online… e usar um controle de versão, pelo menos para os arquivos relacionados aos meus projetos pessoais, ou freelas, está nos meus planos. Para isso, uma das saídas é encontrar um serviço online de hospedagem – pois tempo para criar um servidor de SVN, não estou tendo…

Acho que vou partir para o Google Project Hosting, mas fica a dica de dois posts, um com uma lista de hosts para SVN e outros de Git e Mercurial.

10 free SVN Hosting Services: http://www.straw-dogs.co.uk/09/20/6-free-svn-project-hosting-services/

Git and Mercurial Hosting: http://www.straw-dogs.co.uk/04/06/git-and-mercurial-hosting/

Posted by Posted by Chris under Filed under Tecnologia Comments 1 Comment »

08th jul 2009

Pre-visualização do Mac OS: confusão com os botões de Ampliar/Reduzir

Fiquei um bom tempo sem postar, devido ao trabalho – e isso deve ocorrer nas próximas semanas, pelo menos uma boa diminuição na frequencia…

E faz parte do meu trabalho abrir layouts e mais layouts… digamos que pela primeira vez fiz meu Macbook – e o Mac OS – realmente trabalhar, suar a camisa.

Aí, notei algo, horas e horas depois de trabalho, que achei estranho demais usando a Pré-Visualização do Mac OS (que não me lembro ter visto em outros aplicativos):

Imagem9

Não entendeu? Bem, olha lá, tem do lado direito um botão com uma seta pra cima, e outro com uma seta pra baixo, e as legendas Anterior e Seguinte, respectivamente.

Aí, do lado, tem um botão com o sinal de menos, e outro no de mais, e a legenda: Ampliar/Reduzir

É claro que a legenda no segundo caso é para o conjunto de botões, mas isso me deixou bem confuo: não seria melhor deixar a legenda embaixo de cada botão, que nem no primeiro bloco? Nesse caso, fica parecendo para quem olha rapidamente que o – é para Ampliar, e o + para Reduzir

Posted by Posted by Chris under Filed under apple, fail Comments 2 Comments »

03rd jul 2009

jQuery cheat sheet

Para aqueles que foram desvirtuados e usam a jQuery, segue abaixo a cheat sheet (um guia rápido de consulta) da biblioteca, com assinaturas das funções.

jquery1

jquery2

Pode ser feito, ainda, o download em PDF :)

jquery_1.3_cheatsheet_v1

Posted by Posted by Chris under Filed under Diversos, javascript Comments 4 Comments »