Disponible la beta de Opera 11.50 Swordfish

Un mes después de lanzar la versión alpha, se acaba de liberar la versión beta de Opera Swordfish. Esta versión se ha centrado en mejorar todo lo que mostraron en la primera etapa del desarrollo.

Opera Swordfish trae sincronización de contraseñas con Opera Link, los widgets para el Speed Dial y Opera Next, un navegador aparte que nos permite probar las últimas versiones de desarrollo. En la parte técnica han incluido nuevos estándares de CSS y HTML5, y el motor ahora es Presto 2.8.

Esta versión beta también trae algunos cambios con respecto a la versión alpha: se pueden añadir las extensiones al Speed Dial como si fuesen una página más (antes sólo se podía hacer instalándolas) y permite abrir páginas en segundo plano manteniendo pulsado Ctrl.

Apple presentará iCloud, iOS 5 y Mac OS X Lion el 6 de junio

El próximo lunes día 6 de junio a las siete de la tarde (hora española) Apple celebrará un evento de presentación de su Mac OS X Lion, iOS 5 y un conjunto de servicios que finalmente se llamará iCloud.

El evento lo presentará el inefable Steve Jobs, aún a pesar de su baja médica temporal. Era de esperar que se confirmara la presentación de ambos sistemas operativos de Apple tras la nota de prensa del pasado mes de marzo.

Usando WeakHashMaps para evitar Memory Leaks

WeakHashMap es un tipo de Mapa que usa referencias débiles para almacenar sus claves.

Este tipo de Map puede hacer que su comportamiento no sea predecible en ciertos casos, aunque es muy útil en los casos en los que se usa como caché y nunca nos preocupamos de borrar los datos de ese Map, de modo que crece y crece…

La ventaja para este tipo de solución de un WeakHashMap frente a un HashMap normal es que el primero no se guarda referencias reales a los objetos que tiene almacenados (ni de Persona ni de Coche), por lo que si en nuestra lista de personas (que tenemos aparte) eliminamos una persona y perdemos todas las referencias a ella, el recolector de basura reclamará también la Persona y sus datos guardados en el WeakHashMap.

Si lo hubiéramos metido en un HashMap normal, las referencias a Persona y Coche ahí dentro son reales, por lo que el recolector de basura no los libera. por lo que después de borrar la persona de nuestra lista de personas, debemos además acordarnos de hacer y hacer una llamada al hashmap.remove(persona).

Cuando se usa como Map un WeakHashMap se deben tener en cuenta estas consideraciones:

· La limpieza de las referencias es automática

· Los valores no se eliminan hasta que el WeakHashMap se altera (se hace así para evitar kas ConcurrentModificationExceptions).

· Cada llamada a get() crea un Nuevo objeto WeakReference. Aunque este objeto tiene una corto vida si el get() se usa intensivamente puede crear una sobrecarga.

· WeakHashMap no mantiene un contador del número de elementos.

Top 50 sitios web

Compete, una de las referencias a la hora de monitorizar visitas de sitios web, ha publicado el informe de abril de 2011.

En él se muestran los 50 sitios más visitados:

1 google.com – 150,132,536 (-0.34%)

2 facebook.com – 137,917,539 (13.33%)

3 yahoo.com – 137,281,886 (2.02%)

4 youtube.com – 123,404,304 (22.42%)

5 bing.com – 86,836,886 (48.43%)

6 wikipedia.org – 81,157,591 (6.01%)

7 amazon.com – 74,978,780 (12.71%)

8 msn.com – 73,799,209 (8.95%)

9 live.com – 72,369,485 (4.21%)

10 ebay.com – 67,372,294 (-10.04%)

11 blogspot.com – 65,940,748 (12.10%)

12 microsoft.com – 62,162,835 (9.19%)

13 craigslist.org – 57,500,250 (-5.52%)

14 ask.com – 54,508,628 (-10.72%)

15 go.com – 49,504,372 (17.32%)

16 about.com – 47,709,562 (3.88%)

17 aol.com – 46,906,652 (2.32%)

18 walmart.com – 46,349,561 (14.15%)

19 ehow.com – 45,960,705 (60.20%)

20 answers.com – 42,276,025 (38.03%)

21 mapquest.com – 36,700,156 (-9.61%)

22 target.com – 36,178,431 (24.64%)

23 weather.com – 33,728,429 (11.58%)

24 wordpress.com – 33,459,473 (1.92%)

25 netflix.com – 33,129,869 (52.15%)

26 myspace.com – 32,876,686 (-53.60%)

27 paypal.com – 31,870,573 (11.06%)

28 apple.com – 31,103,237 (10.79%)

29 adobe.com – 31,079,363 (3.17%)

30 twitter.com – 27,504,233 (-0.75%)

31 chase.com – 26,432,079 (5.86%)

32 att.com – 25,744,344 (12.12%)

33 bankofamerica.com – 25,671,467 (4.82%)

34 imdb.com – 23,787,667 (-2.86%)

35 groupon.com – 23,768,883 (655.82%)

36 cnn.com – 23,341,250 (-13.93%)

37 flickr.com – 21,514,439 (-13.68%)

38 photobucket.com – 20,523,415 (-23.97%)

39 comcast.net – 20,077,436 (57.38%)

40 bestbuy.com – 19,690,984 (-1.66%)

41 yellowpages.com – 19,683,713 (40.39%)

42 irs.gov – 19,682,366 (-4.02%)

43 jcpenney.com – 19,452,462 (33.94%)

44 sears.com – 19,348,832 (25.28%)

45 homedepot.com – 19,244,361 (3.58%)

46 verizonwireless.com – 18,440,068 (11.74%)

47 cnet.com – 18,405,154 (-13.40%)

48 comcast.com – 18,362,992 (60.51%)

49 wellsfargo.com – 17,984,172 (26.90%)

50 lowes.com – 17,949,686 (19.84%)

El infome completo se puede encontrar en:

http://www.msnbc.msn.com/id/43139026

Configurando los Appenders de Log4J para Producción

Log4J tiene 2 Appenders principales: el Console Appender y el File Appender.

El ConsoleAppender imprime la información en la consola mientras que el FileAppender escribe a un fichero (normalmente configurado para que rote al llegar a un tamaño o pase el día).

Un error típico en el uso del Log4J es dejar el ConsoleAppender en Producción. Es un error porque imprimir texto a la pantalla es un gran trabajo para el Sistema Operativo que tiene que escribir las letras, hacer scroll, cambiar de línea,… de hecho en Windows escribir a la consola es una operación bloqueantes y sin buffer, por lo que escribir muchos datos a la consola empeora notablemente el rendimiento.

Este Test de JMeter muestra la diferencia entre escribir a la consola y a fichero (el test escribe un texto de 80 caracteres mil veces):

Con el FileAppender se obtiene una velocidad de más de 2 veces que cuando se usa el ConsoleAppender.

El FileAppender también se puede optimizar colocando el parámetro:

<param name=”ImmediateFlush” value=”false” />

Por defecto el FileAppender hace un flush a disco después de cada evento. Indicándole esta propiedad el StreamWriter hace un buffer en memoria antes de escribir a disco.

En el ejemplo anterior con este cambio obtenemos:

Otra optimización es usar el parámetro:

<param name=”BufferedIO” value=”true” />

Con esta opción el fichero se mantiene abierto, en el ejemplo:

Amino 1.0: librería de gráficos Java/Javascript

Amino es una librería de gráficos open source (BSD) tanto para Java (a partir de Java 6) como para JavaScript.

Se puede usar Amino en aplicaciones Swing o en navegador con el uso del Tag HTML5 Canvas.

3 opciones para implementar la seguridad en una aplicación Web

Shiro es un framework para controlar la Seguridad en Java que ofrece servicios de autenticación, autorización, criptografía y gestión de la sesión.

Ya hablamos de él en este post.

En este conjunto de artículos se compara como autenticar una aplicación Web con 3 tecnologías: Java EE, Spring Security y Shiro:

· Java Web Application Security – Part I: Java EE 6 Login Demo

· Java Web Application Security – Part II: Spring Security Login Demo

· Java Web Application Security – Part III: Apache Shiro Login Demo

Cuál es parece más sencillo? 🙂

Publicado en J2EE, Java, Web. Leave a Comment »
A %d blogueros les gusta esto: