jueves, 21 de octubre de 2010

Screenshots con Debian y LXDE

Como ya varios de mis amigos han podido constatar, mi laptop HP-COMPAQ nx6115 no es precisamente un equipo que goza de altas capacidades de hardware.

Sin embargo, he realizado una instalación "a la medida" pero considerando los programsa disponibles en los repositorios oficiales.

Por otra parte, es evidente que con esta "conservadora" máquina no puedo abusar de programas de alto consumo de procesamiento gráfico y computacional.

Tomar capturas de pantalla o los llamados "printscreens" o "screenshots", es una tarea importante que está soportada de manera predeterminada en la mayoría de los escritorios disponibles en Debian, principalmente GNOME o KDE.

En mi caso, decidí instalar "LXDE" que es suficientemente ligero como para no causar estragos en la velocidad de procesamiento gráfico y computacional de mi fiel laptop.

En este artículo, explico los pasos que seguí para configurar una función de captura de pantalla a través de un programa llamado "scrot" y vinculando su ejecución al botón "PrintScreen" de mi teclado.

Aquí vamos.

1. Instalar programa "scrot":
  • # aptitude install scrot
2. Crear un script para invocar la captura de pantallas:
  • # vim /usr/local/bin/screenshot.sh

    #!/bin/bash
    DATE=`date +%Y-%m-%d\ %H-%M`
    scrot -s "$HOME/Desktop/screenshot-$DATE.png"
3. Asignar la combinación de teclas "ALT+PrintScreen"  al script "screenshot":
  • $ vim ~/.config/openbox/lxde-rc.xml

    Agregar la siguiente entrada al final de la sección "keyboard":

    <keyboard>
    ...
    <keybind key="A-Print">
    <action name="Execute">
    <command>printscreen.sh</command>
    </action>
    </keybind>
    </keyboard>
    ...
4. Reiniciar la sesión.

Como se puede ver, cuando se invoca el comando "scrot" se pasa también el parámetro "-s". Esto es para que permita seleccionar el área de la pantalla que se desea aparezca en la imagen a través de un rectángulo dibujado con el ratón.

En este momento, podemos presionar la tecla "ALT+PrintScreen" y seleccionando con el ratón el área de la pantalla, se creará una imagen en el escritorio.

Espero sea de utilidad.

Éxitos!

José Gregorio.

Fuentes:
  1. http://wiki.lxde.org/en/How_to_make_screenshots
  2. http://forum.lxde.org/viewtopic.php?f=8&amp;t=1373

jueves, 23 de septiembre de 2010

Instalar nuevas fuentes en Debian

En días pasados, estaba creando varios banners para un curso en MOODLE. Estas imágenes, las coloco en la parte superior de los bloques de actividades y contenidos para contextualizar lo que se aprenderá en esa unidad didáctica.

El asunto es que no me gustaban ninguna de las fuentes que tenía instalado mi sistema para este propósito. Entonces decidir buscar e instalar alguna fuente que me gustara.

Esta publicación trata de cómo instalar fuentes ".ttf" en mi sistema GNU/Linux Debian Lenny.

Aquí voy con los pasos que seguí.







1. Descargar fuente de mi preferencia.

Visité el portal "www.dafont.com" en donde pude conseguir muchas alternativas de fuentes para instalar.

En este caso, descargué una llamada "coolvetica".

2. Copiar fuente "coolvetica" en directorio local.

No quise hacer la instalación de la fuente de forma "general" en el sistema. Preferí hacerlo de manera que la fuente "coolvetica" estuviera disponible para mi sesión solamente.

Entonces, creé una carpeta especial en mi sesión llamada ".fonts" en donde copié la fuente recién descargada:
  • $ cd
  • $ mkdir .fonts
  • $ cd .fonts
  • $ cp /tmp/coolvetica.zip .
  • $ unzip coolvetica.zip
  • $ rm *.zip *.pdf *.html
En este momento ya tenía instalada la fuente pero faltaba un paso más.

3. Actualizar la base de datos de fuentes disponibles en las aplicaciones.

Para hacer que la fuente "coolvetica" estuviera disponible en todas mis aplicaciones, debía ejecutar el comando:
  • $ fc-cache -f -v
Hecho esto, la nueva fuente "coolvetica" estaba disponible en mi aplicación para crear banners llamada "inkscape".

Espero sea de utilidad.

José Gregorio.

Fuentes:
  • http://www.dafont.com/coolvetica.font
  • http://linuxandfriends.com/2009/07/20/how-to-install-fonts-in-linux-ubuntu-debian/

