Histórico de la categoría «tecnología»

Hoja de estilo CSS para Javadoc

Estos días he tenido que pasar más tiempo del deseable leyendo la documentación del API de Java. Estos documentos están generados mediante Javadoc, un gran invento, pero la hoja de estilo es un poco aburrida. Por eso me tomé un momentillo de descanso cerebral para darle un toque más moderno. El resultado es el siguiente:

Mi hoja de estilo CSS para Javadoc

Mi hoja de estilo CSS para Javadoc, pulsa para ampliar


El archivo fuente lo podéis descargar aquí: Javadoc_stylesheet_by_Lucas y para usarlo solamente hay que sustituir el archivo llamado «stylesheet.css» que está en la carpeta raíz de vuestra documentación Javadoc.

Estamos de enhorabuena, el «Open Source» ha ganado

Esta mañana me he encontrado entre mis «feeds» RSS varios artículos muy entusiastas acerca de la charla en LinuxCon de Jeffrey Hammond (analista de Forrester Research, una empresa de investigación independiente) en la que felicitaba a la comunidad de código abierto («open source») por «haber ganado».
Profundizando un poco en el contenido de la charla, lo más importante es que la empresas encuestadas entre 2.008 y 2.010 ahora ya no tienen intención de expandir el uso de software de código abierto. ¿Por qué?, pues porque ya está ahí. La mayoría de las empresas ya utiliza, en mayor o menor medida, software de código abierto y la urgencia por adoptar soluciones FOSS (Free/Open Source Software) se está difuminando por que «ya ha pasado, ya hemos llegado».
Más información y la presentación de la charla aquí.

GUADEC-ES VII - publicado el programa de ponencias y abierta la inscripción

Poco más hay que decir: toda la información en http://2010.guadec.es/guadec/programa.
ACTUALIZACIÓN: Ya está disponible el horario de las ponencias y los talleres de los días 22 y 23 de julio.
Para mi mayor comodidad he creado un documento en el que lo resumo todo, y que podéis descargar aquí: Programa de la Guadec-ES 2010

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.

Cuadernos de formación tecnológica en fascículos

Acabo de enterarme a través del blog DiarioLinux de la existencia de los Cuadernos de formación tecnológica que publica Cenatic en cómodos fascículos.

Hasta ahora están disponibles siete de estas pequeñas guías, de unas 20 páginas cada una, que describen de forma sencilla y comprensible los programas de uso cotidiano más utilizados en el mundo del software libre. Desde el navegador «Firefox» hasta las base de datos «OpenOffice.org Base», pasando por las herramientas de comunicación por correo electrónico («Evolution») y mensajería instantánea («Pidgin»), las de diseño gráfico («Gimp» e «Inkscape»), y los demás componentes de OpenOffice.org: «Writer», «Calc», «Impress» y «Draw».

Lo mejor de todo es que todas estas herramientas, excepto quizás «Evolution», están disponibles también para los usuarios de Windows, por lo que no hay excusa para no probarlas, engancharse, y finalmente dejar atrás el mundo de los virus, troyanos, reboots diarios y reinstalaciones semestrales. Por supuesto, instalando una distribución de Linux ;-) .

Turdle, version 0.1

This is a little PHP script I've been using on my personal/home web server to generate listings of the content of the accessible folders. 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.

Estado de interrupción

Estrategias sencillas para evitar volcar tu «pila» mental
por Brian Tarbox

Original: «Interrupt Mood» by Brian Tarbox, PragPub Issue #5 [PDF] [epub] [mobi], translated by Lucas Vieites.

Dicen que no hay preguntas tontas, pero hay muchísimas preguntas innecesarias.

Sé que has tenido esta experiencia: estás metido profundamente en un problema de programación cuando de repente alguien te para en seco con alguna pregunta trivial. Tardas cinco segundos en responder a la pregunta y veinte minutos en reconstruir tu pila mental.

Como ingeniero de software he intentado durante demasiados años inculcar a jefes y colegas que estas interrupciones son caras, sin éxito. No me refiero a preguntas justificadas, aquellas a las que solo tú sabes responder, aquellas que bloquean el trabajo de la persona que pregunta. Me refiero a las preguntas tontas que el sentido común o una búsqueda de 30 segundo en Google podrían responder. Estas interrupciones afectan a la productividad además de ser totalmente irritantes.

Seguir leyendo «Estado de interrupción»

Por qué programo como lo hago

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.

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.