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 :-(.

29 agosto 2007

Libro "Producing Open Source Software"

Este verano he aprovechado las vacaciones para leerme el libro "Producing Open Source Software, How to Run a Successful Free Software Project", escrito por Karl Fogel, una de las personas responsables del desarrollo de Subversion.
Está disponible el PDF para descarga gratuita.
Es bastante completo, dando un repaso a todo lo que necesitas tener en cuenta si quieres montar un proyecto open source: infraestructura, gestión de la gente y la comunicación, licencias, voluntarios, releases, etc.
Muchos de los consejos que ofrece también se pueden aplicar a la producción de software propietario. Quizás la única pega es que está enfocado a proyectos open source de gran envergadura.

26 julio 2007

Web Trend Map 2007, para no perderse en la web

Con formato de plano de metro, el Web Trend Map 2007 representa los 200 websites más populares de la web, ordenándolos por categoría, popularidad, éxito, etc. y relacionándolos entre si.


Tienen disponible una versión en PDF en A3, que queda muy bien al imprimirlo, para colgarlo como poster geek.

17 julio 2007

Evolución temporal de las distribuciones Linux


He visto en Barrapunto un enlace a un diagrama sobre la evolución temporal de las distribuciones Linux. Me ha traido muy buenos recuerdos, de cuando empecé a trabajar allá por 1993 con Slackware y en 1994 con RedHat. Qué tiempos!
También se incluía el enlace al famoso poster de Oreilly sobre la historia de los lenguajes de programación (disponible en PDF), que ya conocía pero voy a dejar también anotado aquí para futuras referencias.

10 julio 2007

Web 2.0 Awards 2007


Aunque salieron publicados el 9 de mayo, aún no he tenido tiempo para revisar con detalle todos los Web 2.0 Awards 2007 publicados por SEOmoz.
Me parece una lista muy interesante, la dejo aquí anotada pendiente de poder sacar un poco de tiempo, que seguramente no podrá ser hasta las vacaciones del verano :-)

08 junio 2007

SpaceTime, navegador en 3D


Vía Genbeta llego a SpaceTime, un navegador en el que en vez de tener las páginas en pestañas, las muestra en tres dimensiones.
Lo hemos estado probando un poco y es atractivo visualmente, y quizás en el futuro los navegadores vayan por ahí, pero por ahora no deja de ser una prueba de concepto.
Lo que no conseguimos hacer es cambiar la perspectiva de la vista, algo que podría ser muy interesante si tienes muchas páginas abiertas, poder echar un vistazo desde arriba.

25 mayo 2007

eBox, servidor para pymes


Alguna vez lo habíamos comentado en las típicas charlas de café, pero el otro día lo vi anunciado en Barrapunto: eBox, un servidor que instalado en una Pyme les ofrece una gran cantidad de servicios de red: firewall, proxy, servidor de archivos, de mail, VPNs, etc. con una sencilla administración por web, todo integrado y fácil de instalar.
Lo veo muy interesante para pequeñas y medianas empresas que no pueden permitirse comprar los productos equivalentes de pago, y que no tienen personal con conocimientos suficientes para descargarse, instalar y configurar los equivalentes en open-source.

17 mayo 2007

Google Notebook

Para ir capturando fragmentos de páginas cuando vas buscando información sobre algún tema, hasta ahora utilizaba Clipmarks, pero hoy he estado probando Google Notebook, y me ha gustado bastante.
Instalar un plugin para Firefox, y ofrece un interfáz bastante ágil mediante AJAX. Me ha parecido muy rápido de capturar y organizar los distintos fragmentos.
Con Clipmarks me quedo con su funcionalidad de seleccionar fragmentos de una página para imprimir, que es algo que no he visto que se pueda hacer con Google Notebook.

15 mayo 2007

La importancia de la tipografía

Vía Microsiervos llego a este post titulado Tipografía para principiantes: Algunos apuntes y 10 consejos, donde explica de manera bastante clara la importancia de la tipografía a la hora de generar textos de aspecto impecable.
Tiene al final del post una serie de enlaces también muy interesantes, para ampliar más sobre este campo, como el Manual sobre tipografía.

10 mayo 2007

JavaFX, el tercero en discordia

Ya tardaba mucho. Ayer por fin Sun anunción en el JavaOne a JavaFX, un lenguaje de scripting (basado en Java, como no), destinado a competir con el Apollo de Adobe (Flash), con AJAX (JavaScript) y con el recién lanzado Silverlight.
Como era el día del anuncio, ayer la web de la implementación abierta del lenguaje, OpenJFX, estaba caida.

08 mayo 2007

Acortando URLs con fon.gs

Al estilo de TinyURL, este servicio de Fon permite generar una URL cortita para una URL muy larga difícil de recordar y de enviar por mail. Tiene la diferencia que mientras TinyURL te genera aleatoriamente la URL, fon.gs te permite poner tu el nemotécnico, como http://fon.gs/dpinya_blog.
La única pega que le veo es que si se populariza mucho, las URLs ya no serán tan cortas, estarán todas pilladas :-)

20 abril 2007

Instalar InternetExplorer en Linux

Siguiendo un artículo de Barrapunto sobre por qué se sigue forzando el uso de Internet Explorer, he llegado a IEs4Linux, un script que te permite instalar en Linux el IE5.01, IE 5.5 e IE 6.
El proceso es muy rápido y simple: en Fedora, instalar los RPMs del Wine y cabextract, descargar el tar de ies4linux y ejecutar un script. Este script te pregunta qué versiones quieres instalar, la ruta y donde quieres poner los enlaces, y se descarga automáticamente e instala los ficheros de la web de Microsoft.
Me va a venir muy bien, porque tenemos algunas aplicaciones que necesitan IE para funcionar (por unos OCXs de firma digital que utilizamos), y hasta ahora tenía que conectarme a un servidor Windows por Terminal Server y lanzar el IE allí.

11 abril 2007

Info introductoria sobre criptografía

Esta semana he descubierto, por casualidad, una página con un muy buen resumen sobre todos los conceptos sobre criptografía, certificados, firmas, CAs, etc. que tanto utilizamos en nuestras aplicaciones, y que me servirá muy bien como referencia para la gente que se incorpora al equipo de desarrollo: Introduction to Public-Key Cryptography.

04 abril 2007

Certificados digitales en disquetes de 3.5"

La semana pasada fui a recoger un certificado a la Autoridad de Certificación de la Generalitat Valenciana, y cual fue mi sorpresa cuando me lo entregaron (eso si, con muy poco papeleo y en muy poco tiempo) en un disquete de 3.5.
En un primer momento, incluso dudé si cogerlo porque no recordaba si en el ordenador de casa incluso tenía disquetera de 3.5 para leerlo. Me lo llevé, pero con la duda de si podría leer los datos.
Y efectivamente, he intentado leerlo en tres ordenadores distintos y ha fallado en los tres. Ahora recuerdo lo poco fiables que eran.
Grabarlos en un CD costaría muy poco tiempo (en total serán menos de 100 KB), y así se asegurarían de que se pueden leer sin problemas.

27 marzo 2007

16 marzo 2007

Explicación sobre la Web Semántica en castellano

El artículo titulado La Web Semántica: además de metadatos (ontologías), lógica y confianza, de Miguel Ángel Abián, es de los mejores a nivel introductorio que he encontrado para explicar la Web Semántica, con ejemplos prácticos de que no estamos hablando sólo de ontologías.

12 marzo 2007

Comparación de frameworks para aplicaciones web en Java

Hace poco he estado impartiendo un cursillo de formación sobre arquitecturas Java, y uno de los puntos que hemos tratado ha sido el framework Spring para el desarrollo de aplicaciones web.
Como parte del trabajo de documentación, he encontrado algunos enlaces interesantes sobre comparativas de los diferentes frameworks existentes para Java:

13 febrero 2007

Wikipedia en castellano llega a los 200.000 artículos


Si hace menos de un año ya comentábamos que la Wikipedia en castellano había llegado a los 100.000 artículos, ahora acaba de llegar a los 200.000.
Es increible lo rápido que ha crecido, y se ha convertido en la segunda por detrás de la inglesa, claro.
Desde que conocí la Wikipedia he creado un par de artículos, y he participado en cinco o seis, un grano de arena para llegar a estos 200.000.
A por los 400.000!!!

09 febrero 2007

Instalar una HP LaserJet 2600n en Fedora Core 5

Para instalar sin ningún problema una impresora HP LaserJet 2600n en Fedora Core 5 hay que actualizar los drivers que vienen por defecto. En http://foo2zjs.rkkda.com/INSTALL están las instrucciones paso a paso.

Mylar: integrar Bugzilla en Eclipse

Recientemente he descuierto un plugin para Eclipse muy interesante: Mylar, destinado a integrar el servidor de gestión de errores e incidencias Bugzilla.
De entrada necesita Eclipse 3.2, y fue una buena excusa para actualizarme desde la 3.1, que nunca encontraba el momento para hacerlo.
No he tenido mucho tiempo para probarlo a fondo, pero me parece un paso más en el proceso de tener todas mis herramientas de desarrollo integradas dentro de Eclipse: el primer paso importante fue el CVS, después un connector con bases de datos, diseño UML, etc.

24 enero 2007

Tests de usabilidad: con 5 basta

He visto un artículo ya antiguo (del 2000) de Jakob Nielsen titulado Why You Only Need to Test With 5 Users, donde comenta que para encontrar la mayoría de los errores de usabilidad de un interfaz, basta con chequearlo con 5 usuarios. Más, es desperdiciar recursos...