sexta-feira, 28 de maio de 2010

XML to Array PHP

Contribuição de Ricardo Feitosa (Transforma um XML para array)


function xml2array($xml)
{
$xmlary = array();
$reels = '/<(\w+)\s*([^\/>]*)\s*(?:\/>|>(.*)<\/\s*\\1\s*>)/s';
$reattrs = '/(\w+)=(?:"|\')([^"\']*)(:?"|\')/';
preg_match_all($reels, $xml, $elements);
if (is_array($elements))
{
foreach ($elements[1] as $ie => $xx)
{
$cdend = strpos($elements[3][$ie], "<");
if ($cdend > 0)
{
$xmlary[$elements[1][$ie]] = substr($elements[3][$ie], 0, $cdend - 1);
}
if (preg_match($reels, $elements[3][$ie]))
$xmlary[$elements[1][$ie]] = xml2array($elements[3][$ie]);
else
if ($elements[3][$ie])
{
$xmlary[$elements[1][$ie]] = $elements[3][$ie];
}
}
return $xmlary;
}
return $xml;
}

function xml2get($id,$xml)
{
$parametros = xml2array($xml);
$resultado = "";
foreach ($parametros[$id] as $key => $value)
$resultado.= "$key=".urlencode($value)."&";
if (substr($resultado,-1) == "&")
return substr($resultado,0,-1);
return false;
}

quinta-feira, 27 de maio de 2010

GET passando por um proxy

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.

$proxyUser="usuario";
$proxyPasswd = "senha";
$authProxy = base64_encode($proxyUser . ":" . $proxyPasswd);
// Création des options de la requête
$opts = array(
'http' => array (
'method'=>'GET',
'proxy'=>'tcp://endereco:porta',
'request_fulluri' => true,
'header'=>"Proxy-Authorization: Basic $authProxy"
)
);

// Création du contexte de transaction
$context = stream_context_create($opts);
// Récupération des données
$data = file_get_contents('http://www.google.com', false, $context);

echo $data;
?>


Contribuição de Carlos Eduardo de Andrade Brasileiro

segunda-feira, 22 de março de 2010

Converter arquivo para UTF8

iconv --from-code=ISO-8859-1 --to-code=UTF-8 ./oldfile.htm > ./newfile.html

quinta-feira, 18 de fevereiro de 2010

quarta-feira, 13 de janeiro de 2010

Alguns comandos (sql) Postgis

meu_DB=# SELECT gid, AsText(the_geom) AS the_geom, name FROM bc_roads;

gid | the_geom | name
-----+---------------------------------------------------------------------------------------+-------------
1 | MULTILINESTRING((1205902.3 460882.2,1205906.3 460789.7)) | No 1 Rd
2 | MULTILINESTRING((1205906.3 460789.7,1205907.3 460776.4)) | No 1 Rd
3 | MULTILINESTRING((1205907.3 460776.4,1205913.6 460638.8)) | No 1 Rd
4 | MULTILINESTRING((1205913.6 460638.8,1205919.6 460513.4)) | No 1 Rd
5 | MULTILINESTRING((1205919.6 460513.4,1205920.8 460482)) | No 1 Rd
6 | MULTILINESTRING((1211706.8 462048.2,1211710.3 461877)) | Seaham Cres
7 | MULTILINESTRING((1212105 462099.5,1212160.1 462102.5)) | Seahaven Pl
(7 registros)


Porém, haverá momentos em que restrições serão necessárias para reduzir o número de campos retornados. No caso de restrições baseadas em atributos, apenas use a mesma sintaxe normal de SQL com uma tabela não espacial. No caso de restrições espaciais, os operadores seguintes são disponíveis/úteis:

&& Este operador diz se o retângulo envolvente (bounding box) de uma geometria intersecta o retângulo envolvente de outra.

~= Estes operadores testam se duas geometrias são geometricamente idênticas. Por exemplo, se "POLYGON((0 0,1 1,1 0,0 0))" é igual à "POLYGON((0 0,1 1,1 0,0 0))" (nesse caso é!).

= Este operador é um pouco mais "ingênuo", e só testa se o retângulo envolvente (bounding box) das geometrias é o mesmo.

Logo, você pode usar estes operadores em consultas. Note que ao especificar geometrias e retângulos na linha de comando SQL, você tem que transformar as representações de caracteres (string) explicitamente em geometrias usando a função "GeometryFromText () ". Por exemplo:

SELECT name FROM bc_roads
WHERE the_geom ~= GeomFromText('MULTILINESTRING((1212105 462099.5,1212160.1 462102.5))',-1);

A consulta anterior devolveria o único registro da tabela "bc_roads" no qual a geometria era igual aquele valor.

Ao usar o operador "&& ", você pode especificar tanto um retângulo (BOX3D) como característica de comparação como uma geometria. Quando você especifica uma geometria é o seu retângulo envolvente (bounding box) que será usado para a comparação.

SELECT name FROM bc_roads
WHERE the_geom && GeomFromText('POLYGON((1212105 462099.5,1212160.1 462102.5, 1212105 462099.5))',-1);

Então, a consulta anterior usará o retângulo envolvente do polígono para propósitos de comparação.

A consulta espacial mais comum provavelmente será uma consulta "frame-based", usada por um software cliente, como um visualizador de dados ou servidor de mapas na web, é obter o "map-frame" (representação gráfica - figura) para exibição. Usando um objeto "BOX3D" para o "frame", essa consulta iria ser como demonstrado abaixo:

SELECT AsText(the_geom) AS the_geom
FROM bc_roads
WHERE the_geom && SetSRID('BOX3D(1212105 462099.5,1212160.1 462102.5)'::box3d,-1);

Note que o uso do SRID, especifica a projeção do BOX3D. O valor -1 é usado para indicar que nenhum SRID é especificado.

quinta-feira, 31 de dezembro de 2009

Matriz Lógica

Os projetos são impulsionados por uma lógica relativamente linear: os insumos levam a atividades, que levam a produtos que levam a resultados a qual leva a avaliação (metas).

Insumos -> Atividades -> Produtos -> Resultados -> Metas

Fonte: Evaluación organizacional: marco para mejorar el desempeño Por Charles Lusthaus