Histórico de la categoría «linux»

Gnome Evolution para Windows

A través de Planet Gnome me acabo de enterar de que los chicos de openSUSE siguen empeñados en hacer funcionar el programa de correo electrónico Evolution bajo Windows.
Este programa es un excelente sustituto de Outlook ya que maneja perfectamente toneladas de correo electrónico e integra tanto los contactos como el calendario (incluso se puede sincronizar con Google Calendar).
Espero que funcione igual de bien que en Linux, y que estoy un poco hasta las narices de las desapariciones espontáneas de carpetas de correo en Thunderbird (en el ordenador de mi mujer, claro está).

Nueva edición de GUADEC-ES (la VII ya), repite A Coruña

Este año la GUADEC-ES, en su séptima edición, vuelve a A Coruña (¡Diosss, cómo me fastidia tener que escribirlo así! Lo normativo no quita lo cacofónico).

La GUADEC es como llamamos a la «GNOME Users’ And Developers’ European Conference» (que este año se celebra en La Haya, Países Bajos) y la GUADEC-ES es su hermana pequeña, creada por y para los desarrolladores y usuarios hispanoparlantes.

Se celebrará los días 22 y 23 de julio de 2.010 y cerquita de casa, así que este año no hay excusa para no ir.

Copia de seguridad de bases de datos MySQL

Para realizar una copia de seguridad de mis bases de datos MySQL solía hacer un «mysqldump» de todo lo que había en el servidor y comprimirlo en un «tar.gz». Esto me funcionó muy bien mientras tenía pocas bases de datos y las usaba todas con cierta frecuencia. Ahora tengo otras necesidades, ya que muchos de los proyectos asociados a esas bases de datos ya no están activos, los he transferido o, simplemente han muerto.

Para que me fuera más fácil poder restaurar solamente una base de datos, decidí modificar mi antiguo script para que volcara cada una de las bases de datos en un archivo distinto. Un par de horas después surgió esto:

#!/bin/bash
# Back up all databases of a server putting each db in a different file
 
# Backup destination directory
BACKUP_DIR="$HOME/backup/"
# Name of the backup file
BACKUP_FILENAME="mysqlbackup"
# Use the date for the filenames
BACKUP_DATE=`date +"%Y%m%d_%H%M%S"`
# Name of the archive file
BACKUP_ARCHIVE=${BACKUP_DIR}${BACKUP_FILENAME}_${BACKUP_DATE}.tgz
TEMP_DIR="/tmp/"
 
# Check if the temporary directory exists, if not, create it
if [ -d ${TEMP_DIR}${BACKUP_FILENAME}/ ]; then
	# directory exists
	echo "Cleaning ${TEMP_DIR} ..."
	rm -rf ${TEMP_DIR}${BACKUP_FILENAME}/*
else
	echo "Creating ${TEMP_DIR} ..."
	mkdir ${TEMP_DIR}${BACKUP_FILENAME}/
fi
 
# Get all database names
DATABASES=`mysqlshow -u root -pmysqlpassword | sed 's/[ +-|]\+//g' | sed '/\-/d' | sed 's/^Databases//g' | sed '/^$/d'`
 
# Dump each db in a different file in the temp dir
for db in $DATABASES; do
	echo item: $db
	mysqldump -v -u root -pmysqlpassword -h localhost --create-options --extended-insert --databases $db > ${TEMP_DIR}${BACKUP_FILENAME}/${BACKUP_DATE}_${db}.sql
done
 
# Create the archive file in the backup dir
pushd ${TEMP_DIR}
tar cfz ${BACKUP_ARCHIVE} ${BACKUP_FILENAME}/${BACKUP_DATE}_*
popd
 
# Remove temp files
echo "Cleaning ${TEMP_DIR} ..."
rm -rf ${TEMP_DIR}${BACKUP_FILENAME}/*
 
# Pretty output
echo "###############################################################################"
echo "   Archive file: ${BACKUP_ARCHIVE}"
echo "   Archive size: "`stat -c%s ${BACKUP_ARCHIVE}`" bytes"
echo "###############################################################################"
echo "End"
echo ""

Creo se explica solo.

Los más vagos lo podéis descargar aquí: mysqlbackup.sh.txt.

No olvidéis darle permisos de ejecución («chmod +x nombre_de_archivo»), cambiar el nombre de usuario y la contraseña en los comandos «mysqlshow» y «mysqldump» y quitarle la extensión «.txt», aunque esto último es opcional.

[PHP] debug() function

Función utilizada para mostrar el valor de una variable. Normalmente la uso para depurar el código.

/**
 * debug; Prints a string and a variable value in red (for debugging purposes).
 * @name string containing the name of the variable
 */
