viernes, 16 de abril de 2010

Creando kmz desde la info de twitter. (ii)

Ok, ahora voy a mostrar como está construido un archivo kml, que es el que contiene la información para desplegarla en el google-earth. El archivo es un XML que contiene información sobre los puntos (coordenadas, latitud, longitud) para desplegarlos sobre el mapa.


<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name> Ultimos sismos registrados </name>
<Style id="bajo">
<IconStyle>
<scale> 0.7 </scale>
<Icon>
<href>root://icons/palette-3.png</href>
<x>64</x>
<y>64</y>
<w>32</w>
<h>32</h>
</Icon>
</IconStyle>
<LabelStyle>
<scale>0.7</scale>
</LabelStyle>
</Style>
<Style id="alto">
<IconStyle>
<scale> 0.7 </scale>
<Icon>
<href>root://icons/palette-3.png</href>
<x>64</x>
<y>96</y>
<w>32</w>
<h>32</h>
</Icon>
</IconStyle>
<LabelStyle>
<scale>0.7</scale>
</LabelStyle>
</Style>
<Folder>
<name> Sismos de SismologicoMX via Twitter</name>




hasta aquí tenemos el encabezado, definiendo 2 tipos de estilos para mostrar los iconos, el nombre de la carpeta y la identificación del archivo.

Luego viene la parte de los puntos sobre el mapa, la cual se va a repetir dependiendo del número de puntos que se quieran mostrar.




<placemark>
<name> NOMBRE </name>
<description> DESCRIPCION </description>
<lookat>
<longitude> LONGITUD </longitude>
<latitude> LATITUD </latitude>
<altitude> ALTURA </altitude>
<range>100</range>
<tilt>0</tilt>
<heading>0</heading>
</lookat>
<styleurl>#bajo</styleurl>
<point>
<coordinates> LONGITUD, LATITUD, ALTURA </coordinates>
</point>
</placemark>




Finalmente el cierre del documento:




</Folder>
</Document>
</kml>





Esta información la puedes observar en cualquier punto que añadas al google earth, lo exportes y luego la abras en un editor de texto, o bien puedes consultar los manuales oficiales de google-earth.

En la siguiente entrega, veremos como acoplar todo esto :)

jueves, 15 de abril de 2010

Creando kmz desde la info de twitter. (i)

Las columnas de Dave Taylor en LinuxJournal son muy buenas, utiliza bash para MUCHAS cosas. Siguiendo la línea, voy a programar un script para que obtenga la información que el Sistema Sismológico Nacional "twittea" y lo ponga en un archivo kmz que googleearth entienda.

El dia de hoy, muchos sismos "menores" en Baja California, yo creo que la península se va a desprender :)

Los datos que ponen en Twitter bajo SismologicoMX son generados automáticamente, así que tienen una estructura consistente, lo primero es descargar la info de twitter, y para esto utilizaré el buen amigo lynx, con la opción de código fuente para parsear el html directamente, buscando la clase entry-content, que es la que contiene el micropost, afortunadamente está en la misma linea, asi que con el siguiente código lo obtenemos:


lynx --source http://twitter.com/SismologicoMX | grep "entry-content"


agrego un poco de sed para eliminar los tags html :


lynx --source http://twitter.com/SismologicoMX | grep "entry-content" | \
sed 's/<[^>]*>//g'


y con esto tenemos la linea de los datos, para obtener la información que me interesa, como fecha, hora, latitud, longitud, profundidad y magnitud, agrego un poco de awk :


lynx --source http://twitter.com/SismologicoMX | grep "entry-content" | \
sed 's/<[^>]*>//g' | awk ' {print $2,$4,$6,$8,$10,$11 }'


Con esto termino este post, ya con esos datos, en el siguiente veremos como utilizarlos para formar el archivo kmz.


Ejemplo de resultados:

2010-04-15 05:20:08 31.95 -113.47 10 M=4.2
2010-04-15 04:28:19 32.28 -115.32 16 M=3.5
2010-04-15 04:20:39 32.08 -114.92 20 M=3.9
2010-04-15 03:51:01 32.66 -115.55 10 M=3.8
2010-04-15 02:17:22 32.47 -115.33 8 M=3.4
2010-04-15 01:35:21 32.73 -115.81 16 M=3.6
2010-04-15 01:19:56 32.63 -115.76 16 M=3.7
2010-04-15 00:14:30 32.14 -115.23 17 M=3.5

jueves, 28 de enero de 2010

Ejercicio en bash para descargar ...

Existen varias alternativas para descargar archivos de r*pidsh*re sin pagar por una cuenta, con la respectiva espera y todo ...

El que uso se llama autorapid.rb, y está escrito en ruby, es muy bueno.

