«Andante con moto». Rapidillo, ma non troppo…

Un blog acerca de cualquier cosa excepto música clásica.

Archive for the ‘software libre’ Categoría

Turdle, version 0.1

without comments

This is a little PHP script I’ve been using on my personal/home web server. I’ve improved it over time and suddenly I got in this sharing mood and thought:

«Gee, the rest of the world should have the pleasure of running this script on their web servers with PHP enabled. They should have the opportunity to simply copy it into a directory under their DocumentRoot and point their browser to it.»

Yeah, that’s what I thought. And now, a few months later, I remembered having thought that. So here it is: turdle_0.1.php. Rename it as you see fit (at least remove the .txt extension).

Like the header says:

/*
 * TURDLE is "The Ultimate Recursive Directory Lister, Enhanced"
 * it's not called ÑORDO because that doesn't make an nice acronym.
 * 
 * It lists the content of the defined directory and creates
 * links to it's content.
 * It does not show files starting with ".".
 * It does not show itself.
 * It does not validate as HTML 4.01 Strict!
 * It peruses the word "it" in it's header
 * 
 */

By the way, it’s published under the GNU/GPL, too.

Escrito por Lucas Vieites

Marzo 10th, 2010 at 9:11 pm

Por qué programo como lo hago

with 2 comments

Hace poco me tocó añadir ciertas funcionalidades a una aplicación web que escribí hace unos seis o siete años. Además de echarme algunas risas por alguna de las «barbaridades» que me encontré al revisar los archivos, me pasé un buen rato formateándolos para poder ver bien el flujo del código y comprender qué pasaba en cada sección. Y es que hace seis años todavía no tenía un estilo de código definido.

Cuando empecé a programar en PHP venía un poco viciado de programar en C y javaScript y hacía cosas como:

1
2
3
4
5
6
7
8
9
10
11
12
function mifuncion()
{
	// Función para hacer algo
	if (condicion)
	{
		// hacer una cosa
	}
	else
	{
		// hacer otra cosa
	}
}

desperdiciando valiosas líneas, algo que aprendí a evitar cuando los archivos de código se hacen más y más grandes y solo tienes 1024 píxeles de alto en tu pantalla.

A día de hoy ese mismo código lo pondría así:

1
2
3
4
5
6
7
8
function mifuncion() {
	// Función para hacer algo
	if (condicion) {
		// hacer una cosa
	} else {
		// hacer otra cosa
	}
}

ahorrándome cuatro líneas.

Como el hombre es un animal de costumbres sigo haciendo esto porque, a pesar de que las pantallas son cada día más grandes, también los IDEs ocupan cada vez más espacio en pantalla con sus barras de herramientas, de estado y plugins de calidad de código y no sé qué mil cosas más. Y no me hagáis hablar de la manía que le ha entrado a los fabricantes por las pantalla panorámicas ;-(

Mi estilo actual de programación está fuertemente basado en las recomendaciones de Sun (ahora ya parte de Oracle), publicadas en sus «Code Conventions for the Java Programming Language» (traducido al español por javaHispano -no tengo enlace al documento original- y revisado y corregido por un servidor: Convenciones de código para el lenguaje de programación Java).

NOTA: también estoy a favor de usar tabulaciones de cuatro espacios, a pesar de que el plugin de wordpress ponga 8, y en contra de lo que defiende Jamie Zawinski en el artículo «Tabs vs Spaces» que he puesto de «Obligada lectura» en la columna de la derecha.

Escrito por Lucas Vieites

Febrero 11th, 2010 at 1:02 pm

Copia de seguridad de bases de datos MySQL

without comments

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.

Escrito por Lucas Vieites

Diciembre 23rd, 2009 at 1:01 pm

Crear una hoja de cálculo con PHP

without comments

Antes de nada: en este artículo no se explica cómo crear un archivo en formato Excel u OpenOffice.org Calc, sino de cómo hacer que estos programas «crean» que es así.

Crear una hoja de cálculo comprensible para Excel u OpenOffice.org Calc es más fácil de lo que parece. De hecho, el procedimiento que describo en este artículo realmente no crea una hoja de cálculo, sino un documento HTML con una tabla. El truco está en enviar una cabecera indicando un «mime-type» falso que será interpretado por el sistema operativo del cliente como una hoja de cálculo, tal que así:

header("Content-Type: application/vnd.ms-excel");

Leer el artículo completo »

Escrito por Lucas Vieites

Octubre 15th, 2009 at 2:07 pm

Icono para Geany

without comments

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 ;-)