jueves, 26 de agosto de 2010

Cámara para tráfico de bajo presupuesto

Un proyecto que vengo realizando desde hace un poco menos de un año está relacionado con la supervisión de un punto importante en una de las vías expresas en Caracas, Venezuela.

Todo surgió por la necesidad que tenía de saber algunas condiciones de este tramo de la autopista: ¿llueve?, ¿mucho tráfico?, ¿alguna situación que obstaculice el tránsito?

Entonces, decidí revivir un viejo laptop que tenía en alguna sombra de mi closet para hacer algo útil.

Esta publicación trata de cómo construí un sistema para supervisar el tramo del elevado de Santa Fé en la autopista de Prados del Este en Caracas, Venezuela.

Básicamente, este sistema lo que hace actualmente es tomar una fotografía en momentos determinados del día para luego copiarla en un directorio de un dominio identificado como www.ruedapoco.com.

En virtud de que no tenía mucho tiempo para publicitar el experimento, decidó crear un canal de twitter llamado www.twitter.com/ruedapoco que se encargara de informar del servicio. En poco tiempo, gracias a esta red social la cantidad de visitas para ver esta simple foto creció rápidamente.

Esta publicación está distribuída en los siguientes pasos:

1. Instalación de GNU/Linux Debian Lenny.
2. Instalación de la webcam.
3. Instalación del programa para tomar las fotografías.
4. Cronograma permanente para la creación de la fotografía y actualización del estado en "twitter".
5. Publicación de la fotografía en el servidor www.ruedapoco.com.

Aquí va la explicación de cada uno de ellos.

1. Instalación de GNU/Linux Debian Lenny.

Utilizando el programa "JIGDO", creé una imagen de un CD de instalación en su versión "netinstall" de Debian Lenny.

Realicé la instalación del sistema en mi viejo Toshiba Satellite que no tenía más que un Intel Pentium 3 con 512 MB en RAM. y un gigantezco disco de 40 Gb.

Para este sistema, sólo utilicé la opción de "Sistema Base". Es decir, quité la selección que me invitaba a mantener el instalador para "Sistema de Escritorio" y "Laptop". Con esto logré que el sistema operativo tuviera exclusivamente lo necesario.

2. Instalación de la webcam.

Para lograr una imagen "decente" y que no afectara el exceso o defecto de luminosidad cuando se tomara la foto, compré una cámara web Logitech modelo QuickCam Communicate MP/S55000 tal como la que se ve en la foto.

Al conectarla, verifiqué el log del sistema para confirmar que estaba siendo correctamente detectada:

# tail -f /var/log/syslog

La salida en el log fué:

Aug 24 19:23:25 multiplo kernel: [  308.716068] usb 1-1: new full speed USB device using ohci_hcd and address 2
Aug 24 19:23:26 multiplo kernel: [  309.015860] usb 1-1: configuration #1 chosen from 1 choice
Aug 24 19:23:26 multiplo kernel: [  309.021176] usb 1-1: New USB device found, idVendor=046d, idProduct=09a1
Aug 24 19:23:26 multiplo kernel: [  309.021190] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=2
Aug 24 19:23:26 multiplo kernel: [  309.021198] usb 1-1: SerialNumber: F4290250
Aug 24 19:23:26 multiplo kernel: [  309.595285] Linux video capture interface: v2.00
Aug 24 19:23:27 multiplo kernel: [  309.794329] uvcvideo: Found UVC 1.00 device (046d:09a1)
Aug 24 19:23:27 multiplo kernel: [  309.830874] input: UVC Camera (046d:09a1) as /class/input/input7
Aug 24 19:23:27 multiplo kernel: [  309.840521] usbcore: registered new interface driver uvcvideo
Aug 24 19:23:27 multiplo kernel: [  309.840538] USB Video Class driver (v0.1.0)
Aug 24 19:23:27 multiplo kernel: [  310.121183] usbcore: registered new interface driver snd-usb-audio


Entonces pude constatar que todo iba "de perlas". Me llamó la atención que esta cámara no era tan "básica". De hecho, empleaba el controlador V4L2 y es lo que llaman una cámara UVC además de traer su propio dispositivo de captura de audio.

3. Instalación del programa para tomar las fotografías.

Debido al modelo y controlador de la cámara, no serviría cualquier programa que tomara una foto. El que seleccionara debería ser compatible con cámaras UVC y emplear el controlador.

Decidí emplear entonces el programa "fswebcam" que está disponible en los repositorios de "squeeze".