La cuestión es que me dió curiosidad por comprar una cuenta para no tener que estar esperando por las descargas, blablabla ... y al intentar modificar este programa pues resulta que ... me resultó más fácil realizar otro que hiciera algo similar. MMM ya mencioné que el dicho programa funciona en modo texto ?? Eso es importante, ya que pretendo tener un Linux sin ambiente gráfico solo para descargas :)

Aunque existen "downloaders" que me permiten bajar del sitio en cuestión y de otros sitios, no encontré alguno en modo texto, así que urgando por ahí encontré que se puede utilizar el famoso **wget** para realizar estas descargas, y para no hacerlo a mano, pues tirando algunas lineas en bash (y aprovechando otros comandos) se puede automatizar algunas cosas al momento de descargar, por ejemplo:

* Verificar que todos los links estén disponibles antes de realizar la descarga.
* Interrumpir la descarga ... y tratar de continuar donde se quedó
* Hacer 4 descargas paralelas.

Para esto hacemos uso de lynx, wget y xargs, y a continuación les pego mi programa que llamé: bajarRapid.bash

nota: NECESITAS CUENTA PAGADA y haber creado la cookie.



##########################################################################################
#!/bin/bash
# Hugo Gonzalez, 2010
# hugo (dot) glez (AT) gmail (dot) com
# Programa para descargar de manera simultanea desde r*apidsh*are
# TENIENDO CUENTA PAGADA...



# archivo donde se verifican los links
file=".file.ok"

li=`cat $1`

###############
# Se verifican los links en paralelo :)
function chk_link
{
E=`lynx --dump $url | grep Error`
if [ "$E" = "Error" ]; then
echo "link roto ! : $url" >> $file
else
echo "OK : $url" >> $file
fi
}
################


if [ -f $file ]; then
echo "Ya se verificaron los links !"
else
# verificar links
echo "Validando links !"
for url in $li
do
chk_link $url &
done
wait # espera a que finalicen los procesos en segundo plano
E=`grep roto $file`
if [ "$E" == "" ]; then
echo "Todos los links OK"
else
echo "Existen algunos links rotos"
grep roto $file
exit 1
fi
fi


echo "Revisando archivos existentes !"

for a in $li
do
NA=`echo $a | cut -d'/' -f6`
if [ -f $NA ]; then
echo "$NA existe, omitiendo"
else
lin="$lin $a"
fi
done

echo "comenzando la descarga paralela de 4 archivos"


# para este paso debes haber creado previamente la cookie :)
echo $li| tr ' ' '\n' | xargs -P4 -I{} wget -c --load-cookies ~/.cookies/rapidshare {}

miércoles, 28 de octubre de 2009

Sorpresa, sorpresa con el xserver-xorg en Ubuntu 9.04

Pues resulta que últimamente he tenido algunos conflictos en mi portatil con los gráficos, van lentos e incluso extrañamente en algunas ocasiones luego de un uso intenso (como una semana sin apagarlo) se ponen todavía más lentos y al reiniciar simplemente no funcionan las X. Dejo reposar la máquina unas horas, y al iniciar nuevamente todo parece funcionar correctamente.

Hoy estuve revisando alguna información y luego de meterle mano a la configuración del X e instalar un driver nuevo de ubutnu-x team, según como indican aquí el sistema parece ir MUY bien, vamos a probarlo un poco y vemos que pasa.

Luego al intentar ver el archivo de configuración de mi equipo de escritorio (que también trae tarjeta gráfica intel) me sorprendo que el archivo de configuración xorg.conf, esta vacio ...
Cabe mencionar que este equipo fue instalado desde cero, y el portátil ha sufrido actualizaciones.

Y como no he tenido ningún problema con el de escritorio, pues ni tocar la configuración, ni por curiosidad hasta ahora, y gran sorpresa que ya toda la configuración, drivers, resoluciones, dispositivos etc, etc se realizan de manera completamente automática. Creo que esto es un gran avance para los nuevos en el sistema, y claro que puedes modificar tu configuración para ajustarla si eres usuario avanzado.

Hace tiempo vi la nueva arquitectura de X y su relación con la capa de abstracción de hardeare (hal) ... creo que hace falta repasarla.

miércoles, 21 de octubre de 2009

Estadísticas de vulnerabilidades en Apps web


Me acabo de enterar que Web Application Security Consortium [webappsec] publicó su reporte de 2008 y los datos son críticos, entre un 80 y 96% de los más de 12186 sitios evaluados contienen vulnerabilidades; y que un 99% de ellos no cumple las especificaciones del estándar PCI DSS.

La principal vulnerabilidad es el XSS (por cierto, blackboard tiene eso), seguida de divulgación de información y luego SQL injection.

miércoles, 14 de octubre de 2009

Inicio del proyecto

Desde hace tiempo tengo la intención de volver a tener blog, ya que hace casi 2 años que se murió el anterior, en este me concentraré en recuperar y explicar las ponencias sobre temas de software libre y seguridad que he impartido en los últimos años.