data carving (recuperación de datos) postgresql

Alguna vez se preguntaron cual sería el último recurso si por error (o una falla de disco) se borra nuestro directorio postgres corrompiendo totalmente la base de datos?, bueno, les puedo asegurar que a esta altura les encantaría tener backups, pero un poco aquello de que normalmente a uno lo contratan cuando el sistema es un desastre y por el otro lado “desasperación es la mejor de las maestras”. Por A o por B me tocó hacer esto, que no es más que el último recurso cuando por error o una falla de disco se borro la base de datos. Ojalá lo disfruten ya que es una de las cosas más difíciles que hice hasta ahora, en el top 3 digamos.

Continue reading

espacios en el for de bash

Esto es algo que me pasó millones de veces y al fin le encontré la solución definitiva.

 

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for f in *
do
  echo "$f"
done
IFS=$SAVEIFS

Espero les sirva, ojo que se viene un súper post de recuperación de datos en postgres. Un locura.

Video del EXE

Hola gente, acá les dejo algo a lo que no están acostumbrados.. un vídeo de youtube 🙂

Es para que vean otras cosas que hago (mal) pero con buena onda.

YouTube Preview Image

Saludos para todos.

Hospedaje gis

Esto es un post “patrocinado” por mi mismo, ya que soluciones root es mi empresa y sólo quiero posicionar a mi nuevo dominio gis hosting mejor en google. En la página www.gishosting.net va a ser en un futuro no muy lejano exclusivamente para contenido gis como mapserver, postgis, postgres, geoserver y otras tantas tecnologías todo orientado al hosting, espero les sea provechoso. Saludos.

geocoding reverso de nominatim

Bueno supongamos que tengamos una base de datos de nominatim, instalada y queremos a partir de un punto sacar las intersecciones, calle, barrio, municipio, depto y provincia. Aunque también sirve para extraer la calle si lo modifican un poco. Les dejo el SQL:

select calle, barrio, muni, depto, prov, placex.name->'name'as pais from (
select calle, barrio, muni, depto, placex.name->'name'as prov,placex.parent_place_id from (
select calle, barrio, muni, placex.name->'name'as depto,placex.parent_place_id from (
select calle, barrio, placex.name->'name'as muni,placex.parent_place_id from (
select distinct calles.name->'name' as calle, placex.name->'name' as barrio, placex.parent_place_id from (
select name, place_id,parent_place_id,rank_search from placex
WHERE ST_DWithin(st_geomfromtext('point(-76.5482 3.4477)',4326), geometry, 0.1)
and rank_search != 28 and rank_search >= 22
and (name is not null or housenumber is not null)
and class not in ('waterway','railway','tunnel','bridge')
and indexed_status = 0 
and (ST_GeometryType(geometry) not in ('ST_Polygon','ST_MultiPolygon') 
OR ST_DWithin(st_geomfromtext('point(-76.5482 3.4477)',4326), centroid,0.1))
ORDER BY ST_distance(st_geomfromtext('point(-76.5482 3.4477)',4326), geometry) ASC limit 2) as calles
inner join placex on placex.place_id = calles. parent_place_id)
as barrio
inner join placex on placex.place_id = barrio.parent_place_id) as muni
inner join placex on placex.place_id = muni.parent_place_id) as depto
inner join placex on placex.place_id = depto.parent_place_id) prov
inner join placex on placex.place_id = prov.parent_place_id;

Espero le sirva a alguien más.

ssh reverso

Esto es muy útil cuando tenemos un linux con ip privada y queremos accederlo desde afuera de una nat o router. En el servidor bateado debemos poner:
ssh -R 19999:localhost:22 root@(IP del server) -p (puerto del server)

Y luego en nuestro servidor real (con ip pública) sólo hacemos:
ssh localhost -p 19999

Y listo. Para evitar las contraseñas lean mi post de public key.

Saludos a todossss

Compilando el kernel at rpm’s way

Bueno esto está muy tratado en varios post, pero justo necesito agregar un módulo y me di cuenta que en centos (y fedora) hay que instalar el src.rpm, acostumbrado a mi viejo slackware y al linux tradicional me empecé a fijar como hacerlo. Y bueno les dejo acá los comandos sin explicar mucho, en mi caso necesitaba agregar el módulo crc32c. Vamos!

Continue reading