Feeds:
Entradas
Comentarios

Posts Tagged ‘MySQL’

Con esto del verano, las vacaciones, y el absoluto descontrol de horarios y días de la semana, se me pasó comprar la revista @rroba a principios de mes. Pero, como siempre, el nuevo número ya está en los kioscos, en esta ocasión el 155.

Mi primer artículo, como siempre, es la habitual entrega del Curso de Java Útil. Tras la inclusión del soporte para almacenamiento en base de datos, los parámetros de configuración del programa se complicaban cada vez más. Por ello, introducimos un fichero de configuración en la aplicación, que almacenará en formato XML dichos parámetros. Utilizando la API JDOM, realizaremos el análisis sintáctico del fichero, y cargaremos sus datos según sea necesario en tiempo de ejecución.

El segundo artículo lleva por título “Un pingüino en tu bolsillo“, y trata sobre el sistema operativo Android para dispositivos móviles, tan de moda últimamente. Analizaremos el origen de Android, cuáles son sus similitudes y diferencias con otros entornos Linux (para dispositivos móviles o no) y cuáles son las alternativas actuales en su ámbito. Además, y como no podía ser de otra forma, hablaremos de la arquitectura del sistema, de su seguridad, y de una serie de aplicaciones gratuitas bastante interesantes desde dicho punto de vista.

@rroba 155

@rroba 155

Read Full Post »

Junio pasó, el asco y odio™ terminó, y julio se planta amistosamente al frente del calendario. Y como siempre, un nuevo número de la revista @rroba aparece por generación espontánea (más o menos) en las estanterías del kiosco.

El primer artículo de este mes corresponde a la habitual entrega del Curso de Java Útil. En esta entrega continuaremos trabajando en el soporte de almacenamiento en base de datos de nuestra aplicación, generando el código encargado de la recuperación de los datos existentes en el servidor MySQL, así como de la posterior regeneración del estado de las estructuras de datos en memoria.

El segundo artículo trata sobre la técnica del escaneo de puertos. En él hablaremos de qué papel juegan los puertos en las comunicaciones en Internet, en qué se basan los distintos métodos de escaneo desde un punto de vista técnico, y cómo podemos llevarlos a cabo utilizando la herramienta Nmap. Además, analizaremos las ventajas e inconvenientes de cada método, y veremos algunas técnicas relacionadas, como el fingerprinting de sistemas operativos.

@rroba 154

@rroba 154

Read Full Post »

@rroba 153

Junio ya está prácticamente aquí. El calor nos extiende su pegajoso abrazo, y nosotros lo desdeñamos convirtiéndonos en homo aireacondicionadus; comenzando, como daño colateral, las temidas “guerras termostato” en oficinas a lo largo y ancho de nuestra geografía. También llega el asco y odio, blandiendo amistosamente su cacharro de pecar, y mirando con avidez nuestras sagradas posaderas. Que no nos pase nada. ¡Pero no todo ha de ser malo! También sale a la venta el nuevo número de la revista @rroba; que aunque no es como si nos tocara la lotería, en comparación con lo anterior sí resulta muy gratificante, ¿no? ;-)

Como de costumbre, en este número 153 encontraréis dos artículos con mi firma. El primero de ellos es la entrega acostumbrada del Curso de Java Útil. En la vigésimo cuarta entrega (¡ya cumplimos dos añitos de curso!), vamos a hincarle el diente con ganas a eso del SQL en Java. Diseñaremos las relaciones que almacenarán nuestro modelo de datos en el esquema de la base de datos, veremos cómo crear las tablas necesarias para respaldarlo, e implementaremos el almacenamiento de la información de nuestro software en MySQL.

El segundo artículo se titula Tu disco duro es tu red, y en él hablaremos sobre los distintos métodos para almacenar y compartir sistemas de ficheros en una red de datos. Comenzaremos prestando especial atención a uno de los sistemas por excelencia: NFS. Veremos cómo instalar un servidor NFS en Linux, cómo afinar su configuración, y cómo montar el sistema de ficheros remoto en Linux, Windows y Mac OS X. Finalmente, veremos ciertas alternativas al sistema NFS, empezando por FTP y la instalación de vsftpd bajo Linux, SSHFS y SFTP bajo Linux, y el sistema SAMBA para compartir ficheros e impresoras con sistemas Linux, Windows y Mac OS X.

@rroba 153

@rroba 153

Read Full Post »

MySQL y UTF-8

Si queréis evitar problemas de representación al almacenar caracteres rarunos en vuestra base de datos MySQL, debéis forzar la utilización del formato de codificación UTF-8. Para ello, debéis añadir las siguientes líneas al fichero de configuración “/etc/mysql/my.cnf“:

init-connect=’SET NAMES utf8′
character-set-server=utf8
collation-server=utf8_general_ci

Tras guardar el fichero, por supuesto, debéis reiniciar el servicio. Y muy probablemente, también tendréis que volver a crear las bases de datos que no tuvieran su información correctamente representada.

Read Full Post »

Hace ya bastante tiempo que utilizo el servidor UPnP MediaTomb para reproducir contenido multimedia de mi ordenador desde la PS3. Sin embargo, ayer me percaté de que, desde que renové la anotación de metadatos de mi colección de música, la base de datos de MediaTomb se había quedado inconsistente. Por defecto, MediaTomb utiliza como backend SQLite, y almacena su base de datos en “/var/lib/mediatomb/mediatomb.db“. Al borrar dicha base de datos y reiniciar el servicio, descubrí que, por algún motivo, el almacenamiento con SQLite falla para determinados metadatos con caracteres rarunos (algunos UTF-8), aún haciendo explícito el set de caracteres en la configuración con la directiva “metadata-charset“.

