Skip to content

Categories:

Cerrada por molestar.

“Esta no era una web de descargas pero alguien decidió que uno de mis post no le gustaba y la demandó por infringir derechos de autor ante la “Sección Segunda”.

Ahora estoy peleando en los tribunales para demostrar que no violaba ningún derecho y poder volver a tener el blog en línea ya que no me permitieron defenderme ante ningún tribunal cuando me denunciaron.”

Esa situación que puede parecer una exageración sería lo que podría ocurrir si se aprueba la Disposición Final Primera de la Ley de Economía Sostenible en una Comisión, ni siquiera en un pleno del Congreso. Y para hacer la situación más grave, es una ley que no procede de la soberanía nacional del pueblo español si no que ha sido impuesta por los Estados Unidos como se ha demostrado en los cables filtrados por Wikileaks.

El arma para luchar contra las infracciones de los derechos de autor se puede convertir en una poderosa arma de censura en este país. Imagínatela en manos de cualquier político metido en un asunto de corrupción.

www.noalcierredewebs.com

Posted in General.

Tagged with .


Timelapses para vagos

He descubierto recientemente una actividad interesante: la realización de “timelapses”. Aquello tan costoso de realizar hace algunas décadas, es hoy, gracias a las actuales posibilidades y mejor precio -en general- de las cámaras digitales, una actividad que está al alcance de todos.

Resulta, cuando se hace de forma lúdica, una experiencia muy gratificante: con amigos, se prepara la cámara sobre el trípode, el temporizador a punto… y la mayor parte del trabajo queda a cargo del obturador de la cámara, mientras que nosotros podemos, por ejemplo, debatir sobre las distintas posibilidades durante la cena.

Sin embargo, después de la captura de miles de imágenes en las distintas pruebas, el proceso de redimensionado de todas ellas y su transformación en un primer clip de vídeo, que después posibilite su edición, resulta una tarea tediosa y repetitiva. Por esa razón me propuse buscar un sistema rápido y cómodo de convertir en “brutos” para su posterior edición los miles de imágenes fijas que capturaría la cámara.

Afortunadamente uso sistemas operativos que permiten la aplicación de shellscripts, como GNU/Linux y MacOS X, así que sólo debía utilizar programas que hiciesen esas tareas y que pudiesen ser llamadas por mi script para realizarlas. De nuevo afortunadamente la solución es bien sencilla: imagemagick redimensiona las imágenes y por medio de mencoder convertimos a vídeo la secuencia de imágenes.

Llamé a la primera vesión “timelapses_para_vagos”, pero me he decidido a encubrir ligeramente mis primeras intenciones y revestirlas de una aparente intención divulgativa y útil para la comunidad. Así nació el script “timelapses4dummies” que publico, con los comentarios pertinentes, por si la curiosidad malsana te lleva a saber qué estás haciendo, o por si quieres mejorarlo -el script es bastante susceptible de ser mejorado, no tengas duda- o “llevado” a funcionar en otros sistemas. Por el momento, he comprobado que llega a funcionar -aunque hay muchos aspectos que necesita mejorar y comprobar- bajo GNU/Linux y bajo Mac OS X. En este último caso instalaremos previamente MacPorts, y después imagemagick y Mplayer para que todo funcione correctamente.

Publico a continuación el código de la primera “beta” del script “timelapses4dummies” -insisto: aún en fase de pruebas- que, prometo, será mejorado y publicado. Gracias por la visita y que aproveche 😉

———————————- Principio del script ————————————-
#!/bin/bash

##########################################
## Script realizado por Mario Fernández ##
## para automatizar tareas en la ##
## realización, por ejemplo, de ##
## timelapses. ##
## Para ello llamará a Imagemagick y ##
## creará la secuencia de vídeo con ##
## mencoder ##
##########################################

# Para tener algo de orden, comenzamos borrando la pantalla:
clear

# Mostramos un mensaje que indique el inicio de ejecución del script
echo ‘Iniciando la realización de una secuencia de vídeo a partir de imágenes fijas…’;
echo ”;

# Pedimos al usuario que nos indique el directorio desde el que debe copiar los archivos.
# Es importante que indique correctamente la ruta completa o la relativa en función del directorio en el que se encuentre el usuario.
echo ‘Al introducir la dirección desde la que se copiarán las imágenes fijas, recuerde que debe especificar la ruta absoluta completa,’
echo ‘o relativa desde el directorio en el que se encuentre, que en este momento es’ `pwd`.;
echo ‘Si no introduce nada, el directorio será el actual.’;
echo ‘Introduzca la dirección del directorio desde donde quiere copiar las imágenes.’;

# “Leemos” lo introducido por el usuario y lo asignamos a la variable $directorio_origen
read directorio_origen;
echo ”;

# directorio_origen=`echo $directorio_origen | sed ‘s/[ ]/_/g’`
# directorio_origen=`echo $directorio_origen | sed ‘s/[^a-z_-.]//g’`
echo Origen: $directorio_origen

# Si no nos dan ningún nombre de directorio definimos como directorio de origen el directorio en el que nos encontremos.
if [ -z $directorio_origen ]; then
directorio_origen=`pwd`
fi

# Comprobamos si el nombre que nos dan es un directorio.
# En caso contrario salimos del script.
# Hay que tener la precaución de introducir una ruta válida hasta el directorio, porque si
# introducimos mal la ruta no lo encontrará.
if [ -d ${directorio_origen} ]; then

echo $directorio_origen ‘ es un directorio válido’;
echo ”;

echo Seleccione la extensión de las imágenes que vamos a tratar:
echo ”;

echo Opción 1: JPG
echo Opción 2: jpg
echo ”;

echo Indique el número de la opción, y cuide las mayúsculas y minúsculas.

read opcion;
echo ”;

# Damos, en principio y con vistas a ampliar opciones en el futuro,
# dos opciones de extensiones tal y como vienen los archivos de cámara: JPG y jpg
case $opcion in
1)
extension=JPG
;;
2)
extension=jpg
;;
*)
echo Opción incorrecta. Elegimos la opción JPG
extension=JPG
;;
esac

# Mostramos la extensión elegida
echo La extensión elegida es: $extension

# Asignamos el listado de archivos jpg de ese directorio a la variable $archivos_origen para mostrarlos luego
numero_archivos_origen=`ls $directorio_origen/*.$extension | wc -l`;

# Si el número de archivos es mayor que 0 seguimos con el programa. En caso contrario salimos.
if [ $numero_archivos_origen -gt 0 ]; then
echo Se copiarán del directorio $directorio_origen $numero_archivos_origen archivos: ;
echo ”;
else
echo No hay ficheros que podamos modificar para hacer un archivo de vídeo.
echo Salimos del programa.
exit
fi
# Volviendo al “if” anterior: en caso de que el $directorio_origen no sea un directorio válido salimos del programa.
else
echo $directorio_origen ‘ no es un directorio válido. Saliendo del programa.’;
echo ‘Vuelva a ejecutarlo cuando sepa la dirección origen de sus imágenes fijas.’;
exit
fi
echo ”;

# Pedimos al usuario que nos indique el directorio de destino donde copiaremos los archivos que redimensionaremos.
# De esa forma conservamos los archivos originales por si el resultado no fuese satisfactorio.
echo ‘introduzca el directorio en el que se copiarán las imágenes’;
read directorio_destino;

directorio_destino=`echo $directorio_destino | sed ‘s/[ ]/_/g’`
directorio_destino=`echo $directorio_destino | sed ‘s/[^a-z./]//g’`

# Si no existe el directorio, preguntamos si quiere crearlo y, en caso afirmativo, así lo hacemos.
# Si el usuario decide que no se cree, o falla la creación del directorio, salimos del programa.
if [ -d $directorio_destino ]; then
echo $directorio_destino es un directorio. Se copiarán ahí las imágenes.;
else
echo “El directorio $directorio_destino no existe. ¿Quiere crearlo? [S/n]”;
read crear_directorio;

