select E'd\'agua';
Um blog de tecnologia que aborda diversos assuntos sobre tecnologia e desenvolvimento web.
terça-feira, 25 de outubro de 2016
Scape de string no PostGres
Para dar scape de string no Postgres é muito simples, segue exemplo abaixo:
quarta-feira, 19 de outubro de 2016
Instalando o Gdal 2.1 no Ubuntu 16.04
Primeiramente baixe o instalador que pode ser encontrado AQUI
Após o download basta executar os seguintes comandos:
Após o download basta executar os seguintes comandos:
$ cd gdal-2.1.0/ $ ./configure --prefix=/usr/ $ make $ sudo make install $ cd swig/python/ $ sudo python setup.py install
sexta-feira, 14 de outubro de 2016
Criando funções em R
#criando funções com valores de entrada padrão soma_valores = function(x=0,y=0){ return (x+y) } soma_valores()
Manipulando data em R
dta <- Sys.Date() #recuperando a data corrente as.character(dta) #convertendo para string dta2 <- as.Date("2016-04-30") #convertendo string para data dtas <- seq(from = dta2, to = dta, by=1) # lista com sequencia de datas dtaFormatada <- as.Date("07/Ago/12", format = "%d/%b/%y") #data formatada dtaFormatada2 <- as.Date("2012-Agosto-07", format = "%Y-%B-%d") #data formatada format(dtaFormatada, "%d") #recuperando o dia da data format(dtaFormatada, "%m/%Y") #recuperando o mes e ano range(dtas) #recuperando o range de datas envolvidas dta3 <- seq(from = as.Date("2016-04-01"), to = dta2, by=1) all(dtas %in% dta3) #verificando se todas as datas de um array está contido em outro which(dtas %in% dta3) #verificando quais datas estão contidas em outro array which(!(dtas %in% dta3)) #verficando quais datas não estão contidas dentro de um array dtas[which(!(dtas %in% dta3))] #recuperando os valores das datas de quais não estão contidas dentro de um array dtas4 <- dtas > as.Date("2016-05-05") & dtas <= as.Date("2016-05-15") #criando subset com comparativo de datas
quinta-feira, 13 de outubro de 2016
Operações aritméticas com vetores em R
// Comment #OPERAÇÕES COM VETORES v1 <- 1:10="" 2="" de="" do="" multiplicando="" os="" por="" quadrada="" raiz="" sqrt="" todas="" um="" v1="" valores="" vetor="">= 3 #checando quais valores são maiores ou igual a 3 c(1,2,3,4) %in% v1 #verificando se determinados valores existem dentro de um vetor c(1,2,3,4) * tail(v1,4) #pegando alguns elementos de um vetor e multiplicando dois vetores c(1,2,3,4) * c(3,5) #multiplicando dois vetores seq(from=10, to=100, by=0.5) #criando uma sequencia de números vector(mode = "numeric", length = 2) #criando vetores em branco vector(mode = "character", length = 10) #criando vetores de texto em branco vector(mode = "logical", length = 3) #criando vetores de boleano em branco rep(x = 22, times = 10) #criando vetor com valores repetidos x = c(18, 0, 9) rep(x, 3) #criando um vetor a partir da repetição de outro v1[1:2] #recuperando elementos específicos de um array v1[c(1,2,3)] v1[v1>1 & v1 < 4] #recuperando um intervalo de valores v1[v1>4 | v1 < 10] #Manipulando Vetores em R a <- c(1:5) b <- c(6,NA,7,NA,8,NA,9) c <- c("1","2","5","6") clean <- complete.cases(b) #filtra apenas os itens completos de uma array is.na(b) #filtra apenas os objetos vazios de um array b[clean] #filtrando os itens do array completos ->
quarta-feira, 31 de agosto de 2016
Comparando geometrias dentro de uma área específica com PostGIS
Uma tarefa muito útil nos bancos de dados geográficos é a possibilidade de se comparar geometrias mesmo que seja virtualmente, no exemplo abaixo pode se comparar um ponto no exemplo com uma geometria que é gerada pelo operador st_envelope do PostGIS. No segundo exemplo tem executamos a mesma tarefa do primeiro porém comparando os valores min e max de X e Y.
1- SELECT x FROM table where geom && ST_MakeEnvelope(-85.994,-55.994, -32.994,10.005)
2- SELECT x FROM table
where (ST_X(geom) >= -85.994 and ST_X(geom) <= -32.994)
and (ST_Y(geom) >= -55.994 and ST_Y(geom) <= 10.005)
1- SELECT x FROM table where geom && ST_MakeEnvelope(-85.994,-55.994, -32.994,10.005)
2- SELECT x FROM table
where (ST_X(geom) >= -85.994 and ST_X(geom) <= -32.994)
and (ST_Y(geom) >= -55.994 and ST_Y(geom) <= 10.005)
Exportando GEOJson do Postgis
Um recurso muito bom do Postgis é a facilidade de exportar um geojson diretamente pela consulta de sql, eliminando aquela tarefa um tanto quanto chata de utilizar o ogr2. Segue script abaixo, exportando um polígono para geojson.
SELECT ST_AsGeoJSON(ST_MakeEnvelope(-89.296875,-58.539595,-31.992188,13.068777),4326)
O exemplo da saída pode ser visualizado aqui.
Referência: http://postgis.net/docs/ST_AsGeoJSON.html
SELECT ST_AsGeoJSON(ST_MakeEnvelope(-89.296875,-58.539595,-31.992188,13.068777),4326)
O exemplo da saída pode ser visualizado aqui.
Referência: http://postgis.net/docs/ST_AsGeoJSON.html
quinta-feira, 25 de agosto de 2016
Criando rotinas python com crontab
Uma maneira de operacionalizar tarefas diárias com python é utilizando o recurso crontab do linux que executa tarefas de acordo com seus parâmetros.
O primeiro passo é adicionar na primeira linha do seu arquivo python o cabeçalho que o torna executável. obs(não fica mais necessário utlizar python script.py).
#!/usr/bin/env python2
O segundo passo é dar permissão do arquivo de ser executável, para isso utilizamos o chmod +x script.py
o próximo passo é abrir a ferramenta crontab utilizando o comando crontab -e, abrirá um editor de texto com as configurações das tarefas que você pode ter já configuradas. Para adicionar a sua basta ir até o final do arquivo e configurar seu script.
A sequência de execução do crontab é primeiramente o tempo de MM HH DM M DS caminho do script / script.py >> caminho do log de execução /log.txt 2>&1 REF: http://www.infowester.com/linuxcron.php
Voilá!, após estas configurações seu script será executado de acordo com a data configurada.
O primeiro passo é adicionar na primeira linha do seu arquivo python o cabeçalho que o torna executável. obs(não fica mais necessário utlizar python script.py).
#!/usr/bin/env python2
O segundo passo é dar permissão do arquivo de ser executável, para isso utilizamos o chmod +x script.py
o próximo passo é abrir a ferramenta crontab utilizando o comando crontab -e, abrirá um editor de texto com as configurações das tarefas que você pode ter já configuradas. Para adicionar a sua basta ir até o final do arquivo e configurar seu script.
A sequência de execução do crontab é primeiramente o tempo de MM HH DM M DS caminho do script / script.py >> caminho do log de execução /log.txt 2>&1 REF: http://www.infowester.com/linuxcron.php
Voilá!, após estas configurações seu script será executado de acordo com a data configurada.
quarta-feira, 3 de agosto de 2016
Filtrando um dicionário em python
Um recurso muito útil é filtrar um ou vários objetos dentro de um dicionário, segue abaixo os exemplos de filtragem de objetos de um dicionário pela key (índice) e valor.
Primeiramente nosso dicionário de exemplo:
dict = {'conc_co':'monoxido_carbono','conc_pm':'material_particulado','umid_ar':'umidade_relativa', 'tmp_ar':'temperatura', 'vento_dir':'vento_direcao', 'vento_vel':'vento_velocidade'}
Agora o filtro pelo valor do objeto:
dict2 = {k: v for k, v in prefixos.items() if v == 'vento_velocidade'}
O resultado de dict2 será:
{'vento_vel': 'vento_velocidade'}
Agora filtrando pela chave do objeto:
dict2 = {k: v for k, v in prefixos.items() if k == 'umid_ar'}
O resultado será:
{'umid_ar': 'umidade_relativa'}
Primeiramente nosso dicionário de exemplo:
dict = {'conc_co':'monoxido_carbono','conc_pm':'material_particulado','umid_ar':'umidade_relativa', 'tmp_ar':'temperatura', 'vento_dir':'vento_direcao', 'vento_vel':'vento_velocidade'}
Agora o filtro pelo valor do objeto:
dict2 = {k: v for k, v in prefixos.items() if v == 'vento_velocidade'}
O resultado de dict2 será:
{'vento_vel': 'vento_velocidade'}
Agora filtrando pela chave do objeto:
dict2 = {k: v for k, v in prefixos.items() if k == 'umid_ar'}
O resultado será:
{'umid_ar': 'umidade_relativa'}
Removendo espaços em branco de uma string com python
Uma função para remover espaços em branco de uma string à esquerda, direita ou totalmente em python.
Removendo todos os espaços em branco de uma string
Removendo os espaços à esquerda
Removendo os espaços à direita
Removendo todos os espaços em branco de uma string
s = " \t a string example\t "
s = s.strip()
Removendo os espaços à esquerda
s = s.lstrip()
Removendo os espaços à direita
s = s.rstrip()
terça-feira, 2 de agosto de 2016
Substring em Python
O python trabalha com a manipulação de strings de uma maneira muito fácil, segue alguns exemplos de como fazer isso de uma maneira muito simples.
>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'
quarta-feira, 22 de junho de 2016
Convertendo dados diversos para inteiro no python
Uma das dificuldades do python para quem já está acostumado com o tryparse() do c# é converter um objeto qualquer para outro tipo porém sem ter a certeza de que o mesmo está no formato correto e que não retornará um erro, como no python não existe nativamente, segue um exemplo de script que simula o tryparse() convertendo para inteiro.
def ignore_exception(IgnoreException=Exception,DefaultVal=None):
""" Decorator for ignoring exception from a function
e.g. @ignore_exception(DivideByZero)
e.g.2. ignore_exception(DivideByZero)(Divide)(2/0)
"""
def dec(function):
def _dec(*args, **kwargs):
try:
return function(*args, **kwargs)
except IgnoreException:
return DefaultVal
return _dec
return dec
sint = ignore_exception(ValueError)(int)
print sint("Hello World") # prints none
print sint("1340") # prints 1340
terça-feira, 14 de junho de 2016
Download de um shapefile via linha de comando com ogr2ogr
Um recurso muito fácil para realizar o download de um arquivo shapefile de um banco de dados Postgres com todos seu atributos.
ogr2ogr -overwrite -skipfailures -t_srs EPSG:4326 -f 'ESRI Shapefile' {shp} PG:'host={host} user={user} dbname={db} password={key}' -sql 'SELECT * FROM {table}'
Referência: http://www.gdal.org/ogr2ogr.html
Exportando uma query do Postgres para CSV
Um recurso muito útil do Postgres é o recurso de exportar o resultado de uma query para o formato csv que pode ser lido por diversos softwares.
Copy (Select * From tabela) To '/tmp/tabela.csv' With CSV DELIMITER ';' HEADER;
terça-feira, 31 de maio de 2016
Recuperando uma data posterior em javascript
Uma função bem simples de se adicionar dias à uma data corrente e retornar a mesma em formato americano em javascript:
function getDataISO(dias)
{
var dayMonth = new Date().getDate();
dayMonth += dias;
var d = new Date();
d.setDate(dayMonth);
var day = d.getDate();
var monthIndex = d.getMonth()+1;
var year = d.getFullYear();
//retorno já formatado de 9 para 09
return year + '-' + (monthIndex > 9 ? monthIndex : '0' + monthIndex.toString()) + '-' + (day > 9 ? day : '0' + day.toString());
}
function getDataISO(dias)
{
var dayMonth = new Date().getDate();
dayMonth += dias;
var d = new Date();
d.setDate(dayMonth);
var day = d.getDate();
var monthIndex = d.getMonth()+1;
var year = d.getFullYear();
//retorno já formatado de 9 para 09
return year + '-' + (monthIndex > 9 ? monthIndex : '0' + monthIndex.toString()) + '-' + (day > 9 ? day : '0' + day.toString());
}
Calculando os valores mínimo e máximo de um array em javascript
Uma função bem simples mas que pode ser muito útil para retornar os valores mínimo e máximo de um array em javascript feita em prototype.
Mínimo:
Array.prototype.max = function() {
return Math.max.apply(null, this);
};
Máximo:
Array.prototype.min = function() {
return Math.min.apply(null, this);
};
Média:
function getAvg(grades) {
return grades.reduce(function (p, c) {
return p + c;
}) / grades.length;
}
Chamadas:
v = [1,5,8,74,9];
v.max();
v.min();
mean = getAvg(v);
Mínimo:
Array.prototype.max = function() {
return Math.max.apply(null, this);
};
Máximo:
Array.prototype.min = function() {
return Math.min.apply(null, this);
};
Média:
function getAvg(grades) {
return grades.reduce(function (p, c) {
return p + c;
}) / grades.length;
}
Chamadas:
v = [1,5,8,74,9];
v.max();
v.min();
mean = getAvg(v);
sexta-feira, 15 de abril de 2016
Restaurando dump do Postgres
Uma das funções do banco de dados após feito seu backup é fazer a restauração do dump feito para de volta à base original, para executar basta usar o comando.
Referência: Postgres
psql -h host_base -d dbname -U usuario -f estrutura.sql;
psql -h host_base -d dbname -U usuario -f dados.sql;
quarta-feira, 30 de março de 2016
Gerando dump no Postgres usando o comando pg_dump
Uma maneira simples e rápida de gerar um dump de um banco ou tabela do Postgres é através da linha de comando. Abaixo é descrito como gerar a estrutura e popular a tabela.
pg_dump -h host_base -U nome_usuario -d nome_base -f estrutura.sql -s -c -E utf-8 -F p -O -v -x;
--disable-dollar-quoting --disable-triggers --no-security-labels --no-unlogged-table-data --quote-all-identifiers -t
pg_dump -h host_base -U nome_usuario -d nome_base -f dados.sql -a -b -E utf-8 -F p -O -v -x;
--disable-dollar-quoting --disable-triggers --no-security-labels --no-unlogged-table-data --quote-all-identifiers -t
Referência: pg-dump
pg_dump -h host_base
--disable-dollar-quoting --disable-triggers --no-security-labels --no-unlogged-table-data --quote-all-identifiers -t
pg_dump -h host_base
--disable-dollar-quoting --disable-triggers --no-security-labels --no-unlogged-table-data --quote-all-identifiers -t
Referência: pg-dump
quarta-feira, 16 de março de 2016
Instalando MongoDB no Ubuntu 15.10
O MongoDB é um dos SGDB que tem crescido muito no mercado e seu uso no linux o torna uma ferramenta muito poderosa. Segue abaixo como fazer sua instalação no Ubuntu.
- Adicionar a chave.
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
- Criando a lista repositório
- sudo echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
- Atualizando a lista de repositório
- sudo apt-get update
- Instalando o MongoDb
- sudo apt-get install mongodb-org
- Checando se está funcionando
- sudo systemctl status mongd
- Caso não funcione reinicie o servidor
- Caso ainda não funcione crie o script abaixo e o invoque:
echo '[Unit]
Description=High-performance, schema-free document-oriented database
After=syslog.target network.target
[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod -f /etc/mongod.conf
[Install]
WantedBy=multi-user.target' > /lib/systemd/system/mongod.service
# Setup the required directories
mkdir -p /var/run/mongodb/
mkdir -p /var/log/mongodb/
mkdir -p /var/lib/mongodb/
mkdir -p /data/db/
chown mongodb:mongodb /var/run/mongodb/
chown mongodb:mongodb /var/log/mongodb/
chown mongodb:mongodb /var/lib/mongodb/
chown mongodb:mongodb /data/db
chmod 0755 /var/log/mongodb/
chmod 0755 /var/run/mongodb/
chmod 0755 /var/lib/mongodb/
chmod 0755 /data/db/
# Start the new service and enable it on boot
systemctl --system daemon-reload
systemctl enable mongod.service
echo "Starting"
systemctl start mongod.service
Traduzido de: http://askubuntu.com/questions/724749/install-mongo-3-2-on-ubuntu-15-10
sexta-feira, 11 de março de 2016
Criando Atalhos no Qgis utilizando Python
Uma função muito interessante no Qgis é a criação de atalhos de teclado utilizando os scripts em Python. O exemplo abaixo cria um atalho que dá um print de mensagem utilizando as teclas CTRL + 2.
# See http://gis.stackexchange.com/questions/156633/how-to-launch-processing-tool-user-interface-using-pyqgis
import qgis.utils
from processing.core.Processing import Processing
from processing.gui.CommanderWindow import CommanderWindow
cw = CommanderWindow(iface.mainWindow(), iface.mapCanvas())
def openAlgorithm():
print 'HELLO WORLD'
# Assign "Ctrl+1" to openAlgorithm()
from PyQt4.QtGui import QShortcut, QKeySequence
from PyQt4.QtCore import Qt
shortcut = QShortcut(QKeySequence(Qt.ControlModifier + Qt.Key_2), iface.mainWindow())
shortcut.setContext(Qt.ApplicationShortcut)
shortcut.activated.connect(openAlgorithm)
Após salvar e rodar o script basta testar o atalho.
# See http://gis.stackexchange.com/questions/156633/how-to-launch-processing-tool-user-interface-using-pyqgis
import qgis.utils
from processing.core.Processing import Processing
from processing.gui.CommanderWindow import CommanderWindow
cw = CommanderWindow(iface.mainWindow(), iface.mapCanvas())
def openAlgorithm():
print 'HELLO WORLD'
# Assign "Ctrl+1" to openAlgorithm()
from PyQt4.QtGui import QShortcut, QKeySequence
from PyQt4.QtCore import Qt
shortcut = QShortcut(QKeySequence(Qt.ControlModifier + Qt.Key_2), iface.mainWindow())
shortcut.setContext(Qt.ApplicationShortcut)
shortcut.activated.connect(openAlgorithm)
Após salvar e rodar o script basta testar o atalho.
Alterando atributos do Layer no Qgis
Uma função muito útil no Qgis é rodar scripts Python, neste caso cito abaixo um script para alterar os atributos de uma layer pelo terminal de scripts Python do Qgis
layer = iface.activeLayer() #pega o layer atual da tela
layer.startEditing() #inicia a edição do layer
for f in layer.selectedFeatures(): #recupera as features de cada tupla
layer.changeAttributeValue(f.id(),6,'xxxx') #alterando o atributo da coluna 6 com texto xxx
layer.commitChanges() #confirma as alterações
print 'fim'
Referência: Qgis Doc
layer = iface.activeLayer() #pega o layer atual da tela
layer.startEditing() #inicia a edição do layer
for f in layer.selectedFeatures(): #recupera as features de cada tupla
layer.changeAttributeValue(f.id(),6,'xxxx') #alterando o atributo da coluna 6 com texto xxx
layer.commitChanges() #confirma as alterações
print 'fim'
Referência: Qgis Doc
terça-feira, 23 de fevereiro de 2016
Recuperando dados de um TIMESTAMP no Postgres
Uma função muito útil do Postgres é a recuperação de dados de um Timestamp, abaixo executamos a extração de dia, mês e ano de um timestamp.
SELECT EXTRACT(DAY FROM TIMESTAMP '2016-02-16 00:15:00');
SELECT EXTRACT(MONTH FROM TIMESTAMP '2016-02-16 00:15:00');
SELECT EXTRACT(YEAR FROM TIMESTAMP '2016-02-16 00:15:00');
Também podemos executar de uma outra forma para obter o mesmo resultado:
SELECT date_part('YEAR', timestamp '2014-04-25 08:44:21');
SELECT date_part('MONTH', timestamp '2014-04-25 08:44:21');
SELECT date_part('DAY', timestamp '2014-04-25 08:44:21');
SELECT EXTRACT(DAY FROM TIMESTAMP '2016-02-16 00:15:00');
SELECT EXTRACT(MONTH FROM TIMESTAMP '2016-02-16 00:15:00');
SELECT EXTRACT(YEAR FROM TIMESTAMP '2016-02-16 00:15:00');
Também podemos executar de uma outra forma para obter o mesmo resultado:
SELECT date_part('YEAR', timestamp '2014-04-25 08:44:21');
SELECT date_part('MONTH', timestamp '2014-04-25 08:44:21');
SELECT date_part('DAY', timestamp '2014-04-25 08:44:21');
Criando TRIGGERS no Postgres 9.2
Um dos recursos mais simples de um SGDB e comuns à serem utilizados são as TRIGGERS ou "Gatilhos', estes executam um processo antes ou depois de uma determinada ação no banco de dados. No exemplo abaixo é inserido um registro em uma tabela após uma tabela referente sofrer alteração em seus registros.
O primeiro passo é criar uma função que será executada toda vez que a tabela referente sofrer alteração.
OBS: A variável NEW se trata dos dados que estão vindo da alteração da tabela referente.
CREATE TRIGGER TR_atualiza_tabela AFTER INSERT OR UPDATE ON tabela_referente
FOR EACH ROW EXECUTE PROCEDURE atualiza_tabela();
O primeiro passo é criar uma função que será executada toda vez que a tabela referente sofrer alteração.
OBS: A variável NEW se trata dos dados que estão vindo da alteração da tabela referente.
CREATE OR REPLACE FUNCTION atualiza_tabela () RETURNS trigger as $registro$
BEGIN
INSERT INTO tabelaX (campo1, campo2, campo3)
VALUES ( NEW.dado1, NEW.dado12, NEW.dado3,
);
RETURN NEW;
END;
$registro$ LANGUAGE plpgsql;
Agora criamos literalmente a TRIGGER que será acionada toda vez que a tabela referente sofrer alteração, chamando a função que criamos acima.
FOR EACH ROW EXECUTE PROCEDURE atualiza_tabela();
Fonte: http://www.postgresql.org/docs/9.2/static/plpgsql-trigger.html
quinta-feira, 18 de fevereiro de 2016
Convertendo caracteres no Postgres
Uma função muito útil no PostgresSQL é a conversão de encoding de caracteres de um tipo para outro. No exemplo abaixo desejo converter um caracter que está no tipo LATIN1 para o tipo UTF-8.
SELECT CONVERT_FROM(convert_to('Brotas De Macaúbas', 'LATIN1'), 'UTF-8')
quinta-feira, 7 de janeiro de 2016
Utilizando aplicativos Windows no Linux
Nos dias atuais a utilização do Linux tem crescido muito por parte dos usuários comuns, no entanto alguns aplicativos comuns nativos para windows ainda não tem a versão apropriada para o Linux ou simplesmente não existe. Neste caso pode-se utilizar o aplicativo Wine que se torna uma plataforma para aplicativos Windows rodarem no linux... para efetuar sua instalação é muito simples. Segue códigos de instalação para o Ubuntu.
Primeiro vamos habilitar o uso de aplicativos x86 caso ainda não esteja habilitado:
Vamos adicionar o repositório que contém o aplicativo:
Vamos atualizar nossa lista de repositórios:
Agora vamos instalar o Wine:
Voilá! agora pode baixar um arquivo .EXE e para instalar o mesmo neste formato basta cliar com o botão direito sobre o mesmo e mandar executar com o Wine e pronto!!!
Primeiro vamos habilitar o uso de aplicativos x86 caso ainda não esteja habilitado:
sudo dpkg --add-architecture i386
Vamos adicionar o repositório que contém o aplicativo:
sudo add-apt-repository ppa:wine/wine-builds
Vamos atualizar nossa lista de repositórios:
sudo apt-get update
Agora vamos instalar o Wine:
sudo apt-get install --install-recommends winehq-devel
Voilá! agora pode baixar um arquivo .EXE e para instalar o mesmo neste formato basta cliar com o botão direito sobre o mesmo e mandar executar com o Wine e pronto!!!
Assinar:
Postagens (Atom)