Así pues, me dispuse a bucear por la configuración del programa (en “/etc/mediatomb/config.xml“) para cambiar el backend a MySQL, y descubrí que son muchas las nuevas opciones que incluye MediaTomb y que no conocía. Pero lo primero es lo primero, así que vamos a ver cómo cambiar el backend a MySQL. Lo primero, obviamente, será instalar el servidor, si es que no lo teníais ya instalado. Durante la instalación debéis configurar la contraseña del usuario root para el sistema gestor de bases de datos.

ramiro@cormanthor:~$ sudo apt-get install mysql-server

Para gestionar el servidor, instalaremos también un par de utilidades que nos facilitarán la vida (aunque siempre podemos tirar de línea de comandos, como los machotes :-P).

ramiro@cormanthor:~$ sudo apt-get install mysql-admin mysql-query-browser

Aunque no es imprescindible, sería buena idea continuar creando un usuario exclusivo para MediaTomb. En la sección User Administration de  MySQL Administrator podréis crear el nuevo usuario, así como otorgarle todos los privilegios sobre su propio esquema (que también debéis crear, y que yo he llamado “mediatomb”).

Privilegios del usuario mediatomb

Privilegios del usuario mediatomb

Ahora, en el fichero de configuración de MediaTomb, debemos deshabilitar el almacenamiento en SQLite…

<sqlite3 enabled=”no”>
<database-file>mediatomb.db</database-file>
</sqlite3>

… y habilitar el almacenamiento en MySQL.

<mysql enabled=”yes”>
<host>localhost</host>
<username>mediatomb</username>
<password>aquí_tu_contraseña</password>
<database>mediatomb</database>
</mysql>

Tras reiniciar el servicio, podemos acceder a la configuración web de MediaTomb como de costumbre, y añadir los directorios a vigilar. Yo recomiendo utilizar la opción “inotify“, y marcar el escaneo completo y recursivo. Ahora ya no habrá problemas con los caracteres rarunos. Además, y dado el tamaño de la base de datos generada, parece que utilizar SQLite no resultaba demasiado adecuado: la tabla “mt_cds_object” alcanza un tamaño de unos 34 Mb y 100K filas para música y vídeos, y crece hasta más de 50 Mb y 150K filas añadiendo las fotografías. Esos 12-17 Mb de índices se notan, pues ahora la información de la base de datos se obtiene de forma instantánea, mientras que antes tardaba un poco. Para colecciones de vídeos y/o música grandes, esta opción se antoja más adecuada.

MediaTomb en MySQL

MediaTomb en MySQL

Pero hay más opciones interesantes en MediaTomb que no están habilitadas por defecto. Una de ellas es la transcodificación al vuelo de vídeo, para poder ver en streaming desde la PS3 vídeos que, en principio, no utilizan un codec compatible con ésta, como sería el caso del contenedor Matroska. Para hacer esto mismo existe un servidor escrito en Java llamado PS3 Media Server, pero que tiene el inconveniente de tener que ser arrancado con la PS3 encendida. Para habilitar la transcodificación en MediaTomb, debemos especificarlo en la siguiente línea de la configuración:

<transcoding enabled=”yes”>

Si bien la configuración por defecto para los perfiles “oggflac2raw” y “vlcmpeg” así como para los mappings existentes, nos permiten convertir la mayoría de los ficheros de vídeo y audio no compatibles, es interesante ampliar esta información. Existe una guía muy útil para añadir soporte a mayor número de formatos en esta página, donde además nos propone un script de conversión de vídeo alternativo, utilizando como base ffmpeg. Funciona a las mil maravillas, y nos permite ver vídeos MKV en la PS3; aunque, eso sí, no esperéis poder ver una película a 1080p a través de una red inalámbrica, pues el ancho de banda simplemente no lo permite.

Otra opción interesante es la generación automática de thumbnails para los vídeos, para lo cual debemos instalar el paquete ffmpegthumbnailer

ramiro@cormanthor:~$ sudo apt-get install ffmpegthumbnailer

… y activar la opción en el fichero de configuración.

<ffmpegthumbnailer enabled=”yes”>
<thumbnail-size>128</thumbnail-size>
<seek-percentage>5</seek-percentage>
<filmstrip-overlay>yes</filmstrip-overlay>
<workaround-bugs>no</workaround-bugs>
</ffmpegthumbnailer>

Otra opción interesante (aunque para mí no demasiado) es el soporte para la visualización de vídeos de YouTube o los tráilers de Apple a través de la conexión a Internet del equipo servidor. En el enlace que he puesto anteriormente explican cómo habilitarlo, por si a alguien le interesa.

Por cierto, y en el caso de que alguien siga teniendo problemas con los metadatos a pesar de utilizar MySQL, o si, por cualquier motivo no quiere dejar de utilizar SQLite; la mejor manera de evitar el problema es desactivar la visualización de metadatos y la organización del layout virtual, cambiando la línea que reza…

<virtual-layout type=”builtin”>

… por lo siguiente:

<virtual-layout type=”disabled”>

De esta forma, sólo se podrá acceder al contenido a través del directorio “PC Directory” de MediaTomb. También puede modificar el script de análisis de metadatos (“/usr/share/mediatomb/js/import.js“) o escribirse uno personalizado, si bien esto ya es una tarea más compleja.

A la vista de la diferencia de rendimiento entre SQLite y MySQL, incluso para bases de datos pequeñas, no estaría de más que añadieran soporte para backend MySQL a Rhythmbox. De hecho, su contrapartida en KDE, AmaroK, dispone de soporte para sistemas gestores de bases de datos relacionales (MySQL y PostgreSQL) desde hace un tiempo.

Read Full Post »

A %d blogueros les gusta esto: