De vez em quando aparece alguém com dúvida sobre quais municípios foram criados em 2005 e quando foi criado o município de Nazária/PI.
A navegação no site do IBGE não é fácil.
Felizmente encontrei uma página no site do DataSUS que explica tudo isso:
http://www2.datasus.gov.br/DATASUS/index.php?area=040206&item=7
sexta-feira, 3 de dezembro de 2010
terça-feira, 26 de outubro de 2010
Reiniciando uma sequência no PostgreSQL (inclusive para campos do tipo serial):
alter sequence schema.nome-da-sequencia restart with 1
Se eu tentar
select setval('schema.nome-da-sequencia', 0)
não vai funcionar.
Se eu tentar
select setval('schema.nome-da-sequencia', 1)
não funciona também, pois o próximo insert (mesmo com campo serial) vai chamar a função nextval e colocar o valor 2 para o campo.
alter sequence schema.nome-da-sequencia restart with 1
Se eu tentar
select setval('schema.nome-da-sequencia', 0)
não vai funcionar.
Se eu tentar
select setval('schema.nome-da-sequencia', 1)
não funciona também, pois o próximo insert (mesmo com campo serial) vai chamar a função nextval e colocar o valor 2 para o campo.
quarta-feira, 20 de outubro de 2010
Cabeçalho de páginas com codificação UTF-8
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
sexta-feira, 24 de setembro de 2010
Problemas usando o Google Maps
Usamos o googlemaps no Censo SUAS 2010. Ele funciona bem na maioria dos casos, mas observamos os seguintes problemas:
Se eu buscar por "Rua nada a ver, 180 - Três Marias, MG, Brasil", caio em um local dentro de Três Marias, mesmo o não havendo mapeamento das ruas desse município.
Se eu buscar por "Rua das orquideas, 180 - Três Marias, MG, Brasil", caio em Santa Tereza/SE na Rua das orquideas.
Se eu buscar por "Barro, CE, Brasil", caio em uma área no Ceará, mas distante de Barro.
Se eu buscar por "Rua nada a ver, 180 - Três Marias, MG, Brasil", caio em um local dentro de Três Marias, mesmo o não havendo mapeamento das ruas desse município.
Se eu buscar por "Rua das orquideas, 180 - Três Marias, MG, Brasil", caio em Santa Tereza/SE na Rua das orquideas.
Se eu buscar por "Barro, CE, Brasil", caio em uma área no Ceará, mas distante de Barro.
segunda-feira, 23 de agosto de 2010
sábado, 21 de agosto de 2010
XML em PHP
function obterArrResposta($pergunta)
{
$arrOpcoes = $pergunta->opcoes->opcao;
$arrResposta = array();
if($arrOpcoes)
{
foreach($arrOpcoes as $opcao)
{
$arrResposta[] = strip_tags($opcao[0]->asXML());
}
}
else
{
$faixa_opcoes = $pergunta->opcoes->faixa_opcoes;
if($faixa_opcoes)
{
$faixa_opcoes = strip_tags($faixa_opcoes[0]->asXML());
$arrFaixas = explode("-", $faixa_opcoes);
for($i = $arrFaixas[0] ; $i <= $arrFaixas[1] ; $i++)
{
$arrResposta[] = $i;
}
}
}
return $arrResposta;
}
{
$arrOpcoes = $pergunta->opcoes->opcao;
$arrResposta = array();
if($arrOpcoes)
{
foreach($arrOpcoes as $opcao)
{
$arrResposta[] = strip_tags($opcao[0]->asXML());
}
}
else
{
$faixa_opcoes = $pergunta->opcoes->faixa_opcoes;
if($faixa_opcoes)
{
$faixa_opcoes = strip_tags($faixa_opcoes[0]->asXML());
$arrFaixas = explode("-", $faixa_opcoes);
for($i = $arrFaixas[0] ; $i <= $arrFaixas[1] ; $i++)
{
$arrResposta[] = $i;
}
}
}
return $arrResposta;
}
sexta-feira, 13 de agosto de 2010
doAjaxStuff
Pra eu não ter mais que ficar procurando essa função:
function doAjaxStuff
(postQueryString, onreadystatechange, action)
{
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject
("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Seu navegador não suporta AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=onreadystatechange;
xmlHttp.open("POST", action, true);
xmlHttp.setRequestHeader
("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader
("Content-length", postQueryString.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(postQueryString);
}
Erro de proxy usando ajax
Chamava uma página usando http://localhost/dir/prog.php
O IP da minha máquina era 10.68.10.68
A página realizava algumas chamadas ajax para http://10.68.10.68/dir/prog2.php
A requisição ajax não saía. Dava erro 407, pedindo autorização do proxy da rede em que eu, cliente, estava.
Soluçao simples: passei a chamar a página trocando o localhost pelo IP da máquina :D .
O IP da minha máquina era 10.68.10.68
A página realizava algumas chamadas ajax para http://10.68.10.68/dir/prog2.php
A requisição ajax não saía. Dava erro 407, pedindo autorização do proxy da rede em que eu, cliente, estava.
Soluçao simples: passei a chamar a página trocando o localhost pelo IP da máquina :D .
sexta-feira, 6 de agosto de 2010
Precisei garantir que uma página html teria dois arquivos ".js" carregados. Para isso fiz o código que está abaixo. Não tenho certeza ainda se vale a pena fazer isso. Acredito que a vantagem seja que o usuário desse js não precise lembrar também de carregar o segundo arquivo.
Poderia ter feito também como abaixo, é menos elegante, mas é menor e deve funcionar quase sempre:
http://www.jguru.com/faq/view.jsp?EID=1339630
function inc(filename)copiado de http://bytes.com/topic/javascript/answers/149165-import-include-js-file-into-js-file
{
var body = document.getElementsByTagName('body').item(0);
script = document.createElement('script');
script.src = filename;
script.type = 'text/javascript';
body.appendChild(script)
}
inc("nome-do-arquivo-no-formato-do-campo-src-da-tag-script");
Poderia ter feito também como abaixo, é menos elegante, mas é menor e deve funcionar quase sempre:
document.write("<script type='text/javascript' src='b.js'></script>");
http://www.jguru.com/faq/view.jsp?EID=1339630
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");
trCras = document.getElementById("trCras");
A solução é simples:
vtrCras = document.getElementById("trCras");
sexta-feira, 16 de julho de 2010
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");
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);
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
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());
}
Transformar um XML em um objeto PHP
O PHP possui funções para fazer parse de um XML, 'xml_parse' etc. Entretanto uma maneira mais rápida de carregar um XML é usando 'simplexml_load_file' (link pro php.net).
Ou melhor ainda, 'simplexml_load_string'. Ambas retornam um SimpleXMLElement.
Ou melhor ainda, 'simplexml_load_string'. Ambas retornam um SimpleXMLElement.
Assinar:
Postagens (Atom)