Archivo

Archivo para Mayo, 2010

Codec war, untangled

Jueves, 20 de Mayo de 2010

Codec war, untangledHe dicho alguna vez que me encantan estas chorradas?

YouWoTMA General , ,

Ocupado

Domingo, 16 de Mayo de 2010

Esta semana he estado ocupado con otros proyectos, no he podido desarrollar nada, pero he visto un par de cosas interesantes:

  • Por un lado, en Minefield, ya tenemos el valor css3 “calc”. (bug en bugzilla). De momento no esta completo (por eso de momento de llama -moz-calc), hay algunos casos que fallan (en concreto, los casos en los que hay un valor porcentual y este depende del layout), pero se esta trabajando en arreglar esto. Estoy deseando que salgan los nuevas versiones de los navegadores mas importantes y que remplazen (esto esta bien escrito? el corrector ortográfico no lo encuentra) a los anteriores para poder usar esto. Los que halláis hecho alguna vez un diseño parte flexible parte fija, sabéis el voodoo que hay que hacer para que eso funcione como quieres, a no ser que uses -moz-box-flex y -webkit-box-flex los cuales ya se esta trabajando en agrupar bajo un standard.
  • Hace unos de días estuve haciendo un campo de texto autoexpandible (estilo facebook), y la nueva función de Minefield (que no podremos ver hasta Firefox 4.0) que permite  cambiar el tamaño de las cajas de texto impedía que funcionara correctamente. El webkit esta la propiedad de CSS “resize” que, cuando toma su valor “none” hace desaparecer los tiradores que hacen sirven para cambiar el tamaño al campo de texto. En Minefield no parecía funcionar así que después de un par de búsquedas en bugzilla descubrí que si que existe, pero que de momento se llama -moz-resize ya que la especificación dice que si después de cambiar el tamaño del textarea el valor “resize” cambia a “none” el textarea debería de volver a su tamaño original. Básicamente es por si alguien le pasa esto que puede probarlo así, ya que proximanente se corregirá esta diferencia y la propiedad pasara a llamarse resize como en webkit.
  • A parte, hoy he probado el clousure compiler de Google. Tenia que reducir un montón de javascript para reducir el tiempo de descarga, elegí el de Google por que me llamo la atención leer hace unos días que jquery había cambiado su compilador por este, así que lo he probado y me ha impresionado mucho, sobre todo por lo fácil que es de usar y los pocos problemas que da (15 minutos y todo listo). Resultado: el javascript reducido a la mitad. combinado con gzip, el descenso del tamaño es brutal.

YouWoTMA General

XRefresh linux server

Domingo, 9 de Mayo de 2010

Como comente en la otra entrada, un servidor para XRefresh.

XRefresh es una extension de firebug/firefox que, junto con un servidor corriendo en el sistema operativo, detecta cuando los archivos de un directorio son cambiados y actualiza la pagina. Tiene varias opciones bastante “utiles”: logear los archivos que han cambiado en una pestaña de firebug, la posibilidad de hacer un “soft refresh” del css o js, es decir, si solo has cambiado un archivos css actualiza solamente el css sin necesidad de recargar la pagina entera (mas rápido, y útil para paginas dinámicas que pueden fallar si actualizas) y la posibilidad de utilizar varios proyectos, aunque no lo he implementado en el servidor.

El servidor puede estar ejecutándose en otra maquina en la red local o en Internet (cambiar dirección en about:config), y soporta a varios clientes a la vez, así que es genial para trabajos colaborativos (se actualizaría en todos los pc cuando tu o otra persona cambia algo)

El servidor es un solo script en python que escuchara modificaciones en los archivos de uno o varios directorios que especifiques, pudiendo elegir una expresión regular para excluir archivos y una para seleccionar los archivos que quieres incluir.

Modo de uso: xrefresh-server [options] dirname [dirname ...]
 Opciones:
 -e [regexp] - Excluir rutas que encajan con regexp. Valor predeterminado: '^(\.svn|\.hg|.*~|.*\.(zip|rar|jar|gz|gz2|bak|tmp|pyc|pyo|log))$'
 -i [regexp] - incluir solo rutas que encajan con regexp
 -p [puerto] - Puerto a escuchar (default 41258) - se puede cambiar el puerto del cliente en about:config
 -h          - Muestra la ayuda (esto)
Ej:
 Escuchar cambios en /var/www en archivos que acaban en .css cuya ruta completa no contiene "cache"
 $xrefresh-server -e 'cache' -i '\.css$' /var/www

Notas:
 Ten cuidado con bucles infinitos. Cuando el navegador actualiza la pagina, muchos
 archivos pueden ser modificados en el servidor: logs, cache, bases de datos sqlite, etc...
 Esos cambios pueden generar un bucle infinito, usa la opción -e para excluir estos archivos
 o la opción -i para incluir solo algunos archivos

La licencia es GPL v3. Puedes descargarlo aquí.

Para escuchar eventos en el sistema de archivos, utiliza pyinotify, asi que tiene que estar instalado. En ubuntu/debian y derivados:

sudo apt-get install python-pyinotify

Dale permisos de ejecución si no tiene. Probablemente quieras moverlo o crear un enlace simbolico a un sitio dentro del PATH:

cd /usr/bin
sudo ln -s /ruta/a/xrefresh-server xrefresh-server

Si lo usas mucho puede que quieras iniciarlo al inicio. Usa un script de init.d o el gestor de aplicaciones al inicio de tu gestor de ventanas si tiene.

Si quieres puedes modificarlo y añadir alguna cosa mas como soporte para proyectos, interfaz gráfica…

Nota: No confundir con el comando de X xrefresh

Edit: el proyecto esta en github por sugerencia del autor de la extensión: http://github.com/YouWoTMA/xrefresh-server