# La opción por defecto es Sí, y el usuario tiene que escribir “S”, “s”, o nada.
# Si escribe cualquier otra cosa, no creamos el directorio y salimos.
crear_directorio=`echo $crear_directorio | sed ‘s/[^a-z]//g’`
echo crear_directorio = $crear_directorio
if [ -z $crear_directorio ] || [ $crear_directorio == “s” ] || [ $crear_directorio == “S” ]; then
echo `mkdir $directorio_destino`;
if [ -d $directorio_destino ]; then
echo Se ha creado el directorio $directorio_destino;
else
echo ‘No ha podido crearse el directorio. Salimos del programa.’
exit
fi
else
echo ‘Finaliza el script. Vuelva a ejecutarlo más adelante si quiere.’;
exit
fi

fi

# Pedimos un nombre para el archivo de vídeo
echo ‘¿Qué nombre le ponemos al archivo de vídeo resultante? La extensión será .avi’;
read ‘nombre_video’;

echo -n “¿Cuántos fotogramas por segundo quiere que tenga el vídeo? Por defecto serán 25fps: “;
read ‘fps’;

# Todo lo que viene a partir de ahora es para comprobar que lo que se introduce es un número y,
# si es así, lo asignamos al número de fotogramas por segundo del vídeo resultante.

# Si $fps tiene un valor, mostramos lo que ha elegido.
if [ $fps ]; then
# Eliminamos cualquier carácter que no sea numérico
nfps=`echo $fps | sed ‘s/[^0-9]//g’`
# Mostramos el número de fotogramas por segundo introducido
echo Ha introducido $nfps fps.
else
# en caso de que no haya introducido un número se asignan 25fps
nfps=25
echo No se ha introducido un valor numérico. Se asignarán $nfps fps.
fi

# Finalmente mostramos el número final de fotogramas por segundo
echo El número de fotogramas por segundo serán $nfps .;
echo ”;

echo ‘Copiando y optimizando el tamaño de los archivos…’;

# Hacemos un bucle, y redimensionamos cada imagen encontrada en el directorio.

# Como queremos saber los archivos que faltan en cada vuelta, asignamos, en principio,
# el valor del número de archivos de origen a la variable $faltan
faltan=$numero_archivos_origen
for foto in `ls $directorio_origen`

do
# Averiguamos el nombre del archivo y lo descomponemos en nombre y extensión
extension=`echo $foto | cut -d ‘.’ -f2`
nombre=`echo $foto | cut -f1 -d ‘.’`

# Comprobamos que la extensión de todos los ficheros es jpg o JPG,
# que es lo que nos dará la cámara, y renombramos con su mismo nombre, pero poniendo
# la extensión “jpg”, en minúsculas, para unificar.

if [ $extension == “JPG” ] || [ $extension == “jpg” ]; then

echo “optimizando y copiando $foto …”
# Redimensionamos cada foto de forma que el valor menor es 1080.
# Hay que revisar este dato: es posible que nos interese lo contrario: que el valor mayor sea 1920
convert -resize 1920x $directorio_origen/$foto $directorio_destino/$nombre.jpg
echo ”;
# En cada vuelta decrece el valor de $faltan, y mostramos ese valor
let faltan–
echo faltan $faltan fotos por optimizar…
fi

done
echo ”;

# Comprobamos el número de archivos que se han modificado en el directorio de destino.
# hacemos un listado, con ls y contamos el número de líneas.
numero_archivos_copiados=`ls $directorio_destino/*.jpg | wc -l`;

# Mostramos el número de líneas, que corresponde a los archivos que se han modificado.
echo Se han copiado y transformado $numero_archivos_copiados archivos.;
echo ”;

# Creamos el fichero de vídeo a partir de los archivos jpg
# Más adelante quizás introdzcamos la posibilidad de ponerle el nombre que decidamos.
echo “Creando el archivo de vídeo $nombre_video.avi a $nfps.fps …”;

# la línea siguiente sólo sirve para comprobar la orden que se ejecutará. Si quieres puedes comentarla.
echo “mencoder mf://$directorio_destino/*.jpg -mf fps=$nfps:type=jpeg -ovc lavc -lavcopts vcodec=mjpeg -o $directorio_destino/$nombre_video.avi”;

# Ahora ejecutamos realmente la orden para crear el vídeo
mencoder mf://$directorio_destino/*.jpg -mf fps=$nfps:type=jpeg -ovc lavc -lavcopts vcodec=mjpeg -o $directorio_destino/$nombre_video.avi

