Uma maneira que permite o usuário fazer acesso sem ter que digitar a senha é configurando o arquivo .pgpass maiores detalhes podem ser encontrados em https://www.postgresql.org/docs/10/libpq-pgpass.html
sexta-feira, 6 de novembro de 2020
Configuração de acesso remoto com SSH
O ssh permite o acesso remoto ao servidor, porém além da tradicional forma de acessar:
user@servidor.dominio
é possível criar pontes de acesso para facilitar o uso na máquina local.
No exemplo:
ssh -f -N -L 9995:localhost:5435 bd25
Estou mapeando na maquina local a porta 9995 para comunicar diretamente com a porta 5435 do servidor remoto bd25. Porém existe um pulo a mais nesta história, pois quando estou fora da rede corporativa não tenho acesso direto, por isso preciso me autenticar em um servidor VPN e acessar apenas uma única máquina.
Configurando o arquivo ~/.ssh/config eu posso definir o acesso com jump direto
Host srv1
HostName 192.160.25.1
User mysuer
Port 22
Host bd25
HostName bd.dominio
Port 22
User mysuer
ProxyJump srv1
Conforme apresentado no exemplo acima eu posso fazer acesso direto ao srv1 da seguinte maneira:
ssh srv1
ele vai fazer ssh mysuer@192.160.25.1 automaticamente, e além disso, conforme apresentado no inicio do post estou acessando diretamente o bd25 que nesta configuração vai primeiro no srv1.
sexta-feira, 4 de setembro de 2020
Como calcular área de um polígono no Postgis
O link para o manual do Postgis é https://postgis.net/docs/ST_Area.html onde você vai encontrar detalhes da documentação. Neste post eu considerei que os dados do meu banco estão todos em projeção EPSG:4326 e então efetuo a conversão de tipo da geometria de Geometry para Geography e em seguida utilizo a função st_area.
No primeiro exemplo a função está retornando o dado em metros quadrados, portanto este é a unidade padrão;
st_area( ucf.geom::geography) m2
Para obter o resultado em quilômetros quadrados foi realizada a divisão por 1 milhão;
st_area( a_ucf_aq1km_16.intersection_geom::geography)/1000000 km2
Para obter o resultado em hectares foi realizada a divisão por 10 mil;
st_area( a_ucf_aq1km_16.intersection_geom::geography)/10000 ha
sábado, 22 de agosto de 2020
Converter string para data no Python Pandas
Com o comando abaixo foi recortado do nome de uma imagem a parte que representa o ano e dia Juliano (DOY) e convertido para o formato data.
dados["data_pas"] = pd.to_datetime(dados.cena_atual.str.slice(9,16), format='%Y%j')
Truncar data no Python Pandas
# este comando é pra truncar a data mantendo os valores dentro da hora ex. 16:54 -> 16:00
df["data_hora"] = df.data_hora_gmt.dt.floor("H")
sexta-feira, 22 de maio de 2020
segunda-feira, 4 de maio de 2020
Comandos mágicos para edição rápida de arquivos txt em Shell
# insere o texto "begin transation" na primeira linha do arquivo
# focos_terrama2q.sql
sed -i '1s/^/begin transaction; /' focos_terrama2q.sql
# insere o texto na linha específica (linha 29322846)
sed -i '29322846s/^/commit; /' focos_terrama2q.sql
# insere o texto na ultima linha
echo "commit; " >> focos_terrama2q.sql
# insere algum texto a cada 100000 linhas
sed '0~100000 s/$/\ncommit;\nbegin;/g' < focos_terrama2q.sql > focos.sql