No es demasiado a menudo que me embarco en proyectos de programación. La mayoría de las veces surge de tener que solucionar algun asunto, (de rascar adonde pica) que me lleva a investigar como se puede hacer. Nada nuevo, siempre hay alguien que lo hizo antes de algun otro modo, sin embargo la investigación de como fue hecho, ya es un aprendizaje importantisimo. Y si finalmente surge codigo propio... un avance personal.
Google Picasa exporta a paginas web y a formato xml, y hace unos dias lo portó a Linux usando las bibliotecas de Wine. Excelente programa para edicion[light] y administracion de colecciones de imagenes.
El archivo xml contiene la coleccion de archivos, thumbnails, tamaños, captions, etc.
El generador que me propuse escribir parses el xml y genera paginas basadas en templates. El primer template contiene el indice del album, con todos los thumbnails. El segundo template contiene el formato de cada thumbnail y el tercero la pagina individual de cada imagen. Por ejemplo, el template de los thumbnails sería algo asi:
<div class="thumbnail"> <a href='__target__'> <img src='__itemThumbnailImage__' style='border:0' alt;='' width='__itemThumbnailWidth__' height='__itemThumbnailHeight__' /> </a> <div class="name">__itemName__</div> </div>El script ruby entonces reemplaza los tokens con el contenido del archivo xml. Cabe señalar que despues de probar mi versión proof-of-concept, decidí basarla en partes de la class PicasaAlbumHelper de Hackerdude que tiene una Creative Commons Atribution license.
Estoy haciendo un programita basado en awk para embellecer código vhdl. Es la primera vez que me pongo a estudiar awk, y realmente no es dificil y es bastante poderoso para ser usado como filtro.
Cuidado, cuando uno anda con un martillo en la mano, de repente todo parece clavo.
Encontré una página que dándole tu zip code, te devuelve información sobre el tiempo y un mini pronóstico. Con un poco de awk se puede convertir en algo útil.
Webcam es el programa que captura las imagenes del webcam y las pone en un archivo .jpeg, en el directorio del web server.
Webcam puede leer un archivo de texto y agregárselo como subtítulo a la imagen. Este archivo va a tener mi localidad, la fecha y hora y la temperatura actual.
#!/bin/bash TMPFILE=/tmp/temp.xml TMPCAPTION=/tmp/tmpcaption CAPTION=/tmp/caption I=0 while (true) do if [ "1800" -eq $I ]; then wget -O $TMPFILE http://weather.unisys.com/forexml.cgi?91367 I=0 fi I=$(($I + 1)) # separate 'city="Woodland Hills, CA"' by ", and take 2nd awk 'BEGIN {FS="\""}/city/{print $2}' $TMPFILE > $TMPCAPTION # handpick 'Tue Jan 17 23:42:48 PST 2006' date|awk '{print $2 " " $3 " " $4 " " $5}'>> TMPCAPTION # now the temp awk 'BEGIN {FS="\""}/temp.string/{print $2}' $TMPFILE >> $TMPCAPTION # join all three lines cat $TMPCAPTION|awk 'BEGIN{RS="";FS="\n"}{print $1 " " $2 " " $3}'>$TMPCAPTION cp $TMPCAPTION $CAPTION sleep 1 doneLa imagen con subtítulo se puede ver tambien en la página principal
Hace un tiempo ya que tengo una webcam mirando hacia afuera de mi depto y junto con un web server corriendo en mi maquina, puedo generar imagenes cada segundo y ponerlas online. Lo que necesitaba era una ventanita que me mostrara la imagen actual del webcam, que se actualice cada segundo y que me diga si alguien está viendo el website desde afuera. Asi es que con un par de horas de hacking con pygtk logré lo siguiente: images.py
Encontré un viejo script perl que usé para enderezar fotos digitales basado en la información EXIF que le agrega la cámara digital.
Esta info tiene entre otras cosas, shutter speed, apertura y orientación.
Este script necesita algunas tools de ImageMagick como mogrify e identify.
El código esta protegido por la Licencia General GNU y disponible para download: standup.pl
Una nueva actualización al viejo SlideCSS, que ahora se llama FrameCSS. Cuenta con una sola imagen .gif transparente, y el thumbnail se centra con codigo CSS (padding).
El theme fue aceptado por el autor del album y lo incluyó en su listado de themes! con el viejo nombre.
Lo puedes bajar en un tgz: FrameCSS
Este software se encuentra protegido por la Licencia General GNU
Navegando por Bugzilla, encontre un programa de RedHat/Fedora, que sirve para configurar un servidor Samba, que tenía algunos problemitas. Me puse a investigar al respecto, y descubrí que el script python daba unos warnings debido a unos métodos que fueron mejorados en pygtk, pero no en el script. El mensaje de warning era algo asi:
/usr/share/system-config-samba/mainWindow.py:116: DeprecationWarning: use gtk.UIManager item_fac = gtk.ItemFactory(gtk.MenuBar, "<main>", accel_group) /usr/share/system-config-samba/mainWindow.py:141: DeprecationWarning: button = self.toolbar.insert_stock('gtk-add', _("Add a samba share"), None, self.onNewButtonClicked, None, 0) snip
Al cabo de un par de horas de hacking con pygtk, arreglé el problema y ahora no tira mas warnings! El patch fue enviado al mantenedor del paquete (Nils Philippsen) para su incorporación. [Update] El patch ya esta en CVS!
Al descubrir la potencia de un lenguaje orientado a objetos relativamente nuevo llamado Ruby, me propuse hacer un proyecto para poder mandar las fotos desde mi celular, directamente a mi homepage.
Desde el celular, mando una foto a mi direccion de email. Este script se ejecuta en mi maquina y cada unos 10 minutos chequea mi email y extrae los que fueron enviados por mi celular. Luego se conecta a mi website y sube las fotos recogidas.
Screenshot ;-)
Trying pop.1and1.com... Connected Downloading 5 mails... Pat Carr 818*****48@tmomail.net Got one pic-email! Tue, 6 Jul 2004 00:32:13 -0700 (PDT) Got pic!: Footer text Marcelo Ramos quake-all-owner@eqinfo.wr.usgs.gov 818*****48@tmomail.net Got one pic-email! Sun, 11 Jul 2004 02:38:47 -0700 (PDT) Got pic!: Grocery shopping 5 mails popped. Trying to ftp to patocarr.com Logging in... Logged in Uploading inbox/Tue,_6_Jul_2004_00:32:13_-0700__PDT_.jpg Uploading inbox/Sun,_11_Jul_2004_02:38:47_-0700__PDT_.jpg Done. Sun Jul 11 13:24:46 PDT 2004: Sleeping 10 minutes...
PicBlog.rb esta disponible para download, y esta protegido por la Licencia General GNU
Album es un script escrito en perl para generar galerias de imagenes para poner online. Con la ayuda de album es que hice las galerias que se ven en este website. Al principio, el 'theme' de las galerias no tenia mucho que ver con el diseno general de la pagina, asi que quise modificar los colores y el layout general para que concuerde mejor. Me gusto la idea que tome del gThumb que los thumbnails sean enmarcados como si fuese una diapositiva, pero no pude encontrar un theme para el album que hiciera eso, aunque hay varios temas disponibles. Asi que me dispuse a disenar el mio. Basado en un theme ya escrito por Helmar Wieland llamado Floating, que usa CSS en lugar de tablas para el layout, es que base el SlideCSS.
Para instalar este theme y generar un album con las imagenes contenidas en el directorio gallery_dir
[user@host]$ mkdir Themes [user@host]$ cd Themes [user@host]$ tar xvfz SlideCSS.tgz [user@host]$ cd .. [user@host]$ album -theme Themes/SlideCSS gallery_dir
SlideCSS esta disponible para download, y esta protegido por la Licencia General GNU
Mi implementacion de un Wiki escrito en Perl. Que es un Wiki? es una herramienta que permite trabajar concurrentemente sobre uno o varios documentos. El Wiki original fue escrito por Ward Cunningham y la version original esta todavia en linea. Existen cientos de implementaciones de Wiki, escritas en C, php, C++, java y varios lenguajes mas. Elegi escribirlo en Perl por ser uno de los lenguajes mas populares para escribir programas CGI y por ser uno de los que mas uso habitualmente.
Y para que escribir *otro* Wiki mas? primero que todo, para aprender! una de las razones principales fue que queria tener la posibilidad de agregar imagenes y los Wikis que lo hacen son muy grandes. En fin, queria aprender, que sea algo chico y portable, que permita agregar imagenes y que sea 'seguro' para el servidor adonde reside.
Pwiki esta protegido por la Licencia Publica de GNU: GPL. Esto te permite modificar el codigo original libremente, y me libra de toda responsibilidad debido a su uso.
Caracteristicas:
El codigo fuente esta disponible "inline", lo que significa que el propio programa entrega su codigo al pasarle el parametro 'self'.
Para verlo en funcionamiento, visita la PrimerPagina, adonde se explica otro poco sobre como usarlo. Marcelo (xanthus) Ramos preparo un HowIdidIt de la instalacion paso por paso. Gracias xanthus!
Martín es un usuario más de un servicio de internet de broadband o banda ancha, mas comunmente llamado ADSL (Asymmetric Digital Subscriber Line o subscripcion de linea digital asimetrica). Normalmente, estos servicios le otorgan al usuario de un IP dinamico (una direccion digital unica en el internet), una direccion que cambia en cada nueva conexion.
Su necesidad se basa en que él esta ejecutando algun tipo de servidor en su computador (ssh, http, ftp) y necesita accederlo desde otra computadora en otro lugar, por ejemplo desde la casa de su amigo. Como el IP de su conexion cambia, es imposible saber que direccion tendra. La solucion es un pequeño script que desde su maquina le dice a un servidor conocido de su IP. El servidor almacena el IP y ahora esa direccion se encuentra accesible al internet.
Este script podria reemplazar a dyndns, pero no actualiza dns, solamente devuelve el IP guardado previamente
wget http://mi-servidor-estatico.com/cgi-bin/ipsaver.pl?username=192.168.0.2
De esta manera, el IP se almacena en el servidor y esta disponible para accederse desde cualquier otro lugar, y desde cualquier browser, como:
http://mi-servidor-estatico.com/cgi-bin/ipsaver.pl?username
Retornara el IP almacenado previamente: 192.168.0.2
Para instalarlo, es necesario tener, como minimo, acceso ftp al server http.
En la instalacion se debe poner el script en un directorio ejecutable (p.ej. /cgi-bin) y setear sus permisos de ejecucion.
Muy importante es modificar el script para que apunte al directorio de datos del servidor (linea 22), adonde
es necesario crear un archivo, con el nombre ipfile. Debe tener permiso de escritura (chmod 666 ipfile).
Vea su código fuente
Este script esta protegido por la Licencia Publica General de GNU."En Argentina, particularmente en las universidades, aun no se ha tomado conciencia de la implicacion que conlleva el uso de software propietario dentro de las mismas, tanto en materia economica como en materia de independencia tecnologica. La aparicion del software libre nos abrio un nuevo horizonte en lo que respecta a lo que se venia pensando hasta el momento, por razones coyunturales, de lo que significaba el software en una computadora. Es la idea de este trabajo dar una breve introduccion sobre las ventajas y desventajas del software libre dentro de la universidad. Se trato de ser lo mas coloquial posible como asi tambien dar ejemplos concretos de lo que aqui se enuncia. No nos adentraremos a explicar la definicion de lo que es y no es software libre. Eso queda fuera de este trabajo y se pueden encontrar articulos interesantes en la web que hablan al respecto. En compañia de este articulo viene un cdrom con una amplia gama de productos bajo esta nueva filosofia para la plataforma Windows, invitando inmediatamente a quien lo desee a probarlos."
Acceso en linea del proyecto
El tema de la creacion de minidistribuciones en diskette es fascinante para mi y siempre quise empezar a investigar el tema. Minibox 0.1 es el resultado de mi primer intento :)
Está creado con Busybox y Tinylogin los cuales usan la biblioteca uClibc
Minibox 0.1 no es realmente útil, es sólo un experimento. Con el tiempo tal vez se me ocurran ideas para crear a partir de Minibox algo realmente útil
Sugerencias e ideas bienvenidas: mramos(a)montevideo.com.uy (borrar el 'SACAR' antes de enviar!)
En mi caso, el único hasta el momento, encontré un programa que
captura imagenes en tiempo real desde la webcam y crea un servidor de
imagenes (mjpeg) adonde cualquiera puede conectarse y 'ver' lo que mi cámara
esta viendo. Todo muy lindo, excepto que mi cámara no respondía como yo
quería. Me mostraba una imagen cortada al medio, blanco y negro y la parte
superior era tres mini-imagenes de la camara. Una cagada.
Despues de un par de dias de probar configuraciones y leer interminables
threads de mailing lists, decidi inspeccionar y ver que era lo que estaba
*tan* mal con mi equipo. Me puse a mirar el source code, el programita
propiamente dicho en C.
Unos dias mas y muchas horas de lectura y experimentos, me llevaron a la
conclusion que mi programa estaba poniendo las imagenes en linea exactamente
como salian de la camara, en formato YUV, cuando el programa las esperaba en
RGB. Por eso la distorsion. En fin, encontre en otro programa del mismo
estilo una subrutina para cambiar de YUV a RGB y la implemente (desde C++) en
el source code. Y algunas horas mas tarde estaba funcionando! Mi propio hack
a un programa en C bajo Linux!
Con esto no quiero decir que cada uno que algo no le funcione se pase las
horas que yo me pase para arreglarlo! Solo que es posible hacerlo.
El programita del que hablo es el Camserv V.0.5.0, escrito por Jon
Travis, un video stream server a traves del web. Una herramienta muy util que
solía usar frecuentemente en la seccion Realtime from home. El programa, como todo servidor, no es gráfico y solo tiene un
archivo de configuracion, en su mayoria facil de entender. Tiempo despues de
modificar el programa, encontre otra version con la correccion que yo le
hice, y la ultima version ya lo incluye.