Para instalarlo, lo descargué directamente de los "archives" de Debian pero antes instalé un par de dependencias:
  • # cd /root
  • # aptitude install libgd2-noxpm libgd2-xpm
  • # wget http://ftp.us.debian.org/debian/pool/main/f/fswebcam/fswebcam_20100622-1_i386.deb
  • # dpkg -i fswebcam_20100622-1_i386.deb
Para verificar el funcionamiento, ejecuté el programa para tomar una foro de prueba:
  • # fswebcam -d /dev/video0 -i 0 -p MJPEG -r 640x480 -S 30 --no-banner --jpeg -1 prueba.jpg
Se creó correctamente el archivo "prueba.jpg" que corresponde a la imagen que tomó la cámara.

En este momento, tenía instalado el programa que utilizaría para tomar las fotos.

4. Cronograma permanente para la creación de la fotografía y actualización del estado en "twitter".

Para realizar la fotografía los días y horas determinadas, me apoyo en el planificador de tareas "cron".

Programé dos bloques: uno para que se tome la fotografía cada cinco minutos de lunes a viernes entre las 04:00 AM y las 11:00PM. El otro bloque es los sábados y domingos en horas "enteras" (3pm, 4pm, 5pm, etc.) también desde las 04:00 AM hasta asl 11:00 PM.

A continuación los comandos que utilicé:
  • # crontab -e

    */5     4-23   *      *    1-5      /usr/local/sbin/snapshot.sh
    0       4-23   *      *    6,0      /usr/local/sbin/snapshot.sh
El script "spanshot.sh" lo creé para no estar editando directamente el planificador "cron" cuando necesitara realizar algún cambio.

Este script fundamentalmente realiza dos funciones: la primera es crear la fotografía y la segunda es actualizar el estado del canal de "twitter" llamado "ruedapoco".

La actualización del canal de "twitter" se realiza a través de la API que este portal ofrece para ejecutar algunas funciones a partir de comandos y no desde la web.

Estas ejecuciones requieren poder invocar comandos a través de "http" desde la cónsola. En este sentido, me decanté por el programa "curl" que está en los repositorios:
  • # aptitude install curl
Al igual que "snapshot.sh", creé un script para actualizar el "estado" en el canal de "twitter".

El script "twitter-update-status.sh" luce así:
  • vim /usr/local/sbin/twitter-update-status.sh

    curl --basic --user MiUsuario:MiClave --data status="Tráfico a las $(date "+%H horas y %M minutos"|sed -e ' s/\"/\\\"/g' ) en el Dist. SantaFé en la Autop. PradosDelEste: http://www.ruedapoco.com/camaras/santafe/camara-01/" http://twitter.com/statuses/update.xml > /dev/null
Cada vez que ejecute este script, se publica un mensaje en el canal de "twitter".

Cabe destacar que esta actualización no puede ser permanente porque "twitter" lleva un control de la cantidad de cambios que se realizan vía API y tienen un límite.

Entonces, agregué la ejecución del script "twitter-update-status.sh" al planificador de tareas "cron":
  • #crontab -e
    ...
    15 7-20 * * 1-5 /usr/local/sbin/twitter-update-status.sh
    5 * 7-20 * 6,0 /usr/local/sbin/twitter-update-status.sh
También consideré dos bloques: uno de lunes a viernes a los 15 minutos de cada hora y otro sábados y domingos luego de 5 minutos de cada hora.

5. Publicación de la fotografía en el servidor www.ruedapoco.com.

Finalmente, lo único que quedaba era copiar la fotografía tomada en el directorio del sitio www.ruedapoco.com.

Para lograr esto, utilicé el cliente ftp pero estableciendo un conjunto de instrucciones que se ejecutarían al invocar el comando "ftp".

Entonces, creé el archivo "/root/.netrc" con el siguiente contenido:
  • # vim /root/.netrc

    machine  ftp.ruedapoco.com
    login    MiUsuarioFTP@ruedapoco.com
    password MiClaveFTP
    macdef init
    prompt
    hash
    binary
    lcd /var/opt/camara-01/
    cd santafe
    cd camara-01
    mput webcam_navegadores.jpg
    quit
A partir de este conjunto de instrucciones, se copia el archivo de imagen "webcam_navegadores.jpg" en el servidor www.ruedapoco.com.

Para concluir, agregué el comando necesario para publicar la fotografía considerando el planificador de tareas "cron":
  • # crontab -e
    ...
    ftp ftp.ruedapoco.com
Con este último paso, queda publicada la fotografía en la página web.

