22 mayo 2008

Curso de tratamiento de imágenes con GIMP


Suelo utilizar habitualmente el GIMP para hacer pequeños retoques de imágenes, básicamente retoques para presentaciones, y modificaciones de botones, pestañas, etc. para aplicaciones web.
Vía Barrapunto he encontrado este curso que tiene bastante buena pinta.

21 mayo 2008

Sacarle los colores a una web

Lo he visto en Genbeta, mooColorFinder te permite conocer los códigos hexadecimales de los colores presentes en una web.
Me parece una de esas herramientas útiles que conviene tener anotadas por si se presenta la ocasión.

Tres años no es nada

Al ir a escribir una entrada (que pondré a continuación) me he dado cuenta que el 29 de abril pasado este blog cumplió tres años.
Como últimamente no escribo demasiado, cosa que espero poder ponerle remedio, se me había pasado.
Tres añitos... como pasa el tiempo.

28 abril 2008

Popularidad de los lenguajes de programación, abril 2008

Ya lo había comentado hace tiempo (concretamente en enero del 2006), y acabo de ver la estadística actualizada.
Tiobe hace un análisis mensual automático de la popularidad de los lenguajes de programación. En abril de 2008 está así:

  • Java: 20,52%
  • C: 14,68%
  • Visual Basic: 11,69%
  • PHP: 10,32$
  • C++: 9,94%
  • Perl: 5,93%
  • Python: 4,53%
  • C#: 3,83%

La gráfica de tendencia es la siguiente:

03 abril 2008

Aprobado OOXML como estándar ISO con múltiples irregularidades

Se veía venir, Microsoft ha estado presionando hasta que ha conseguido que se apruebe OOXML como estándar ISO, a pesar de los muchos problemas técnicos que tiene esta especificación y que están sin resolver, y los oscuros movimientos e irregularidades que ha habido durante todo el proceso.

18 marzo 2008

Conocer el origen de un mail

Vía el blog de Juan Tomás García llego a una herramienta para conocer de forma aproximada de donde viene un mail: Trace Email Address Source en WhatIsMyIPAddress.com.
En un form pegas todas las cabeceras de un mensaje de mail, y analizando las cabeceras Received traza la ruta hasta el origen, geoposicionándotelo en un mapa.
Es aproximado, porque cuando entran en juego los proveedores de Internet la posición geográfica puede no ser muy ajustada, y no sirve para los mensajes de spam que falsean cabeceras, pero es curioso.

21 febrero 2008

Peleando con winmail.dat

De vez en cuando recibo mails enviados por gente que tiene Outlook, con un attachment winmail.dat que mi cliente de correo (Evolution) no puede gestionar (sólo Outlook puede).
Habitualmente le pido el emisor que vuelva a enviármelo en texto plano (no HTML ni RTF), pero hoy tenía prisa y he buscado como tratar estos winmail.dat.
He encontrado dos entradas interesantes:

Y una utilidad, WMDecode, que extrae el contenido de los winmail.dat.

Edición del 8/may/2008: existe un plugin para Thunderbird que te permite ver los adjuntos winmail.dat:
https://addons.mozilla.org/en-US/thunderbird/addon/4433

19 febrero 2008

Publicadas las especificaciones de los formatos de Office

Vía Genbeta veo que por fin Microsoft ha publicado las especificaciones de los formatos binarios de Office, que llevaban tanto tiempo siendo secretas e implementadas por otros como OpenOffice supongo que por fuerza bruta.
Me llama la atención que también ofrecen las espeficicaciones en PDF además de en XPS, eso sí, con una tipografía poco afortunada, por ejemplo la del PowerPoint apenas se puede leer con comodidad.
Seguro que esto hace que la próxima versión de OpenOffice pueda importar a la perfección ficheros realizados con Microsoft Office, que actualmente aún hay pequeñas cosas que no entiende bien.
Actualización: post de Joel Spolsky sobre por qué estas especificaciones son tan complicadas.

04 febrero 2008

Libro "Como sobrevivir a la SGAE"

