IE 8 beta 2: Ahora más a fondo. Rendimiento.

Ayer día del lanzamiento de la beta 2 de IE 8, hablé un poco por encima de las novedades.

Todo lo que he hablado y por el momento hablaré será cosecha mía, tras su descarga y su utilización. Y antes de leer que dice el equipo al respecto le voy a hacer una serie de pruebas para ver que tal va.

En mi post anterior hablé de un aumento del 30% de memoria, dato que debo rectificar ahora. Si bien ese dato puede ser real en las primeras pruebas tras la instalación, uno debe esperar a hoy para ver como los datos han cambiado. Debo explicar esto, como dije allí cada pestaña supone una nueva instancia de IE. En mis primeras pruebas vi como 3 pestañas creaban 3 procesos de 33000 kb aprox cada una, por lo tanto 99000 kb tres pestañas. Que en comparación con 60000 kb de 3 pestañas en IE7, suponía un aumento muy grande de consumo de memoria.

En mis nuevas pruebas los datos son diferentes. Abro IE 8,  voy al home (Google) y el cosumo de memoria es el siguiente:

image

¡Se han creado dos instancias!

Tras un poquito de investigación vemo s como la instancia de 14864 kb es la instancia de la pestaña (única) y el otro es una instancia básica.

Si nos cargamos la primera (que sería equivalente a que fallase o algo), el resultado es el siguiente:

image

Por lo tanto mi teoría inicial es cierto.

Ahora se me da por abrir 5 pestañas más:

image

Y los procesos son 5, ya no es a proceso por pestaña, 6 pestañas = 5 procesos.

image

Y ahora vamos a verlo si en cada una de las 5 pestañas una web diferente, en este proceso que está tardando lo suyo (puede ser porque no tengo ADSL), he sufrido el primer fallo de IE y han caído las pestañas de Youtube y Microsoft.com, por lo que vemos que a cada proceso le corresponden x pestañas.

image

Ahora que IE ya está algo más estable (Microsoft y Youtube aun se niegan a abrir bien) tenemos la siguiente situación:

image

De tal forma que 6 pestañas ocupan: 147008 kb.

Pese a los problemas de estabilidad (no se si será algun problema con Flash), el consumo de memoria no era para tanto como dije en el anterior artículo. Tengo que hacer la mismas pruebas con IE 7 y ya os contaré.

 

http://eugenioestrada.es/blog

IE 8 Beta 2: El día del lanzamiento. Primeras impresiones

Por falta de tiempo comentaré algunas novedades de IE 8 Beta 2 por encima, los divideré en dos grupos: a la vista y por debajo.


A la vista:




  • Interfaz minimalista, ya no es la misma que IE 7: Tiene más espacio para las pestañas,los favoritos están en una nueva barra entre la de direcciones y las pestañas.


  • Mejor renderizado, cuando usabamos la beta 1 la mayor parte de los sitios web no se podían ver. Hasta ahora con la beta 2 no he tenido problemas.


  • Modo “InPrivate Browsing” y opción “Delete Browsing History”, a pesar de que el segundo es una copia a FF, el modo “InPrivate Browsing” es una caracteristica que Mozilla quería incluír en FF3, pero por la dificultad técnica no pudieron. Este modo no guarda datos en el equipo, solamente mantiene la sesión actual en memoria. La opción de borrar historial, pemite borrar cookies, cache, etc.

Por debajo: La verdad me parece muy interesante la novedad que voy a comentar aquí.




  • Cada pestaña corresponde a un proceso de “iexplore.exe” diferente. De tal forma que si una pestaña falla y deja de funcionar, este se volverá a recuperar en un nuevo proceso. Esto le va a dar a IE más estabilidad y la posibilidad de restaurar pestañas que tiene FF. El problema es que supone un aumento de momeria de aproximadamente un 30 %.


  • Es más rapido su renderizado.

Cuando tenga tiempo publicaré más información técnica y con capturas de pantalla y todo.


http://eugenieostrada.es/blog

AJAX: Cómo “embeber” un archivo JavaScript en una DLL

Recordando el post sobre cómo crear un UpdateProgress, puede ser que queramos que nuestro JavaScript lo queramos incrustar en una DLL, por lo que sea, para proteger el JavaScript que no llega al cliente, por ejemplo.

Objetivo:

Debemos desarrollar una especie de librería de clases, pero en vez de clases .NET, JavaScript. Recuperar luego ese recurso será muy sencillo, al igual que incrustarlo.

Requisitos:

Al igual que en el anterior artículo, copy-paste, cualquier versión de ASP.NET AJAX nos sirve, tanto la 1.0 (para .NET 2.0) descargable en http://ajax.asp.net/, como la versión nativa de ASP.NET AJAX. Si usas VS 2008 (o Visual Web Developer 2008 Express Edition) no tendrás que descargar nada.

Análisis:

Si tenemos una libreria en nuestra aplicación web sirve, sino debemos crear una libreria de clases de C#, en mi ejemplo se llamará AjaxLibrary.