echo ”;

# Comprobamos por último que se ha creado el archivo.
resultado_video=`ls $directorio_destino/$nombre_video.avi | wc -l`;
if [ $resultado_video -gt 0 ]; then
echo Creado el archivo de vídeo $nombre_video .
echo Fin del programa
else
echo No ha podido crearse el archivo.
echo saliendo del programa.
exit
fi

# Si quieres que el script muestre con Mplayer el archivo resultante, descomenta la última línea.
#vlc $directorio_destino/$nombre_video.avi

———————————- Fin del script ————————————-

Recuerda que debes tener instalados los programas imagemagick y mplayer. Si no los tuvieses instalados hazlo con las siguientes órdenes:

Debian y derivados (como Ubuntu o Guadalinex):
sudo apt-get install imagemagick mplayer

MacOSX (mediante macports):
sudo port install imagemagick mplayer

No sería mala idea copiar el script en un directorio del $PATH, como por ejemplo /usr/local/bin /opt/local/bin, etc, y darle permisos de ejecución, sin escritura, para poder ejecutarlo desde cualquier directorio.

Para dar permisos de ejecución al usuario y quitar permisos de escritura:
sudo chmod 550 timelapses4dummies

Para copiarlo a algún directorio del $PATH, por ejemplo /opt/local/bin:
sudo cp timelapses4dummies /opt/local/bin/

¿Algún resultado visible? Puedes ver el “bruto” del primer timelapse en http://www.youtube.com/watch?v=g-CfXV0Cizg. Una vez añadida música y títulos con kdenlive, y habiendo tenido alguna pérdida de calidad, puede verse en http://www.youtube.com/watch?v=nbZz98aTgNQ

Seguiremos trabajando en ello. Espero vuestros comentarios para poder mejorarlo.

Posted in General, multimedia.


Conectando OpenOffice.org-base a Mysql (V)

Ahora que ya conectamos Openoffice.org con bases de datos MySQL mediante el conector ODBC en nuestro GNU/Linux, y que ya lo hacemos con una cierta soltura y prácticamente sin ningún problema… descubrimos una forma de conectar mucho más rápida y eficaz que hace innecesarios todos los pasos anteriores. Cosas de la tecnología ¿qué le vamos a hacer?

No. No vamos a borrar los posts anteriores, porque suponemos que es interesante conocer todas las opciones, pero sí vamos a explicar -muy brevemente en esta ocasión- cómo conectarlos mediante el conector nativo cuyo desarrollo inició SUN y ahora mantiene Oracle. Era cuestión de tiempo que ese conector existiera y que fuese lo suficientemente estable y eficaz.

Como siempre la primera acción consiste en la instalación del conector, dando por supuesto que ya tenemos OpenOffice.org-base en nuestra máquina:

en Debian y derivados:
# apt-get install openoffice.org-mysql-connector

en Ubuntu, por ejemplo, usaríamos sudo:
$ sudo apt-get install openoffice.org-mysql-connector

Una vez instalado el conector podríamos repetir el proceso anterior para crear una nueva base de datos:

Captura 1: Nueva base de datos. Conectar con base de datos mysql

Seleccionando “Conectar directamente” para utilizar el nuevo conector en lugar de ODBC o JDBC.

Captura 2: conectar directamente

En el siguiente paso seleccionamos directamente el nombre de la base de datos y el servidor. Es importante escribir sólo el nombre del servidor sin especificar ningún protocolo, es decir, escribir por ejemplo “localhost” y no “http://localhost”

Captura 3: Seleccionar el nombre de la base de datos y el servidor

Por último elegimos el nombre de usuario y seleccionaremos “Se requiere una contraseña”

Paso 4: Escribir nombre de usuario y seleccionar Se requiere contraseña

Si pulsamos “Conexión de prueba” nos pedirá la contraseña y podremos comprobar que todos los datos introducidos son correctos.

Paso 5: Introducción de nombre de usuario y contraseña

Captura 6: Comprobación de conexión válida

Y ya podemos pulsar sobre finalizar, darle un nombre a nuestro archivo, y dar por terminado el proceso.

Captura7: Finalizar

