Foto DNG en el iPad

Gracias a Mauro Fuentes (fotomaf) http://www.fotomaf.com/ que me ha enviado unas capturas de pantalla de la web de Foto DNG en el iPad, os voy a mostrar su apariencia y algunas impresiones.

Si vamos a ver foto DNG en Issuu debido a la falta de flash en el iPad nos lleva a la siguiente pantalla:

foto 1

La web se ve bien, aunque debido a que se utilizan sprites CSS veo partes de otras imágenes de fondo, vaya… algo que no observo desde el Safari en Windows, en la próxima versión de la web, intentaré verificarlo antes:

foto 2

La parte de la revista on-line con el widget de Issuu, aunque no se muestre el flash, da una alternativa como imagen y lo podemos ver, sin las bondades que por ejemplo nos brinda la vista en pantalla completa (aunque si podemos maximizar la página al tamaño del navegador):

foto 4

foto 5

En cambio, si vemos un pdf directamente desde la web (algo que de momento no es posible, ya que las revistas están comprimidas en formato zip), es cuando mejor se ve la revista:

foto-1

foto-2

foto-3

foto-4

No muestro la dirección completa del pdf, ya que se ha subido sólo para realizar la prueba, pero creo que va a ser la opción preferente para ver la revista desde el iPad, algo que os avisaremos tan pronto esté totalmente preparado.

Lo ideal sería crear un App para el iPad o incluso para el iPhone, pero el problema es que para realizar las pruebas debería tener un iPad y un iPhone, lo que no es el caso , pero el principal inconveniente es que el SDK de desarrollo hay que ejecutarlo en plataforma Mac y tampoco tengo un Mac…

Bueno, veremos como podemos ir avanzando en ese campo, ya que creo que soluciones como la del iPad son el futuro para las revistas electrónicas (en otra entrada mostraré la revista en un e-book reader).

Nº 44 de Foto DNG On-line

Contenidos (124 páginas):

  • Redacción (Página 2).
  • Indice (Página 3).
  • Novedades (Página 4).
  • Casio EX-FH20 (Página 16).
  • OCZ Rally2 USB 2.0 Flash Drive 64Gb (Página 26).
  • Mezquita Hassan II (Página 31).
  • Calles de Calcuta (Página 38).
  • VEUDE (Página 54).
  • Raúl J. Martínez (Página 71).
  • Gana dinero con tus fotos (Página 86).
  • Noticias Eventos (Página 94).
  • Libros (Página 114).
  • Grupo Foto DNG en Flickr (Página 116).

Servicio en flash ofrecido por Issuu.

Descarga de la revista en formato pdf desde http://www.fotodng.com/revista/descarga/

Visualización on-line desde http://www.fotodng.com/revista/flash/

Impresión: http://stores.lulu.com/fotodng

Optimización Javascript

Con el diseño de la nueva web y la consideración de temas SEO http://blog.fotodng.com/2010/03/seo-en-la-web-de-foto-dng-i.html y la lectura del libro de Steve Souders “Even Faster Web Sites” me he puesto a revisar algunas sentencias javascript para el nuevo sitio web de Foto DNG y le ha tocado el turno a la función para añadir el target _blank a las webs con rel=”external”.

Para realizar las pruebas con firebug (http://getfirebug.com/) con la función profile de javascript, le he añadido a la página un bucle que crea 1.000 enlaces con rel=”external” y sin ninguna modificación obtenemos un tiempo de ejecución de unos 6,6 segundos (* click sobre las imágenes para verlas a tamaño completo):

Profile Time 1

La función es la siguiente:

 

function enlacesexternos() {
    if (!document.getElementsByTagName){
        return;
    }
    var anchors = document.getElementsByTagName("a");
    var longitud= anchors.length;
    for (var i=0; i
        var anchor = anchors[i];
        if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external"){
            anchor.target = "_blank";
        }
     }
}
window.onload = function(){
    enlacesexternos();
}

 

El primer cambio viene de la necesidad de poder tener rel=”external nofollow” para poder repartir el Link juice (http://www.seoprofesional.com/aumenta-tu-pagerank-con-manejando-el-link-juice/) más adecuadamente, quedando la función como sigue:

function enlacesexternos() {
    if (!document.getElementsByTagName){
        return;
    }
    var anchors = document.getElementsByTagName("a");
    var longitud= anchors.length;
    for (var i=0; i
        var anchor = anchors[i];
        if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "external" || anchor.getAttribute("rel") == "external nofollow")){            anchor.target = "_blank";
        }
     }
}
window.onload = function(){
    enlacesexternos();
}

la función está bastante bien, ya que se comprueba la longitud antes de ejecutar el bucle, se declaran variables locales, etc…, con este cambio aumentamos el tiempo de ejecución a unos 7,7 segundos:

Profile Time 2

Comenzamos con las optimizaciones y aparte de cambiarle el nombre a la función y juntar la primera condición en una sola línea, la optimización principal y causa de la ganancia de rendimiento es recorrer el bucle en orden inverso hasta cero, algo que ejecuta de forma más optimizada el intérprete de javascript, quedando la función como sigue y dando un tiempo de ejecución de poco más de 5 segundos:

function a_ext() {
    if (!document.getElementsByTagName)    return;

    var anchors = document.getElementsByTagName("a");
    var i= anchors.length;
    while (i–){
        var anchor = anchors[i];
        if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "external" || anchor.getAttribute("rel") == "external nofollow")){
            anchor.target = "_blank";
        }
     }
}

Profile Time 3

El último cambio es cambiar la función onload que ejecuta a_ext() por window.onload = a_ext; eliminado un pequeño tiempo (ahora sólo tenemos una función a ejecutar) y quedando el total en unos 4,8 segundos:

Profile Time 4

Seguiremos mostrando diversas optimizaciones de javascript, css, imágenes, servidor y cambios para SEO, según vayamos realizando y el tiempo nos lo permita.