function debug($name) {
	global ${$name};
	global $debug;
	$the_style = "color:#f00;font-weight:bold;";
	// Only show output if debugging is on
	if ($debug == 1) {
		$var = ${$name};
		if (is_array($var)) {
			echo "##<b class=\"bold\">$name</b><br>\n";
			while (list($key, $value) = each($var)){
				print("\n".'<div style="'.$the_style.'">#=>'.$key.' ==> ');
				if (is_array($value)){
					print('<code>');
					print_r($value);
					print('</code>');
				} else {
					echo nl2br($value);
				}
				print('</div>'."\n");
			}
		} else {
			print('<div style="'.$the_style.'">#'.$name.'=>'.$var.'#</div>'."\n");
		}
	}
}

Ejemplo de uso:

<?php
$debug = 1;
// ...
$mi_mensaje = "Mola Hundo!";
debug("mi_mensaje"); // OJO, se pone el _nombre_ de la variable, no la variable
// ...
?>

Gnome 2.28, la última antes de Gnome 3.0

Ya está aquí la nueva versión del escritorio Gnome, las notas de lanzamiento ya están disponibles. Se supone que esta será la última versión de la serie 2.x y que la siguiente comience la serie 3.x.
Ta regüeno... ¡¿Qué más se puede decir?!

Icono para Geany

Hace tiempo que utilizo Geany como editor de texto predeterminado en Gnome, pero su icono no me acaba de convencer. Pues ya no, me he hecho uno a medida y tiene este aspecto:

Nuevos iconos para Geany

Nuevos iconos para Geany

Pulsa aquí para descargar el archivo SVG (creado en Inkscape), y aquí para un paquete listo para descomprimir en tu tema favorito.

PD: Es un turbante: ... genio... turbante... arabia... ¿lo pillas? bueno, da igual ;-)

Ubuntu 9.04 ha llegado y sigo sin poder usarlo

Aviso a navegantes: Esta entrada es un lamento, un grito de socorro y una petición de ayuda.

Mi odisea comienza en noviembre de 2.008 cuando, durante una fuerte tormenta eléctrica, mi principal ordenador dejó de funcionar. Diagnóstico: todo quemado; fuente de alimentación, placa base, tarjeta gráfica, etc. Por suerte mi seguro de hogar se hizo cargo de la sustitución y, feliz, me acerqué a una tienda local a conseguir un ordenador nuevo.

Me hicieron un presupuesto aceptable y unos pocos días después ya estaba instalando la última versión de mi distro favorita, Ubuntu. Estas son las características básicas:

  • Placa base GIGABYTE GA-M56S-S3
  • Procesador AMD Athlon X2 2000
  • Memoria KINGSTON DDR2 2 GB @ 667MHZ
  • Tarjeta gráfica NVIDIA GEFORCE PCI- EXPRESS FX 8400GS 512MB
  • Disco duro SEAGATE 320GB SATA 3,5” 8MB 7200

Pero poco me duró la felicidad.
Seguir leyendo «Ubuntu 9.04 ha llegado y sigo sin poder usarlo»

First post !! Un listado de comandos útiles para Linux

Este artículo contiene una colección de comandos y utilidades que suelo usar en la línea de comandos de Linux. No sé si tendrá mucho interés para vosotros puesto que, más que nada, lo pretendo llenar de cosas que necesito tener a mano desde muchos sitios. Vedlo más o menos como un «backup» online de truquillos.

Redirigir la salida de error al mismo sitio que la salida estándar. Ver aquí por qué.

cat archivo.txt > archivo.log 2>&1

Montar un archivo ISO para poder leerlo.

mount fichero.iso /mnt/directorio/ -t iso9660 -o ro,loop=/dev/loop0

Crear un ISO de un directorio

mkisofs -o /tmp/cd.iso /tmp/directory/

ídem con «dd»:
la unidad de CD (dev/hdd) tiene que estar desmontada

dd if=/dev/hdd of=fichero.iso

Convertir un archivo de latin1 a utf-8

iconv -f latin1 -t utf8 archivo_entrada > archivo_salida

Vice-versa; de utf8 a latin1

iconv -f utf8 -t latin1 archivo_entrada > archivo_salida

Nota: Con la opción «-c» de iconv se omiten loa caracteres no válidos en la salida (ver: «iconv --help»).
Seguir leyendo «First post !! Un listado de comandos útiles para Linux»