sexta-feira, 30 de julho de 2010

nome de variável javascript no Internet Explorer

O seguinte código javascript quebra no Internet Explorer, mas funciona no Firefox:

trCras = document.getElementById("trCras");

A solução é simples:

vtrCras = document.getElementById("trCras");

sexta-feira, 16 de julho de 2010

Perdi algum tempo por que não sabia a diferença entre "empty()" e "isset()".

<?
$a = "";
$b = 0;
if(empty($a))
print "true";
if(isset($a))
print "true";
if(empty($b))
print "true";
if(isset($b))
print "true";
?>

Esse código imprime "truetruetruetrue".

quarta-feira, 14 de julho de 2010

include ou require em PHP

Até onde eu sei a diferença entre um "include" ou um "require" é que o "require" gera um erro fatal quando não encontra o arquivo.

Mas eu quero falar outra coisa que acontece de vez em quando: uma página "a.php" faz um require_once("dir1/b.php"). E "b.php" precisa fazer require_once de um arquivo que está em "dir2/c.php". E "b.php" pode ser chamada sozinha ou pelo require feito por "a.php".

Como fazer,
require_once("../dir2/c.php") ou require_once("dir2/c.php") ?

Resposta:
require_once(dirname(dirname(__FILE__)) . "/dir2/c.php");

terça-feira, 25 de maio de 2010

usando dblink

Com o dblink, posso acessar um banco 'b' estando conectado em um banco 'a'. Pra usar o comando abaixo, é necessário que o dblink esteja instalado na máquina onde está o banco de dados 'a'.

CREATE OR REPLACE VIEW cras.cras_tao2009 AS
SELECT t1.qtd_cras, t1.nome_campo, t1.ibge
FROM dblink('dbname=tao hostaddr=10.68.12.245 user=dbuser password=password port=5432'::text, 'select valor_inteiro, nome_campo, ibge from pbt.opcoes_municipios_valores where (nome_campo = ''cras_aceitos'' and valor_inteiro > 0) order by ibge'::text) t1(qtd_cras numeric, nome_campo character varying, ibge numeric);

terça-feira, 27 de abril de 2010

Sobre desenvolvimento de software

The unique characteristics of the open-source approach distinguish it from existing
commercial software development practices. Participants in open source are globally and virtually distributed, and usually never meet face-to-face. These geographically
distributed participants successfully coordinate software development without traditional mechanisms, such as design processes, schedules, etc.

Yukika Awazu & Kevin C. Desouza - Open Knowledge Management: Lessons From the Open Source Revolution

sexta-feira, 23 de abril de 2010

Obtendo uma página com file_get_contents e stream context

Com o código abaixo eu consigo fazer uma requisição GET passando por um proxy. Com stream context fica bem mais simples que montar a string no formato do HTTP.


$authProxy = base64_encode($this->proxyUser . ":" . $this->proxyPasswd);
// Création des options de la requête
$opts = array(
'http' => array (
'method'=>'GET',
'proxy'=>'tcp://10.68.15.240:3128',
'request_fulluri' => true,
'header'=>"Proxy-Authorization: Basic $authProxy"
)
);
// Création du contexte de transaction
$ctx = stream_context_create($opts);
// Récupération des données
$content = file_get_contents($this->url . "?" . $queryString, false, $ctx);

quinta-feira, 22 de abril de 2010

Exemplo de uso do simplexml_load_string


$objXml = simplexml_load_string($xml);

$perfis = $objXml->xpath("/methodResponse/params/param/value/struct/member[name='roles']/value/array/data/value[starts-with(string, 'MU_') || starts-with(string, 'Estado ')]/string");

foreach($perfis as $perfil)
{
$nms_perfis[] = strip_tags($perfil[0]->asXML());
}