tag:blogger.com,1999:blog-64001098731878117742024-03-06T01:01:03.431+01:00terraza de aravacaAnonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.comBlogger35125tag:blogger.com,1999:blog-6400109873187811774.post-38751327993675197422012-05-30T12:20:00.001+02:002012-05-30T12:41:21.956+02:00Se vende accesorio 2Phone: 2 sims en tu IPhone 4 o 4s<br />
<div style="background-color: white; float: left; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 10px; position: relative; text-align: left; width: 730px;">
2Phone es el único accesorio para Iphone 4 o 4s que permite utilizar 2 sims<br />
simultáneamente. <span style="background-color: white;">Viene con batería incorporada.</span><br />
<br />
Características :<br />
<br />
Compatible con todos los iPhone 4 (incluso los bloqueados/SIM-lockeados) y 4S<br />
Dos tarjetas SIM en tu iPhone 4 o 4S<br />
Conexión simultánea<br />
Dos tarjetas SIM activas al mismo tiempo<br />
Dobla la autonomía del iPhone 4 o 4S<br />
Indicador de recepción de las redes para las dos tarjetas SIM en la<br />
pantalla del iPhone 4 o 4S<br />
Indicador de carga para las dos baterías en la pantalla del iPhone 4 o 4S<br />
Compatible con las tarjetas SIM & USIM<br />
No necesita el recorte de tus tarjetas SIM<br />
Evita el roaming<br />
Función antichoque y antirayadura<br />
No es necesario desimlockear tu teléfono<br />
Función Activación/Desactivación & cambio del código PIN<br />
<br />
<b><u>Utilizado un solo día</u></b><br />
<b style="background-color: white;"><u>Precio: 60€</u></b></div>
<div style="background-color: white; float: left; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 10px; position: relative; text-align: left; width: 730px;">
Enlaces:</div>
<div style="background-color: white; float: left; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 10px; position: relative; text-align: left; width: 730px;">
En <a href="http://anuncios.ebay.es/otros-accesorios-para-moviles/2phone-2-sim-en-un-iphone-4-o-4s-12018596.htm">ebay</a>. <span style="background-color: white;">En </span><a href="http://moviles.casinuevo.net/2phone-adaptador-para-hacer-dual-sim-tu-iphone-4-o-4s_madrid_120530103633" style="background-color: white;">casinuevo.net</a><span style="background-color: white;">. En <a href="http://www.segundamano.es/madrid/2phone-accesorio-para-hacer-dual-sim-tu-iphone/a35126240/">segunamano.es</a>.</span></div>
<div id="google_right" style="background-color: white; float: left; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-left: 10px; width: 350px;">
</div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-21690020634014090832012-05-25T14:40:00.001+02:002012-05-25T15:09:28.688+02:00Publicado Jailbreak para IPhone 4s con 5.1.1Acaba de ser publicado en el HITB (Hack In The Box) en Amsterdam. Como era de prever, ha sido pod2g el que lo ha publicado. Está ya disponible la nueva versión de Absinthe para descarga en el <a href="http://greenpois0n.com/?p=173">sitio habitual</a>.<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-83594492633569530262012-05-25T14:40:00.000+02:002012-05-25T14:40:29.494+02:00Jailbreak for IPhone 4s 5.1.1 releasedJailbreak for IPhone 4s with ios v. 5.1.1 has just being published. It has been published by pod2g as usual. The new version of Absinthe is available to download from <a href="http://greenpois0n.com/?p=173">the usual place</a>.Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-22684435087060469802012-05-22T11:14:00.004+02:002012-05-22T11:18:42.667+02:00Some facts about the 5.1.1 untethered jailbreakpod2g, the french developer who usually releases the iphone and ios jailbreak, has posted <a href="http://pod2g-ios.blogspot.fr/2012/05/some-facts-about-511-untethered.html">some facts about the 5.1.1 untethered jailbreak</a>. This jailbreak should be released this week.<br />
<br />
<span class="Apple-style-span" style="background-color: white; font-family: 'Courier New', Courier, monospace; font-size: 13px; line-height: 18px;">* All info below is tentative and subject to last minute refinements</span><br style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" /><span class="Apple-style-span" style="background-color: white; font-family: 'Courier New', Courier, monospace; font-size: 13px; line-height: 18px;">* @pod2g's 5.1.1 jailbreak+untether is working out great. All devices are covered except for AppleTV3,1, which currently has no path for jailbreaking.</span><br style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" /><span class="Apple-style-span" style="background-color: white; font-family: 'Courier New', Courier, monospace; font-size: 13px; line-height: 18px;"> - the initial 5.1.1 plan used a kernel exploit from @westbaer which unfortunately precluded use in iPod3,1 and iPhone2,1</span><br style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" /><span class="Apple-style-span" style="background-color: white; font-family: 'Courier New', Courier, monospace; font-size: 13px; line-height: 18px;"> - @planetbeing stepped up and provided a kernel exploit that covers both of those. Those two JBers are the bomb!</span><br style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" /><span class="Apple-style-span" style="background-color: white; font-family: 'Courier New', Courier, monospace; font-size: 13px; line-height: 18px;">* The 5.1.1 A5 JB is very similar to the A5 5.0.1 JB. @pimskeks has done a tremendous job supporting both 5.0.1 and 5.1.1 in absinthe</span><br style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" /><span class="Apple-style-span" style="background-color: white; font-family: 'Courier New', Courier, monospace; font-size: 13px; line-height: 18px;">* Similar to 5.0.1, there will also be a 5.1.1 CLI "cinject" binary and redsn0w version of the 5.1.1 JB+untether. Absinthe, cinject, and redsn0w will all provide the same JB in different fashions.</span><br style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" /><span class="Apple-style-span" style="background-color: white; font-family: 'Courier New', Courier, monospace; font-size: 13px; line-height: 18px;"> - timing is indeterminate. Plans are for this week, but a number of factors can influence that.</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><span style="line-height: 18px;"><br style="background-color: white;" /></span></span>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-68180335956992090392011-12-05T16:56:00.007+01:002011-12-09T23:56:28.943+01:00Foro en femenino, o cómo llegar a ser el foro más leído siendo una chapuza técnicamenteLo de <a href="http://www.enfemenino.com/">http://www.enfemenino.com/</a> no tiene nombre. Como foro (<a href="http://www.enfemenino.com/world/communaute/forum/forum0.asp">http://www.enfemenino.com/world/communaute/forum/forum0.asp</a>) es el más leído sobre temática femenina de España, y probablemente del mundo hispanohablante. Y se lo han ganado a pulso. Tienen una cantidad de información impresionante sobre todo lo que tenga que ver con mujeres en general, y muy particularmente con hijos. Desde enfermedades y tratamiento de bebés hasta la selección del colegio pasando por todos los tipos de cosas que se le puedan ocurrir a un@ sobre los hijos.<div>Hasta ahí muy bien. Google los trata bien, salen los primeros en lo que tiene que ver con la temática indicada.</div><div><br /></div><div>Pero es que ahora viene la segunda parte. Hasta no hace mucho en NINGÚN post aparecía la fecha y hora, así que podías estar leyendo uno de hace 10 años tranquilamente. No había referencia temporal alguna, salvo que algo del contexto de lo que había escrito el redactor te diera alguna pista.</div><div>Pues bien, hace relativamente poco han cambiado el software de gestión del foro, en principio mejorándolo... Pero sólo en principio, porque ahora es aún peor. Los posts antiguos (imagino que los fueron posteados antes del cambio de software) se ven en una especie de bocadillo, sin fecha y sin hora. Y el problema añadido a lo que ya había es que ahora se ven TODAS las respuestas en un bocadillo de unos 100 píxeles de alto, así que te tienes que mover por esa ventanita ridícula arriba y abajo para encontrar lo que buscas. Y todo ello igualmente sin referencia temporal. No tienen fecha ni hora. Las pruebas están hechas con Internet Explorer 8. Para muestra, un botón:</div><div><br /></div><div><a href="http://foro.enfemenino.com/forum/matern2/__f78999_matern2-Mamas-con-bebes-y-ninos-con-bronquitis-y-broncoespasmos-de-repeticion-como-llevais-el-invierno.html">http://foro.enfemenino.com/forum/matern2/__f78999_matern2-Mamas-con-bebes-y-ninos-con-bronquitis-y-broncoespasmos-de-repeticion-como-llevais-el-invierno.html</a></div><div><br /></div><div>Parece mentira que un foro de tal renombre y con tal cantidad de visitas no se moleste en hacer pruebas de usuario para asegurar que su experiencia sea la adecuada.</div><div><br /></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com2tag:blogger.com,1999:blog-6400109873187811774.post-31303387921544868712011-08-19T13:41:00.007+02:002011-08-23T16:02:58.523+02:00Introducing Child Growth Calculator: www.childgrowthcalculator.com<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuFzZvoYmKicq89vMuinIvO5ugzd_EfFSu44CUt1Dn-HrrrJWGerXpDrNsM-tgQrD_03r7lxcn-7nWC0-T87P8kJHK-lW20pj7YUhUnsfBgkhnoa_XimBfAsjbgnhcOA4FifPLc3AK8f4d/s1600/childgrowthcalculator.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuFzZvoYmKicq89vMuinIvO5ugzd_EfFSu44CUt1Dn-HrrrJWGerXpDrNsM-tgQrD_03r7lxcn-7nWC0-T87P8kJHK-lW20pj7YUhUnsfBgkhnoa_XimBfAsjbgnhcOA4FifPLc3AK8f4d/s400/childgrowthcalculator.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5642534049086364498" /></a>
<br /><span class="Apple-style-span" style="background-color: rgb(255, 255, 255); "><div style="color: rgb(34, 34, 34); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; "><span class="Apple-style-span" style="color: rgb(34, 34, 34); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; background-color: rgb(255, 255, 255); ">After some time trying to get time to finish it, it is already a reality. Let me introduce you to the <a href="http://www.childgrowthcalculator.com/">Child Growth Calculator page</a>.</span></div><div style="color: rgb(34, 34, 34); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; "><span class="Apple-style-span" style="color: rgb(34, 34, 34); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; background-color: rgb(255, 255, 255); ">
<br /></span></div><div style="color: rgb(34, 34, 34); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; "><span class="Apple-style-span" style="color: rgb(34, 34, 34); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; background-color: rgb(255, 255, 255); ">These are the main features you will find when you use it:</span></div><div><ul><li><span class="Apple-style-span"><span class="Apple-style-span" style="line-height: 18px;">You can calculate your child's percentile using the World Health Organization data for length/height, weight and craneal perimeter.</span></span></li><li><span class="Apple-style-span"><span class="Apple-style-span" style="line-height: 18px;">You can save your child's measurements for future reference.</span></span></li><li><span class="Apple-style-span"><span class="Apple-style-span" style="line-height: 18px;">You can see graphically the evolution of the percentile over time, so that you can detect any growth abnormality as soon as possible.</span></span></li></ul></div></span><span class="Apple-style-span" style="font-family: arial; font-size: small; ">Please let me know about any improvement you can think of or anything you consider unclear in the page.</span>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com1tag:blogger.com,1999:blog-6400109873187811774.post-51295471582565945942011-08-19T13:17:00.006+02:002011-08-19T14:03:24.075+02:00Percentiles infantiles en inglés: www.childgrowthcalculator.com<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrF476Zince0LKZRF9je7suOQYW92pAtmT1G7spW1ja8f9kBQXGNoruduwdM_bZdyu5iHxLqW5b1xZw0d9OCJ21JW_Z4U3-RqZp6EUQa5Fo6VsE3eq3ADSfq5v7obv7KAb9i_Vo7sVi0KS/s1600/childgrowthcalculator.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrF476Zince0LKZRF9je7suOQYW92pAtmT1G7spW1ja8f9kBQXGNoruduwdM_bZdyu5iHxLqW5b1xZw0d9OCJ21JW_Z4U3-RqZp6EUQa5Fo6VsE3eq3ADSfq5v7obv7KAb9i_Vo7sVi0KS/s400/childgrowthcalculator.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5642527490601511394" /></a>
<br />Bueno, pues después de mucho tiempo queriendo ponerme con ello, ya lo he conseguido. Ya está disponible la versión en inglés de percentilesinfantiles.es. Está accesible en <a href="http://www.childgrowthcalculator.com/">http://www.childgrowthcalculator.com</a>. La funcionalidad es la misma que la versión española. He añadido, ya que era obligado, la opción de introducir los datos de longitud, peso y perímetro craneal usando el sistema anglosajón de unidades (libras y pulgadas, fundamentalmente).<div>Ahora falta darlo a conocer, que es lo más difícil.</div><div>
<br /></div><div>Por otro lado, he preparado <a href="http://www.percentilesinfantiles.es/">la página de los percentiles</a> para funcionar en cualquier idioma, así que si alguien está interesado en poder ver la información sobre los percentiles en su idioma nativo, tan sólo tendría que proporcionarme <a href="http://sites.google.com/site/justforthefiles/Home/MyConstants_es.properties">este fichero traducido</a> y un par de textos más en su idioma. Eso sería todo. Pretendo tener los percentiles disponibles en más idiomas en un plazo finito de tiempo.</div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-41123713195876958792011-05-11T16:48:00.003+02:002011-05-11T16:53:00.725+02:00Problems with Google Maps 5.4.0 using HTC Tattoo (Click)<span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, 'san serif'; font-size: 13px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><div style="position: relative; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">There are several problems with version 5.4.0 in HTC Tattoo (at least using CyanogenMod 7.0.3):</div><div style="position: relative; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br /></div><div style="position: relative; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">1.- Running speed is terribly slow compared with older versions.</div><div style="position: relative; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">2.- Texts in general appear so small that it makes it dificult to read them.</div><div style="position: relative; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">3.- When you search and find something, then you can not click on the markers' bubble to show aditional information. When you click, it simply doesn't happen anything or sometimes the bubble just dissapears.</div><div style="position: relative; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br /></div>I have just uninstalled 5.4.0 and installed the older 5.3.7. Back to good speed, readable text and possibility to click on something you have searched for. You have all Google Maps apks for Android <a href="http://www.freewarelovers.com/android/app/google-maps">here</a>.</span>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-44912739068114268352011-05-11T16:44:00.004+02:002011-05-11T16:48:36.245+02:00Problemas con la versión 5.4.0 de Google Maps en la Tattoo<span class="Apple-style-span" style="color: rgb(65, 65, 65); font-family: Tahoma; font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; ">Después de varias pruebas, éstas son las conclusiones que he sacado. Adelantar que las pruebas las he hecho con la CyanogenMod 7.0.3, es decir, la última estable en la actualidad.<br /></span><div><span class="Apple-style-span" style="color: rgb(65, 65, 65); font-family: Tahoma; font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><br /></span></div><div><span class="Apple-style-span" style="color: rgb(65, 65, 65); font-family: Tahoma; font-size: 13px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; ">La versión 5.4.0 de Google Maps tiene los siguientes problemas en la Tattoo:<br /><br />1.- La velocidad es penosa, comparada con todas las versiones anteriores. Esto parece ser debido a que la última versión permite a máquinas de bajo rendimiento como la nuestra funcionar con gráficos de vectores. Esto hace que vaya terriblemente lenta (esto lo he leído, pero no lo puedo confirmar. Lo que sí puedo confirmar es que va muuuucho más lenta).<br /><br />2.- Los textos son diminutos y con letras borrosas. Cuesta leerlos. Siempre comparados con los de las versiones anteriores.<br /><br />3.- Cuando buscas algo e intentas pinchar en el bocadillo del marcador, o bien no ocurre nada o bien el bocadillo desaparece sin más.<br /><br /><b>Si se vuelve a la versión 5.3.7 se solucionan todos estos problemas</b>. Por cierto, los apks de todas las versiones de Google Maps para Android están disponibles <a href="http://www.freewarelovers.com/android/app/google-maps" rel="nofollow" target="_blank" style="color: rgb(0, 0, 102); text-decoration: none; ">aquí</a>.</span></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-43868125956484216312011-04-13T22:53:00.017+02:002011-04-14T16:36:23.970+02:00(Solucionado) Problema con certificados en la solicitud de beca guardería 2011 de la Comunidad de MadridAcabo de probar y tanto desde Linux como desde Windows, tanto con Firefox como con Internet Explorer como con Chrome aparece un error que indica "No se ha identificado con un certificado". Yo dispongo de certificado válido de la CNMT, así que está claro que el problema es del servidor.<br /><div><br /></div><div>Espero que en los próximos días se arregle, porque sería una gaita tener que ir en persona a entregar los papeles (previa recolección de los mismos, claro :-/).</div><div><br /></div><div><span class="Apple-style-span"><span class="Apple-style-span"><span class="Apple-style-span" style="font-weight: bold; ">Actualización: La siguiente url SÍ funciona (comprobado)</span><span class="Apple-style-span"><b>: </b></span></span><b><span class="Apple-style-span"><span class="Apple-style-span" style="color: rgb(34, 34, 34); font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 16px; font-weight: normal; "><b><a href="https://gestiona.madrid.org/guay_telinfantil">https://gestiona.madrid.org/guay_telinfantil</a></b></span></span></b></span></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com17tag:blogger.com,1999:blog-6400109873187811774.post-14118360112262900752011-03-03T17:44:00.006+01:002011-03-14T09:44:44.829+01:00Nuevo foro Ford C-Max 2010El 25 de Febrero hice el pedido de nuestro nuevo Ford C-Max. Tras mucho mirar, tras muchas visitas a concesionarios, tras mucho ver precios, motores, extras, catálogos, pruebas de euroncap, finalmente nos decidimos por el nuevo Ford C-Max. Y digo nuevo porque este coche empezó a venderse en Septiembre de 2010, así que se ven muy poquitos por la calle. Vamos, tan poquitos que por ahora yo sólo he visto uno.<div>Después de decidirnos, e incluso antes, empezaron a surgir dudas ya muy concretas del coche. Me refiero a la radio, al detector de ángulos muertos, a la apertura y cierre sin llave,... Así que me puse a buscar y encontré rápidamente un par de foros dedicados al C-Max, pero no al nuevo, sino a todas las versiones que ha habido hasta ahora. Esto hace un poco difícil encontrar respuestas a dudas sobre el nuevo modelo.</div><div>Así que he pensado que sería buena idea tener un foro dedicado al Ford C-Max de 2010. Y dicho y hecho. Está ya creado el <a href="http://forofordcmax2010.foroactivo.com/">foro sobre el Ford C-Max y el Grand C-Max de 2010</a>.</div><div><br /></div><div>Cualquier aportación o propuesta será por supuesto bienvenida.</div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-6496272921937986152010-11-03T11:32:00.007+01:002011-02-03T12:22:34.138+01:00No data from Google Analytics from November 2 2010<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVV_lbMmhtptetDlj2CpeXmqo3Lr7FNDGKEiDLGOQcV-dFxPoU5Yhbqnu8_2yQ1t1nzHFo8FXcm2fTkd9UppUpSpkkvAnBffT0No5XWfdaok0H0sLUvufb6CyUBqofy13W56DIOZtYURyH/s1600/analytics.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 111px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVV_lbMmhtptetDlj2CpeXmqo3Lr7FNDGKEiDLGOQcV-dFxPoU5Yhbqnu8_2yQ1t1nzHFo8FXcm2fTkd9UppUpSpkkvAnBffT0No5XWfdaok0H0sLUvufb6CyUBqofy13W56DIOZtYURyH/s400/analytics.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5535269473551394082" /></a><br /><div>Google Analytics is showing no data from yesterday. At 11:40 CET there are no data available yet.</div><div>Acording to what is written here and here, it looks like it is a general failure.</div><div><br /></div><div>Analytics blog says nothing about it. It is the first time that this has happened (or the first time that I am aware). But it is surprising that Google does not say anything about it.</div><div><br /></div><div>Someone said that this could be the problem, but I would not be that sure.</div><div><br /></div><div>I will update this post as soon as I know anything new.</div><div><br /></div><div>UPDATE: As of 13:05 CET, data from yesterday are been shown again in Google Analytics.</div><div>UPDATE 2: Google has posted <a href="http://analytics.blogspot.com/2010/11/system-update-for-november-2nd.html">a little note</a> on the Analytics blog about this issue, which is already solved.</div><div><br /></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com1tag:blogger.com,1999:blog-6400109873187811774.post-27464896397523195932010-11-03T10:17:00.008+01:002010-11-03T15:26:42.993+01:00Sin datos de Analytics del 2 de Noviembre de 2010<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Z_51CPfwWLm31fkuq1N9gzaOMqacKHjCdOe8xA8OKANnhHN9ZFdrwPR4tUNG2NGEqMsoSYpI6YrMJQH7WSf-ZFj3_p1jwRmQcdSG2Yd9mWmWJCSBK__psAbNGxDEGc4-Zw-mgxLM_wR9/s1600/analytics.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 111px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Z_51CPfwWLm31fkuq1N9gzaOMqacKHjCdOe8xA8OKANnhHN9ZFdrwPR4tUNG2NGEqMsoSYpI6YrMJQH7WSf-ZFj3_p1jwRmQcdSG2Yd9mWmWJCSBK__psAbNGxDEGc4-Zw-mgxLM_wR9/s400/analytics.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5535254475301583922" /></a><br />El Analytics de Google ha amanecido hoy sin mostrar un solo dato del día de ayer. A las 10:40 minutos siguen sin aparecer dichos datos. Y me consta que ayer hubo accesos, y no pocos. Lo sé porque he recibido ingresos de AdSense y porque el Application Engine muestra actividad en el día de ayer.<div>Además, según se cuenta <a href="http://www.google.com/support/forum/p/Google+Analytics/thread?tid=155a0bf9c57b014d&hl=en">aquí</a> y <a href="http://www.google.com/support/forum/p/Google+Analytics/thread?tid=1f56d45a10c3be34&hl=en">aquí</a>, parece que es generalizado.</div><div><br /></div><div>En el blog del Analytics no dicen nada por el momento. Es la primera vez que ha ocurrido (al menos que yo haya sido consciente), pero sorprende que Google no diga nada al respecto.</div><div><br /></div><div>Alguien ha indicado que podría ser <a href="http://www.google.com/analytics/status#rm=1&di=14&ddo=2&hl=en_GB">este problema</a>, que ya está reportado, pero no estoy seguro de que sea lo mismo.</div><div><br /></div><div>En fin, actualizaré la entrada con las novedades que haya.</div><div><br /></div><div>ACTUALIZACIÓN: Desde las 13:05 CET Analytics ya está mostrando los datos de ayer.</div><div>ACTUALIZACIÓN 2: Google ha escrito una <a href="http://analytics.blogspot.com/2010/11/system-update-for-november-2nd.html">entrada en el blog</a> del Analytics sobre el asunto, que ya está solucionado.<br /><div><br /></div></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com3tag:blogger.com,1999:blog-6400109873187811774.post-66745398318727403382010-03-16T10:13:00.009+01:002010-11-03T13:15:09.506+01:00Príncipe Pío: el chulito indignado y el segurata resignado<span class="Apple-style-span" style=" ;font-family:arial;font-size:small;"><div>Madrid, 16 de Marzo de 2010. Nueve menos cuarto de la mañana. Estación de cercanías de Príncipe Pío. Acaba de llegar un tren procedente de Villalba abarrotado de gente. Todos en bloque hacia la conexión con el Metro, hacia las entradas con torniquetes. De repente, se produce la aglomeración. La cola se alarga hacia atrás. ¿Razón? Hay cuatro torniquetes, pero dos no funcionan. A medida que llega más gente, se van apelotonando como pueden.</div><div>Normalmente, esto no pasa, Y no pasa porque unos cuantos de los viajeros se cuelan por los torniquetes de salida. Y no porque no tengan billete, no, sino porque no quieren esperar la cola que se forma... habiendo cuatro de entrada. Pero es que con dos de entrada, la cosa es mucho peor. Entonces, ¿por qué la aglomeración? ¿No se cuela aún más gente habiendo dos torniquetes estropeados? Pues no, no se cuela absolutamente nadie ¿Por qué? Pues porque al otro lado hay un segurata. Un tipo alto, mayor, de unos cincuenta y tantos, algo encorvado, con aspecto de fumador y probablemente bebedor, mirando a la masa apelotonarse ante los dos torniquetes que funcionan, y sabiendo que la tensión se respira en el ambiente y que la masa lo mira con cara de odio... Porque si no estuviera él, se estaría colando casi todo el mundo. Y él lo sabe, pero probablemente los de Renfe le han dicho, precisamente por eso, que se plante ahí, para que nadie se cuele.</div><div>Pero hay un entrajetado que se harta, que puede que tenga más prisa, o que se cree representante de los demás, o que es más chulito que nadie o qué se yo, que se cuela. Salta uno de los torniquetes estropeados, delante de la mirada de todos y causando la estupefacción del de Prosegur, que le dice: "¿a dónde va?". El tipo salta con dificultad, no es un saltador olímpico precisamente, pero del cabreo, más con fuerza que con maña, consigue pasar al otro lado y andar rápido hacia las escaleras mecánicas mientras le suelta con voz de indignación al segurata: "es una vergüenza, hombre, es una vergüenza". Y el segurata en alta voz, pero a la vez resignada: "pues ponga una reclamación en la ventanilla, pero no salte delante de mí, hombre...".</div><div><br /></div><div>Bueno, pues ¿yo de qué lado me pongo? Soy uno de los cientos que están esperando para pasar por los malditos torniquetes. Me cuesta mucho levantarme para ahora estar esperando como un gilipollas delante de unos torniquetes que no funcionan... Pero lo cierto es que me pongo del lado del segurata. Coño, pobre tipo. El otro salta, sabiendo que el hombrecillo (porque es eso, un hombrecillo, por muy alto que sea), no le va a sujetar, ni le va a obligar a salir, ni mucho menos va a pegarle con la porra delante de todo el mundo (y aunque no hubiera nadie...). No, no va a hacer nada de eso. Simplemente, no hará nada. Y, en cambio, el saltador le ha dejado claro al segurata que su trabajo no vale nada, que es un don nadie, un mindundi, que salta delante de sus narices y no le puede hacer nada, que es como si no estuviera.</div><div><br /></div><div>En fin. Creo que una espera de dos o tres minutos no justifica ningunear a un pobre hombre que, de por sí, no tiene pinta de tener una vida muy agradable. Ningunear por algo tan nimio a una dudosa autoridad que no se está imponiendo por la fuerza no me parece de recibo. Al menos, no me lo ha parecido esta mañana.</div></span>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-63825936785648893032010-03-11T10:01:00.008+01:002010-03-16T10:17:37.120+01:00Enrique Dans y el DRM. Nunca digas nunca jamásTiene gracia la entrada de Enrique Dans en su blog <a href="http://www.enriquedans.com/2009/07/gpl-drm-nunca-digas-nunca-jamas.html">GPL, DRM… Nunca digas nunca jamás</a> de no hace ni un año (julio 2009).<div><br /><div>En ella habla de cómo en tecnología no hay verdades absolutas, y de cómo él mismo, hace ya años, se dedicaba a convencer a usuarios de máquinas Apple de que se pasaran a PC, cuando hoy (o en aquella época al menos) se le ve "<i>cargando con un MacBook Pro, haciendo presentaciones con Keynote, usando un iMac en casa, un Mac Mini en el salón, y teniéndolos todos felizmente conectados con un Airport Extreme</i>", según su propia entrada.</div><div>Pero también se dedica, como tantas otras veces, a despotricar sobre el DRM y de cómo empresas como iTunes, Amazon, Real proporcionan sus descargas sin "<i>absurdas protecciones</i>".</div><div>Pues me temo que el "<i>Nunca digas nunca jamás</i>" se le puede aplicar de nuevo a él con el tema del DRM, ya que, según se dice en su blog (no lo dice él, pero tampoco lo desmiente), su libro habría salido para iPhone con DRM. Esto, se mire como se mire, y se intente defender como se intente defender, es una contradicción, por no decir directamente una incoherencia.</div><div><br /></div><div>Desde luego, hay más entradas en las que critica al DRM. Entre otras <a href="http://www.enriquedans.com/2009/08/chris-ahearn-las-noticias-y-el-sentido-comun.html">ésta</a> y <a href="http://www.enriquedans.com/2009/02/la-propiedad-intelectual-y-la-red-confirmando-teorias.html">ésta</a>. Si hacéis una búsqueda en su blog por DRM, hay hasta 5 páginas de resultados, y todas las entradas están en la misma línea. El DRM está muerto, el DRM, como cualquier sistema anticopia, se podrá saltar, antes o después...</div><div><br /></div><div>Por otro lado, y como bien indica un comentarista de su blog, cuando en tecnología se habla de software "libre", como en el caso de linux, lo que se permite no es sólo la descarga del software, sino su reventa, siempre que se incluya el código fuente. Nadie me impide, por ejemplo, descargarme los discos de Debian, copiarlos y venderlos al precio que me parezca conveniente. Su licencia me lo permite. Así que un libro que no puedo copiar y revender no es "libre", si entendemos por ese término lo que se entiende en tecnología, en el mundo del software. Porque el blog de Enrique es sobre tecnología, ¿no?</div><div>Dejémonos de frasecitas chulas en inglés sobre la libertad y la cerveza que no se entienden claramente. O peor, que cada uno entiende lo que le parece. En el mundo del software libre, o en el mundo linux, para ser más exacto, creo que todo el mundo tiene claro lo que se entiende por "libre".</div><div><br /></div><div>En fin, tal como Enrique pone en su propia entrada:</div><div><br /></div><div>"<i>Cuanto más tiempo pasas en contacto con el mundo de la tecnología, más te das cuenta de que existen muy pocas verdades absolutas. Nunca digas nunca jamás…</i>"</div></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-2955067695733445822010-02-18T08:59:00.009+01:002010-03-01T10:02:36.956+01:00Renovación certificado de la FNMT con Internet Explorer 7 (solucionado)Parece que este año la renovación del certificado no funciona tan bien como otras veces. Ayer me estuve pegando con ello y tardé un buen rato en llegar simplemente a realizar la solicitud.<div>Vaya por delante que lo que describo aquí ocurre, al menos, con Windows XP e Internet Explorer 7 y la solución aplica a esa conjunción. No sé si ocurre lo mismo con el Vista, Windows 7 o con Internet Explorer 8.<br /><div><br /></div><div>El problema es el siguiente: siguiendo las instrucciones del correo de la fnmt en el que te indican que tu certificado va a caducar (al menos ése fue mi caso), entras en la web de certificados de dicha entidad (<a href="http://www.cert.fnmt.es/index.php?cha=cit&sec=5">http://www.cert.fnmt.es/index.php?cha=cit&sec=5</a>). Realizas varios pasos hasta que llegas a una página en la que hay 2 botones: "Firmar" y "Enviar". Y no puedes enviar si no has firmado (te sale un aviso), así que le das a Firmar y... tachán... aparecen varias ventanas de error consecutivas. Quizá la más explícita es la que dice que "El servidor de automatización no ha podido crear el objeto".</div><div><br /></div><div>Pues bien. La solución a este problema es la siguiente: basta con instalar <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=ca930018-4a66-4da6-a6c5-206df13af316">esta versión de las librerías CAPICOM</a>. Una vez instaladas, basta con arrancar el navegador, volver a entrar en la página de la fnmt y entonces ya se puede firmar.</div></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-525406741256636262009-12-25T20:40:00.004+01:002009-12-25T22:48:59.414+01:00La comparación de implementaciones JPA en el resumen de 2009 de theserverside.comAlguien (no sé si perteneciente a The Server Side) ha puesto un resumen de los posts más populares (o al menos más visitados) en <a href="http://www.theserverside.com/news/thread.tss?thread_id=59061">theserverside.com</a> en 2009. El post que escribí sobre la <a href="http://terrazadearavaca.blogspot.com/2008/12/jpa-implementations-comparison.html">comparativa entre implementaciones de JPA</a> aparece el primero.Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-50781309398766980632009-11-22T23:13:00.006+01:002009-11-23T10:25:28.125+01:00Actualización percentilesinfantiles.es: datos OMSAcabo de actualizar <a href="http://www.percentilesinfantiles.es/">la web de cálculo de percentiles infantiles de longitud, peso y perímetro craneal</a>. Ahora se puede elegir entre usar los datos de la Organización Mundial de la Salud (OMS) o los de la fundación Faustino Orbegozo Eizaguirre (que son los que utilizan los pediatras de Seguridad Social) para calcular los percentiles.Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-42423931836667660262009-08-19T12:28:00.012+02:002009-10-16T12:58:04.131+02:00Nueva versión de la web de cálculo de percentil de bebé, niño y adolescente: http://www.percentilesinfantiles.es<div style="text-align: left;">Acabo de actualizar la versión de <a href="http://www.percentilesinfantiles.es/">la web de cálculo del percentil infantil para bebé, niño y adolescente</a>. La nueva versión tiene estas novedades:</div><div><ul><li>Visualización de la progesión de los percentiles de un niño a lo largo del tiempo, mediante el guardado de datos de varias edades.</li><li>Autenticación con la cuenta de Google (vale la de GMail), para poder guardar datos.</li><li>Alta y baja de niños, de forma que se pueda hacer el seguimiento de varios niños por usuario.</li><li>Guardado de un número infinito de medidas para un niño.</li><li>Modificación y borrado de dichas medidas de forma muy sencilla (pinchando en los puntos de la gráfica), además del borrado total de los datos de un niño.</li></ul><div>Es decir, ahora se puede ver la progresión del percentil a lo largo del tiempo, tanto de los primeros meses (primeras gráficas, de cero a 24 meses) hasta los 18 años.</div><div><br /></div><div>Ésta es una captura de cómo se ve la nueva versión, con varias medidas tomadas a diferentes edades.</div><div><br /></div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL-iOW6ujLODbNMxOUfN2BvY3vCDV5JIulRfW2GmNU5Y4gppQ0fHTMC2cGEJ3kZX_XKd7u2s8seEmKF8xPWCf9Vd5wcPZQaryfI6LKAeVu8M_W2WrKGpi795pWxKMhABjhYwrr1wsHRy4r/s1600-h/captura_percentiles.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL-iOW6ujLODbNMxOUfN2BvY3vCDV5JIulRfW2GmNU5Y4gppQ0fHTMC2cGEJ3kZX_XKd7u2s8seEmKF8xPWCf9Vd5wcPZQaryfI6LKAeVu8M_W2WrKGpi795pWxKMhABjhYwrr1wsHRy4r/s400/captura_percentiles.jpg" alt="" id="BLOGGER_PHOTO_ID_5371622273761206930" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 312px;" border="0" /></a></div><div><br /></div><div><br /></div></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com2tag:blogger.com,1999:blog-6400109873187811774.post-41510289074595774002009-07-12T21:02:00.019+02:002011-07-07T10:23:42.001+02:00Web de percentiles infantiles (bebés, niños y adolescentes): http://www.percentilesinfantiles.esBueno, pues me ha dado por crear una <a href="http://www.percentilesinfantiles.es/">web de cálculo de percentiles infantiles (bebes, niños y adolescentes)</a>.<br />Manuel tiene ya dos meses y medio de vida. Con las obligadas visitas al pediatra descubrí la importancia de los percentiles para detectar cuanto antes desviaciones importantes que pudieran sugerir algún tipo de anomalía.<br />Me sorprendió que el pediatra no nos diera el número exacto de percentil en el que se encontraba Manuel, sino que nos decía "cerca del 97" o "un poco más alto que el 50". Como informático, me parecía poco exacto, así que busqué alguna página que, una vez introducidos los datos del bebé o del niño, calculara el correspondiente percentil.<br /><br />Todas las páginas que encontré tenían alguna pega. Entre ellas las siguientes:<br /><br />- En algunas no estaba claro qué datos utilizaban como base, y dada la importancia de estas gráficas (pueden llamar la atención sobre un desvío importante en la longitud, el peso o el perímetro craneal del niño) me parece fundamental conocer el origen de los datos para juzgar la fiabilidad de los resultados.<br />- En otras sólo permitían introducir datos hasta los 2 años de edad. No podían hacerse calculos de percentiles para niños y adolescentes.<br /><br />Total, que decidí hacer yo mismo una aplicación para calcular el percentil de Manuel y poder comparlo con las gráficas estándar. En mi aplicación:<br /><br />- Utilizo los mismos datos que utilizan los pediatras de atención primaria de la Seguridad Social, es decir los de la fundación Fundación Faustino Orbegozo Eizaguirre (lo podéis ver en el pie de página de las gráficas de vuestras cartillas infantiles). Dichos datos los saqué de <a href="http://www.aepap.org/crecorbegozo.htm">aquí</a>.<br />- Permito el cálculo desde los cero meses de vida hasta los 18 años, de tal forma que se puedan detectar desviaciones también durante la niñez y la adolescencia.<br />- Calculo el percentil exacto y lo muestro.<br /><br />En fin, os animo a probarla. Tenéis la aplicación disponible aquí: <a href="http://www.percentilesinfantiles.es/">http://www.percentilesinfantiles.es</a>. Si tenéis cualquier comentario, sugerencia o crítica constructiva, no dudéis en poner un comentario en la página o responder a este post.<div><br /></div><div><b><span class="Apple-style-span" style="font-size: medium;">Actualización</span></b>: he añadido los datos de la <b>Organización Mundial de la Salud</b>. Ahora se puede elegir entre la fundación Faustino Orbegozo Eizaguirre y la OMS.</div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com5tag:blogger.com,1999:blog-6400109873187811774.post-81847397101861044332009-01-26T12:39:00.009+01:002009-01-31T19:10:30.893+01:00Song "El Menú" a capella for six voices<div>You have this same article in Spanish <a href="http://terrazadearavaca.blogspot.com/2009/01/el-men-6-voces.html">here</a>.</div><div><br /></div><div>Sometime ago I found out <span class="Apple-style-span" style="font-weight: bold;">n-track Studio</span>. This software emulates a <span class="Apple-style-span" style="font-weight: bold;">multi-track recording studio</span>. It makes it extremely easy to record a song track by track. At the same time it plays those already recorded tracks, just as you would in a recording studio.</div><div><br /></div><div>I decided that I should benefit from something like that. So I started recording the song "<span class="Apple-style-span" style="font-weight: bold;">El Menú</span>", voice by voice, track by track. What you can see and listen in the next video is the result: the song "El Menú" for six voices recorded entirely by me.</div><div>Do not expecto great things from me as a singer. I had never done falsetto nor had I recorded six different voices myself. And definitely I am not Pavarotti. But you can be sure that it was really funny to do this (maybe my wife has a different point of view :-D)</div><div><br /></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><span class="Apple-style-span" style="white-space: pre;font-family:Arial;font-size:10;" ><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/xxWtp8pZxy4&hl=es&fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/xxWtp8pZxy4&hl=es&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></span></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0tag:blogger.com,1999:blog-6400109873187811774.post-23735816481336869182009-01-25T22:25:00.015+01:002009-01-31T19:11:47.090+01:00"El Menú" a capella para seis voces<div style="text-align: left;">You have this post in English <a href="http://terrazadearavaca.blogspot.com/2009/01/song-el-men-for-six-voices.html">here</a>.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Hace algún tiempo descubrí el software <span class="Apple-style-span" style="font-weight: bold;">n-track Studio</span>. Dicho software emula un <span class="Apple-style-span" style="font-weight: bold;">estudio de grabación multipista</span> casero. Hace sumamente sencillo grabar una canción pista por pista, a la vez que reproduces las que ya están grabadas. Vamos, como harías en un estudio de grabación.<br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Decidí que había que sacar provecho de algo así. Así que me puse a sacar voz por voz la canción <span class="Apple-style-span" style="font-weight: bold;">El Menú</span> y a grabarla pista por pista. Lo que podéis ver y escuchar en el siguiente vídeo es el resultado: la canción El Menú a <span class="Apple-style-span" style="font-weight: bold;">seis voces</span> grabada enteramente por un servidor.<br /></div><div style="text-align: left;">No esperéis gran cosa de mí como cantante. No había hecho nunca falsetes ni grabado yo solo varias voces y además no soy Pavarotti. Pero desde luego os aseguro que fue divertido hacerlo (aunque no sé si la que vive conmigo opina lo mismo :-D).<br /></div><br /><div><div><br /></div><div style="text-align: center;"><span class="Apple-style-span" style="white-space: pre;font-family:Arial;font-size:10;" ><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/xxWtp8pZxy4&hl=es&fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/xxWtp8pZxy4&hl=es&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></span><br /></div></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com1tag:blogger.com,1999:blog-6400109873187811774.post-68474189648702045902008-12-26T14:17:00.067+01:002009-03-15T20:05:04.110+01:00JPA implementations comparison: Hibernate, Toplink Essentials, Openjpa, Eclipselink<span style="font-weight: bold;font-size:130%;" class="Apple-style-span" ><br />Summary</span><br />This article is a response to the lack of information on the net about the <span style="font-weight: bold;">performance differences</span> among the 4 most well known Java Persistence API (JPA) implementations: <span style="font-weight: bold;">Toplink Essentials</span>, <span style="font-weight: bold;">EclipseLink</span>, <span style="font-weight: bold;">Hibernate</span> and <span style="font-weight: bold;">OpenJPA</span>.<br />Besides results and conclusions, <a href="http://sites.google.com/site/jpaenginescomparison/Home/JPAImplementationsTest.zip">the full test code</a> is also available in case you want to repeat the test yourself.<br /><div>I wrote a relatively simple program which executes some queries and inserts in a <span style="font-weight: bold;">MySQL</span> database through JPA. Four fixed-time tests were done with exactly the same code, just changing the JPA implementation library and the persistence.xml. I monitored the resources used by the JVM and counted the inserts and queries executed during the tests. Finally, I show here my conclusions and also the results of these tests, so that you can draw your own. I consider the differences found among the different implementations truly relevant.<br />For the tests performed for this article, nothing except JPA was used. No web pages, no web or application server. Just java threads, JPA and MySQL. I give more details in the next sections.<br /><span style="font-weight: bold;">Note</span>: In case you are using JPA with Axis and/or the Google Web Toolkit (GWT), <a style="font-weight: bold;" href="http://terrazadearavaca.blogspot.com/2008/12/lessons-learned-using-gwt-axis-and-jpa.html">this other article focused on working with JPA, Axis and GWT</a> could be of interest for you.<br /><br /><span style="font-weight: bold;font-size:130%;" class="Apple-style-span" >Description of hardware and software</span></div><div>The tests have been done in an Acer Extensa 5620G laptop, with a pentium Core 2 Duo T5250 Processor with 2 Gb Ram DDR2, being monitored by a standard PC.<br /></div><div>For the tests I have used the following software:<br /><ul><li>Ubuntu 8.10 Intrepid Ibex</li><li>MySQL database, version 5.0 (installed from the official Ubuntu repositories).</li><li>Java Virtual Machine 1.6</li><li>Driver jdbc for MySQL 5.1.</li><li>Eclipse Ganymede<br /></li><li>The employees database example for MySQL, courtesy of Patrick Crews and Giuseppe Maxia (url below in the references section)<br /></li><li>JConsole for resources monitoring</li><li>GIMP 2 to capture screens</li></ul><div>The database and the JVM were running in the Acer machine. But both JConsole and GIMP were executed in a PC (also equiped with Ubuntu 8.10) connected via tcp/ip to the test machine. I did it so that I did not overload the machine running the tests.</div><div>Versions of the JPA implementations tested:</div><div><ul><li>Hibernate EntityManager and Annotations 3.4.0</li><li>Toplink Essentials version 2 build 41<br /></li><li>Openjpa 1.2.0</li><li>Eclipselink 1.0.2</li></ul></div><div style="font-weight: bold;"><span style="font-size:130%;">Description of code and tests<br /></span></div><div>The code developed for the tests is available to download <a style="font-weight: bold;" href="http://sites.google.com/site/jpaenginescomparison/Home/JPAImplementationsTest.zip">here</a>. All you have to do is import the zip file in <span style="font-weight: bold;">Eclipse</span>. You will need at least one of the JPA implementation libraries. You can download them from the urls in the references section below.</div>The code is made up of two type of threads, one for inserting and one for querying. each of them containing a loop.<br /><span style="font-style: italic;">Inserting thread</span> loop gets an arbitrary employee and makes a copy of him/her, letting MySQL generate a new emp_no. This was the only modification I did to the employees database: the emp_no is auto-generated.<br /><span style="font-style: italic;">Querying thread</span> loop executes these queries in sequence:<ul><li>A query returning the number of female employees.</li><li>A query returning the number of male employees.</li><li>A query returning all employees hired since an arbitray date.</li><li>A query returning all employees born after an arbitrary date.</li><li>A query returning all women who have earned more than an arbitrary salary.<br /></li></ul>I have also created an independent class JPAManager, which is in charge of creating the static EntityManagerFactory and the EntityManager for each of the threads. You have the details of that class in <a style="font-weight: bold;" href="http://terrazadearavaca.blogspot.com/2008/12/lessons-learned-using-gwt-axis-and-jpa.html">this other article focused on the problems derived from sharing EntityManager among different objects</a>.This is the starting sequence:</div><div><ol><li>When the program starts, it waits 2 minutes for the monitoring infraestructure to be ready (connecting JConsole to the JVM, basically).<br /></li><li>It then starts 2 of the so-called inserting threads. I start the inserting threads before the querying threads trying that the queries do not always return the same (which will eventually happen, anyway).<br /></li><li>After starting the inserting threads, the program starts running 18 of the querying threads, inserting a pause of 10 seconds before starting next. This is so that they do not execute the same query at the same time.</li><li>The program runs the threads for 30 minutes. After that time, it sends a stop signal to the threads, which will safely make them stop after the next inserting or querying round. The main program waits 15 minutes for the threads to stop and the jvm memory to stabilize.<br /></li><li>Before stopping, the threads provide information about the number of inserts/queries they have executed.</li></ol><div>The only change from test to test was the JPA implementation library and the persistence.xml. It is important to notice that the persistence.xml was left by default for each of the implementations, omitting on purpose any kind optimization that the implementation could accept.<br /><span style="font-weight: bold;"></span><br />Before every test, the inserted records were deleted. In this way, every implementation started with the database exactly in the same situation.<br /><br /></div><span style="font-weight: bold;font-size:130%;" class="Apple-style-span" >Results</span><div>These were the results of the tests per JPA implementation library. Notice that the time was fixed: 30 minutes running. </div><div><table border="1"><tbody><tr><td><br /></td><td>Number of queries+inserts executed</td><td>Number of queries executed</td><td>Number of inserts executed</td><td>Max mem occupied during the test(Mb)</td><td>Mem occupied after the test(Mb)</td></tr><tr><td>OpenJPA</td><td><span class="Apple-style-span" style="color: rgb(255, 0, 0);">3928</span><br /></td><td>3530</td><td style="color: rgb(255, 0, 0);">398</td><td>96<br /></td><td>61</td></tr><tr><td>Hibernate</td><td><span style="font-weight: bold;">12687</span><br /></td><td style="color: rgb(255, 0, 0);">3080</td><td style="font-weight: bold;">9607</td><td style="color: rgb(255, 0, 0);">130</td><td style="color: rgb(255, 0, 0);">79</td></tr><tr><td>Toplink Essentials<br /></td><td><span style="">5720</span><br /></td><td style="font-weight: bold;">3740</td><td style="color: rgb(0, 0, 0);">1980</td><td style="font-weight: bold;">55</td><td style="font-weight: bold;">25</td></tr><tr><td>Eclipselink<br /></td><td>5874<br /></td><td>3735</td><td>2139</td><td>57</td><td>25</td></tr></tbody></table></div><div><br /></div><div>The <span class="Apple-style-span" style="font-style: italic;">maximum memory occupied</span> is the maximum amount that the JVM reserved during the test.<br />The <span class="Apple-style-span" style="font-style: italic;">memory occupied after the test</span> is the amount of memory that remained reserved after finishing the test.<br />I have emphasized the highest and lowest values for each of the columns.<br /></div><div>You can see this graphically in the following images showing the data monitored during the different tests.<br /><br /></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2-6_gE-jgEeD9ldzwomq1uhBM7clqKqKS8nYm6ce-MoglnCUkKtEmngxlh6Oqb2PKYsUOkuFalsD2H0zKWUEaHiRAIdMWSmCSXPFnZ50MSiWG2qf39aqNwdBVP5E8AERbYIK5QF80hjIR/s1600-h/openjpa-complete.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 148px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2-6_gE-jgEeD9ldzwomq1uhBM7clqKqKS8nYm6ce-MoglnCUkKtEmngxlh6Oqb2PKYsUOkuFalsD2H0zKWUEaHiRAIdMWSmCSXPFnZ50MSiWG2qf39aqNwdBVP5E8AERbYIK5QF80hjIR/s400/openjpa-complete.png" alt="" id="BLOGGER_PHOTO_ID_5292588460745752306" border="0" /></a><div><div style="text-align: center;"><span style="font-size:85%;">OpenJPA monitoring data</span><br /><br /></div><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXC4TZWozaQ0f-qorFkegKEOFVQZLVQtGBlelHg1TRZYE2oXp8WrSd0nRcHf5RgJmcTEElUztZB1H92Q6QyEflxIjiPxjKmvMVkgIZmjF842pkw6DaRnQ_9PmSeh0dq-nS0u6x1hA5OoLH/s1600-h/hibernate-complete.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 148px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXC4TZWozaQ0f-qorFkegKEOFVQZLVQtGBlelHg1TRZYE2oXp8WrSd0nRcHf5RgJmcTEElUztZB1H92Q6QyEflxIjiPxjKmvMVkgIZmjF842pkw6DaRnQ_9PmSeh0dq-nS0u6x1hA5OoLH/s400/hibernate-complete.png" alt="" id="BLOGGER_PHOTO_ID_5292588453036824450" border="0" /></a><span style="font-size:85%;">Hibernate monitoring data</span><br /><br /></div><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT_tu8z9t2tZvnIBrWmwlCIvTb5ZA1lRxg873Ju47rU5eaZYvTfaKNLnsrtSQZYlIdIfncoHY9Ll98WZZWMWqueT_J9iIIZzWbrWFze1ydSNQWC0U0QZD1qeW_mU2-JrFft0fW0kEPN3YV/s1600-h/toplink-complete.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 148px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT_tu8z9t2tZvnIBrWmwlCIvTb5ZA1lRxg873Ju47rU5eaZYvTfaKNLnsrtSQZYlIdIfncoHY9Ll98WZZWMWqueT_J9iIIZzWbrWFze1ydSNQWC0U0QZD1qeW_mU2-JrFft0fW0kEPN3YV/s400/toplink-complete.png" alt="" id="BLOGGER_PHOTO_ID_5292588464141061858" border="0" /></a><span style="font-size:85%;">Toplink Essentials </span><span style="font-size:85%;">monitoring data</span><br /><br /></div><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipehMuut_Q-cicBdFjhDCpcR5UvsxYvruSnrEu0sciu8xrFyd-YYNDGo1CC_e5xS0Hqo1CtaDAzpl7W4nvShh1I4HbNLbabqyXVUcRekhBonr8M4Z-e7TkZfrvM-C8XZhwBhMaZlBxtjKw/s1600-h/eclipselink-complete.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 148px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipehMuut_Q-cicBdFjhDCpcR5UvsxYvruSnrEu0sciu8xrFyd-YYNDGo1CC_e5xS0Hqo1CtaDAzpl7W4nvShh1I4HbNLbabqyXVUcRekhBonr8M4Z-e7TkZfrvM-C8XZhwBhMaZlBxtjKw/s400/eclipselink-complete.png" alt="" id="BLOGGER_PHOTO_ID_5292588444168510754" border="0" /></a><span style="font-size:85%;"> </span><span style="font-size:85%;">Eclipselink monitoring </span><span style="font-size:85%;">data</span><br /></div><span style="font-weight: bold;font-size:130%;" ><br />Conclusions</span><br /></div><div>My intention is that anyone can draw their own conclusions looking at the results or using the code to do a test of their own.<br />Nevertheless, I consider that there are a number of conclusions that one can draw watching the monitored data:<br /><ol><li>There is not an implementation that clearly has the best performance. Some had a very good CPU or memory performance and some did it very well when inserting or querying. But none of them was outstanding as a whole.</li><li>The number of records inserted by Hibernate was extremely higher than it was for any other implementation (4 times more compared to Eclipselink and 24 times more compared to OpenJPA). However, Hibernate was also the JPA implementation that executed the lowest number of queries, although the differences in this value (3080 for Hibernate vs 3740 for Toplink Essentials) are not so extreme as for the number of inserts.</li><li>Hibernate was also the implementation that consumed more memory. But having into account that it inserted many more records than the others, it sounds reasonable.</li><li>OpenJPA had the lowest value of inserts+queries.</li><li>The number of inserts executed by OpenJPA was extremely low, compared to the others.</li><li>The usage of CPU in the case of Toplink Essentials and Eclipselink was extremely low.</li></ol><span style="font-weight: bold;">Note for the JPA implementations responsible/developers</span>: I am aware that some optimization can be obtained by changing the persistence.xml and/or changing the code somehow. If you give me some advice on how to improve the performance of any of the implementations, I will be glad to update this post with that information.<br /><br /><span style="font-weight: bold;font-size:130%;" >References</span><br />Ubuntu: <a href="http://www.ubuntu.com/">http://www.ubuntu.com/</a><br />Employees database: <a href="http://dev.mysql.com/doc/employee/en/employee.html">http://dev.mysql.com/doc/employee/en/employee.html</a>, <a href="https://launchpad.net/test-db/">https://launchpad.net/test-db/</a><br />Openjpa: <a href="http://openjpa.apache.org/">http://openjpa.apache.org/</a><br />Toplink Essentials: <a href="http://www.oracle.com/technology/products/ias/toplink/jpa/download.html">http://www.oracle.com/technology/products/ias/toplink/jpa/download.html</a><br />Hibernate JPA: <a href="http://www.hibernate.org/397.html">http://www.hibernate.org/397.html</a><br />Eclipselink: <a href="http://www.eclipse.org/eclipselink/">http://www.eclipse.org/eclipselink/</a><br />MySQL: <a href="http://www.mysql.com/">http://www.mysql.com/</a><br />Eclipse: <a href="http://www.eclipse.org/">http://www.eclipse.org/</a><br /></div></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com47tag:blogger.com,1999:blog-6400109873187811774.post-12186751604316540202008-12-26T11:50:00.030+01:002009-01-24T20:56:11.067+01:00Lessons learned using GWT, Axis and JPA simultaneouslyNote: This article is solely focused on some issues related to the EntityManager that may appear working with GWT, Axis and JPA. If you are interested in the performance of JPA, <a href="http://terrazadearavaca.blogspot.com/2008/12/jpa-implementations-comparison.html">this other post about a comparison among different JPA implementations (OpenJPA, Hibernate, OpenJPA and Eclipselink)</a> may be of some interest for you.<br /><br />In my experience with the three technologies which appear in the title of this article, I had to face a number of problems, actually quite easy to solve once you know what all is about. <div>So I decided to publish this, for others not to have to face these same problems.</div><div>Here you have some <span style="font-weight: bold;">lessons</span> learned that should be taken into account when working with the <span style="font-weight: bold;">Google Web Toolkit</span>, <span style="font-weight: bold;">Axis</span> and any of the <span style="font-weight: bold;">JPA</span> <span style="font-weight: bold;">implementations</span> out there.</div><div>You have this same article in Spanish <a href="http://terrazadearavaca.blogspot.com/2008/12/lecciones-aprendidas-en-el-uso-de-gwt.html">here</a>.</div><div><br /></div><div>These are the <span style="font-weight: bold;">facts</span>:</div><div><ul><li>EntityManager can not be shared among threads. This is specified in JPA, but you don't give it enough importance until you start using JPA from the web (which will probably be the usual case).</li><li>Second, Axis creates a new object (and thread) for each call to the server.</li><li>Third, contrary to Axis, when you use one of the so-called GWT server remote services, only one object and thread are created and this object is reused everytime the remote service is called. That is to say, GWT does not create a new object for every new call.</li></ul><div>As a result of these facts, we have these <span style="font-weight: bold;">consequences</span>:</div><div><ul><li>If we use a static EntityManager in a call to Axis, the code will fail as soon as two threads cross with each other (quite usual in a web application), given that they will be using the same EntityManager object.</li><li>Contrary to Axis, in the case of GWT it is not necessary that EntityManager is static to start generating problems; it will be enough that it is a global attribute belonging to the object that implements the GWT remote service. Being one only object that answers all petitions, two calls to the server will use the same EntityManager and this will make the code fail.</li></ul><div>So, we can conclude <span class="Apple-style-span" style="font-weight: bold;">two rules</span>:</div><ul><li>An Axis service must therefore create a new EntityManager and this <span style="font-weight: bold;">can not</span> be static.</li><li>Each method of a GWT remote service must create a new EntityManager for individual use (it is not enough that it creates it at a global level).</li></ul>If any of these two rules are not followed, 2 simultaneous calls will use the same EntityManager at the same time, producing exceptions. <div>Unfortunately, <span style="font-weight: bold;">JPA exceptions are not especially explicit</span>. This is common to almost every implementation of JPA: they give almost no concrete information (including <span style="font-weight: bold;">Hibernate</span>).</div><div><br /></div><div>The <span style="font-weight: bold;">EntityManagerFactory</span> can and should be shared among different threads, given that it is a quite expensive object to create.</div><div><br /></div><div>In short, if you don't want to have problems and you would like to have a piece of code that can be used both by GWT and Axis, you could write something like this:</div><pre>public class JPAManager {<br /> private final static EntityManagerFactory emf = <br /> Persistence.createEntityManagerFactory("JPAImplementationTest");<br /> private EntityManager em = emf.createEntityManager();<br /> public EntityManager getEntityManager () {<br /> return em;<br /> }<br />}</pre><div>Each method called in an invocation to a web service or to a GWT server remote service should create its own JPAManager and get the EntityManager with the public method. This way you will avoid having problems among the different threads created in the invocations.<br /><br />You could also use more sophisticated solutions like implementing a singleton (with the problems associated to them) or using the ServletContextListener, as someone suggested in the comments. But this simple solution worked for me and resisted some load tests. </div></div></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com14tag:blogger.com,1999:blog-6400109873187811774.post-6553120535101281812008-12-23T15:57:00.007+01:002010-11-27T21:50:03.520+01:00Lecciones aprendidas en el uso simultáneo de GWT, Axis y JPAEn mi experiencia con las tres tecnologías que dan nombre al artículo, me he encontrado con algunos problemas bastante fáciles de resolver una vez sabes de qué se trata (como siempre). Por eso, y para evitar que otros se peguen con lo mismo, aquí van una serie de lecciones aprendidas que deben ser tenidas en cuenta a la hora de trabajar con el <span class="Apple-style-span" style="font-weight: bold;">Google Web Toolkit</span>, <span class="Apple-style-span" style="font-weight: bold;">Axis </span>y cualquiera de las implementaciones de <span class="Apple-style-span" style="font-weight: bold;">JPA</span>. Para una comparativa detallada entre diferentes implementaciones de JPA (<span class="Apple-style-span" style="font-weight: bold;">Hibernate</span>, <span class="Apple-style-span" style="font-weight: bold;">Toplink</span>, <span class="Apple-style-span" style="font-weight: bold;">Eclipselink </span>y <span class="Apple-style-span" style="font-weight: bold;">Openjpa</span>), tienes <a href="http://terrazadearavaca.blogspot.com/2008/12/comparativa-de-implementaciones-de-jpa.html"><span class="Apple-style-span" style=""><span class="Apple-style-span" style="font-weight: bold;">este otro artículo</span></span></a> disponible.<div>Si quieres ver este artículo en inglés, lo tienes disponible <a href="http://terrazadearavaca.blogspot.com/2008/12/lessons-learned-using-gwt-axis-and-jpa.html">aquí</a>.<br /><div><br /><div>Pues bien, los hechos:<br /><div><ul><li>En primer lugar, así como el <span class="Apple-style-span" style="font-weight: bold;">EntityManagerFactory </span>puede ser compartido por diferentes objetos (e hilos), el<span class="Apple-style-span" style="font-weight: bold;"> EntityManager no puede ser compartido entre diferentes threads</span>. Esto está especificado en JPA, pero no le das importancia hasta que empiezas a usar JPA <span class="Apple-style-span" style="font-weight: bold;">desde la web</span> (que será el caso más habitual).<br /></li><li>En segundo lugar, <span class="Apple-style-span" style="font-weight: bold;">Axis </span>crea un nuevo objeto (e hilo) por cada petición que entra al servidor.<br /></li><li>En tercero, y al contrario que con Axis, al utilizar uno de los llamados <span class="Apple-style-span" style="font-style: italic; "><span class="Apple-style-span" style="font-weight: bold;">servicio remotos de servidor</span></span> del GWT se crea un objeto (y thread) que es posteriormente reutilizado cada vez que se llama a dicho servicio. Es decir, no se crea uno nuevo por cada uno que entra.<br /></li></ul>Las consecuencias a las que dan lugar los hechos:</div><div><ol><li>Si utilizamos un objeto<span class="Apple-style-span" style="font-weight: bold;"> EntityManager estático</span> en una llamada a <span class="Apple-style-span" style="font-weight: bold;">Axis</span>, <span class="Apple-style-span" style="font-weight: bold;">el código fallará</span> en el momento en que dos hilos se crucen (bastante normal en la web), al utilizar el mismo objeto los 2.</li><li>En el caso de <span class="Apple-style-span" style="font-weight: bold;">GWT</span>, al contrario que en Axis, no es necesario que el EntityManager sea <span class="Apple-style-span" style="font-weight: bold;">estático </span>para que de <span class="Apple-style-span" style="font-weight: bold;">problemas </span>(que también los dará, claro); <span class="Apple-style-span" style="font-weight: bold;">bastará con que sea un atributo global dentro del objeto que implementa el servicio remoto</span>. Al ser un objeto único el que responde a las peticiones, 2 llamadas al servidor utilizarán el mismo EntityManager y esto hará que código falle.</li><li>Un servicio de Axis deberá, por tanto, crear un nuevo EntityManager, y éste no podrá ser estático.</li><li>Cada método de un servicio remoto de GWT tiene que crear un nuevo EntityManager para uso individual (no vale que lo cree el objeto a nivel global, ver punto 2. Si no lo hace, 2 llamadas simultáneas al mismo servicio remoto utilizarán a la vez el mismo EntityManager, dando inmediatamente lugar a <span class="Apple-style-span" style="font-weight: bold;">excepciones.<span class="Apple-style-span" style="font-weight: normal; "></span></span></li></ol>Por desgracia, las excepciones de JPA son <span class="Apple-style-span" style="font-weight: bold; ">muy poco explícitas</span>. Esto es común para casi todas las implementaciones de JPA: dan poca información concreta de errores (incluyendo a Hibernate).</div><div><br /></div><div>El <span class="Apple-style-span" style="font-weight: bold;">EntityManagerFactory sí puede ser compartido</span> por los diferentes hilos.</div><div><br />En definitiva, si no queréis tener problemas y queréis usar un código que puedan utilizar tanto GWT como las llamadas a servicios web a través de Axis, podríais usar un código como el siguiente:</div><div><br /></div><div><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 22px; "><div><span class="Apple-style-span" style="font-family: 'courier new'; ">public class JPAManager {</span></div><div><span class="Apple-style-span" style="font-family: 'courier new'; "> private final static EntityManagerFactory emf =</span></div><div><span class="Apple-style-span" style="font-family: 'courier new'; "> Persistence.createEntityManagerFactory("JPAImplementationTest");<br /> private EntityManager em = emf.createEntityManager();<br /> public EntityManager getEntityManager () {<br /> return em;<br /> }<br />}</span></div></span></div><div><br /></div><div><span class="Apple-style-span" style="font-weight: bold;">Cada método llamado</span> en la invocación del web service o del servicio remoto de servidor de GWT <span class="Apple-style-span" style="font-weight: bold;">deberá crear su propio JPAManager</span>. De esta forma, <span class="Apple-style-span" style="font-weight: bold;">os evitáis tener problemas entre los diferentes hilos creados en las invocaciones</span>.</div><div><br /></div><div>Se pueden usar métodos más sofisticados, como implementar un singleton o usar el ServletContextListener, como ha puesto alguno en los comentarios. Pero lo cierto es que este sencillo método funcionó y resistió algunas pruebas de carga.</div><div><br /></div></div></div></div>Anonymoushttp://www.blogger.com/profile/16230758554312791063noreply@blogger.com0