Luego de ver el resultado final, estaba bastante contento :-) ... Sin embargo, me gustaba la idea de modificar la fotografía antes de que fuera publicada para agregarle algún texto relacionado con la ubicación del lugar, fecha y hora y correo.

Para hacer esto, instalé el poderoso programa "imagemagick" para manipulación de imágenes:
  • # aptitude install imagemagick
Luego, agregué el siguiente conjunto de instrucciones en el script "snapshot.sh" justo después de tomar la fotografía con el comando "fswebcam":
  • # vim /usr/local/sbin/snapshot.sh
    ...
    convert /var/opt/camara-01/webcam_navegadores_raw.jpg -gravity South -background Gold -splice 0x18 -annotate +0+2 "Venezuela - Caracas - Distribuidor Santa Fé -  $(date "+%d.%m.%Y-%H:%M:%S - jdiaz@bpiconsultores.com"|sed -e ' s/\"/\\\"/g' )" /var/opt/camara-01/webcam_navegadores_raw_1.jpg

    ln -fs /var/opt//camara-01/webcam_navegadores_raw_1.jpg /var/opt/camara-01/webcam_navegadores.jpg
    ...
Con esta modificación, agregué un rectángulo amarillo en la parte inferior de la fotografía con el lugar, la fecha y hora de la foto y un correo electrónico.

Hasta el momento ha venido funcionando este viejo laptop ofreciendo un servicio de gran utilidad para los que vivimos en las zonas aledañas.

Espero sea de utilidad.

Éxitos!

José Gregorio.

miércoles, 25 de agosto de 2010

Creando imágenes de Debian con JIGDO

La primera tarea para hacer la instalación de un sistema GNU/Linux Debian es obtener o crear un CD de instalación.

En esta publicación, explico en líneas generales cómo crear una imagen ISO para luego "quemar" un CD de instalación con Debian.

En el proceso, la primera decisión que debía tomar era cómo realizaría la descarga del CD de instalación. En este sentido, tenía dos alternativas: descargar un archivo ISO de "http://www.debian.org/CD/" o utilizar el programa "JIGDO".

Me he decidido por utilizar el programa "JIGDO" porque en la web de Debian pronostican que debería ser la forma predeterminada para elaborar CDs de instalación. Además, mencionan que el proceso es más rápido que la descarga de un archivo ISO.

A continuación los pasos que utilicé para crear una imagen ISO de la versión "netinstall" de Debian Lenny.

1. Instalar el programa JIGDO:
  • # aptitude install jigdo
2. Descargar los archivos ".jigdo" y ".template" en mi directorio "home":
  • $ cd
  • $ wget http://cdimage.debian.org/debian-cd/5.0.5/i386/jigdo-cd/debian-505-i386-netinst.jigdo
  • $ wget http://cdimage.debian.org/debian-cd/5.0.5/i386/jigdo-cd/debian-505-i386-netinst.template
3. Iniciamos la creación de la imagen ISO:
  • $ jigdo-lite debian-505-i386-netinst.jigdo
Como es la primera vez que creaba una imagen con este archivo .jigdo, presioné "enter" a la primera pregunta relacionada con el "scan".

En la pregunta acerca del mirror que quiero utilizar, respondí:

http://debian.mirror.iweb.ca/debian/


El proceso de descarga de los archivo inicia y puede demorar dependiendo del tipo de imagen que se esté creando. En mi caso, la imagen que estoy creando es mínima y la descarga es de 130 Mb. a 170 Mb.

Al concluir el proceso, se creó "automágicamente" un archivo llamado:

debian-505-i386-netinst.iso

Este archivo es la imagen que podemos utilizar con algún programa como BRASERO, GNOMEBAKER o DD para crear un CD de instalación de Debian.

Espero sea de utilidad.

José Gregorio.

Fuentes:
  • http://www.debian.org/CD/jigdo-cd/
  • http://cdimage.debian.org/debian-cd/5.0.5/i386/jigdo-cd/
  • http://www.debian.org/mirror/list
  • http://www.tldp.org/HOWTO/Debian-Jigdo/updatingyourimage.html

miércoles, 18 de agosto de 2010

Screencasts para Youtube con Debian.


Los screencasts son una de las formas más útiles de realizar demostraciones basadas en videotutoriales.

En esta publicación, voy a explicar cómo he realizado grabaciones de mi escritorio para luego transformarlas formato MP4 y que sea reproducible en la mayoría de los reproductores multimedia.

Para poder grabar el escritorio y el audio del micrófono, he instalado un programa llamado "recordmydesktop" el cual me ha sorprendido su simplicidad y efectividad.



Realizamos la instalación de los paquetes necesarios:
  • # aptitude install gtk-recordmydesktop recordmydesktop ffmpeg
"recordmydesktop" graba lo que ocurre en el escritorio y el audio del micrófono "encapsulando" tanto el audio y el video en formato ".ogv".

Internamente, esta "cápsula" contiene los flujos con formato "theora" para el video y "vorbis" para el audio.

Desafortunadamente, no todos los fabricantes de software impulsan sus desarrollos por la efectividad y adecuada implementación de los codecs. En este sentido, nos vemos en la necesidad de transformar los videos generados por "recordmydesktop" en formato ".ogv" a otro formato más "comercial" como por ejemplo ".mp4".

El encapsulamiento ".mp4" no funciona mal, lastimosamente le ha quitado terrreno en la penetración al mundo comercial a ".ogv".

Entonces, para transformar de encapsulamiento ".ogv" a ".mp4" me he apoyado en la fabulosa herramienta "ffmpeg".



Nuestro siguiente paso es realizar la instalación del programa "ffmpeg", con las instrucciones de costumbre:
  • # aptitude install ffmpeg
El repositorio que estoy utilizando para descargar "ffmpeg" es el ofrecido por Christian Marillat (www.debian-multimedia.org)

Ahora bien, supongamos que hemos grabado un archivo de un videotutorial con "recordmydesktop" llamado out.ogv.

Para transformarlo a ".mp4" conformado por el flujo de video en formato "mpeg4" y audio "mp3", he utilizado la siguiente instrucción:
  • $ ffmpeg -i out.ogv -vcodec mpeg4 -acodec libmp3lame -scodec copy -s 800x600 -ac 1 out.mp4
El tamaño del archivo resultante "out.mp4" ha sido menos de la mitad del original "out.ogv". Ideal para publicarlo en youtube.

Básicamente lo que he hecho es además de modificar la codificación original del video y audio del archivo original, reduje el tamaño de 1024x768 que era la resolución original que tenía en mi pantalla a 800x600 que se ve bastante bien. Por otra parte, cambié de dos canales de audio (esteéreo) a uno solo.


Esto me ha sido suficiente para obtener videos de excelente calidad en mis videotutoriales para publicarlos en youtube.

Espero sea de utilidad.

José Gregorio


Fuentes:
  1. http://recordmydesktop.sourceforge.net/rug/app_a.php
  2. man ffmpeg

viernes, 9 de julio de 2010

Debian Lenny: Código PHP + APACHE2 + DAV


El uso de DAV para gestionar los archivos de sitios web en servidores como Apache2 y Ligthy es una combinación muy útil y más segura que FTP.

El problema que se me ha presentado consiste en que tratando de descargar los archivos PHP de uno de los sistemas publicados, los archivos se descargaban con el resultado de la ejecución de los archivos PHP, es decir, código HTML.

En realidad, lo que debía ocurrir era que se descargaran los archivos crudos con el código PHP.

Luego de investigar un poco, conseguí esta información en el portal de APACHE

"
One common request is to use mod_dav to manipulate dynamic files (PHP scripts, CGI scripts, etc). This is difficult because a GET request will always run the script, rather than downloading its contents. One way to avoid this is to map two different URLs to the content, one of which will run the script, and one of which will allow it to be downloaded and manipulated with DAV."

Entonces, lo que hice fué modificar el archivo relacionado con el virtualhost de la siguiente manera:
  • vim /etc/apache2/sites-available/sitioweb
    ...
    Alias /fvtenis "/var/www/sitio/aplicacion/"

    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

    ...
  • Y agregué las directivas correspondientes al acceso vía DAV pero con un alias diferente:

    Alias /sitio-fuentes "/var/www/sitio/aplicacion/"

    Dav On
    ForceType text/plain
    AuthType Basic
    AuthName "SITIO: Archivos fuentes."
    AuthUserFile /etc/apache2/dav_auth/dav-auth-claves
    Require valid-user

Como se puede apreciar, hay varios trucos que aplican acá:

En primer lugar, se emplea la directiva "directory" para ofrecer los archivos en los directorios que deben ser ejecutados por el compilador de PHP.

En segundo lugar, se creó un alias llamado "sitios-fuentes" que define la parte final del url para acceder con el cliente DAV.

En mi caso utilizo "cadaver" y la forma de conectarme es:

cadaver http://miweb/sitio-fuentes/

