Cambiar la posición de una columna en MySQL es tan sencillo como ejecutar esta consulta:
ALTER TABLE tabla MODIFY columna_a_mover INT NOT NULL AFTER la_columna_que_va_antes
Todos los días grabo Diálogos 3, como algunos ya sabréis. El archivo WMA resultante suele ocupar un poco más de 9 MB. Bueno, pues a partir de este lunes ha empezado a ocupar 19 MB. Me he alegrado mucho porque he supuesto lo que eso significaba. Para asegurarme he comparado las propiedades de un par de estos archivos, uno de antes y otro de después del cambio.

Es decir: RNE 3 ha aumentado la calidad de sus emisiones a través de Internet1. Qué gozada. Espero que la cosa dure.
Si utilizas TortoiseSVN quizá te interese este pequeño programa para hacer copias de seguridad periódicas de tus repositorios SVN. Está escrito en VBScript. Guárdalo en un archivo con la extensión vbs y ejecútalo cada vez que quieras hacer la copia. El resultado será un archivo cuyo nombre seguirá el formato 2008-01-30_19-30-00_repositorio.backup (fecha, hora y nombre del repositorio, terminado en la extensión backup).
' Fecha, en el formato AAAA-MM-DD.
Function ObtenerFecha
Dim sAno 'As String
Dim sMes 'As String
Dim sDia 'As String
Dim sAhora 'As Date
sAhora = Now
sAno = DatePart("yyyy", sAhora)
sMes = DatePart("m", sAhora)
If (Len(sMes) = 1) Then
sMes = "0" & sMes
End If
sDia = DatePart("d", sAhora)
If (Len(sDia) = 1) Then
sDia = "0" & sDia
End If
Dim sResultado 'As String
sResultado = sAno & "-" & sMes & "-" & sDia
ObtenerFecha = sResultado
End Function
' Hora, en el formato HH-MM-SS.
Function ObtenerHora
Dim sHora 'As String
Dim sMinuto 'As String
Dim sSegundo 'As String
Dim sAhora 'As Date
sAhora = Now
sHora = DatePart("h", sAhora)
If (Len(sHora) = 1) Then
sHora = "0" & sHora
End If
sMinuto = DatePart("n", sAhora)
If (Len(sMinuto) = 1) Then
sMinuto = "0" & sMinuto
End If
sSegundo = DatePart("s", sAhora)
If (Len(sSegundo) = 1) Then
sSegundo = "0" & sSegundo
End If
Dim sResultado 'As String
sResultado = sHora & "-" & sMinuto & "-" & sSegundo
ObtenerHora = sResultado
End Function
' Creación de la orden a ejecutar.
Dim sPrefijo 'As String
sPrefijo = ObtenerFecha & "_" & ObtenerHora
Dim sOrden 'As String
sOrden = """%programfiles%\svn\bin\svnadmin.exe"" dump c:\repos > c:\" & sPrefijo & "_repos.backup"
' Ejecución
Dim WshShell 'As WScript.Shell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "%comspec% /c " & sOrden, 0, True
En este caso en particular, se supone que el repositorio está en C:\repos\. El resultado acabará en C:\. Cambia esas rutas por las que más te interesen.
Visto en otro vídeo de YouTube, uno en el que explican el funcionamiento de la nueva API de YouTube.
Pensaba que estaba perdido por culpa de aquel o aquellos que están grabando los programas de Diálogos 3 y subiéndolos al archivo de Internet. Pues parece que no es así: en cuestión de un par de meses me voy a ventilar todos los programas que subieron (son unos 12 GB).
Creí que eran seres sobrehumanos, ángeles enviados para salvarme de mis tardes de hastío. Pero no, deben ser gente normal y corriente porque, de vez en cuando, se les escapó algún programa (de cualquier manera, seáis quienes seáis, ¡gracias y mil gracias!). Así que voy a poner algo de mi parte. El siguiente bloque de código se corresponde con un programita para bash que permite grabar en formato MP3 la emisión de Diálogos 3 a través de Internet:
HOY=`date +%Y-%m-%d`
ANO=`date +%Y`
PISTA=`date +%d`
/usr/bin/mplayer \
-really-quiet -cache 1000 -dumpstream -dumpfile ${HOY}.wma \
-playlist "http://www.rtve.es/rne/audio/RNE3.asx" &
PROCESO=$!
sleep 80m
kill $PROCESO
# Pasar el archivo WMA a formato WAV.
/usr/bin/mplayer -really-quiet \
${HOY}.wma -vc null -vo null -ao pcm:fast:waveheader:file=${HOY}.wav
# Pasar el archivo WAV a formato MP3.
/usr/bin/lame --quiet \
--add-id3v2 \
--tt "${HOY}" \
--ty "${ANO}" \
--ta "RNE3 - Ramón Trecet" \
--tg "Other" \
--tl "Diálogos 3" \
--tn "${PISTA}" \
${HOY}.wav ${HOY}.mp3
# Borrar el archivo WAV, no borramos el WMA por si acaso ha fallado algo.
rm -f ${HOY}.wav
Ejecuta esta tarea a las 14:50 de lunes a viernes y tendrás el programa grabado todos los días. Obviamente, necesitas un Linux con mplayer, lame y cron con acceso a Internet que esté encendido mientras se emite el programa. La grabación se realiza durante 80 minutos, es decir, desde diez minutos antes del programa hasta diez minutos después.
Modificaré este programa para que tenga cada vez más funciones, como rutas, emisiones y duraciones configurables, entre otras cosas. Aquí encontrarás la versión más reciente del mismo.
¿Pensabas que la Metodología MÉTRICA Versión 3 no servía para nada? Mi amigo Víctor nos deja a todos con un palmo de narices, demostrándonos lo equivocados que estábamos:

Haz clic en la foto para ir a su página en Flickr y poder así verla mejor, te resultará más fácil.
Mis primeros pasos en el mundo de la programación los di en Pascal, concretamente en Turbo Pascal. Amarillo sobre azul.
Si no me falla la memoria, la versión 7 de Turbo Pascal fue la primera en incorporar resalte de sintaxis. El murciano decía que aquello parecía una feria, con tantos colorines. Hoy en día, el resalte de sintaxis es una de esas herramientas imprescindibles, una ayuda más en las tareas de programación.

Pues aprovecho para anunciar que mi wiki ya resalta la sintaxis del código gracias a la extensión GeSHiCodeTag. De entre todas las extensiones del mismo tipo para Mediawiki he escogido ésta porque se apoya en GeSHi, que me gusta mucho.
Es posible que, si trabajas con fechas en PHP 5, te hayas encontrado con este mensaje:
date() [function.date]: It is not safe to rely on the system’s timezone
settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Berlin’ for ‘CET/1.0/no DST’ instead
Para evitarlo sólo tienes que decirle a PHP en qué zona horaria te encuentras. Puedes utilizar la variable date.timezone. Por ejemplo, si se trata de la zona Europe/Madrid, incluye la siguiente línea en el archivo .htaccess (si es el caso) correspondiente a la aplicación que estés desarrollando:
php_value date.timezone Europe/Madrid
Encontrarás más información al respecto aquí.
No es que sea mi sistema gestor de bases de datos favorito, pero de vez en cuando me veo obligado a trabajar con Microsoft Access. Quizá lo que menos me gusta sean las herramientas que proporciona para crear consultas SQL.
En concreto, el editor, porque las herramientas para crear consultas con el ratón, sin escribir una sola línea, son muy útiles para los principiantes.
Acostumbrado como estoy a trabajar con MySQL y SQL Server, también lo estoy a utilizar procedimientos almacenados. Una rápida búsqueda en Google me ha llevado a este artículo publicado en StarDeveloper. En él se describen las bases necesarias para crear algo parecido a procedimientos almacenados en Access.
Si has trabajado en algún proyecto que utilice Access desde un programa externo (por ejemplo, desde una aplicación Visual Basic), es posible que hayas tenido que crear consultas SQL concatenando cadenas de texto, algo así:
...
sConsulta = _
"SELECT " & _
" [Año ocurrencia], " & _
" [Año cierrepago], " & _
" [Total Pagado] " & _
"FROM VALORES " & _
" WHERE " & _
" ( " & _
" [Año ocurrencia] BETWEEN " & _
CStr(.iAñoInicial) & " AND " & _
CStr(.iAñoFinal) & _
" ) AND (" & _
" [Año cierrepago] BETWEEN " & _
CStr(.iAñoInicial) & " AND " & _
CStr(.iAñoFinal) & _
" )" & _
"ORDER BY " & _
" [Año ocurrencia] ASC, " & _
" [Año cierrepago] ASC"
...Una vez compilada la aplicación, si la consulta tiene que ser modificada es necesario cambiar el código del programa y volver a compilar. Sin embargo, si las consultas se almacenan en la base de datos puedes modificarlas sin tocar el programa.
Lo dicho: si quieres saber cómo modificar tus aplicaciones para que el código de las consultas esté en Access, lee este artículo.