Escrito por Lucas Vieites

Septiembre 11th, 2009 at 5:27 pm

Nueva web familiar con Elgg

without comments

Estos días he estado liado con una nueva web, vieitesandreoli.com, que será un sitio en el que centralizar las cosas familiares sin tener que estar enviando e-mails con fotos a todo el mundo. Para esta web he elegido el software Ellg de creación de «redes sociales». Está escrito en PHP y utiliza MySQL (¡bendita plataforma LAMP!),
Como siempre, el software está en inglés, pero ya ha habido gente en la comunidad de usuarios que ha empezado a traducirlo al español. Les doy las gracias.
Mientras iba aprendiendo el funcionamiento del software he ido corrigiendo algunas erratas en la traducción y cuando esté totalmente satisfecho enviaré las correcciones al portal comunitario de Elgg.
A continuación un pequeño script que extrae los archivos traducidos de la estructura de directorios:

#!/bin/bash
# basedir: Where your Elgg installation lives
basedir="/srv/www/elgg1.5/";
# langcode: The language you want to extract
langcode="es";
 
for LANGFILE in $(find $basedir -name $langcode.php);
do
        the_dir="./`dirname $LANGFILE`";
        mkdir -p $the_dir;
        cp $LANGFILE $the_dir;
done
mv ."$basedir"* .;

Probablemente necesite algún retoque pero aún así espero que sea útil.

Escrito por Lucas Vieites

Junio 12th, 2009 at 3:55 pm

Publicado en Web, open source, software libre, tecnología, traducción

Etiquetado con

España a la cabeza en actividad open-source

without comments

Acabo de leer en «Ars Technica» que, según un estudio que ha examinado la actividad dentro del software libre de 75 países, España ocupa el segundo lugar en el ránking de 75 países. En el artículo original,  publicado por «Red Hat» en su «Open Source Activity Map», podemos ver un mapa en el que se califican los países por colores según su actividad aparente dentro del campo del software libre («open source»). En esta misma página podemos

Explorar los puntos calientes del código abierto de todo el mundo a través del Índice de Código Abierto («Open Source Index», OSI), basado en la investigación del Instituto de Tecnología de Georgia (Georgia Tech). El OSI es una medida de actividad y ambiente «open source» en 75 países. Cada país recibe una puntuación basada en sus políticas, prácticas y otros datos en los campos del Gobierno, Industria y Comunidad.

Entre los otros países que encabezan la lista están Francia (1er lugar), Alemania (3º), Australia (4º) y Finlandia (5º).

Como gallego desconfiado que soy, lo que me llama la atención es que España, que tradicionalmente es un país cuya actitud se resume en la frase «que piensen ellos», en este caso encabeza un movimiento realmente altruista. Digo esto porque, recordemos, el estudio mide la actividad, no el uso del software libre. Si fuera este último el caso no estaría muy equivocado al pensar que los españoles usamos el software libre simplemente por la otra acepción de «free» en inglés, es decir, por su gratuidad.

Me sorprende gratamente y nos felicito por este logro.

Escrito por Lucas Vieites

Abril 30th, 2009 at 3:59 pm

Crear botones 3D con Inkscape

without comments

Este artículo muestra cómo crear botones con aspecto tridimensional en Inkscape, un programa de diseño vectorial gratuito y de código abierto que utiliza el formato SVG, basado en XML, para el almacenamiento de los gráficos.

El objetivo es obtener unos botones como estos:

Leer el artículo completo »

Escrito por Lucas Vieites

Septiembre 10th, 2008 at 5:15 pm