En tercer lugar, obligo a que la entrega de los archivos sea en texto plano a través de la directiva "ForceType".

En cuarto lugar, empleo un archivo de autenticación DAV llamado "dav-auth-claves" creado con la herramienta "htpasswd".

Luego de estos cambios, pude verificar que la descarga de los archivos a través de "cadaver" empleando el comando "get" efectivamente venían con el código PHP completo.

Espero sea de utilidad!

José Gregorio.

Fuentes consultadas:

1. http://httpd.apache.org/docs/2.0/mod/mod_dav.html#complex

miércoles, 12 de mayo de 2010

WIZIQ + LATEX + BEAMER

Recientemente vengo trabajando bastante con sistemas de conferencia en línea tales como Elluminate, Openmeeting y Wiziq.

Este tipo de sistemas son de gran utilidad para explotar a través de Internet la capacidad de realizar conferencias a distancia ya bien sea para reuniones laborales como para desarrollar procesos de educación a distancia.

Éste último escenario es el que me ha motivado a escribir este artículo.

Entre las funciones importantes que ofrecen los sistemas de videoconferencias en línea está la posibilidad de subir presentaciones con el propósito de orientar el tema del discurso.

En mi caso, llevo bastante tiempo que no realizo presentaciones con Openoffice, ni hablar de Micro$oft Office. No obstante, los criterios mencionados en esta publicación aplican a cualquier herramienta de producción de presentaciones.

En este sentido, tengo la fortuna de utilizar la combinación libre "LATEX+BEAMER", que me permite crear presentaciones con una calidad profesional, correctamente estructuradas y visualmente impresionantes.

¿Cual es el problema?

Como ya mencioné, la función de poder subir presentaciones en los sistemas de videoconferencias en línea es crucial para orientar el discurso de la presentación.

El problema que se presenta en "wiziq.com", es cuando se sube un archivo ".pdf" generado con "latex+beamer" que contiene la presentación, el tamaño de la hoja puede ser muy pequeño y dificultar la visualización de las láminas.

La solución

Entonces, realicé unos pequeños ajustes en el preámbulo del documento en latex para resolver esta situación.

A continuación los cambios en el preámbulo:

\documentclass[17pt]{beamer} %Establece el tamaño de la letra a 17puntos.
\usepackage[spanish]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{graphicx}
\usepackage{extsizes} %Permite que el tamaño de la letra se incremente hasta 17pt.

\mode
{
\usetheme{Frankfurt} %Tema de la estructura utilizado para la presentación.
\usecolortheme{beaver} %Tema de la combinación de colores para la presentación.
\setbeamercovered{transparent}
}

\usepackage{geometry}
\geometry{a5paper, landscape} %Modifica el tamaño y orientación de la lámina.

\title{Título de la presentación}
\author{Autor de la presentación}
\institute[Localización de la presentació]
{
Nombre de la institución \\
Zona \\
Dependencia
}
\date{\today}

\begin{document}

\frame{\titlepage}

\begin{frame}
\tableofcontents
\end{frame}

\section{TÍTULO DE LA SECCIÓ}

\subsection{Título de la subsección}

\begin{frame}
\frametitle{Título de la lámina}
Desarrollo de la lámina ...
%Así se puede incluir un gráfico: \includegraphics[scale=0.50]{drive.png}
%Así se puede crear una caja de texto:
%\begin{block}{Informe para la Planificación del proyecto RI-USB}
%TEXTO
%\end{block}
\end{frame}

\end{document}

Este cambio permitió que cuando se compilara el documento "pdflatex presentacion.tex", el resultado final fuera un documento en formato PDF que se visualiza perfectamente en "wiziq.com" en un monitor con una pantalla con una resolución de 1024x768.

Comentarios finales

Es importante destacar que el uso de archivos en formato PDF, elimina cualquier efecto de animación que pudiera haber tenido la presentación.

El proceso de aplicar efectos de animación para archivos con formato PDF es muy sencillo con el uso de un programa llamado "IMPRESSIVE". Sin embargo, no es posible aplicar estos efectos durante la presentación en formato PDF en WIZIQ.COM.

Espero sea de utilidad.

Éxitos!

Referencias:
  1. ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/geometry/geometry.pdf
  2. http://www.hartwork.org/beamer-theme-matrix/
  3. http://old.nabble.com/Default-page-size-td12585782.html
  4. http://www.informatik.tu-darmstadt.de/KP/lehre/ws0506/sem/beameruserguide.pdf
  5. http://www.eecs.harvard.edu/~mdw/proj/texslides/

