miércoles, 12 de enero de 2011

Primeras impresiones del MacBook Pro 13" por un usuario de Linux

Hace dos días que conseguí mi MacBook Pro de 13" con un suculento descuento del 12% gracias a mi querida universidad (URJC). Yo soy linuxero al 100% desde hace bastantes años y lo uso y seguiré usando como mi sistema principal. Quería escribir esta entrada para comentaros el "cambio" (entre comillas porque no hay tal cambio, uso tanto linux como windows y ahora mac) de GNU/Linux o más concretamente Ubuntu a Mac OS X.

La compra:


Un consejo para la gente pobre como yo que sólo usamos tarjetas de débito, aseguraos de que vuestra tarjeta tiene un límite de compra superior al importe de vuestro mac y sobre todo mirar también el límite semanal. La semana en la que compré el portátil tuve que llevar el coche al taller con el consecuente sablazo para la tarjeta. Cuando me dispuse a hacer el pedido por internet en Apple Store me denegaba la tarjeta, realicé el pedido por teléfono y el mismo error. Después de hablar con mi banco y varios intentos fallidos y horas perdidas aumentando el límite semanal de la tarjeta me comentaron que, tras varios intentos fallidos en una operación de pago con tarjeta se bloquea dicha operación y hasta que no pasan varios días hábiles no se puede volver a realizar correctamente ninguna operación en esa tienda (sobre todo si es online o una compañía extranjera como Apple).

Como me corría un poco de prisa decidí pagarlo en efectivo en una tienda física de Apple. Me hicieron el correspondiente descuento extra por ser universitario de la URJC y salí de allí con mi flamante MacBook Pro 13" guardado en curiosa bolsa "Apple" de plástico con cordones para usarla como mochila.

Abriendo la caja


Bueno, esto no era un misterio para mí. Hay un montón de vídeos en youtube de unboxing de macbooks, pero hacerlo tú mismo siempre es especial. La verdad es que el aspecto de los productos de Apple siempre está muy cuidado, y en este caso no iba a ser la excepción. Cuando abres la caja lo primero que ves es el reluciente portátil envuelto en un plástico transparente. El paquete incluye también el adaptador de corriente (muy curioso el detalle de que el conector para el portátil sea un imán para evitar que si alguien tira del cable por accidente el portátil no se vaya al suelo), un alargador para el adaptador, una paño para limpiar el portátil y las guías de uso del sistema.

Lo que más llama la atención externamente del portátil es su solidez. Si estás acostumbrado a usar portátiles PC de gamas bajas o medias notarás la diferencia. Puedes coger el portátil con una mano y no notas que la carcasa se doble ligeramente por el plástico, lo que da una sensación de dureza muy buena.
El teclado retroiluminado tiene unas dimensiones muy cómodas y es bastante silencioso. Las posibilidades de conectividad en cuanto a puertos externos son suficientes aunque se pueden quedar un poco cortos los 2 puertos USB para algunas personas.
La pantalla de LEDs es una de las cosas que más me han gustado, a pesar de ser de 13" tiene una resolución y una nitidez excelente.

Mac OS X vs GNU/Linux

No voy a entrar en un flamewar con este tema, simplemente voy a destacar las diferencias que me he encontrado al estar acostumbrado a usar Ubuntu todos los días y usar ahora Leopard.

Había probado antes un mac en la típica tienda donde los tienen expuestos y te dejan toquetearlos un poco, pero definitivamente no se puede sacar ninguna conclusión de usar Leopard durante 5 minutos.

Cuando enciendes el portátil por primera vez te preguntan algunos datos personales para hacer tu AppleID, que está vinculado a tu usuario en el sistema y en unos minutos tienes funcionando el escritorio.

¿Qué es lo primero que hace un usuario de Linux en un Mac?... Efectivamente, abrir la terminal :D
Estoy acostumbrado a realizar muchas tareas desde la terminal y de entrada tenemos una shell bash al igual que en Linux pero con ciertas diferencias, ya que al fin y al cabo Mac OS X es un sistema BSD.
La mayoría de los comandos más básicos son iguales. Una de las cosas que más hecho de menos es que no tenga el comando free para mirar el consumo de memoria aunque según he leído por ahí existen maneras de arreglar esto con algunos scripts o ports (aún tengo que estudiarlo). Si tenemos mucha prisa siempre podemos usar el comando sysctl hw |grep mem para sacar por pantalla el consumo de memoria.

Obviando el tema de la terminal, que se puede configurar y dejarla igual que en Linux paso a comentaros lo que más echo de menos en el mac, el sistema de paquetes de Linux (.deb o .rpm ambos le dan mil vueltas al sistema de imágenes automontables de mac). Es un engorro al igual que en Windows no tener un sistema de repositorios de software centralizado y tener que ir navegando por internet para instalarte un programa. En mi opinión la gestión del software es el punto fuerte de GNU/Linux.

La disposición del teclado también te descoloca un poco al principio. Tienes que acostumbrarte a usar la tecla comando, exclusiva en los mac, y que se utiliza para multitud de atajos de teclado como el típico copiar y pegar. A los linuxeros también puede volver loco al principio sacar el símbolo ~, que en mac se consigue pulsando ALT + Ñ.

Conclusiones

Lo mejor: construcción, autonomía, pantalla, basado en UNIX

Lo peor: precio, gestión del software, compatibilidad con otros sistemas de ficheros, no es software libre...

De momento seguiré aprendiendo sin prejuicios a usar este sistema aunque no creo que se convierta en mi sistema principal.

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 (AVISO: El fichero ya no se encuentra online porque cerramos ese dominio, actualmente no dispongo del fichero para volverlo a subir, lamento las molestias), 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!