YouWoTMA General

Retomo el blog?

Domingo, 9 de Mayo de 2010

A partir de ahora voy a tratar de escribir todos los domingos un post a modo de “autoagenda” en la que voy a ir escribiendo las cosas que he hecho durante la semana, relacionadas con el mundo de el software libre. El motivo no es uno solo, son varios:

  • Por un lado, poner objetivos para la semana que viene, para poder organizarlos mejor, y obligarme a cumplirlos.
  • Por otro lado, tratar de recopilar en un sitio todos los enlaces y cosas interesantes que encuentro. En vez de publicarlas en twitter las pongo aquí, y dejo de floodear el timeline de mis followers con enlaces.
  • Ademas, quiero informar y obtener feedback de los proyectos en los que trabajo. Hay varios proyectos pequeños que no he publicado por pura vagancia o por no sabes si le va a ser útil a alguien.
  • Y por ultimo, y razón principal: paso mucho tiempo esperando y viajando en el autobús (llegando a una hora y media algunos días) en los que no hago nada mas que escuchar música. La idea es utilizar este tiempo para leer el reader, twitter y escribir estas entradas en el blog. (Por cierto, el teclado físico de mi ONE es… awesome).

Asi que empiezo contando algunas cosas que he hecho esta semana y los meses anteriores:

  • He hecho un servidor en python para xrefresh (una extensión que recarga la pagina cada vez que se modifica un directorio, muy recomendada si tienes dos pantallas), que solo tenia servidor para windows (c#) y osx (ruby). Es muy básico, no tiene todas las características del servidor en windows/mac (creo, por que no he probado ninguno de los dos), pero funciona bien para mis necesidades. Esto también lo publicare pero tengo que limpiar un poco el código, y quiero ver el servidor windows antes, para ver si implemento alguna característica útil
  • He hecho un script para limpiar automáticamente mi escritorio y mi carpeta de descargas, me esta resultando realmente útil tener mi escritorio y carpeta de descargas siempre limpio sin tener que hacer nada (esto lo tengo que publicar un día de estos)
  • He hecho unos cambios a un script de nautilus antiguo, para que vuelva a funcionar. Consiste en un simple script en python para buscar subtitulos en opensubtitles.org que permite buscar subtitulos directamente con el botón derecho de nautius. Es algo genial para los que usan un reproductor que todavía no tiene esta característica (como vlc). Descarga aquí. Ya le envié un e-mail al autor y lo ha actualizado en gnome-look. Software libre rocks.

Cosas que he hecho hace tiempo, y quería comentar:

  • Hace eones, en las largas horas libres (y no tan libres) que tengo cuando voy a la universidad, he modificado mi ubuntu para crear un engendro blasfemo que imita la apariencia de osx (pero es mas libre y seguro!): Básicamente es el tema “mac4lin” para GTK/Metacity, con un hallazgo interesantes: La pantalla de mi portátil es bastante baja (esto es, que no tiene muchos pixeles de alto). El menu global es genial para poder ahorrarse unos pixeles en la pantalla, y limpiar un poco todo. Descarga aquí (tal vez prefieras compilarlo tu mismo, no tiene muchas dependencias). Esta es (junto con docky, que ya lo tenia antes) la única cosa que he dejado después de actualizar a lucid.

    engendro blasfemo

    engendro blasfemo

  • Hace millones de enones, cree un cliente ftp incremental (que recuerda que archivos ha subido antes, y solo sube los nuevos o que han cambiado, y borra los que han borrado). He implementado un sistema de re-sincronización, que permite re-sincronizar con el servidor sin tener que descargar/subir todos los archivos de nuevo. Es muy útil cuando trabajas con proyectos grandes (probado con un proyecto de mas de 1500 archivos).
  • Tenia que escribir mas cosas aquí, pero me esta entrando pereza. La próxima semana igual.

Ala, he hecho un post con 3 listas, me encantan las listas. Y los paréntesis.

YouWoTMA General

Manten limpio tu escritorio

Domingo, 9 de Mayo de 2010

Hace unos días hice este  sencillísimo script, que me sorprendió por lo útil que ha resultado ser.

Consiste simplemente en un script que borra o mueve los archivos de una carpeta al cabo de un tiempo. Por que es útil esto? Para mi es útil para dos cosas:

  • Normalmente lleno el escritorio de cosas que solo uso una vez: una captura de pantalla que tengo que enviar, unas fotos que he extraído para verlas, un parche que tengo que publicar, etc….
  • Mi carpeta de descargas se llena rápidamente con cosas que descargo y me cuesta mucho encontrar los archivos que acabo de descargar. Moviéndolos a otra carpeta cuando han estado ahí mas de 24 horas me ayuda a mantenerla ordenada

Antes tenia un script que me borraba todo menos los lanzadores de aplicaciones (archivos .desktop), pero requería que lo ejecutara manualmente cada mes, y eso era una carga muy pesada.

Una opción podría haber sido poner un trabajo en cron que moviese o borrase todos los archivos, pero podría ocurrir que pusiese algo ahí y que el script se ejecutara justo después, claramente hace falta algo mas complejo. La solución es trivial, pero si no queréis hacerlo vosotros, aquí esta el scrpt. Básicamente tiene:

  • Tiempo mínimo cofigurable
  • Posibilidad de borrar los archivos o moveros a otra carpeta

La configuración es sencilla, hay instrucciones en el script (comentarios, wooooah!)

Nota: para saber si se ha modificado el script hace cada vez que se ejecuta el md5 de los archivos. Eso mata al disco duro, a la CPU, a la RAM y a la tinta de la impresora si lo queréis usar para archivos grandes. Mejor modificadlo para que use la fecha de ultima modificación.

YouWoTMA General

Tema basado en iNove