domingo, 2 de mayo de 2010

Debian Lenny: Dos teclados al mismo tiempo


Recientemente me topé con la necesidad de poder configurar un teclado adicional en mi laptop HP-COMPAQ nx6115.

Este laptop es mi caballo de batalla y afortunadamente viene con tres puertos USB. Precisamente a través de uno de estos puertos es que instalaré un teclado adicional marca Genius modelo KB-06XE (K639).

Como no me gusta estar usando teclados deficientemente configurados, es decir, cuyas etiquetas de las teclas dicen una cosa y "de memoria" las presiono para que hagan otras, entonces decidí que cada uno de los teclados debía mantener simultáneamente sus layouts correspondientes.

En mi caso, el teclado del laptop tiene una configuración latinoamericana (latam) y el teclado Genius tiene otra configuración en español (es).

Luego de investigar un poco, encontré que una vía era a través de "evdev" que es un controlador de entrada para el servidor X11 X.ORG. Este controlador intermedio, permite que los periféricos de entrada se comuniquen de una forma directa con los controladores expuestos por el kernel.

Entonces ya tenía prácticamente esta batalla ganada ya que sabía que se trataba de una configuración en el X.ORG en donde especificara cómo manejaría cada uno de los teclados considerando sus comportamientos particulares.

Para ello edité el archivo "/etc/X11/xorg.conf" de la siguiente manera:

1. En la sección "Server Layout" agregué la definición de un nuevo dispositivo:
  • Section "ServerLayout"
  • Identifier "aticonfig Layout"
  • Screen 0 "aticonfig-Screen[0]-0" 0 0
  • InputDevice "TecladoUsbGenius" "SendCoreEvents"
  • EndSection
2. Agregué una opción en "ServerFlags" que en mi caso no existía y la creé:
  • Section "ServerFlags"
  • Option "AutoAddDevices" "false"
  • EndSection
3. Agregué la configuración del nuevo teclado (Genius):
  • Section "InputDevice"
  • Identifier "TecladoUsbGenius"
  • Driver "evdev"
  • Option "Protocol" "evdev"
  • Option "XkbRules" "xorg"
  • Option "XkbModel" "pc105"
  • Option "XkbLayout" "es"
  • Option "Device" "/dev/input/event2"
  • EndSection
Se puede apreciar tres detalles importantes:
  1. Se indica el "driver" que administrará las "señales" de este dispositivo.
  2. El layout para este teclado es "es" que significa español.
  3. El dispositivo reconocido por el sistema operativo está identificado como el evento "event2".
Para saber a qué evento está asociado el teclado ejecuté el siguiente comando:
  • jgdu-laptop:/etc/X11# ls -l /dev/input/by-id/
  • total 0
  • lrwxrwxrwx 1 root root 9 2010-05-02 22:13 usb-04f3_0103-event-kbd -> ../event2
  • lrwxrwxrwx 1 root root 9 2010-05-02 19:41 usb-Cypress_Sem_PS2.USB_Browser_Combo_Mouse-event-mouse -> ../event1
  • lrwxrwxrwx 1 root root 9 2010-05-02 19:41 usb-Cypress_Sem_PS2.USB_Browser_Combo_Mouse-mouse -> ../mouse0
Como se puede apreciar, el teclado Genius está asociado al "event2".

Finalmente, reinicié el servidor X presionando "CTRL+BackSpace" y ...VOILÁ! ... quedó configurado el teclado Genius conectado vía USB.

Lo interesante de todo esto es que el comportamiento del teclado del laptop quedó exactamente igual que antes y de manera simultánea pude escribir tanto en un teclado como el otro respetando el layout de cada uno de ellos.

Espero sea de utilidad.

Éxitos!

José Gregorio.

Referencias
  1. http://es.wikipedia.org/wiki/Evdev
  2. http://www.xfree86.org/current/XKB-Config2.html
  3. https://doc.ikw.uni-osnabrueck.de/node/3172

miércoles, 28 de abril de 2010

Eprints con GNU/Linux Debian Lenny

Recientemente vengo trabajando en un proyecto relacionado con el almacenamiento digital de recursos y objetos de aprendizaje. Es algo así como una biblioteca digital en línea que permite catalogar los materiales según taxonomías específicas tales como Dublin Core y LOM IEEE.

Desde el mundo del software libre, se ofrecen varias alternativas interesantes para cumplir esta misión.

Algunos sistemas disponibles son:

  • Eprints.
  • DSpace.
  • Drupal.
