jueves 10 de julio de 2008

Script de shell generador de sitemaps para google

Hola a todos, después de tanto y tanto tiempo... Aquí dejo un script que le puede servir de ayuda a algun@. Genera el archivo sitemap.xml necesario para un buen posicionamiento en motores de búsqueda como google o yahoo.

Habrá muchos más scripts mejores pululando por la red, pero ahí va mi aportación.
El uso es simple, se coloca el script en el directorio raíz de nuestra dominio y se ejecuta poniendo como parámetros las extensiones de las páginas web que tenemos alojadas.

Por ejemplo: ./dositemap html php

NOTA: si tienes páginas con extensión .htm y .html NO hay que incluir ambos, sólo la de .htm, ya que si se ejecutara ./dositemap htm html habría urls repetidas.


#!/bin/bash

####################################
# Diego Navarro Mellén #
# d.navarrom@alumnos.urjc.es #
####################################



## Función auxiliar para añadir la información necesaria de
## cada página web

function addinfo {

if [ $# -ne 1 ]; then
echo "ERROR: argumentos insuficientes!"
exit 1
fi

for pagina in `find . -name "*\.$1" | sed -e 's/^.//g'`
do
echo '<url>' >> sitemap.xml
echo "<loc>$ruta$pagina</loc>" >> sitemap.xml

#Sacamos la fecha de última modificacion
lastmod=`ls -Gltc ./$pagina | sed -e 's/^[^ ]* [^ ]* [^ ]* [^ ]* //g' |
sed -e 's/[^ ]* [^ ]*$//g'`
echo "<lastmod>$lastmod</lastmod>" >> sitemap.xml

echo '</url>' >> sitemap.xml
done
}

#### Script Principal #####

# En los argumentos se recibira el tipo de extension que pueden tener las páginas
if [ $# -lt 1 ]; then
echo "Faltan argumentos!"
echo "Ejemplo de uso:"
echo "USO: $0 html php asp"
echo "------------------------>"
echo "El comando anterior generaría un sitemap de todo el sitio conteniendo
todas las páginas con extensión .html, .php y .asp que se encuentren"

exit 1
fi

## Suponemos que estamos en el directorio raíz del dominio
#

echo "Introducir raíz del dominio:"
echo "ej: http://www.google.es"
echo -n "> "
read ruta
echo "El archivo sitemap.xml se generará en el directorio:"
echo "$(pwd)"
echo "¿Seguir con el proceso? [S/N]"
echo -n "> "
read resp
if [ $resp = "N" -o $resp = "n" ]; then
echo "Proceso abortado"
exit 1
fi

echo -n "Generando sitemap.xml ... "

## Creamos el archivo sitemap.xml
echo '<?xml version="1.0" encoding="UTF-8"?>' > sitemap.xml
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> sitemap.xml

## Para cada url en el sitio

for extension in $@
do
addinfo $extension
done

## Cerramos urlset
echo '</urlset>' >> sitemap.xml

echo "OK!"
exit 0

sábado 13 de octubre de 2007

Cómo hacer funcionar el wifi bcm43xx en OpenSUSE 10.3


He tenido que googlear mucho hasta encontrar la respuesta pero aquí está. Este es un tutorial excelente de cómo solucionar ese pequeño problema que se nos presenta con la tarjeta inalámbrica integrada que trae el Inspiron 1501. Me he basado en él para resumiros lo que hice, ya que el tutorial es muy completo y en realidad a mí sólo me bastó con realizar una parte de todo el ladrillazo que viene ahí (además en inglés, jaja).

¿Qué necesitamos?
  • Ndiswrapper: un emulador de drivers de windows para linux, es decir, con este programa podemos usar algunos drivers de windows en nuestra distribución favorita de linux. Necesitaremos instalarlo si no lo tenemos ya. La instalación es muy sencilla usando Yast, así que no lo trataré aquí.
  • Conexión a internet: sí, vale, ya sé que eso es precísamente lo que queremos conseguir, pero la manera más rápida de arreglar todo esto es teniendo conexión a internet en el portátil usando la red cableada (ésa sí funciona). Supongo que tendréis otro equipo conectado a internet en casa con cable ethernet. Pues bien, simplemente con conectar el cable de red ethernet a nuestro portátil, openSUSE se encargará de proporcionarnos la conexión a internet sin tener que tocar nada más (es la mágia del DHCP).
  • bcm43xx-fwcutter: es un paquete que debemos tener instalado para seguir este tutorial. Creo que normalmente viene instalado pero podemos comprobarlo e instalarlo si hace falta como siempre con Yast.
Ahora que tenemos estas dos cosas seguiremos estos pasos desde la consola:

Nos pondremos como root:

su


(introduciendo seguidamente la contraseña de root y pulsando INTRO)

Ahora instalamos el firmware "bueno" que nos permitirá que nuestra tarjeta integrada pueda buscar redes wifi y conectarse a ellas:

install_bcm43xx_firmware


Ahora tenemos que recargar el módulo de la tarjeta wifi (bcm43xx) para que comience a usar el nuevo firmware:

modprobe bcm43xx


Y aunque parezca mentira cuando reinicies el equipo y arranques de nuevo openSUSE 10.3 deberías ver como se enciende el LED del wifi en tu portátil y cómo en cuestión de pocos segundos estarás conectado a alguna red cercana... A mí me funcionó ;-)

Suerte!

Instalación de OpenSUSE 10.3 en un Dell Inspiron 1501

Pues aquí vamos, que mal funciona el jodido Windows Vista, a veces ni arranca. Así que ya me lo voy a quitar de encima de una vez.

Una cosa importante antes de instalar linux: mucha gente suele dejar el ordenador modo hibernación o en modo suspender. Cuando instalemos linux deberemos apagar completamente el equipo desde Windows Vista para que luego podamos redimensionar correctamente su partición.

Cuando arranquemos el portátil con el DVD de instalación de OpenSUSE nos saldrá la típica pantalla que nos permite instalar o recuperar el sistema. Configuraremos el idioma y una cosa importante, en las opciones de arranque escribiremos pci=nomsi. Después podemos pulsar intro y seguir con la instalación.
Selección idioma linux


instalación linux suse

En la siguiente pantalla de la instalación se nos invita a comprobar la integridad de los datos del DVD de instalación, este paso es opcional. Seguidamente tenemos que aceptar el EULA de SUSE.

EULA

Ahora seleccionamos "nueva instalación".

  • Configuramos la zona horaria
  • Seleccionamos el entorno gráfico (A mí me gusta más KDE)


entornos gráficos linux

Después nos aparece el resumen de la instalación. Aquí podemos cambiar algunas cosas si somos un poco curiosos, pero por defecto suelen venir las cosas bastante bien y si no tenemos mucha experiencia es mejor que lo dejemos como está. El instalador se ocupa automáticamente de cambiar los tamañaos de las particiones de Windows para hacer sitio a Linux sin que pierdas tus antiguos datos.

resumen instalación

De manera que continuamos la instalación y ahora tenemos que aceptar otras cuantas EULA's...
Y por fin llega el punto de no retorno de la instalación, si pulsamos en Instalar en esta pantalla se efectuarán los cambios en las particiones.

particionado linux

instalación suse linux

Ahora el instalador se pondrá a preparar las particiones. Normalmente sale bien.. jaja. Yo de todas formas estoy cruzando los dedos porque estoy escribiendo esto a la vez que realizo la instalación. No os asustéis, que tarda un buen rato y además mosquea porque no tienes por qué ver cómo esta el proceso, en la pantalla te dice progress bar might not move, y vaya que no se mueve...

Después de una larga espera para hacer el particionado se comienzan a instalar todos paquetes necesarios desde el DVD. En todos estos tiempos muertos no os quedéis mirando a la pantalla porque os puede dar algo... haced un poco de ejercicio, comed algo o yo que sé, si tenéis más ordenadores podéis mirar algo en internet. Normalmente las instalaciones no son tan largas, lo que lleva más tiempo es el redimensionado de una partición.

Ya se han terminado de instalar todos los paquetes y ahora se instalará el gestor de arranque. Se reinicia ahora el equipo y seguimos configurando.

  • Introducimos la contraseña de root
  • Introducimos el nombre del equipo
  • Configuración de la red (aquí podemos configurar nuestra red wifi)
  • Método de autenticacion (lo más común es elegir Local /etc/passwd)
  • Creación de un usuario
  • Configuración de otro hardware
Y después de todos estos pasos se finaliza la instalación. No me he metido muy de lleno en estos últimos pasos porque me parecen bastante intuitivos.

Finalmente nos aparece la pantalla de login de openSUSE. Introducimos nuestros datos y se nos pone a la vista nuestro sistema de escritorio, en mi caso KDE.

Conclusiones:
  • La instalación ha sido muy larga
  • La wifi del inspiron 1501 no funciona a la primera, eso para otro capítulo
  • Después de la instalación GRUB es capaz de arrancar Windows Vista otra vez.

viernes 5 de octubre de 2007

Calcular producto escalar y ángulo que forman dos vectores en Pascal


Hoy me he currado un ejercicio de EDI (Estructura de datos y de la Información). Se trata de un recordatorio de Pascal. Tenemos que hacer un programa que calcule el producto escalar y el ángulo que forman dos vectores de dimensión N.

Así parece sencillo, y en realidad no es muy complicado, pero creía que iba a ser un programa bastante cortito y no ha sido tan corto. Al final he tenido que hacer unos cuantos subprogramas: pasar de radianes a grados, producto escalar, módulo, arcCos, y subprogramas para introducir los vectores y mostrarlos por pantalla.

Pulsa en leer más para ver el código completo.

Aquí tenéis el código completo del programa:







Que pena que no me ha respetado la identación del código, espero poder arreglarlo. Si encontráis algún bug o te ha parecido interesante, escríbeme un comentario.

domingo 30 de septiembre de 2007

Recuperar la contraseña de administrador de Joomla

Hace unas semanas instalé Joomla en mi Ubuntu para probarlo. Como soy muy descuidado me olvidé cambiar la contraseña que te pone por defecto joomla como administrador, que es muy difícil de recordar y al final no tengo ni idea de cual puede ser. Así que voy a explicar una manera que tenemos de cambiar la contraseña a lo bruto.

Pero antes de nada os digo que esto no sirve para crackear nada, tenéis que tener acceso total al servidor para hacer esto, es decir, ser los dueños del mismo. Este texto es puramente didáctico y no me responsabilizo del uso del mismo si se usa para otros fines.

El plan es el siguiente: sustituir el password del administrador directamente en la base de datos (tabla jos_users). Las contraseñas se guardan encriptadas en la base de datos, encriptación MD5, por tanto nos sería muy lento adivinar la contraseña. Hasta aquí ningún problema, generaríamos nuestra contraseña codificada en md5 y la sustituiríamos en el campo password de la tabla jos_users, pero hay un problema, Joomla guarda los passwords de una manera un poco especial, les añade un "grano de sal" y finalmente las inserta con un formato del tipo "pass+sal encriptado en md5 ':' sal". Pero no preocuparse, indagando en el fichero administrator/index.php encontré un fragmento de código que prepara la contraseña para introducirla en la base de datos.

/joomla/administrator/index.php línea 88

// Old password hash storage but authentic ... lets convert it
$salt = mosMakePassword(16);
$crypt = md5($pass.$salt);
$my->password = $crypt.':'.$salt;


No es muy difícil hacer un pequeño script que te prepare tu propia contraseña. Esto es lo que he hecho yo. Aquí os dejo el fichero, sólo tenéis que cambiar el valor de $passmio en la línea 53 por la contraseña que queráis. Después guardáis ese fichero en /joomla/administrator/ y lo visitáis. Veréis arriba del todo la contraseña ya preparada.

Bien, ya tenemos la parte sucia del trabajo. Ahora sólo queda modificar el dato en la base de datos. Para esto tenéis varias opciones, ya que normalmente los que tengáis la web alojada en un servidor virtual podréis tener phpMyAdmin. Yo he modificado mi BD con MySQL Administrator y MySQL Query Browser, dos utilidades que tengo en Ubuntu.

Conectamos con la BD: Ejecutamos MySQL Administrator


Ahora seleccionamos la tabla jos_users como se ve en la captura y hacemos clic con el botón derecho del ratón sobre ella, nos saldrá el siguiente menú en el que haremos clic en 'Edit Table Data'.

Seguidamente se nos abrirá la ventana de MySQL Query Browser donde tendremos que hacer login otra vez para conectarnos a la BD.

Vemos ahora el contenido de la tabla jos_users, con sus contraseñas debidamente encriptadas.

Finalmente deberemos ejecutar una consulta SQL que cambie el contenido del campo password del usuario admin. Para ello construimos una consulta de este tipo:

UPDATE `joomlaDB.`jos_users` SET `password`='elpasswordgenerado' WHERE `username`='admin'

Vista de la consulta:

Por último pulsamos en el botón de Execute y ya podremos entrar a nuestro Joomla con la contraseña que hemos puesto!

martes 25 de septiembre de 2007

¿Cómo dirigir visitas a tu web o blog?


Uno de los temas más buscados en internet (a parte de lo que ya sabemos...). Y es que hay que entender la postura de los webmasters, bueno, eso antes cuando la gente se hacía sus cutre-webs, porque ahora te lo dan todo hecho los CMS como blogger, wordpress, joomla... Todos queremos que nos lean, que nos hagan caso, si es que vaya ego, es lo que tiene este mundo. Te pones un blog y así tienes tus 5 minutos (clicks o lo que quieras) de gloria.
Aunque no sólo de blogs vive el hombre, también puedes estar harto de tu jefe/a y querer montar tu propia empresa o directamente te hiciste freelance. Pues para que tu negocio o tu ego se mantengan necesitas que la gente visite tu web. ¿Que cómo hacemos esto? Pues allá vamos:

Una de las cosas imprescindibles que tienes que hacer es dar de alta tu web en buscadores, desde el omnipresente Google (pincha aquí para darte de alta) hasta... miles de buscadores que hay por ahí. Si piensas hacerlo a mano tendrás que tener mucha paciencia, en eso se basan mogollón de servicios de pago para incluir webs en buscadores. También existe software específico para realizar esta tediosa tarea.

Otra de las cosas fundamentales es, si tienes un blog, hacer comentarios en otros blogs. De esta manera te das a conocer a los demás blogueros y a través de tus comentarios puede que visiten tu blog. Pero claro, no se puede hacer esto a lo burro, porque lo único que conseguirías es quedar como un spammer. Los comentarios hay que hacerlos con cabeza, si no tienes nada que decir, es mejor que no lo digas.

Intercambios de enlaces: Son bastante efectivos y útiles si se hacen entre webs de temática similar y con un buen page rank. Fíjate en el post que puse antes, si quieres intercambiar enlaces, ya sabes...

Y por último también puedes escribir una entrada en tu blog sobre ¿Cómo dirigir visitas a tu web o blog? (Sí, parece una tontería pero si has entrado buscando esto ha sido efectivo, ¿no?)

PD: Por supuesto todas estos métodos funcionan mucho mejor si tu web tiene un contenido que interese a la gente. Procura escribir sobre algo que quieran los demás, presta algún servicio (tutoriales, enlaces...) y a ganar visitas!