Y finalizado el proceso, sólo queda seguir un tutorial como el que recomendamos y a trabajar con OpenOffice.org-base.

Posted in General.

Tagged with .


Conectando OpenOffice.org-base a MySQL (IV)

Existe aún un pequeño detalle que podemos mejorar: las tildes y caracteres especiales. Por alguna razón, que aún no hemos podido investigar, las tildes y caracteres especiales no se muestran bien en nuestra base de datos OpenOffice.org-base a pesar de tener la precaución de haber configurado nuestra mysql como utf-8.

La forma de solucionar este problema, que hayamos visto hasta ahora, es la siguiente:

Accedemos a Editar/Base de Datos/Tipo de conexión lo que nos permitirá editar la conexión ODBC que usamos actualmente en esa base de datos.

Primer pantallazo de configuración del charset de la conexión ODBC.

En este apartado podremos editar todos los parámetros de la conexión, pero como en nuestro caso sólo queremos cambiar el juego de caracteres pulsaremos “siguiente” hasta llegar a la ventana que nos interesa, y que es la última antes de “finalizar”.

Segundo pantallazo de configuración del charset de la conexión ODBC.

Seleccionaremos el juego de caracteres “Europa Occidental (ISO 8599-15/EURO) y pulsaremos “Finalizar”. Tendremos que cerrar OpenOffice.org-base y volver a abrir nuestra base de datos para poder ver, editar e insertar eñes, tildes, y otros caracteres especiales  en nuestros datos.

Con este último post acabamos por el momento esta serie, que liberamos bajo licencia Creative-Commons Share Alike. Eso sí: si consigues sacarle rendimiento económico a estos artículos no olvides contarnos cómo lo has conseguido 😉

Posted in General.


Conectando OpenOffice.org-base a MySQL (III)

Noveno pantallazo de configuración de OpenOffice.org-base.

Una vez que hemos configurado el conector ODBC configuraremos OpenOffice.org-base para que utilice los datos de nuestra base de datos MySQL.

Para ello iniciamos OpenOffice.org-base e indicaremos expresamente que queremos conectar con una base de datos MySQL. También podríamos escoger directamente la opción ODBC, a la que accederemos luego.

Primer pantallazo de OpenOffice.org-base

En esta segunda ventana escogeremos ODBC, y no JDBC -que está activada por defecto- para conectarnos con la base de datos MySQL.

Segundo Pantallazo de la configuración de OpenOffice

En la ventana que nos aparece “examinaremos” las distintas conexiones ODBC -en nuestro caso sólo una-  que tengamos configuradas en nuestro sistema.

Tercer pantallazo de OpenOffice.org-base

Encontraremos el conector ODBC que hemos configurado en nuestros posts anteriores y lo seleccionamos.

Cuarto pantallazo de configuración de OpenOfice.org-base

Al pulsar OK habremos seleccionado nuestro conector al que hemos llamado Blog.

Quinto pantallazo de configuración de OpenOffice.org-base.

Nos solicitará un nombre de usuario y marcaremos la casilla de “Se requiere una contraseña” para que nos la pida al conectar.

Sexto pantallazo de configuración de OpenOffice.org-base.

Séptimo pantallazo de configuración de OpenOffice.org-base.

Ahora guardaremos nuestra nueva base de datos OpenOffice.org-base en nuestro disco duro.

Octavo pantallazo de configuración de OpenOffice.org-base.

…E inmediatamente podremos acceder a las tablas y los datos de nuestra base de datos MySQL.

Décimo pantallazo de configuración de OpenOffice.org-base.

De esa forma podremos usar OpenOffice.org-base como front.end para hacer consultas, informes y formularios de forma local para gestionar los datos que estarán en nuestra base de datos MySQL.

Posted in General.

Tagged with , , , .


Conectando OpenOffice.org-base a MySQL (II)

En este segundo artículo, veremos la configuración de ODBC para conectar con una base de datos MySQL existente. Hemos accedido al programa de configuración mediante la orden, como root, ODBCConfig

Captura de pantalla de programa de configuración de ODBC

Personalmente prefiero acceder a la pestaña “System DSN” con objeto de que todos los usuarios del sistema puedan acceder  a esa conexión ODBC. En caso de que interese lo contrario permaneceremos en la pestaña “User DSN”.