El libro Como sobrevivir a la SGAE de Arturo Quirantes, es una buena referencia para la gente que no tiene claro todo el tema de legalidad en torno a la copia privada y las descargas en P2P.
Muy bien escrito, se lee rápido (son cien páginas) y contundente. Como resumen podría dejar:

  • La copia privada es un derecho
  • Descargarse material para uso privado es legal, se pongan como se pongan

Muy en el estilo del Copia este libro de David Bravo.

29 enero 2008

CAPTCHAs con gatos

A todo el mundo le molestan los CATPCHAs(Completely Automated Public Turing test to tell Computers and Humans Apart), pero creo que son algo necesario para evitar abusos automáticos por parte de spamers, virus, etc.
Sin embargo, he visto un artículo en Hispasec donde hablan de una alternativa llamada Asirra (Animal Species Image Recognition for Restricting Access), en la que te muestran un conjunto de imágenes de gatos y perros, y tienes que seleccionar todas las que son gatos.


Creo que es más fácil (algunos CAPTCHAs cuestan), y parece que los CAPTCHAS no son tan seguros (Breaking a Visual CAPTCHA, Using AI to beat CAPTCHA and post comment spam).

17 enero 2008

Probar diseños web en múltiples navegadores con Browsershot

Acabo de descubrir en hacks: browsershots una web muy interesante llamada Browsershots.
Le das una URL y te genera un pantallazo con como se ve esa URL con distintos navegadores (y muchos de ellos en distintas versiones):

  • Para Linux: BonEcho, Dillo, Epiphany, Firebird, Firefox, Flock, Galeon, GranParadiso, Iceape, Iceweasel, Kazehakase, Konkeror, Minefield, Mozilla, Navigator, Opera, Phoenix, SeaMonkey.

  • Para Windows: Firefox, Flock, K-Meleon, MSIE, Navigator, Opera,
    Safari, SeaMonkey.

  • Para MacOSX: Firefox, Safari.

Muy útil para ampliar el rango de los navegadores en los que probar el aspecto de un diseño sin necesidad de tenerlos instalados todos.

05 diciembre 2007

Cinco formas de trazar la ejecución en Java

Interesante artículo recopilatorio sobre como averiguar lo que está pasando en una aplicación Java.
Repaso breve desde la depuración clásica con breakpoints o incluso System.out.println() hasta utilizar proxies dinámicos o programación orientada a aspectos.

15 noviembre 2007

Mozilla Prism, lanzador de aplicaciones web

Prism es una prueba de concepto de Mozilla Labs para explorar nuevas formas de interaccionar con las aplicaciones web.
En este caso, consiste en un lanzador de aplicaciones web, que te permite integrar en el escritorio y en la barra de menús inicial el lanzamiento de aplicaciones web.



Una vez lanzadas, las aplicaciones no aparecen en una ventana típica de navegador, sino que muestran su propia ventana de aplicación.



Por debajo utiliza al motor del navegador, sus preferencias, etc., pero te quita todas los menús y barras de navegación que no necesitas para ejecutar una aplicación concreta.
Por ahora, sólo para Windows, pero prometen versiones para Mac y Linux.

06 noviembre 2007

Consejos para mejorar el rendimiento de las apps web

Best Practices for Speeding Up Your Web Site es un compendio de consejos recopilado por el Exceptional Performance group at Yahoo!, con el objetivo de acelerar el rendimiento del front-end de las aplicaciones web.
El índice es:
  1. Make Fewer HTTP Requests
  2. Use a Content Delivery Network
  3. Add an Expires Header
  4. Gzip Components
  5. Put Stylesheets at the Top
  6. Put Scripts at the Bottom
  7. Avoid CSS Expressions
  8. Make JavaScript and CSS External
  9. Reduce DNS Lookups
  10. Minify JavaScript
  11. Avoid Redirects
  12. Remove Duplicate Scripts
  13. Configure ETags
  14. Make Ajax Cacheable

04 octubre 2007

Como saber con qué JDK se ha compilado una clase Java

Me he encontrado con una clase Java de la que no tenía ni idea de con qué JDK había sido compilada, y ante la alternativa de tener que probar con varios hasta conseguir el mínimo en que funciona, he encontrado este truco para mostrar la versión de especificación y qué JDK mínimo se necesita.
El código de la clase, que dejo aquí anotado para futuras referencias:

import java.io.*;

public class Version {
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.err.println("Usage: java version <.class file>");
System.exit(1);
}

if (! new File(args[0]).exists()) {
System.err.println(args[0] + " does not exist!");
System.exit(2);
}

DataInputStream dis = new DataInputStream(
new FileInputStream(args[0]));
int magic = dis.readInt();
if (magic != 0xcafebabe) {
System.err.println(args[0] + " is not a .class file");
System.exit(3);
}

int minor = dis.readShort();
int major = dis.readShort();
System.out.println("class file version is " + major + "." + minor);

String version = null;

if (major < 48) {
version = "1.3.1";
} else if (major == 48) {
version = "1.4.2";
} else if (major == 49) {
version = "1.5";
} else if (major == 50) {
version = "6";
} else {
version = "7";
}
System.out.println("You need to use JDK " + version + " or above");
}
}

25 septiembre 2007

Las bases de datos relacionales están obsoletas

Vía Barrapunto he estado echandole un vistazo al artículo The End of an Architectural Era (It's Time for a Complete Rewrite), donde se comenta que debido a los avances en hardware, los actuales sistemas de gestión de bases de datos, basados todos en arquitecturas desarrolladas hace 25 años, se han quedado obsoletos.
Propone varios cambios "de base":

  • Bases de datos contenidas completamente en memoria
  • Redes grid de alta disponibilidad, que eliminan la necesidad de usar lentos logs para protegerse de problemas
  • Eliminar el lenguaje SQL, en aras de otros lenguajes más simples y que se integren mejor con los lenguajes de programación
  • Etc.
Siguiendo los enlaces de la noticia, encuentro varios artículos sobre problemas con grandes bases de datos recopilados por O'Reilly Radar: Second Life, Bloglines, Flickr, Amazon, etc.

14 septiembre 2007

Arquitecturas en alta disponibilidad, pero siguen fallando

El martes pasado estaba leyendo en la web sobre arquitecturas en alta disponibilidad de aplicaciones reales (muy interesante, por cierto), y al revisar lo que cuentan sobre la arquitectura de Wikipedia, pum, me salta este error:

Es la primera vez que me ocurre en Wikipedia, pero a veces la alta disponibilidad no es tan alta :-)
Claro que debía ser el día de los errores, porque a los poco minutos cazo este en el blog de Enrique Dans:

11 septiembre 2007

Para qué sirve la tecla SysReq

Hasta ahora, nunca le había encontrado utilidad a la tecla SysReq, la que está en los teclados al lado del F12. Pero con este truco visto en Barrapunto sobre Reiniciar Linux de forma segura ya le encuentro una razón de ser (al menos en sistemas Linux).
Alguna vez me ha pasado, desde que tengo Linux instalado en el portatil con un teclado y ratón conectado por USB, que se quedan bloqueados y no responden (ni teclado ni ratón). Con este truco, se puede reiniciar el sistema ordenadamente sin tener que darle al reset:
  • Pulsar Alt+ SysReq y mantenerlos pulsados.
  • Teclear RSEIUB, dejando tiempo entre tecla y tecla, y el sistema se reiniciará, así de simple.
Aquí está lo que hace cada tecla con detalle:

  • R devuelve el control al teclado.
  • S sincroniza.
  • E manda a los procesos la señal term.
  • I manda a los procesos la señal kill.
  • U desmonta los sistemas de ficheros.
  • B reinicia el sistema.

En esta entrada de la Wikipedia explica todas las combinaciones de teclas posibles, y algunos nemotécnicos para recordar la secuencia de teclas a pulsar.

05 septiembre 2007

Linux: The 0.01 Release

He encontrado en Kernel Trap un artículo muy interesante titulado Linux: the 0.01 Release, donde comenta el nacimiento y primeros mensajes en torno a Linux.
From: Linus Benedict Torvalds [email blocked]
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Date: 25 Aug 91 20:57:08 GMT

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)

Linus (torva... at kruuna.helsinki.fi)

PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.