En este artículo voy a describir cómo realizar la instalación básica del sistema "Eprints" para uso local en mi GNU/Linux Debian Lenny. Mi elección se basa en que está desarrollado en PERL y entiendo que es un lenguaje muy poderoso en la gestión de cadenas y búsquedas.

Paso 0: preliminares.

"Eprints" es un sistema que requiere entre otras dependencias un servidor MySql.

Durante la instalación, se solicitará el nombre de usuario y clave de acceso para crear una base de datos asociada al repositorio que se crea.

Para resolver las dependencias, el camino más práctico es lograr instalar a partir de algún repositorio vía "aptitude".

Paso 1: instalar "eprints".

Como buen aprendiz, primero busqué si existía la posibilidad de instalar a partir de los repositorios oficiales.

Pese a que no está disponible en los repos oficiales, si está disponible en una rama publicada en "www.eprints.org".

Entonces lo primero es agregar las siguientes líneas a nuestro "sources.list":
  • # vim /etc/apt/sources.list
  • ...
  • deb http://deb.eprints.org/3.2/ stable/
  • deb-src http://deb.eprints.org/3.2/ source/
  • ...
  • # aptitude update
  • (por si acaso tenemos alguna actualización pendiente)
  • # aptitude safe-upgrade
Esto permitirá la instalación de "Eprints" a partir del gestor de programas "aptitude".

Paso 2: configurar nombre del repositorio local.

"Eprints" crea los repositorios de manera individual identificándolos a partir de subdominios como por ejemplo "mirepo.localdomain", "turepo.dominio.com", etc. De aquí podemos inferir que "Eprints" trabaja con nuestro servidor web a partir de hosts virtuales.

Dado que mi repositorio es para pruebas y no estará expuesto a otras PC, bastará con configurar un nombre cualquiera en mi sistema local.

Para lograr esto, editamos el archivo "hosts":
  • # vim /etc/hosts
  • ...
  • 127.0.0.1 mirepositorio.localdomain
  • ...
Con esta configuración, podré acceder desde el navegador de páginas web en mi laptop el repositorio que crearé.

Entonces, cada vez que "Eprints" pregunte alguna información referente al URL del repositorio deberemos indicar "mirepositorio.localdomain". De la misma manera, si el sistema se mantiene local entonces podemos indicar como correo "admin@mirepositorio.localdomain".

Paso 3: crear el repositorio "mirepositorio".

Para crear el primer repositorio es necesario asumir la identidad del usuario "eprints" creado durante el proceso de instalación. Luego, debemos ejecutar un script que trae "Eprints" para crear fácilemente repositorios:
  • # su eprints
  • $ cd
  • ./bin/epadmin create
Se puede crear el repositorio sin mayores dificultades respondiendo con las respuestas predeterminadas que sugiere el script de instalación. Para hacer esto, basta con presionar "ENTER" y estar atento al valor encerrado entre corchetes ([valor]) que indica la respuesta predeterminada.

A continuación algunas consideraciones importantes:
  • El nombre del repositorio será "mirepositorio.localdomain".
  • El correo electrónico asociado al repositorio es "admin@mirepositorio.localdomain".
  • Tener a la mano un usuario y clave del servidor MySQL que permita la creación de una base de datos.
  • Tomar nota del usuario "admin" y clave de acceso para administrar el repositoio "mirepositorio.localdomain".
Paso 4: habilitar el sitio "eprints".

Una vez creado el repositorio "mirepositorio.localdomain", también se habrán creado los archivos correspondientes al host virtual.

Para configurar el host virtual "mirepositorio.localdomain" es necesario habilitar el sitio web "eprints" ubicado en "/etc/apache2/sites-available/eprints".

Bastará con ejecutar el siguiente comando con privilegios de "root":
  • # a2ensite
  • Your choices are: default default-ssl eprints3 eprints3-viejo
    Which site(s) do you want to enable (wildcards ok)?
  • eprints
  • Enabling site eprints3.
    Run '/etc/init.d/apache2 reload' to activate new configuration!
  • /etc/init.d/apache2 restart
En este momento ya está disponible el repositorio y es accesible a través de un explorador web instalado en mi laptop en la dirección:
  • http://mirepositorio.localdomain
Espero sea de utilidad.

Éxitos!

Referencias
  1. http://www.youtube.com/watch?v=ycPUHjZPJXI
  2. http://wiki.eprints.org/w/Installing_EPrints_3_via_apt_(Debian/Ubuntu)
  3. http://wiki.eprints.org/w/Debian_Known_Issues