Segundo pantallazo del programa de configuración de ODBC

Una vez que hemos pulsado sobre añadir (Add) nos busca algún driver ODBC instalado. Obviamente la primera vez que accedemos tendremos que configurar el primero en esta ventana.

En esta ventana pulsaremos nuevamente sobre el botón añadir (Add) e introduciremos los datos de nuestra base de datos MySQL:

Tercer pantallazo del programa de configuración de ODBC

Atención a la ruta de las librerías /usr/lib/odbc/libmyodbc.so y /usr/lib/odbc/libodbcmyS.so , que hay que escribirlas en el apartado correspondiente o buscarlas -si no coincidiese con la ruta escrita- pulsando el botón de su derecha.

Al aceptar volvemos a la ventana anterior en la que ya tenemos como opción el driver que acabamos de crear y pulsamos sobre OK.

Cuarto pantallazo del programa de configuración ODBC

Pasamos a la ventana en la que configuraremos el nombre que le daremos al conector, una descripción si lo estimamos oportuno, el servidor, que puede ser localhost si estuviese en la misma máquina, y el nombre de la base de datos a la que accederemos.

Sexto pantallazo de ODBCConfig

Una vez que aceptamos los cambios pasamos a la pantalla inicial en la que nos aparece el DSN de sistema que acabamos de configurar.

Último pantallazo de la serie.

Llegados a este punto pulsamos OK y tendremos configurado nuestro conector ODBC a la base de datos MySQL.

Ya sólo nos queda crear una base de datos OpenOffice.org-base que sea la que utilice las tabas y datos alojados en nuestra base de datos MySQL. Naturalmente eso lo veremos en un oróximo post.

Posted in General.


Conectando OpenOffice.org-base a MySQL (I)

Desde que @Juanan me mostró las posibilidades y ventajas de usar Access como front-end de MySQL mediante ODBC, obviamente en Windows, estaba pensando en la forma de hacer lo propio con OpenOffice.org-base en GNU/Linux. Sabemos que la forma de hacerlo en Windows es similar a la de Access, pero en GNU/Linux el proceso parecía ser algo más complejo.

Buscando en Google encontramos una sencillísima forma de hacerlo ( http://www.linux.com/archive/feature/60185 ) tanto mediante ODBC como por medio de JDBC, pero nosotros intentaremos resumir aún más el minitutorial para ajustarlo a nuestras necesidades, con lo que nos centraremos en la conexión mediante ODBC.

En distribuciones basadas en Debian, como pueda ser Ubuntu -la que usaremos para nuestro minitutorial- podremos usar el instalador gráfico Synaptic para instalar los paquetes necesarios, pero nosotros os mostramos la forma de instalarlos en una sóla línea para mayor comodidad. En Debian y derivados, siempre como root, escribimos en un terminal

# apt-get install openoffice.org-base unixodbc libmyodbc unixodbc-bin

Si estás en Ubuntu, Guadalinex, etc, o si no estás como root recuerda usar “sudo” de la siguiente forma:

$ sudo apt-get install openoffice.org-base unixodbc libmyodbc unixodbc-bin

En Debian Lenny, hemos instalado también todo el paquete openoffice, con su correspondiente paquete de traducción en español.

# apt-get install openoffice.org openoffice.org-l10n-es

Una vez instalados los paquetes y sus librerías correspondientes, configuramos nuestra fuente de datos ODBC, de la misma forma en que lo haríamos en cualquier otro sistema, mediante la orden

# ODBCConfig

De esa forma se nos abrirá el siguiente programa gráfico de configuración de ODBC:

Primera captura de pantalla del programa
Hasta aquí los pasos previos hasta llegar al programa de configuración. Probablemente sabrás configurar tú solo los datos de conexión ODBC. En caso contrario lee el post específico para hacerlo paso a paso que publicaremos más adelante.

Posted in General.

Tagged with , , , .


¡Hola mundo!

Bienvenido a Comunidad Virtual de Usuarios de la Universidad de Sevilla. Este es su primer post. Editelo o eliminelo, para empezar a bloguear.

Posted in General.




Ir a la barra de herramientas