Por lo tanto, necesitamos un archivo .js que contenga el código JavaScript del anterior artículo, ClientLibrary.js en este:

function pageLoad() {

    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginPageRequest);

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endPageRequest);

}

 

function beginPageRequest(sender, args) {

    updateProgress.className = "showed";

}

 

function endPageRequest(sender, args) {

    updateProgress.className = "hidden";

}

ClientLibrary.js

Coding.

Incrustando el archivo

image

Simplemente añadimos a nuestro proyecto el archivo .js y en sus propiedades cambiamos la propiedad “Build Action” y la establecemos en “Embedded Resource”.

Esto lo que hará es que el archivo js, se incruste en la DLL, como podemos ver en Reflector.

image

Preparando la librería

Bien, el archivo ya está dentro de nuestra DLL… Pero… Con eso no hacemos nada de nada… Debemos convertirlo en un recurso web. Para ello, antes de nada debemos “desocultar” los archivos ocultos del proyecto, como se muestra en la siguiente figura, el punto 1.

image

Eso nos permitirá ver el archivo del punto 2, que es el que nos interesa para convertirlo en un recurso web. Ese archivo, AssemblyInfo.cs, contiene toda la información del ensamblado.

Debemos añadir en nuestro proyecto la referencia System.Web si no la tenemos y en AssemblyInfo.cs, el namespace System.Web.UI.

Y en este archivo debemos añadir la siguiente línea:

[assembly: WebResource("AjaxLibrary.ClientLibrary.js", "text/javascript")]

La librería ya está lista.

Obteniendo la librería en el cliente

Para obtener el javascript debemos modificar el ScriptManager de nuestro sitio, quedando algo así:

<asp:ScriptManager ID="ScriptManager1" runat="server">

    <Scripts>

        <asp:ScriptReference Assembly="AjaxLibrary"

            Name="AjaxLibrary.ClientLibrary.js" />

    </Scripts>

</asp:ScriptManager>

Evidentemente el código JavaScript debemos haberlo borrado 😉 De esta forma ya tenemos el JavaScript en el cliente.

 

http://eugenioestrada.es/blog

Foto de la semana




gatito

Cargado originalmente por Euge 🙂

Desde que tengo el iphone, el volumen de fotografías que hago han aumentado un monton. La mayoría son fotos sin sentido por lo tanto voy a publicar por aquí cada domingo una foto que escoja de la semana anterior.

Empiezo con este gatito que vi saliendo de Lusco el otro día a eso de las 2 menos algo.

Me lo encontré en mi camino cuando se metio debajo de este coche para dejarse fotografíar por mi.

Espero que os guste 🙂

http://eugenioestrada.es/blog

AJAX: Cómo crear nuestro propio UpdateProgress

 


A veces no queremos hacer uso del UpdateProgress que viene con ASP.NET por diversos motivos.


Objetivo


image El objetivo es conseguir el efecto del UpdateProgress. Para ello necesitamos un UpdatePanel donde tengamos por ejemplo un botón con un Label. Para que el efecto sea visible se recomienda usar el método Sleep de System.Threading.Thread, un par de segundo es suficiente.


Requisitos


Cualquier versión de ASP.NET AJAX nos sirve, tanto la 1.0 (para .NET 2.0) descargable en http://ajax.asp.net/, como la versión nativa de ASP.NET AJAX. Si usas VS 2008 (o Visual Web Developer 2008 Express Edition) no tendrás que descargar nada.


Análisis


¿Que hace el UpdateProgress? Siempre que se hace una petición al servidor se muestra un panel. Por lo que ya sabemos dos cosas:



  1. Debemos manejar el evento de comienzo y finalización de las peticiones en el cliente.

  2. Hay algo oculto que debemos mostrar después.

Esta claro que el lenguaje en el cliente es JavaScript y para el estilo (necesario para mostrar y ocultar el panel, que ya digo que será una capa, DIV) usaremos estilso en cascada CSS.


Coding.


Antes de nada el manejador de evento del evento Click del botón es:


protected void ActualizarButton_Click(object sender, EventArgs e)

{

    HoraLabel.Text = DateTime.Now.ToShortTimeString();

    System.Threading.Thread.Sleep(5000);

}


Ahora vamos a la parte que nos ocupa, el cliente. La capa que nos ocupa es la siguiente, sencillita:

<div id=”updateProgress” class=”hidden”>

    Actualizando…

</div>


Como puedes ver vamos a tener un estilo llamado hidden y, esto os lo digo yo, tendremos otro para cuando lo queramos mostrar, que le llamaré showed, estos son los siguientes:


.hidden {

    display: none;

}

.showed {

    border: 2px solid #FF0000;

    background-color: #FF6666;

    color: #800000;

    font-size: x-large;

    font-family: Arial, Helvetica, sans-serif;

    padding: 10px;

    margin: 10px;

    width: 200px;

    text-align: center;

}


Le he añadido algo de formato en el estilo showed, para que se vea bien. Realmente lo importante es la diferencia de que el primero contiene la etiqueta display: none y la segunda no.


Bien, ahora nos queda lo más importante, manejar los dos eventos en el cliente. La clase encargada de ello es el PageRequestManager, en el namespace Sys.WebForms. Y el código es tan sencillo como este:


function pageLoad() {

    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginPageRequest);

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endPageRequest);

}


 


function beginPageRequest(sender, args) {

    updateProgress.className = “showed”;

}

 


function endPageRequest(sender, args) {

    updateProgress.className = “hidden”;

}


En este caso el efecto es muy similar al del UpdateProgress, pero los resultados pueden ser muy diversos cuanto más lo piensa uno.


http://eugenioestrada.es/blog

Silverlight, la web de Plain Concepts. Felicidades!

LLevaba días con ganas de verla, pero hasta ahora no pude verla.

Sinceramente, mis felicidades al equipo de UX de Plain Concepts. ¡Simplemente alucinante! Es de esto que al verla, el corazón te empieza a latir más fuerte… Pues es lo que sentí al verla.

Un diseño muy elegante a la vez que espectacular.

Mis felicidades a todo el equipo 😉

¡Cuidado! Nuevas parejas… Mozilla, Adobe, IE, Flash… ¿?

Adobe y Mozilla conspiran para introducirse en IE… Flash y el portapeles intiman…

Cada vez me dan más ganas de desinstalar Flash. No solo por esta noticia que podíamos leer en Genbeta, con la que Mozilla y Adobe pretender destruir IE creando un plugin monstruoso, que va a penalizar en el rendimiento y estabilidad de Internet Explorer.

Ante todo soy usuario habitual tanto de Internet Explorer, como de Firefox, como de Opera (de Safari solo esporádicamente).

Pero me parece una falta de… ¿respeto? que Mozilla se pretenda meter A LA FUERZA dentro de IE usando un plugin instalado en casi todos los ordenadores con el fin de destruir el lanzamiento de Silverlight. ¿Quién quiere hablar de monopolio? Si no dejas que nazcan nuevos competidores… ¿Como se le llama a eso? ¿Tanto miedo le tienen a Silverlight?

Por otra parte leía esta otra noticia en Kriptopolis. Por un lado, no es muy complicado hacer una aplicación que gestione el portapapeles… pero… ¿no creéis que es un poco peligroso en un navegador? Yo realmente creo que si. Cuando usamos Internet Explorer 7 por primera vez nos pregunta si queremos dar acceso a nuestro portapapeles… Pero no nos lo vuelve a preguntar… ¿que pasa si solo lo queríamos en ese caso? Más peligroso me parece que alguien pueda monitorizar nuestro portapapeles desde un banner flash, igual que me lo parece desde cualquier aplicación…

Por lo tanto… mientras el debate sobre el iphone se centra en una de sus futuras features, el copy-paste… yo realmente voto por la desaparición en todos los sistemas del portapapeles. O por lo menos un portapapeles mucho más complejo, en el que podamos elegir con que aplicación lo compartimos y cuando.

¿Qué opináis?

En definitiva… me plantearé desinstalar Flash… no me gustan estas nuevas parejas de amor veraniego.

 

http://eugenioestrada.es/blog

¿Quiéres saber que se cuece en .NUGG?

LogoNuggAzul


Si eres gallego, estás en Galicia o te mueves por Galicia. Si además eres programador interesado en .NET o cualquier otra tecnología que tenga que ver con Microsoft. Te invitamos a participar en el grupo de Galicia. Ya sea como asistente o en nuestros eventos. O, si te atreves, a contarnos algo que sepas 🙂 Subscríbete en nuetro Google Group y estate informado.









Grupos de Google
.NET User Group Galicia
Consultar este grupo

Pronto comenzaremos con la temporada de otoño 2008. Si quieres aportar tus ideas, ofrecerte como ponente o cualquier otra cosa, solo tienes que decirlo.


También puedes subscribirte al RSS de los comunicados oficiales de .NUGG que hago en este blog:


http://geeks.ms/blogs/eecsaky/rss.aspx?Tags=.NUGG&AndTags=1


Para más información seguir leyendo.


http://eugenioestrada.es/blog

Oferta de trabajo en Navteq en Madrid:

Por petición de Psicotec publico la siguiente noticia:

——————————————–

Hola a todos, somos Psicotec, una consultoria de Recursos Humanos.

En estos momentos estamos realizando un proceso de selección para NAVTEQ, en colaboración con Sheridan Evans. Ahora mismo, buscamos profesionales que estén interesados en formar parte de esta importante multinacional americana, que tiene previsto abrir una nueva plataforma en Madrid y que se centrará en dirigir y coordinar toda la actividad a nivel europeo. El perfil que buscan es una persona especialista en lenguajes de programación tipo:

  • .net
  • asp.net
  • sqlserver 
  • symbian
  • J2ME
  • Windows mobile

Si hubiese alguna persona interesada en la oferta, mandar CV a la siguiente dirección plecuna@psicotec.es indicando en asunto: Proceso Navteq.

——————————————–

Espero que a alguien le interese 🙂

http://eugenioestrada.es/blog