Concurso Navideño (reloaded)

JMiur [E]

Parece que esta navidad viene con más regalos de los imaginados. El Concurso de Pizcos sigue sin incluir IPhones pero se han ampliado los premios y ya son tres plantillas para los ganadores ya que se han sumado dos más, una ofrecida por Pilar de Xanarts.com y otra por Fernando de Randomness ... y acabo de ver que hay una más ofrecida por BloggerSphera para el primer blog ganador de lengua portuguesa.

Como incentivo extra, Gem@ ofrece un banner en su sidebar publicitando al blog ganador durante un mes y a ella se han sumado Palomas de Papel y Folk Tango con el mismo ofrecimiento.

Para no ser menos, he ofrecido lo mismo:
un banner publicitarios durante un mes.



Entonces ¿qué esperan para anotarse?

Mientras tanto, el jurado ya está deliberando:

deviantART: faboarts


Click para ampliar las imágenes.

REFERENCIAS:
  • deviantART: faboarts
  • Carl Sagan: Cosmos

    Cosmos: A personal voyage (Un viaje personal) es una serie de trece documentales realizados para la televisión, escritos y presentados por el astrónomo Carl Sagan y en su momento, allá por los años 80, fue visto por más de 600 millones de especatdoes de 60 países del mundo.

    La serie está disponible en varios sitios de internet, entre ellos, en Google Videos.

    [1] The Shores of the cosmic ocean[2] One Voice in the cosmic fugue
    [3] Harmony of the worlds[4] Heaven and hell[5] Blues for a red planet
    [6] Travellers' tales[7] The backbone of night[8] Journeys in space and time
    [9] The lives of the stars[10] The edge of forever[11] The persistence of memory
    [12] Encyclopaedia galactica[13] Who speaks for Earth?

    Otro sitio interesante que reune todos los capítulos es VJ SPCTV donde podemos verlos consecutivamente o bien descargarlos en formato FLV a nuestra PC

    Wallpapers (los inclasificables)

    Pizcos Blog y un concurso navideño

    Pizcos anuncia sn su sitio, el lanzamiento de un Concurso Navideno. Se trata de premiar la MEJOR DECORACION NAVIDEÑA DE BLOG. El ganador se publicará el dia 5 de Enero de 2009 y para participar, no hay normas establecidas es decir, a anotarse y listo.

    Un jurado de notables ha sido seleccionado para elegir el triunfador aunque no se sabe si deliberarán al respecto o aprovecharán el evento para seguir chismorreando risa

    Como Pizcos no es rubia (eso espero) el premio no es un IPhone sino una no tan humilde plantilla personalizada a gusto del ganador.


    Como colaboración, esta es una colección de íconos navideños que vi en Noticia Informales.


    Suerte a todos los participantes

    Tennis for two: El juego del año ... 58

    Tennis for two es un juego (tal vez el primer videojuego), desarrollado por el físico William Higinbotham en el año ... 1958.

    Era un ping-pong realizado con un osciloscopio y sólo tenía como propósito divertir a los visitantes ilustres del Brookhaven National Laboratory y permaneció allí, sin uso, desconocido para la mayoría hasta que a principios de los años 80 salió a la luz en virtud de una serie de demandas judiciales. El juego era controlado por una computador analógica que, según sus creadores, sólo era un montón de válvulas (más información).


    En SourceForge.net existe un proyecto para recrear el juego sin necesidad de osciloscopios, claro. Aunque hace rato que no es actualizado, se puede descargar desde gamersquarter.com.

    Click para ver los videos.

    REFERENCIAS:
  • computerhistory.org
  • Vísteme despacio que estoy apurado

    Parece que somos varios los que recién nos damos cuenta de la aparición de esta publicidad dentro de Blogger. Mientras Gem@ trata de ella en una entrada de ayer, este Buenos Aires agobiante hace que queden las cosas pendientes y allí vamos, tarde pero seguro. Despacio para evitar deshidratarse.


    Para nuestra desgracia, la página está en inglés. Piden disculpas pero sigue en ingles: "Lo sentimos, pero la información que has solicitado no está disponible en tu idioma."

    El tema es ¿cómo hacer que el blog cargue más rápido?

    Hace un tiempo, en una entrada me preguntaba si el tiempo de carga de un sitio podía afectar su posicionamiento y Blogger responde que sí. Es obvio: la velocidad de carga de un blog es crítica a la hora de atraer lectores y una demora excesiva hace que los visitantes abandonen el intento antes de tener la oportunidad de leer.

    Así que veamos lo que sugiere Blogger.

    Entradas:
    La velocidad puede verse afectada por la cantidad de entradas que se muestran en la página principal. Esto lo definimos en la Configuración | Formato, seleccionado la cantidad de entradas a mostrar y Blogger recomienda un máximo de 10. En lo personal, creo que el número debe ser bastante menor pero depende mucho del contenido. No es lo mismo un blog con textos que otro con videos.

    Gadgets:
    Blogger dice que la velocidad óptima se logra si sólo se utilizan gadgets o elementos provistos por Google/Blogger. La autopromoción es buena pero lo que afirman es dudoso y no puede aplicarse a cualquier gadget de Google, estas suelen ser lentas, muy lentas a la hora de cargarse. En términos generales, todos los scripts y archivos que se agregan por defecto y sobre los que no tenemos control suelen ser lentos pero no podemos hacer nada sobre eso; es decir, podemos optimizar el blog pero hay un piso mínimo.

    Archivos externos:
    Si se utilizan scripts en archivos externos, se dice que es mejor ubicarlos al final del blog y no al inicio, es decir, antes de </body> pero, eso es relativo. Por un lado, algunos scripts no pueden colocarse allí sino que deben ir en el head, en todo caso, hay que leer las instrucciones o probar y ver que pasa. Colocarlos al final de nuestra página no ascelera la carga en absoluto, el total es siempre el mismo, sólo lo tenemos ordenado de otra manera; lo que ocurre es parece más rápido; el blog se nos mostrará más o menos armado, podremos leerlo pero la carga continuará y las funciones de esos scripts no estarán disponibles. Además, como muchos de ellos modifican sectores del blog en si mismo lo que se producirá es un efecto de "parpadeo" indeseado. Para esto, no hay una única regla, dependerá de cada caso. Comprimir los scripts ayuda mucho ya que reduce sustancialmente el tamaño de los archivos.

    Multimedia:
    Las imágenes y los videos son elementos críticos, lo mismo puede decirse de cualquier otro tipo de archivo multimedia. Las imágenes pueden optimizarse, seleccionar el formato adecuado o utilizar miniaturas. En todos los casos, lo ideal es alojarlas en el mismo Blogger y agregar en las etiquetas IMG los atributos width y height.

    CSS:
    Debe ubicarse al inicio del blog. Lo mejor es tenerlo todo en una sola etiqueta y no tener decenas de etiquetas <style>. Todo lo que está entre <b:skin> y </b:skin> es la hoja de estilo de nuestro blog y es el equivalente de <style> </style>. Incluso así, podemos optimizarlo eliminando datos innecesarios. Cada cada letra, cada espacio, cada caracter que escribimos influye. No es para volverse loco pero es bueno saberlo y deshacerse de lo inútil.

    Blogger finaliza su ayuda diciendo algo que es bastante cierto: la parte más importante del blog, aquello que llama la atención de los lectores es lo que debe cargarse con rapidez.

    También hablan de Start StopWatch como herramienta para medir el tiempo de carga; no es la única, podemos  agregar Pingdom Tools, YSlow que es un agregado de Firebug, WebWait, etc.

    Pero ¿qué valor razonable debería mostrarnos? Dicen que un máximo de 10 segundos es lo lógico pero ese valor dependerá de muchas cosas. Primero que nada, de nuestra conexión, del horario, pero también de nuestra PC, del navegador que usemos, de la forma en que se cachean las páginas y como si fuera poco, de la herramienta que usemos para medirlo porque estas herramientas también demoran, hacen cosas diferentes, estan en servidores distintos, ellas mismas pueden ser "lentas" así que aquí empieza lo subjetivo y si le sumamos algo fundamental como nuestros propios gustos o intereses, las reglas de oro dejan de existir y habrá unas cuantas cosas que podemos mejorar y otras que simplemente: no queremos mejorar, nos gustan así y pagamos el precio.

    Optimizar significa buscar la mejor manera de realizar una actividad y mejor significa preferible o más conveniente. Como se ve, todo es según el cristal con que se mire y en esto, como en todo, prevalece lo subjetivo porque, aunque no lo parezca, rápido o lento no son valores absolutos sin relativos, algo es más rápido que ... o más lento que ...

    Preguntaría, en todo caso: si queremos ver un sitio que nos interesa ¿no esperamos? ¿no tenemos paciencia? ¿10, 20, 30 segundos será mucho? ¿es necesario que recibamos satisfacción instantánea? Al fin de cuentas ¿qué apuro hay?

    El formulario de comentarios (un poco más)

    Aprovechemos la entrada de randomness para poner un poco de orden en el tema del formulario de comentarios incrustado de Blogger.

    El primer punto es verificar que el código esté en la plantilla y que sea correcto ya que, desde que comenzaron a implementarlo, Blogger lo ha ido modificando y no todos tenemos la última versión. Abrimos entonces la plantilla y expandimos los artilugios para buscar esta línea:
    <b:includable id='comment-form' var='post'>
    Lo que debemos tener es esto:
    <b:includable id='comment-form' var='post'>
    <div class='comment-form'>
    <a name='comment-form'/>
    <hx id='comment-post-message'><data:postCommentMsg/></hx>
    <p><data:blogCommentMessage/></p>
    <data:blogTeamBlogMessage/>
    <a expr:href='data:post.commentFormIframeSrc' id='comment-editor-src'/>
    <iframe allowtransparency='true' class='blogger-iframe-colorize' frameborder='0' height='275' id='comment-editor' scrolling='no' src='' width='100%'/>
    <data:post.iframeColorizer/>
    </div>
    </b:includable>
    donde: hx puede varias y ser H3 o H4 y todo lo señalado con color es lo que se ha agregado en las últimas versiones.

    Tanto el formulario como los encabezados de este, se encuentran en un DIV que tiene una clase que es la que controla las propiedades gráficas de este área. Esas propiedades, están definidas por el mismo Blogger pero podemos modificarlas, para esto, necesitamos identificarlo de otra manera, ya sea dándole otro nombre a la clase como propone Fernando en su entrada o cambiando el atributo class por el atributo ID que es lo que hice yo (por casualidad). En ambos casos, el resultado es el mismo y así, las definicones por defecto desaparecen, especialmente una que impide que lo ensanchemos (max-width: 425px). Entonces, cambiamos esta línea:
    <div class='comment-form'>
    por esta otra:
    <div id='comment-form'>
    La siguiente, nos muestra un encabezado con un dato interno llamado data:postCommentMsg y debajo, un párrafo con otro dato llamado data:blogCommentMessage; el primero es el encabezado del formulario que por defecto dice Publicar un comentario en la entrada y el segundo es el texto que nosotros hayamos agregado en la Configuración | Comentarios | Mensaje del formulario de comentarios. Podemos dejarlos o bien eliminar completamente esas líneas y reemplazarlas por cualquier tipo de código HTML.

    Debajo, el dato data:blogTeamBlogMessage es un misterio; será para que nos saluden en nuestro cumpleaños sonrisa

    El IFRAME es el formulario en si mismo, ese COSO que coloca Blogger a su antojo y sobre él, muy poco puede hacerse. Conviene eliminar el ancho y el alto de la etiqueta porque de esa manera, por lo menos, podremos darle un tamaño personal:
    <iframe allowtransparency='true' class='blogger-iframe-colorize' frameborder='0' height='275' id='comment-editor' scrolling='no' src='' width='100%'/>
    Un detalle que no comprendo es que, el nuevo modelo dice src=''. Allí, la teoría dice que debe ir una dirección URL y sin embargo, está vacía. En principio, no hay problemas, Blogger agrega esa dirección automáticamente cuando crea la página aunque ... no siempre funciona. Si ocurre eso, conviene reemplazarla por:

    expr:src='data:post.commentFormIframeSrc'

    Por último, <data:post.iframeColorizer/> agrega un script fundamental que es el que leerá algunas de las características gráficas de nuestro blog para que el formulario se adapte a la plantilla. Son la misma que están definidas en las diferentes variables al inicio de <b:skin> y que establecemos cuando usamos la ventana Diseño | Fuentes y Colores (color de los textos, colro de los enlaces, tipos de fuente y nada más).

    Hasta allí, el código; ahora le agregaremos el CSS para modificarlo hasta donde se pueda. Todo, lo agregaremos antes de </b:skin>:
    #comment-form {
    clear: both; /* por las dudas, eliminamos las flotaciones */
    margin: 0 auto; /* así, lo centramos */
    width: valorpx; /* le damos el ancho al rectágulo */
    }
    #comment-form hx {
    /* las propiedades del encabezado */
    }
    #comment-form p {
    /* las propiedades del texto de nuestro mensaje personal */
    }
    #comment-editor {
    height: valorpx; /* la altura el formulario */
    overflow: hidden; /* evitamos las barras de desplazamiento */
    width: 100%; /* el ancho del formulario en si mismo */
    }
    El ancho del formulario lo ponemos al 100% para que coincida con el ancho del contenedor comment-form pero puede ser otro. La altura del formulario original es de 275 pixeles lo que deja abajo de este, un espacio enorme; conviene probar con valores menores, entre 240 y 260 pixeles.

    Cualquier otra propiedad de estilo es aceptable en comment-form, colores o imágenes de fondo, etc. Todas afectarán el área pero no al formulario en si mismo que seguirá siendo blanco. Es decir, podemos personalizar alrededor del TEXTAREA pero no esta ni los botones o el resto de los controles ya que son así y Blogger sabe verguenzaanim

    In Scale

    Click para ver el video.

    Modificando las plantillas (Tutorial 5: Columnas)

    Da la casualidad que, mientras iba armando esta entrada, fueron varias las preguntas sobre el mismo tema y es, sin duda, uno de esos temas aparentemente extraños que parecen causar dolores de cabeza. Se trata de tener un diseño con columnas e igualar sus alturas.

    Hace un tiempo, la solución era mostrada en La Bloguería así que vamos a a usar sus explicaciones y ponerlas en práctica, basándonos en una de las variantes del tutorial anterior.

    Allí, se mostraba algo así:


    Es decir, un blog con tres columnas (sidebar izquierda, posts, sidebar derecha) pero, en realidad, esta soluciòn funcionará con cualquier otro diseño.

    ¿Cuál es el problema?

    Los contenedores (y casi todas la etiquetas) tienen un particularidad, podemos definir su ancho (width) pero cuando queremos definir su altura (height) las cosas se complican porque para calcular esa altura deberíamos conocer su contenido y calcularlo, aunque sea a ojo pero, como los blogs son dinámicos, eso es imposible así que, las columnas tomarán diferentes alturas, unas más cortas, unas más largas; podemos fijarlas pero, en ese caso, o quedarán espacios vacios o parte del contenido quedará oculto o aparecerá una barra de desplazamiento vertical.


    Si utilizamos una plantilla sin fondos ni bordes, es un tema irrelevante pero si los tenemos, el efecto de las columnas desiguales puede molestarnos [VER EJEMPLO]

    Entonces, ¿cómo crear columnas de la misma altura sin que importe el contenido de estas?

    Como dice Vane, hay soluciones varias y para todos los gustos:
    1. crear columnas falsas utilizando imágenes tiene la desventaja de requerir de esas imágenes extras
    2. establecer la propiedad height al 100% no funciona en todos los navegadores
    3. utilizar JavaScript tiene resultados dudosos y claro, no funcioanrá si JavaScript está deshabilitado.
    Así que vamos con el cuarto método que me parece más efectivo y para aplicarlo, sólo requerimos agregar unas pocas propiedades CSS.

    Buscaremos cada una de las definiciones de las columnas y a todas ellas les agregaremos un padding (un relleno) de un valor muy alto, el máximo posible (32768 pixeles) y eso creará columnas larguísimas y para compensar esta locura, le agregaremos un margen negativo inverso:

    padding-bottom: 32768px;
    margin-bottom: -32768px;

    Para que estos desarreglos se oculten, el contendor principla tendrá que incluir la propiedad overflow: hidden. En el ejemplo, estas serían las definiciones de estilo:
    #sidebar-wrapper1 { /* la sidebar izquierda */
    background-color: aliceBlue; /* un color para el ejemplo */
    float: left;
    margin: 0; /* poner a cero */
    overflow: hidden;
    padding-bottom: 32768px;
    width: 190px;
    word-wrap: break-word;
    margin-bottom: -32768px;
    padding-bottom: 32768px;

    }

    #main-wrapper { /* el área de posts */
    background-color: aliceBlue; /* un color para el ejemplo */
    float: left;
    margin: 0 10px;
    overflow: hidden;
    width: 560px;
    margin-bottom: -32768px;
    padding-bottom: 32768px;

    }

    #sidebar-wrapper2 { /* la sidebar derecha */
    background-color: aliceBlue; /* un color para el ejemplo */
    float: left;
    margin: 0; /* poner a cero */
    overflow: hidden;
    width: 190px;
    word-wrap: break-word;
    margin-bottom: -32768px;
    padding-bottom: 32768px;

    }

    #content-wrapper {
    overflow: hidden;
    }
    Lo prudente sería que, primero, coloquemos los márgenes en cero y luego aplicáramos los márgenes gigantes a todas las columnas que tengamos.

    Eso es todo, con estos pequeños cambios, no debería haber problemas en igualar la longitud de las columnas [VER EJEMPLO]

    REFERENCIAS:
  • Modificando las plantillas (Tutorial 1: Anchos)
  • Modificando las plantillas (Tutorial 2: Widebars)
  • Modificando las plantillas (Tutorial 3: Sidebars)
  • Modificando las plantillas (Tutorial 4: Flotaciones)
  • Los filtros (sólo en IE)

    Los filtros y transiciones son una propiedad CSS exclusiva de Internet Explorer y es una pena que no sea posible usarlos en otros navegadores así que, lo que sigue sólo es a título informativo y no recomiendo que se use así como tampoco recomiendo usar propiedades que sólo comprende Firefox.


    Este ejemplo sólo es visible en Internet Explorer

    La sintaxis de estas propiedades parece simple pero no lo es tanto y puede aplicarse a muchas etiquetas de bloque que tengan definido un layout, es decir, un ancho (width) y un alto (height). A esto le suman una característica interesante: pueden combinarse sin restricciones.

    Si quisiéramos aplicarlo a una imagen, escribiríamos:

    img {filter: tipo;}

    o bien:

    <img src="laImagen" style="filter: tipo;" />

    ¿Y dónde está lo complejo? Pués que la definición del tipo de efecto es un tanto engorrosa. Estos son dos ejemplos:
    filter: progid:DXImageTransform.Microsoft.MotionBlur(strength=50)

    filter: progid:DXImageTransform.Microsoft.Wave(freq=1,lightStrength=10,phase=10,strength=5);
    La que sigue es una lista con los filtros disponibles, sus parámetros y algunos ejemplos.
    Alpha ajusta la opacidad
    Style 0 | 1 | 2 | 3
    Fondo 'skyblue'
    Fondo 'red'
    Fondo 'green'
    Ver/Ocultar parámetros [+]
    filter: progid:DXImageTransform.Microsoft.Alpha(parámetros);

    Style 0|1|2|3 (tipo uniforme, lineal, radial, rectangular)
    Opacity el valor que define la opacidad (0 transparente, 100 opaco)
    FinishOpacity es un valor que se usa en Style=0
    StartX y StartY es la posición inicial en Style=1
    FinishX y FinishY es la posición final en Style=1
    BasicImage ajusta el color, la rotación y la opacidad
    Rotation 0 | 1 | 2 | 3
    Mirror | Reset
    Invert | Reset
    X-Rray | Reset
    Grayscale | Reset
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.BasicImage(parámetros)

    Rotation 0 (0 grados) 1 (90º) 2 (180º) 3 (270º)
    Opacity nivel de opacidad
    Mirror 0 | 1
    Invert 0 | 1
    X-Ray 0 | 1
    Grayscale 0 | 1
    Blur desenfoca el objeto
    Blur | Reset
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.Blur(parámetros)

    PixelRadius radio del área opaca
    MakeShadow 0 | 1
    ShadowOpacity nivel de opacidad
    Chroma define a un color como transparente
    skyblue | Reset
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.Chroma(parámetros)

    Color valor de color a filtrar
    DropShadow silueta sólida que crea una sombra
    Shadow | Reset
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.dropShadow(parámetros)

    Color color de la sombra
    OffX valor para el eje X de la sombra
    OffY valor para el eje Yde la sombra
    Positive 0 | 1
    Emboss textura repujada en tonos de gris
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.Emboss()

    No tiene parámetros.
    Engrave textura grabada en tonos de gris
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.Engrave()

    No tiene parámetros.
    Glow agrega brillo alrededor de los bordes
    Color 1 | 2 | 3
    Strength 5 | 10 | 15
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.Glow(parámetros)

    Color valor de color del brillo
    Strength tamaño del efecto
    Gradient crea un gradiente de colores
    Color 1 | 2 | 3 | 4
    Horizontal
    Vertical
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.Gradient(parámetros)

    GradientType 0 horizontal | 1 vertical
    StartColorStr color inicial
    EndColorStr color final
    Light efectos de luces en el objeto
    Lights | Reset
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.Light(parámetros)

    Enabled 0 | 1
    AddAmbient valor tipo (a,b,c,d)
    AddCone valor tipo (a,b,c,d,e,f,g,h,i,j)
    AddPoint valor tipo (a,b,c,d,e,f,g)
    ChangeColor valor
    ChangeStrength valor
    Clear 0 | 1
    MoveLight valor tipo (a,b,c,d,e)
    Pixelate convierte el objeto en pequeños cuadrados de color
    MaxSquare 2 | 5 | 10
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.Pixelate(parámetros)

    MaxSquare ancho máximo de los cuadrados
    Wave distorsión sinoideal
    Freq 1 | 5
    LightStrength 10 | 50
    Phase 10 | 50
    Ver/Ocultar parámetros [+]
    filter: progid: DXImageTransform.Microsoft.Wave(parámetros)

    Freq cantidad de ondas
    LightStrength intensidad de la luz
    Phase offset ángulo sinoideal
    Strenght tamaño del efecto

    Si el PageRank cantara


    REFERENCIAS:
  • Google Blogoscoped
  • Agregando firmas en GMail

    GMail sigue mejorando constantemente, le agregan funciones, ahora le han puesto temas gráficos, pero sigue sin tener una función que muchos otros servicios tienen, la posibilidad de crear firmas que sean algo más que texto plano.

    Para eso, hay una extensión de Firefox llamada Blank Canvas Gmail Signatures que está en fase experimental así que para descargarla hay que registrarse en Mozilla pero, que vale la pena probar aunque aún hay cosas que deberían perfeccionarse.

    Una vez instalada, cuando redactemos un mail, nos aparecerá una lista desplegable y dos botones que nos permitirán Crear una firma (o editarla si ya tenemos una) y abrir una ventana con Opciones. En esta última, podemos establecer hasta cuatro firmas distintas que vamos a poder agregar a un correo con un simple click.


    Creamos una firma con en el botón correspondiente y se nos mostrarán dos áreas de texto, una debajo de la otra. En la primera, colocaremos el código y en la segunda veremos una previsualizaciónd de la firma. Cuando estemos decididos, la guardaremos y estará disponible siempre que deseemos utilizarla. Lo mismo haremos si quermos dditar alguna de las ya creadas o eliminarla.

    La parte del editor es justamente el punto flojo de la extensión ya que no es sencillo escribir allí adentro y a veces, es imposible pero no hay problemas, basta que creemos el código con cualqueir editor y luego lo peguemos usando el botón derecho del mouse.

    ¿Qué código debe escribirse? Eso es lo interesante ya que permite colocar casi cualquier etiqueta HTML, tablas, imágenes, párrafos, incluso propiedades de estilo CSS. Si no sabemos, podemos usar el editor de Blogger para crear las firmas y luego, copiar y pegar el código HTML.

    Musiquita con Muzicons

    Me gustó, me encantó, ¿que quieren que diga? En el fondo, soy un niño verguenza

    Muzicons es el sitio del que habla Gem@ y que nos permite crear reproductores MP3 personalizados y divertidos.

    Elegimos uno de los íconos, subimos el archivo de audio (elllos lo alojan en su sitio)y luego seleccionamos la forma en que se verá. Nos dan el código para insertarlo y listo, eso es todo.



    Como el código incluye todos los datos, con un poco de paciencia, podemos modificarlo para cambiar algunas cosas que desde la página no podemos. Por ejemplo, los colores de los textos o usar colores distintos a los que nos ofrecen. Los datos se encuentran en el atributo flashvars:
    &nomuz=muzicon%20unavailable&site=http://muzicons.com/
    &icon_pic=0.png // es el texto del mensaje a mostrar
    &music_file=AHACcUwM // el archivo de audio
    &bg_color=898989 // el color de fondo
    &type_of_clip=simple // el modelo a usar (son tres posibles)
    &text_color=FFFFFF // el color de los textos
    &text_message=Hmmmmm.. // el texto del mensaje a mostrar


    Future Shorts: El agujero negro

    Click para ver los videos.


    REFERENCIAS:
  • Future Shorts Channel
  • Wallpapers (bichitos)

    Sitios y más sitios

    VidtoMp3 es un sitio que nos permite extraer el audio de un vídeo y convertirlo en un archivo MP3.

    Funciona con Youtube, Google Video, Metacafe, MegaVideo, Vimeo, Dailymotion, Veoh, Myspace, iFilm, Myspace, etc. Sólo hay que ingresar la URL y descargar el archivo (más información)

    DownGoEar es un sitio que nos permite descargar los archivos MP3 alojados en GoEar. Como en el caso anterior, basta ingresar la URL y descargar la canción (más información).


    Divx Online es un sitio que recopila videos en español.

    Está organizado por categorías y posee un buscador así que es una forma bastante sencilla de acceder a películas de todo tipo (más información).


    Por último, desde hace ya un tiempo, YouTube permite a los usuarios insertar anotaciones interactivas dentro de los vídeos; a esto, se le ha sumado la adquisición de Ominisio, una empresa especializada en la creación de herramientas para la edición de vídeos así que es posible que en poco tiempo más, algunas de las herramientas desarrolladas por esa firma y que ahora están deshabilitadas, se incorporen al propio YouTube (más información).

    Una curiosidad que me envió CaTa y que usa estas anotaciones de una manera muy original, es la llamada TUBE-ADVENTURES. Lamentablemente, como las anotaciones sólo funcionan dentro de la plataforma, no podemos incrustarlos en otro sitio pero igual , vale la pena mirarlo.

    Smart Player: El reproductor de 5min.com

    5min.com es otro de los tantos sitios que permiten alojar y compartir videos pero, lo que ha llamado la atención es el reprductor que nos ofrecen y al que llaman Smart Player. Vale la pena verlo porque han consegudio dotarlo de muchas funciones interesantes.


    Bloques animados en el elemento Etiquetas

    Hace unos días mostraba la forma de utilizar la técnica de los bloques animados en el elemento Archivos de Blogger y preguntaban si era posible hacer lo mismo en elemento Etiquetas y la respuesta es sí.

    Otra vez, para quien no lo haya visto, estamos hablando de un script descripto en esta entrada y que se llama animatedcollapse.js; archivo que hay que alojar en un servidor propio y luego, insertarlo en la plantilla de Blogger, justo antes de la etiqueta </HEAD>:
    <script type="text/javascript" src="URL_animatedcollapse.js"></script>
    Expandimos los artilugios y buscamos el código de las etiquetas:
    <b:widget id='Label1' locked='false' title='Etiquetas' type='Label'>
    <b:includable id='main'>
    <b:if cond='data:title'>
    <h2><data:title/></h2>
    </b:if>
    <div class='widget-content'>

    <div style='text-align:center;'>
    <a href='javascript:lasEtiquetas.slideit()'>EXPANDIR/CONTRAER</a>
    </div>

    <div id='EtiquetasLista'>

    <ul>
    <b:loop values='data:labels' var='label'>
    <li>
    <b:if cond='data:blog.url == data:label.url'>
    <span expr:dir='data:blog.languageDirection'>
    <data:label.name/>
    </span>
    <b:else/>
    <a expr:dir='data:blog.languageDirection' expr:href='data:label.url'>
    <data:label.name/>
    </a>
    </b:if>
    <span dir='ltr'>(<data:label.count/>)</span>
    </li>
    </b:loop>
    </ul>

    </div>
    <script type='text/javascript'>var lasEtiquetas=new animatedcollapse("EtiquetasLista", 500, false)</script>

    <b:include name='quickedit'/>
    </div>
    </b:includable>
    </b:widget>
    Agregaremos entonces las líneas en color y eso es todo.

    Aquí lo que hemos hecho es agregar un DIV para contener la lista de etiquetas y lo identificamos con un nombre único: id='EtiquetasLista'

    El script, lo podemos usar varias veces en diferentes elementos con la única condición de ejecutarlo usando nombres distintos (lasEtiquetas).

    El resultado puede verse en la sidebar de mi blog de pruebas funcionando sobre una plantilla Mínima.

    Modificando las plantillas (Tutorial 4: Flotaciones)

    Ya agregamos columnas a la derecha, a la izquierda, dobles, simples, las mezclamos, podemos seguir poniendo todas las que se nos ocurra pero la realidad es que solemos ser menos exquisitos y nos limitamos a una o dos así que simplifiquemos el proyecto, hagamos de cuenta que empezamos con el Modelo original de la Plantilla Mínima y queremos agregar sólo una segunda sidebar.

    Ampliamos el ancho general de outer-wrapper, header-wrapper y footer-wrapper a 980 pixeles y el de main-wrapper a 560 pixeles exactamente igual que en el primer tutorial y ahora disponemos de los 390 pixeles restantes para dividirlos en dos sidebars.

    Por defecto, sólo tenemos una columna en la plantilla así que le agregamos el código de la segunda, copiándolo y pegándolo:
    <div id="sidebar-area">
    <div id="sidebar-wrapper">
    <b:section class="sidebar" id="sidebar" preferred="yes">
    .......
    </b:section>
    </div>
    <div id="sidebar-nueva">
    <b:section class="sidebar" id="sidebarnueva" preferred="yes" />
    </div>
    </div>
    Y el CSS que sólo es una variación de los anteriores:
    #sidebar-area {
    float: right; /* flota a la derecha */
    width: 390px; /* es ancha porque contendrá las dos sidebars */
    }

    #sidebar-wrapper { /* es la original */
    float: right; /* flota a la derecha */
    margin-left: 5px; /* margen izquierdo */
    overflow: hidden;
    width: 190px;
    word-wrap: break-word;
    }

    #sidebar-nueva { /* es la nueva */
    float: right; /* flota a la derecha */
    margin-left: 5px; /* margen izquierdo */
    overflow: hidden;
    width: 190px;
    word-wrap: break-word;
    }
    Guardamos y ya está, tenemos dos sidebars, una al lado de la otra [VER EJEMPLO]

    Tal como lo hemos agregado, la original (sidebar-wrapper) será la que está más a la derecha del blog; si quisiéramos que fuera la otra, deberíamos invertir el orden del código:
    <div id="sidebar-area">
    <div id="sidebar-nueva">
    <b:section class="sidebar" id="sidebarnueva" preferred="yes" />
    </div>
    <div id="sidebar-wrapper">
    <b:section class="sidebar" id="sidebar" preferred="yes">
    .......
    </b:section>
    </div>
    </div>
    Para invertir la posición y colocar las sidebars a la derecha basta invertir la flotación de main-wrapper y de sidebar-area:


    Y bueno, sí, ya sé, falta una tercera opción, nos gusta complicarnos la vida y queremos poner una a la derecha y otra a la izquierda. Para eso, debemos cambiar el esquema, olvidarnos del contenedor sidebar-area y hacerlas flotar en diferentes direcciones.


    Pero, aquí debemos entender algo, los navegadores van "dibujando" la página web de manera secuencial, es decir, crean los famosos rectángulos en un cierto orden, leyendo de arriba hacia a abajo y la flotación sólo es una propiedad. A ver si puedo mostrarlo, veamos este código:
    <div id="main-wrapper">
    ... el área de posts ...
    </div>

    <div id="sidebar-wrapper">
    ... la sidebar ...
    </div>
    main-wrapper puede flotar a la derecha o a la izquierda, lo mismo puede ocurrir con sidebar-wrapper. Es más, ambas pueden flotar hacia el mismo lado y, en todos los casos, el elemento que contiene los posts se mostrará primero, a la izquierda o a la derecha de la pantalla pero primero, cuando se complete su carga se mostrará la sidebar [VER EJEMPLO]

    Si se invierte el orden, la sidebar se cargará primero pero el resultado final, será el mismo [VER EJEMPLO]
    <div id="sidebar-wrapper">
    ... la sidebar ...
    </div>

    <div id="main-wrapper">
    ... el área de posts ...
    </div>
    Cuando colocamos dos elementos flotantes, uno hacia la derecha (right) y otro hacia la izquierda (left), todo es sencillo de entender pero, cuando hacemos que ambos floten en la misma dirección, se nos queman lo papeles y hay que ponerse a pensar y eso es justo lo que no hacen los navegadores y tampoco deben hacerlo.

    El navegador lee la instrucción que le dice, cree un rectángulo de tal dimensión a la izquierda de la pantalla. Obedientemente, lo hace y luego, se olvida del tema así que sigue con la siguiente instrucción que le dice: cree OTRO rectángulo de cierta dimensión y colóquelo a la izquierda ¿de la pantalla? No, a la izquierda del espacio que le dejó el rectángulo anterior y si no entra, pafffff lo coloca debajo.

    En resumen, si dos elementos flotan a la izquierda, el primero aparecerá a la izquierda pero el segundo se mostrará a la derecha. Si dos elementos flotan a la derecha, el primero aparecerá a la derecha y el segundo a la izquierda ¡Cosa de magia!

    Así que, para poner una sidebar a cada lado de los posts, deberíamos reordenar el código:
    <div id="sidebar-wrapper1">
    <b:section class="sidebar" id="sidebar1" preferred="yes">
    .......
    </b:section>
    </div>

    <div id="main-wrapper">
    <b:section class="main" id="main" showaddelement="no">
    <b:widget id="Blog1" locked="true" title="Entradas del blog" type="Blog"/>
    </b:section>
    </div>

    <div id="sidebar-wrapper2">
    <b:section class="sidebar" id="sidebar2" preferred="yes">
    .......
    </b:section>
    </div>
    Y el CSS:
    #sidebar-wrapper1 {
    float: left; /* flota a la izquierda */
    overflow: hidden;
    width: 190px;
    word-wrap: break-word;
    }

    #main-wrapper {
    float: left; /* flota a la izquierda */
    margin: 0 10px; /* la separación entre los bloques */
    overflow: hidden;
    width: 560px;
    }

    #sidebar-wrapper2 {
    float: left; /* flota a la derecha */
    overflow: hidden;
    width: 190px;
    word-wrap: break-word;
    }
    La separación entre los tres rectángulos lo controlamos con el margen de todos ellos o, como en el ejemplo, con la propiedad margin del rectángulo central, el que contiene los posts [VER EJEMPLO]

    REFERENCIAS:
  • Modificando las plantillas (Tutorial 1: Anchos)
  • Modificando las plantillas (Tutorial 2: Widebars)
  • Modificando las plantillas (Tutorial 3: Sidebars)
  • I know HTML

    Basta de polémicas: ¡Fuera la navbar!

    Es interesante el artículo de The Real Blogger Status que hace referencia a una respuesta oficial respecto a una vieja duda: ¿Puede eliminarse la navbar de Blogger sin violar las condiciones del servicio?

    While we don't recommend or support the removal of the Blogger navbar, there is nothing in our Terms of Service that explicitly mandate its use.

    I'll let you draw your own conclusions from there ;-)

    Thanks, Gatsby
    The Blogger Team

    Traduciendo un poco: "Aunque no recomendamos o apoyamos la eliminación de la navbar, NO HAY NADA en los términos del servicio que obligue a usarla por lo tanto, que cada uno saque sus conclusiones."

    Así que: basta polémicas. En mi opinión hay que eliminarla simplemente porque es peligrosa. El día que quiten el botón MARCAR BLOG y la posibilidad de navegar aleatoriamente por sitios de Blogger, entonces veremos. Por ahora, mientras esas dos opciones permanezcan, seguiré pensando lo mismo.

    Podemos hacerlo de manera normal, agregando las propiedades CSS correspondientes:
    <style type="text/css">
    #navbar-iframe {
    height: 0;
    visibility: hidden;
    display: none;
    }
    </style>
    O utilizando algún efecto sofisticado

    Modificando las plantillas (Tutorial 3: Sidebars)

    Con todo lo que hemos modificado, no tendremos problemas en agregar otra sidebar ancha debajo de las anteriores, utilizando siempre el mismo criterio, dándole un ID único que, en este caso será sidebar-inferior.

    El haber "envuelto" todo dentro de un contenedor (sidebar-area)es lo que nos va a permitir que todo quede "encolumnado" sino, las flotaciones son impredescibles:


    Agregamos entonces, la nueva sidebar y este sería el código completo:
    <div id="sidebar-area">
    <div id="sidebar-wrapper">
    <b:section class="sidebar" id="sidebar" preferred="yes">
    .......
    </b:section>
    </div>
    <div id="sidebar-derecha">
    <b:section class="sidebar" id="sidebarderecha" preferred="yes">
    .......
    </b:section>
    </div>
    <div id="sidebar-izquierda">
    <b:section class="sidebar" id="sidebarizquierda" preferred="yes">
    .......
    </b:section>
    </div>
    <div id="sidebar-inferior">
    <b:section class="sidebar" id="sidebarinferior" preferred="yes" />
    </div>
    </div>
    Y tendrá las mismas propiedades que sidebar-wrapper:
    #sidebar-inferior {
    float: right; /* flota a la derecha */
    overflow: hidden; /* fix for long non-text content breaking IE sidebar float */
    width:390px; /* el ancho */
    word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
    }
    Guardamos y eso es todo, todo habrá quedado acomodado correctamente [VER EJEMPLO]

    Y al igual que en la entrada anterior, si queremos cambiar todo de lado, basta invertir los valores de las flotaciones de main-wrapper y de sidebar-area.


    Y así podemos seguir una y otra vez, repitiendo los códigos, uno debajo del otro, combunando anchas con angostas con la única precausión de darle a cada una un ID único [VER EJEMPLO]
    <div id="sidebar-area">

    <div id="sidebar-wrapper">
    <b:section class="sidebar" id="sidebar" preferred="yes" />
    </div>
    <div id="sidebar-derecha">
    <b:section class="sidebar" id="sidebarderecha" preferred="yes" />
    </div>
    <div id="sidebar-izquierda">
    <b:section class="sidebar" id="sidebarizquierda" preferred="yes" />
    </div>
    <div id="sidebar-inferior">
    <b:section class="sidebar" id="sidebarinferior" preferred="yes" />
    </div>

    <div id="sidebar-wrapper2">
    <b:section class="sidebar" id="sidebar2" preferred="yes" />
    </div>
    <div id="sidebar-derecha2">
    <b:section class="sidebar" id="sidebarderecha2" preferred="yes" />
    </div>
    <div id="sidebar-izquierda2">
    <b:section class="sidebar" id="sidebarizquierda2" preferred="yes" />
    </div>
    <div id="sidebar-inferior2">
    <b:section class="sidebar" id="sidebarinferior2" preferred="yes" />
    </div>

    </div>

    REFERENCIAS:
  • Modificando las plantillas (Tutorial 1: Anchos)
  • Modificando las plantillas (Tutorial 2: Widebars)
  • Contact Pickers: Blogger Draft sigue derrapando

    Blogger in Draft acaba de publicar que ha incorporado una nueva opción llamada Contact Pickers que permite seleccionar contactos de GMail (Google of course) para incorporar en una de las funciones menos conocidas de Blogger.

    Si vamos a Cconfiguración | Comentarios, al final de la página veremos un área de texto llamada Correo electrónico de notificación de comentarios donde nos dicen que podemos escribir hasta diez direcciones de correo y el sistema se encargará de mandar correos electrónicos cada vez que alguien escriba un comentario en el blog verguenzaanim


    La pregunta del millón es: ¿para que sirve esto?

    No hace falta que nadie responda; debe ser alguna parte sustancial en el funcionamiento del camioncito.

    Bloques animados en el elemento Archivos

    Hace unos días, Armando preguntaba si era posible utilizar la técnica de los bloques animados en el elemento Archivos de Blogger.

    Como se refiere a un script descripto en esa entrada, pasaré por alto algunos detalles que pueden verse allí y vamos a ir directamente al grano ya que implementar esto es sencillo y debería funcionar en cualquier plantilla y con cualquier tipo de opción que hayamos seleccionado: Jerarquía, Lista o Menú desplegable.

    Para usarlo, debemos descargar el archivo animatedcollapse.js y alojarlo en un servidor propio. Luego, insertamos el siguiente código en la plantilla de Blogger, justo antes de la etiqueta </HEAD>:
    <script type="text/javascript" src="URL_animatedcollapse.js"></script>
    Ahora, vamos a expandir los artilugios de la plantilla y vamos a buscar este código que es donde comienza el elemento archivos:
    <b:widget id='BlogArchive1' locked='false' title='Archivo del blog' type='BlogArchive'>
    Donde el atributo title podrá ser diferente si es que lo hemos modificado.

    Un poco más abajo, siempre dentro de ese elemento buscaremos esto e insertaremos las líneas marcadas en color:
    <b:includable id='main'>

    <b:if cond='data:title'><h2><data:title/></h2></b:if>

    <div class='widget-content'>

    <div style=''>
    <a href='javascript:losArchivos.slideit()'>EXPANDIR/CONTRAER</a>
    </div>

    <div id='ArchiveList'>
    <div expr:id='data:widget.instanceId + &quot;_ArchiveList&quot;'>
    <b:if cond='data:style == &quot;HIERARCHY"'>
    <b:include data='data' name='interval'/>
    </b:if>
    <b:if cond='data:style == &quot;FLAT&quot;'>
    <b:include data='data' name='flat'/>
    </b:if>
    <b:if cond='data:style == &quot;MENU&quot;'>
    <b:include data='data' name='menu'/>
    </b:if>
    </div>
    </div>

    <script type='text/javascript'>
    var losArchivos=new animatedcollapse(&quot;ArchiveList&quot;, 500, false)
    </script>

    <b:include name='quickedit'/>

    </div>

    </b:includable>
    En el ejemplo, la forma de expandir y contraer es sólo un enlace de texto pero también podría ser una imagen y cualquier personalziación de estilo podemos hacerla dentro del atributo style del DIV.

    Ese enlace debe estar arriba del bloque a ocultar que ene este caso, será ArchiveList.

    Más abajo, luego de ese bloque, colocaremos la llamada al script en si mismo en la que podemos establecer tres parámetros:

    var losArchivos=new animatedcollapse(&quot;ArchiveList&quot;, 500, false)

    El primero es el nombre del bloque que en este caso no cambiaremos; el segundo es un valor que indica la duración del efecto y es un valor expresado en milisegundos (1000 = 1 segundo). El tercero es el estado inicial del bloque que puede ser true (inicialmente expandido) o false (inicialmente contraido).

    El resultado puede verse en la sidebar de mi blog de pruebas funcionando sobre una plantilla Mínima.

    La isla

    Click para ver el video.

    REFERENCIAS:
  • Infinitos Mundos
  • Wallpapers (mínimos)

    GoObOaGmLaE

    Según dice Google Blogoscoped y otros medios incluyendo el Wall Street Journal, Obama (el electo presidente de USA Inc por si no lo escucharon nombrar) ha elegido a Eric Schmidt como uno de sus asesores en economía.

    ¿A quién le importa? pensarán muchos. En realidad no sé pero lo curioso es que Eric Schmidt es uno de los gerentes ejecutivos de Google ... ¡ah, entonces importa!

    ¿Será por eso que Google se alegra del triunfo de Barack Obama como titula google.dirson.com? Es cierto que "el Director General de Google no ha ocultado su apoyo a los últimos candidatos demócratas a la Presidencia de la Casa Blanca y son públicas las aportaciones de varios miles de dólares de sus empleados." Algunos de los directivos de Google fueron asesores de campaña, Dan Siroker, responsable de productos en Google es uno de los directores de la campaña electoral de Obama.

    ¿Será por eso que Blogger tuvo un colapso en la gestión de comentarios justo en el momento de las elecciones? No, no hablo de conspiraciones sino de una sobresaturación de los servicios. Aunque no lo hayan reconocido, por lo menos eso puede deducirse leyendo la última entrada de Blogger Buzz donde, como al pasar, le pegan a su ¿ex-socio? Yahoo: Blogger.com - more like a big truck, less like a series of tubes ...

    Traduzco mal pero no importa:

    Aquí en Blogger siempre estamos trabajando para hacer que el sitios y sus blogs funcionen más rápido y sean cada vez más fiables. Queremos que que ustedes piensen en nosotros como un gran camión: capaz de manejar todo lo que ustedes quieran "cargarnos".

    La elección del martes fue una buena oportunidad para verificar que tamaño tiene actualmente el camión Blogger y estamos felices de reportar que en estos días, los blogs de Blogger en general han tenido un record de visitas aunque ha habido algunos problemas de tráfico.

    En resumen, uno de los apóstoles del Dios Google se ha sentado a la diestra de quien gobierna el mundo y los deseos de una internet libre, neutral y descentralizada siguen perdiendo terreno frente a la realidad porque yo me imagino que ciertos apoyos no son gratis y en algún momento hay que pagarlos.

    ¿Pagarán ellos o pagaremos nosotros?

    $startSide y $endSide

    Alguien cambió su plantilla y trató de cambiar algunos detalles pero, al intentar seguir un tutorial para modificar un pequeño detalle, se encontró con algo raro; no podía descubrir dónde estaban ciertas cosas; específicamente, la alineación de un elemento.

    Parece simple para cualquiera con pocos conocimientos: buscar text-align: left; y cambiarlo por text-align: right; pero: ¡No encuentro text-align: left;! ¿Dónde está?

    Y lo peor de todo es que tiene razón: no está.

    Es que en los últimos tiempos, Blogger se ha encargado de complicar lo simple porque, como no saben solucionar problemas, parece que les gusta complicarnos la vida verguenzaanim

    Una de las características del nuevo Blogger (el Blogger Beta que comenzó hace dos años) y sus nuevos modelos de plantillas es que han incluido la posibilidad de editarlas con algunas herramientas que, en teoría, hacen que todo sea más fácil. En mi opinión, esto es verdad sólo a medias ya que los usuarios de Blogger quieren más y apenas comienzan un blog se ponen a modificarlo y esas modificaciones suelen ser constantes y para eso, lo automático no es útil a menos que sepamos lo que estamos haciendo.

    Una de esas opciones simplificadas es la solapa Diseño | Elementos de la página donde podemos agregar y editar elementos; otra es la solapa Diseño | Fuentes y colores donde podemos seleccionar los colores de ciertas cosas y las fuentes de texto que queremos usar. Para que esto último funcione, Blogger coloca esos datos en la plantilla utilizando una codificación especial que está definida al inicio de <b:skin>. Por ejemplo:
    <Variable name="bgcolor" description="Page Background Color" type="color" default="#fff" value="#ffffff">
    .......
    <Variable name="bodyfont" description="Text Font" type="font" default="normal normal 100% Georgia, Serif" value="normal normal 100% Georgia, Serif">
    Si miramos el atributo name de cada una de esas definiciones, veremos que luego, ese es el dato que se incluye como propiedad, anteponiendole el carácter $. Por ejemplo, name="bgcolor" será $bgcolor y se usará así:
    color:$bgcolor;
    Hasta ahí, no habría mayores problemas, podrá sernos útil o no pero es coherente. Sin embargo, ahora han agregado dos datos que confunden: $startSide y $endSide que son los que confunden.

    Seguramente, esto sigue el mismo criterio de agregar en muchas etiquetas el atributo dir que especifica la forma en que el navegador debe mostrar un sitio web. Cuando el valor es rtl el contenido se muestra de derecha a izquierda y la barra de desplazamiento se muestra a la izquierda. Cuando el valor es ltr el contenido se muestra de izquierda a derecha y la barra de desplazamiento se muestra a la derecha, lo que es lo normal para nosotros.

    Así que, a los efectos prácticos:

    $startSide equivale a left
    $endSide equivale a right

    Y en ambos casos, podemos eliminar esa variable y directamente usar el valor normal porque es lo razonable aunque a Blogger le parezca lo contrario.

    Nada de nada

    Modificando las plantillas (Tutorial 2: Widebars)

    Continuando con la idea de modificar la estructura de una plantilla, hasta acá tenemos el esquema tradicional de un blog, encabezado, las entradas a la izquierda, la sidebar a la derecha y un pie de página. La ubicación de entradas y sidebar es fácilmente modificable ¿queremos invertirlas? basta invertir la flotación de ambos rectángulos [VER EJEMPLO]

    #main-wrapper {
    .......
    float: right; /* cambiamos left por right */
    }

    #sidebar-wrapper {
    .......
    float: left; /* cambiamos right por left */
    }
    La sidebar que hemos creado es muy ancha y eso no es casualidad ya que ahora que tenemos todo preparado vamos a agregar otras debajo de ella siguiendo el mismo esquema que explica Gem@ .

    Para esto, ya no sólo tendremos que modificar el CSS sino agregar código pero, lo haremos de la manera simple, sin expandir los artilugios para que no nos de un ataque al ver tanta cosa escrita.

    Si vamos hasta casi el final de la plantilla, lo que veremos es algo así:
    <div id="sidebar-wrapper">
    <b:section class="sidebar" id="sidebar" preferred="yes">
    .......
    </b:section>
    </div>
    Y allí en el medio aparecerán cosas como:
    <b:widget ....... />
    Que son cada uno de los elementos que tenemos en la sidebar y que no tocaremos. Lo que haremos es copiar el código sin eso y lo pegaremos dos veces debajo de </b:section> para crear dos nuevas sidebar. Luego, les cambiaremos los nombres y quedará algo así:
    <div id="sidebar-area">
    <div id="sidebar-wrapper">
    <b:section class="sidebar" id="sidebar" preferred="yes">
    .......
    </b:section>
    </div>
    <div id="sidebar-derecha">
    <b:section class="sidebar" id="sidebarderecha" preferred="yes" />
    </div>
    <div id="sidebar-izquierda">
    <b:section class="sidebar" id="sidebarizquierda" preferred="yes" />
    </div>
    </div>
    Pero, fíjense que todas está dentro de otro DIV. Es que para evitar problemas indeseados vamos a utilizar un viejo truco que siempre nos saca de apuro: cuando haya varios rectángulos flotando que no podemos o no sabemos controlar, coloquemos todos ellos en un contenedor, en otro rectángulo más grande así que "envolvemos" las tres sidebars en un DIV al que en un rapto de originalidad llamé sidebar-area.

    Es muy importante tener en cuenta que a las dos angostas, aunque sean iguales, debemos colocarles atributos id con nombres diferentes ya que en una pagina web, los ids son nombres únicos, no puede haber dos iguales. Por el contrario, las clases pueden ser las mismas y por eso no la cambiaremos ya que las características de los elementos será la misma (por supuesto, si queremos que se vean diferentes, les pondremos tambien clases diferentes y deberemos definirlas).

    Nuevamente, vamos al CSS y agregamos las definiciones de estilo para estas dos sidebars que serán casi iguales que las de sidebar-wrapper (la superior, la que quedará ancha). Ambas flotarán a la derecha y la suma de sus anchos no deberá superar los 390 pixeles que es el ancho de la superior así que le daremos a cada una un poco menos de la mitad para separarlas entre si con un margen:

    190 + 5 + 5 + 190 = 390
    #sidebar-area {
    float: right; /* flota a la derecha */
    width: 390px; /* es tan ancha como la sidebar superior */
    }

    #sidebar-derecha {
    float: right; /* flota a la derecha */
    margin-left: 5px; /* margen izquierdo */
    overflow: hidden;
    width: 190px;
    word-wrap: break-word;
    }

    #sidebar-izquierda {
    float: right; /* flota a la derecha */
    margin-right: 5px; /* margen derecho */
    overflow: hidden;
    width: 190px;
    word-wrap: break-word;
    }
    Guardo la plantilla y, para que se vea algo de lo modificado puedo hacer dos cosas, o le agrego elementos (es lo que se verá en el ejemplo) o bien, le agrego a lo anterior un par de definiciones:
    background-color: red;
    height: 300px;
    Con height le damos una altura y con background-color un color de fondo; esas dos propiedades luego se pueden eliminar [VER EJEMPLO]

    ¿Y si nuevamente, en lugar de querer ese esquema, se nos ocurre poner todo del otro lado, invertimos los valores de la flotación de main-wrapper y de sidebar-area. Lo que está como left lo ponemos como right y viceversa.


    ¿Será posible ahora agregar una nueva sidebar ancha debajo de estas? Si a alguien le parece que esto es una telenovela por capítulos, tiene razón ...

    REFERENCIAS:
  • Modificando las plantillas (Tutorial 1: Anchos)
  • ¿Por qué se han perdido algunos favicons?

    Leyendo una de las últimas entradas de El escaparate de Rosa veo que el problema de los favicons es más o menos generalizado ya que, al igual que ella, son muchos los que han consultado porque de un dia para el otro dejaron de funcionar.

    En su entrada dice que Blogger ha añadido una línea de código en la cabecera de las plantillas que anula el nuestro:
    <link href='http://www.blogger.com/favicon.ico' rel='icon' type='image/vnd.microsoft.icon'/>
    Ahora bien, yo no he visto ese código agregado a una plantilla pero, si lo he visto en el código fuente de muchos blogs lo que me llevó a pensar que tal vez, o no se agrega como LINK o sólo lo hace a veces y que en realidad, forma parte de una serie de códigos que incluye Blogger por defecto y que se cargan mediante esta instrucción:
    <b:include data='blog' name='all-head-content'/>
    Como una página web es secuencial, es decir, se va creando en orden, tal como vemos la plantilla y, como el favicon personal suele estar debajo de la etiqueta TITLE y ese INCLUDE de Blogger se escribe después (o Blogger mismo los pone en ese orden cuando genera las páginas), nuestro favicon desaparece porque se sobrescribe.

    La solución más simple, como dice Rosa, si está el código es eliminarlo pero, si no está (y creo que eso es lo más probable), tenemos dos alternativas. La primera es cambiar de lugar nuestro favicon y ponerlo al final del encabezado, es decir, después de </skin> o antes de </head> para estar seguros que se cargará al final (esta es la solución que una vez propuso Pizcos y que funciona perfectamente).

    La otra posibilidad, la menos sencilla pero la que nos da un control sobre este y sobre cualquier otro cambio futuro, es eliminar directamente el INCLUDE y escribir los códigos de manera manual, para lo cual, debemos entender que es lo que genera Blogger con esa instrucción y eso, podemos verlo fácilmente si miramos el ódigo fuente de nuestro sitio.
    Lo primero que se agrega son una serie de etiquetas META:
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
    especifica la codificación de caracteres y el tipo de contenido

    <meta content='true' name='MSSmartTagsPreventParsing'/>
    es un atributo introducido por Microsoft para evitar que una página mostrase las SmartTags,
    algo que nunca llegó a implementarse en los navegadores así que no tiene uso práctico

    <meta content='blogger' name='generator'/>
    indica quién es el creador de la página web
    Luego, sigue el famoso y controversial ícono por defecto. Mientras nadie me explique el motivo de su inclusión, me parece un agregado absurdo:
    <link href='http://www.blogger.com/favicon.ico' rel='icon' type='image/vnd.microsoft.icon'/>
    Continúa la sindicación de feeds:
    <link rel='alternate' type='application/atom+xml' title='Nombre del blog - Atom' href='http://Nombre del blog/feeds/posts/default' />
    <link rel='alternate' type='application/rss+xml' title='Nombre del blog - RSS' href='http://Nombre del blog/feeds/posts/default?alt=rss' />
    <link rel='service.post" type="application/atom+xml' title="Nombre del blog - Atom' href='http://www.blogger.com/feeds/IDdelBlog/posts/default' />
    <link rel='EditURI' type='application/rsd+xml' title='RSD' href="http://www.blogger.com/rsd.g?blogID=IDdelBlog' />
    Donde sólo varían el Nombre del blog y el IDdelBlog que es un número único que nos identifica.

    Por último, dos códigos más:
    <link rel='me' href='http://www.blogger.com/profile/XXXXXXXXXX' />
    no sé de donde sale el número ese pero, es probable que tenga que ver con Google Profile

    <link rel='openid.server' href='http://www.blogger.com/openid-server.g' />
    es la manera de integrar OpenID directamente con nuestra cuenta de Blogger
    ¿Y por qué Blogger no avisa de estos cambios para que podamos estar atentos y solucionar los detalles? Debe ser porque le gusta que juguemos a los detectives diablo1

    Y sigamos siguiendo

    Voy a replantear las cosas para aclarar lo que se pueda sobre el tema del gadget Seguidores.

    La conversación parece haberse desviado de lo que era el espíritu del post pero eso no tiene importancia ya que creo que uno la empieza pero no sabe donde puede terminar, esos caminos que se abren enriquecen el tema pero, en este caso en particular parece haber algo de confusión y, más allá de las opiniones sobre el gadget en si mismo, creo que deberíamos saber cómo funciona.

    Primero que nada, para seguir un blog no es necesario que nosotros tengamos el gadget colocado ni es necesario que el blog que queremos "seguir" lo tenga. En realidad, el gadget no es otra cosa que una posibilidad visual de mostrar algo que Blogger ha incorporado y que es, para decirlo mal y pronto, un mini-lector de feeds.

    Basta ir al escritorio de Blogger y allí veremos las opciones.


    AÑADIR nos abrirá una ventana donde podemos ingresar o la URL del sitio o la del feed de cualquier blog. En el segundo paso, nos dará la opción de hacer este "seguimiento" de manera pública (quien seguimos verá que lo seguimos) o de manera anónima (que es la forma tradicional en que funciona cualquier suscripción de feeds).


    Cuando digo que podemos ingresar la URL del sitio o la del feed no es intrascendente. En un blog alojado en Blogger, ya sea en blogspot.com o en un dominio propio, basta poner la dirección del sitio pero, colocando la dirección del feed de Feedburner, por ejemplo, podemos agregar y "seguir" cualquier otro, esté alojado en Blogger o no. Como muestra, agregué Infinitos Mundos que está alojado en un servidor propio que corre bajo WordPress.


    Como con cualquier suscripción, podemos dejar de seguir un blog con un click. La diferencia en este caso es que nosotros, como administradores de un sitio también podemos eliminar a los suscriptores, cosa que no podemos hacer con otros servicios. Aquí, lo llaman BLOQUEAR y basta hacer click en ese botón para eliminarlo, lo que no significará que no pueda suscribirse por otro medio ya que, nuestros blogs son públicos y no privados.


    En todo caso, parece que el temor o la preocupación es que los "seguidores" no sean otra cosa que "buscadores de enlaces o publicidad gratuita". Realmente no sé si será así pero, en todo caso, la realidad es que si alguien está siguiendo un blog por ese motivo, se equivoca y no por razones éticas sino técnicas.

    Los enlaces que se muestran no son indexados ya que poseen el atributo nofollow y fuera del gadget, están en páginas dinámicas que Google no indexa.

    En ese sentido, es lo mismo que colocar una URL dentro de un comentario, aunque el administardor del sitio haya eliminado el nofollow de su plantilla, Blogger maneja el contenido de los comentarios en si mismos y agrega el atributo a cualquier enlace sin que nosotros podamos hacer nada para impedirlo. Esto mismo es lo que hace cualquier otro sistema de blogs, incluyendo WordPress. El spam dejado con este tipo de procedimientos es inócuo, molesto, pero inócuo. Seguir un blog jamás genera enlaces.

    Y tal vez, hilando fino, la clave de todo está allí. Lo que ha agregado Blogger no es una red social ni nada semejante. No creo que pretenda que esta herramienta sea algo para fomentar los blogs en si mismos; en mi opinión, el gadget es sólo una partecita intrascendente, lo que ha hecho Google es integrar Blogger y Google Reader agregándo ese lector de feeds interno que es la forma de promocionar los servicios que le interesan: Google Reader y Google Docs son los servicios mimados de Google, aquellos sobre los cuales pone todo su esfuerzo y donde más desarrollo se ve. No es casualidad que cuando "seguimos" un blog, este se agregue automáticamente a Google Reader, es parte de la pelea por el control de la web.


    Para nosotros, simples usuarios, esta palabra "Seguidores" entonces se hace aún menos razonable ya que en realidad, el gadget no es más que una forma de suscripción a los feeds de un sitio como cualquier otra herramienta externa y entonces, usarlo o no usarlo es ya personal y tiene que ver con la comodidad o los gustos personales. De todas formas, lo más probable es que Google continue en el camino de integrar sus servicios unos con otros y veremos muchas más de estas cosas en el futuro. Microsoft no es el único al que le gustan los monopolios.

    Modificando las plantillas (Tutorial 1: Anchos)

    Muchas veces me han preguntado cómo aumentar el ancho disponible del blog. Es que las plantillas por defecto están pensadas para resoluciones de 800 pixeles de ancho y hoy por hoy, tal como puede verse en cualquier estadística, ese es un valor demasiado escaso; menos del 5% de los visitantes tienen resoluciones inferiores a 1024 así que ese será el número mágico sobre el cual deberíamos trabajar ya que es el tipo de resolución más utilizada.


    Al igual que cada hogar es un mundo, cada plantilla también lo es por lo que se hace muy difícil dar una solución que las contemple a todas. Se me ocurre que lo mejor es tratar de aprender qué es lo que Blogger hace y como es el esquema gráfico de un blog y para eso, no podemos empezar con lo más complejo sino con lo más simple que es la plantilla Mínima.

    Pero no se confundan. Lo de Mínima no es un calificativo, sólo es un nombre y a mi juicio, es la mejor codificada y es el modelo que deberíamos usar para crear cualquier otra, no sé si es perfecta pero se acerca bastante y con ese esquema, entendiendo cómo modificarla, jamás tendremos problemas con los navegadores y sus caprichos ¿Exagero? Tal vez un poco pero confieso que es el modelo que utilizo para cualquier blog incluyendo WordPress.

    Si queremos empezar a rediseñar la plantilla tenemos dos opciones: o nos encomendamos a la buena voluntad de alguien o aprendemos. Yo, prefiero lo segundo así que empiezo creando un blog, seleccionando la plantilla Mínima de Blogger y dejando la Configuración por defecto. Agrego entonces uno o más posts con muchos "Lorem ipsum dolor sit amet ..." y ya estoy listo para comenzar.


    Desde Diseño | Elementos de la página voy a añadir y organizar los elementos que aparecen por defecto (Archivos, Seguidores, Perfil); esto sólo es maquillaje personal así que si no queremos, podemos dejarlos tal como están.

    De todas maneras, hagamos o no hagamos esos cambios, no es mala idea detenerse un poco en esa pantalla de Blogger porque allí podremos ver el esquema gráfico del blog que es la base para entender cómo cambiarlo.

    Nuestro blog no es otra cosa que una serie de rectángulos independientes que se van creando desde afuera hacia a dentro, desde el más grande hasta el más chico, uno dentro de otro. Lo que vemos en la pantalla del monitor es el rectángulo más grande, el que contiene a todos los otros y es el que está definido entre las etiquetas <body> y </body> así que las propiedades generales de nuestro sitio quedan establecidas allí.


    Dentro de ese gran rectángulo, hay otro llamado outer-wrapper que es más pequeño ya que lo separamos de los bordes de la ventana y que tiene una característica fundamental, tiene definido el ancho (width) que es, justamente, el ancho real de nuestro sitio y lo más común es que esté centrado con respecto a la ventana. Dentro de este hay otro más llamado wrap2 que normalmente no tiene propiedades y por lo tanto, es exactamente igual que el anterior ¿Para qué dos? Sería largo de explicar pero, simplificando, esa es la mejor forma de evitar problemas de compatibilidad con los navegadores.

    Y siguen los rectángulos. Siempre, de afuera hacia adentro lo que quiere decir que el externo contendrá uno o más y por lo tanto, el contenido tendrá un ancho menor o igual al contenedor pero nunca será más grande. Y aquí vale una aclaración: para evitar problemas, el ancho no sólo es el valor de width, el ancho que debemos considerar debe incluir los bordes y los márgenes.

    ancho real = width + border + margin + padding

    Así que en el rectángulo outer-wrapper vamos a encontrar otros tres rectángulos más, todos del mismo ancho, uno debajo del otro: header-wrapper es el encabezado del blog, content-wrapper es el contenido (posts+sidebar) y footer-wrapper el pie de página del sitio.

    Nuevamente, dentro de cada uno de esos rectángulos habrá otros y dentro de esos otros habrá otros más y así seguiremos hasta el último que será una imagen, un texto o cualquier otra cosa pero, faltaría ver el que nos importa que es el rectángulo central, el llamado content-wrapper porque es con el cual nos manejaremos.

    Ese bloque rectangular tiene, por defecto, cuatro rectángulos más. El superior se llama crosscol-wrapper y y por ahora no nos interesa porque es invisible; a los efectos de las pruebas, podemos eliminarlo. El último también es invisible y muy importante, dice:
    <div class="clear"></div>
    Los dos del medio son el punto clave del diseño: main-wrapper es el rectángulo que contiene las entradas y sidebar-wrapper el que contiene los elementos de la sidebar. Ambos tienen una particularidad: flotan, y eso es lo que nos permite colocarlos uno al lado del otro ¿Por qué? porque la suma de sus anchos es inferior al ancho del contenedor.

    ¿No les ha pasado cosas como "ayyyyy la sidebar se fue al fondo"? Esa es la explicación.


    Y ahora sí, basta de palabrería, hacemos click en Edición de HTML para empezar a jugar.

    En la plantilla, el estilo CSS es todo eso que está entre <b:skin> y </b:skin>. Allí, haremos una primera modificación para que todo esté claro y siga el mismo criterio. Por alguna extraña razón, las definiciones del footer no son razonables así que las cambiaremos. Buscamos:
    #footer {
    clear: both;
    margin: 0 auto;
    padding-top: 15px;
    line-height: 1.6em;
    text-transform: uppercase;
    letter-spacing: .1em;
    text-align: center;
    width: 660px;
    }
    y lo cambiamos por esto:
    #footer-wrapper {
    clear: both;
    margin: 0 auto;
    width: 660px;
    }

    #footer {
    letter-spacing: .1em;
    line-height: 1.6em;
    padding-top: 15px;
    text-align: center;
    text-transform: uppercase;
    }
    También agregaremos esto para que todos los bloques queden definidos:
    #content-wrapper {
    position: relative;
    width: 100%;
    }
    Y ocultaremos la navbar porque me molesta:
    #navbar {
    display: none;
    height: 0;
    visibility: hidden;
    }
    Esta es la plantilla por defecto y en el ejemplo, pude hacerse click sobre los enlaces de la entrada para colorizar los diferentes rectángulos e identificarlos: [VER EJEMPLO]

    Ahora, vamos a cambiar el ancho del blog y lo que vamos a mirar es el valor que está definido en outer-wrapper:
    #outer-wrapper {
    width: 660px;
    margin: 0 auto;
    padding: 10px;
    text-align: $startSide;
    font: $bodyfont;
    }
    Cambiaremos entonces el valor de la propiedad width; le voy a dar 980 pixeles porque si bien el ancho de la pantalla es de 1024, debemos descontarle los márgenes, en este caso dice padding:10px; así que sería:

    10 - 1024 - 10 = 1004

    Pero aún así sería demasiado ya que hay una barra de desplazamiento vertical que debemos descontar y esa barra varía de tamaño según sea el navegador. Por si fuera poco, Internet Explorer se ejecuta en una ventana que tiene un borde lo que disminuye aún más el espacio disponible. En principio, en IE el ancho máximo sería de 983 pixeles y en Firefox de 991 pixeles así que tomo un número redondo y resuelvo las pequeñas diferencias.

    ¿Qué pasaría si lo hiciera más ancho? Nada grave, apareceria entonces una barra de desplazamiento horizontal.

    Así que si he decidido que mi blog tenga 980 pixeles de ancho y ahora tiene 660 pixeles, le estaré agregando 320 pixeles que voy a colocar como valor en los tres rectángulos principales:
    #outer-wrapper {
    .......
    width: 980px; /* cambio 660 por 980 */
    }

    #header-wrapper {
    .......
    width: 980px; /* cambio 660 por 980 */
    }

    #footer-wrapper {
    .......
    width: 980px; /* cambio 660 por 980 */
    }
    Por último, debería resolver cómo distribuiré esos 320 pixeles extras entre el rectangulo de entradas y el de la sidebar. En este caso le agregaré 150 a las entradas y el resto, a la sidebar así que también cambio esos valores en el CSS:
    #main-wrapper {
    .......
    width: 560px; /* 410 + 150 = 560 */
    }

    #sidebar-wrapper {
    .......
    width: 390px; /* 220 + 170 = 390 */
    }
    Con eso, tengo completada la tarea y como no he cambiado márgenes ni ninguna otra propiedad, el resultado será la misma estructura pero, se distribuirá de mejor manera en la ventana del monitor [VER EJEMPLO]

    ¿Podemos seguir cambiando cosas? Sí: esto continuará ...

    Juegos en Flash para agregar en el blog

    King.com posee una serie de juegos en Flash que podemos descargar y publicarlos en cualquier página web.

    Todos se descargan en formato ZIP y una vez descomprimidos, veremos una serie de imágenes y miniaturas que podemos usar, una breve explicación del juego y un archivo en format SWF que es le que deberemos alojar en algún servidor.

    Luego, lo agregaremos a nuestra página con un código similar a este:
    <div style="text-aling:center"><object id="movie" type="application/x-shockwave-flash" data="URL_archivo.SWF" width="520" height="390"><param name="movie" value="URL_archivo.SWF"><param name="wmode" value="transparent"><param name="allowScriptAccess" value="always"><param name="allowfullscreen" value="true"><param name="quality" value="best"></object></div>
    Donde cambiaremos la URL por la de nuestro archivo y colocaremos el ancho y el alto de acuerdo a nuestras necesidades.

    Splitter Perpetual Motion
    Click para jugar.

    Otros títulos disponibles:
    • Ball Reflexion
    • Bricks Deluxe
    • Domino Knight 2
    • Giant Monsters Attack
    • Hunted Forever
    • Wooden Path

    CopyCode

    CopyCode es una muy interesante extensión de Firefox que nos permite seleccionar un área de una página web y en lugar del contenido, copiar el código HTML para lo cual sólo incluye esta opción en el menú contextual del navegador.

    Muy útil para quienes estén interesados en aprender pero tengan prudencia porque copiar y pegar sin analizar de que se trata puede traer consecuencias no desadas.

    La extensión está aún en fase experimental y para instalarla es necesario estar registrado en Mozilla.


    REFERENCIAS:
  • CiberPrensa
  • Más animalitos ...





    Wallpapers (unos paisajes 2)

    Monalisa

    Click para ver el video.

    Mona Lisa descending a staircase es una animación de Joan C. Gratz, ganadora del Oscar en 1992.

    Sígueme que te sigo y sigamos siguiendo

    Aparecen caras nuevas o que no conocíamos, hasta los avatares son sorprendentes. El nuevo widget/gadget de Blogger se presenta como un intento de establecer una comunidad virtual pero ¿qué buscamos? ¿amigos? En ese sentido, un comentario de Pizcos en Twitter,que para algo sirve sonrisa, decía que SEGUIDORES no es una palabra adecuada y tiene razón, aunque es una de las pocas traducciones correctas que han hecho: Following Followed Followers.

    Apenas hace unos días que está disponible en nuestro idioma y muchos sitios lo han colocado, no causa euforia y en algunos parece haber provocado cierta desazón cuando no hay nadie agregado; todos tuvimos o tenemos algún blog donde no se asoman ni las moscas ni los spammers y si bien nos decimos, no importa, nos gustaría que no fuera así aunque de verdad no importe.

    Tal vez pensemos, y con cierta razón, que este como muchos otros agregados generan sentimientos indeseados porque el nombre que le han puesto no es casualidad. No habla de lectores, no habla de amigos, habla de seguidores, una palabra poco afortunada.

    ¿Seremos juzgados por los blogs que seguimos? se preguntaba alguien ¿Será este otro numerito más de esos que nos califican?

    Me ven, ven a quien sigo, ven quien me sigue, miramos lo que seguimos y seguimos mirando. Eso es una red y los famosos 6 grados de separación pero también puede ser una competencia donde no hay ganadores o quienes ganan jamás somos nosotros ¿El premio? ¡Vaya uno a saber cuál es el premio!

    ¿Una estatua virtual al rey de la blogocosa?

    Un menú con animaciones sólo con CSS

    Flashy Links es un experimento original para crear enlaces animados utilizando GIFs y CSS.

    Sólo necesitamos dos imágenes, la inicial (cfl_link_on.gif) y la animación (cfl_linkback.gif).

    El código CSS lo ponemos antes de </b:skin> y sería el siguiente:
    ul#cfl-menu { /* será un menú en una lista */
    margin: 15px auto;
    width: 200px;
    }

    ul#cfl-menu a { /* los enlaces del menú */
    background: #669933 url(URL_cfl_link.gif);
    color: #FFF;
    cursor: pointer;
    display: block;
    font-weight: bold;
    height: auto;
    margin-bottom: 4px;
    padding: 6px 30px 5px;
    text-align: left;
    text-decoration: none;
    text-transform: uppercase;
    width: 140px;
    }

    ul#cfl-menu li { /* cada item de la lista */
    list-style-type: none;
    margin-bottom: 4px;
    }

    ul#cfl-menu a:hover, ul#cfl-menu a:focus, ul#cfl-menu a:active { /* el efecto de animación */
    background: #669900 url(URL_cfl_linkback.gif);
    color: yellow;
    letter-spacing: 0.3em;
    }
    Y este es el código HTML:
    <ul id="cfl-menu">
    <li><a href="URL_enlace">Inicio</a></li>
    <li><a href="URL_enlace">Página 1</a></li>
    <li><a href="URL_enlace">Página 2</a></li>
    <li><a href="URL_enlace">Página 3</a></li>
    <li><a href="URL_enlace">Página 4</a></li>
    </ul>

    Algo sobre rollovers

    Un rollover es un efecto simple que se utiliza en muchísimas páginas web y que consiste en cambiar, de manera dinámica (sin recargar la página) alguna propiedad de un elemento HTML.

    Por lo general, es algo que vemos en los enlaces y que podemos controlar con propiedades CSS que todos los navegadores reconocen; por ejemplo:
    a {color: #CCCCFF; font-weight: normal;}
    a:hover {color: #FF6666; font-weight: bold;}
    Esto, hará que LOS ENLACES se muestren de cierto color y cuando coloquemos el puntero del ratón encima, cambien de color y la fuente sea negrita; volviendo a su estado "normal" en cuanto ubicamos el puntero en otro lado.

    Como los enlaces, pueden ser tanto textos como imágenes, podemos usar la misma técnica para hacer un rollover sobre un enlace que sólo sea una imagen, ya sea cambiando su transparencia, agregándole un borde o cambiando la imagen:

    a.demoArollOver21 {background: transparent url(URL_imagen) no-repeat left 50%; display: block; height: 32px; width: 32px; padding: 2px 0;}
    a.demoArollOver21:hover {background-color: #DC143C; border: 2px solid #A52A2A; padding:0;}
    a.demoArollOver22 {background: transparent url(URL_imagen) no-repeat left 50%; display: block; width: 32px; height: 32px;}
    a.demoArollOver22:hover {filter: alpha(opacity=80); opacity: 0.80;}
    a.demoArollOver23 {background: transparent url(URL_primeraImagen) no-repeat left 50%; display: block; width: 32px; height: 32px;}
    a.demoArollOver23:hover {background: transparent url(URL_segundaImagen) no-repeat left 50%;}

    En resumen, lo que hacemos es darle a un enlace dos tipos de propiedades; una "normal" y otra que usaremos cuando el puntero del ratón esté encima.

    Esos cambios pueden ser tan sencillos como modificar el color o tan complejos como se nos ocurra:


    Usar el opcode :hover es lo más sencillo pero tiene una limitación, en algunos navegadores como Internet Explorer sólo funciona con los enlaces así que si queremos utilizarlos en otro tipo de etiquetas, debemos recurrir a alguna clase de truco y allí entra a jugar el JavaScript.

    Todas las etiquetas admiten uno o varios atributos:
    <ETIQUETA atributo="valor"> el contenido </ETIQUETA>
    Entre esos atributos están los llamados eventos y algunos de ellos se corresponden con esto de los rollovers; específicamente hay dos: onmouseover y onmouseout. El primero detecta cuando el puntero del ratón está sobre una etiqueta y el segundo cuando sacamos el puntero. Sabiendo esto, podríamos escribir una etiqueta como IMG y hacer que cambiara:
    <ETIQUETA onmouseover="... hacer algo ..." onmouseout="... hacer algo ..."> el contenido </ETIQUETA>
    Ese "hacer algo" debe ser código JavaScript y, aunque parece magia negra, en realidad, podemos crear algunas cosas de manera sencilla. Un ejemplo fácil de comprender es la etiqueta IMG:
    <img src="URL_laImagen" />
    Con JavaScript podemos "leer" el valor del atributo src usando la palabra this que es la referencia al objeto (en este caso la etiqueta) así que:
    this.src es la dirección de esa imagen (URL_laImagen)
    Por lo tanto, como sabemos cuál es, la podemos modificar cuando colocamos el puntero del ratón encima:
    <img src="URL_primeraImagen" onmouseover="this.src = 'URL_segundaImagen';" />
    Claro que, como la cambiamos, si queremos volver atrás y resturar la imagen original cuando quitemos el puntero, habrá que hacer lo inverso:
    <img src="URL_laImagen" onmouseover="this.src = 'URL_segundaImagen';" onmouseout="this.src = 'URL_primeraImagen';" />


    En resumen, en una imagen IMG:

    el atributo src = "URL_primeraImagen" es la imagen visible, la primera que vemos
    el atributo onmouseover="this.src = 'URL_segundaImagen';" es la imagen que cambiamos
    el atributo onmouseout="this.src = 'URL_primeraImagen';" es la imagen original que restauramos

    Pero JavaScript nos permite hacer algo más. Si identificamos una etiqueta con el atributo ID y le damos un nombre único, en lugar de la palabra this, podemos usar una función interna llamada getElementById() para modificar otra etiqueta.

    getElementById('elNombre').src es la dirección de la imagen en una etiqueta con el atributo ID ='elNombre'

    Un ejemplo sencillo. Tenemos dos imágenes, la de la izquierda tendrá los eventos que cambiará la de la derecha a la que habremos dado un nombre para reconocerla:


    La imagen de la izquierda:
    <img src="URL_primeraImagen" onmouseover="getElementById('elNombre').src='URL_segundaImagen';" onmouseout="getElementById('elNombre').src='URL_primeraImagen';"/>
    La imagen de la derecha:
    <img id="elNombre" src="URL_primeraImagen"/>
    Compliquemos un poco el asunto.

    Imaginemos que tenemos una serie de pseudo-enlaces de texto y usando el evento onmouseover, cambiamos la imagen de una etiqueta IMG de tal manera que en un pequeño sector, podemos mostrar una serie de imágenes diferentes.

    Cada pseudo-enlace lo colocaremos en una celda de una tabla así que tendrá un código como este:
    <td onmouseover="getElementById('rollOverImgs').src='URL_imagenXXX';">TEXTO</td>
    Y la imagen en si misma, estará en cualquier otro lado, dentro de la tabla o fuera de ella, y tendrá un código similar a este:
    <img id="rollOverImgs" src="URL_imagenInicial" />

    ABFIJNOPVX

    Descargar el código del ejemplo

    En caso de emergencia rompa el vidrio

    ¿Hasta cuando durara la crisis? No, no hablo de Wall Street o de esas menudencias del mundo real, hablo del maldito formulario de comentarios de Blogger. El cacareado "Commenting made easier" que hace apenas unos pocos días salió de su etapa BETA en Blogger Draft para entrar en su etapa NOFUNCA y ahora es parte de las opciones por defecto de cualquier blog que se atreva a usarlo.

    Esta bien. En esos primeros días hubo algunos problemitas pero, desde ese 22 de octubre hasta ahora ha pasado mucho, mucho, mucho tiempo y vamos de mal en peor. Lo más desconcertante es que en algunos casos todo está normal y en otros no. Explicaciones no hay ninguna y analizar el asunto parece imposible.

    No es un problema de cuentas. Tengo dos blogs de prueba, en uno funciona perfectamente y en el otro no. Tampoco parece ser un problema de códigos, he copiado y pegado el de uno en el otro y el resultado ha sido el mismo; peor aún, en cierto momento, el formulario directamente desaparecía de la página.

    En un post, Gem@ habla del OVNI y allí puede verse la captura del error, es una buena manera de darse cuenta si en el blog donde vamos a dejar un comentario, hacer click será una acción normal o la entrada en el Purgatorio Blogger.

    En realidad, el origen de este desastre es que los desarrolladores/gerentes de Blogger parten de un error conceptual y así no hay solución posible. Ellos creen que nosotros no debemos manejar los comentarios. No es que no sepan cómo hacerlo. Es que no quieren y esa es la clave de todo.

    Por eso el formulario es un IFRAME lleno de llamadas a scripts que cambian todos los días y que ahora muestra un error BLOG_CMT_addIdentity is not defined que hace que no funcionen los botones y ayer mostraba otro y mañana aparecerá uno nuevo. Esos scripts cambian y no dan pie con bola. Sacan un paréntesis, le ponen otro, aparece una variable que luego desaparece. No, no es que no sepan lo que hacen: quieren hacer algo que está mal y lo hacen bien.

    Blogger sigue sin tener una gestión de comentarios decente y este maquillaje sólo ha sido la zanahoria delante del burro. Ah, sí, los burros somos nosotros que seguimos insistiendo en usar el servicio y por favor, comentarios tipo usen WordPress, abstenerse, el horno no está para bollos y YO QUIERO SEGUIR USANDO BLOGGER.

    Happy commenting! es el texto que el blog oficial coloca para darle la bienvenida y casi parece una burla.

    Dos años tardaron en decidirse a implementar algo tan elemental como un formulario de comentarios que cualquier servicio de blogs dispone por defecto. Desde junio hasta fines de octubre estuvo en modo de prueba y aún no han conseguido que funcione dos días seguidos. Si eso no es inoperancia, no sé cómo llamarlo ¿Desprecio por los usuarios? ¿Estupidez? ¿Google tendrá conciencia que una gran parte de su éxito se lo debe a los millones de blogs de Blogger mismo?

    ¿Sabrá Google que nosotros, los usuarios, podemos vivir si ellos pero ellos, sin nosotros no existen?

    Si algo demuestra la historia del mundo es que nada es eterno y los imperios caen y a veces, ni siquiera hacen ruido.

    LightWindow: Videos en pantalla completa

    Una limitación de LightWindow es la imposibilidad de reproducir videos en pantalla completa aún cuando el archivo de Flash tenga esa opción.

    Una solución parcial es modificar el código del script y digo parcial porque en algunos casos, da la impresión que aún así no funciona y no pregunten por qué: no tengo idea así que si alguien lo sabe, avise tristeanim

    La modificación es bastante sencilla, basta abrir el archivo con algún editor de texto y allí debemos buscar esta línea:
    outerObject = this._addParamToObject('quality', 'high', outerObject);
    Inmediatamente debajo, agregamos esta otra:
    outerObject = this._addParamToObject('allowfullscreen', 'true', outerObject);
    Del mismo modo, buscamos esta otra línea:
    innerObject = this._addParamToObject('quality', 'high', innerObject);
    Y debajo, agregamos esta otra:
    innerObject = this._addParamToObject('allowfullscreen', 'true', innerObject);
    Guardamos y listo. Podemos re-alojarlo, subiéndolo otra vez a nuestro servidor.

    Click para ver los videos.

    NiftyPlayer: Mini reproductor MP3

    niftyPlayer es un pequeño reproductor de MP3 que podemos insertar en cualquier sitio. Sólo tiene 4KB y es un archivo SWF así que hay varios servicios donde podemos alojarlo: ImageShack, Fileden, etc.

    No tiene muchas opciones ni permite reproducir listas pero el ZIP que nos ofrecen incluye la fuente del código así que es útil para quien esté interesado en el desarrollo de Flash.

    Lo usamos igual que cualquier otro objeto de este tipo:
    <object width="165" height="37" id="n" type="application/x-shockwave-flash" data="URL_niftyplayer.swf?file=URL_archivo.mp3&as=0"><param name="movie" value="URL_niftyplayer.swf?file=URL_archivo.mp3&as=0" /></object>
    donde:

    URL_niftyplayer.swf es la dirección donde hayamos alojado el reproductor
    URL_archivo.mp3 es la dirección del archivo de audio en formato MP3
    &as=0 es una opción que nos permite hacer que el audio se reproduzca automáticamente (1) o no (0)

    Incrustar los videos de MTV Music

    Hace días había visto el nuevo sitio de MTV Music y me había gustado pero no me había dado cuenta de que tenía la posibilidad de incrustar los videos. Para mi descargo puedo decir que el código lo han colocado allá abajo, bien escondido pero sonaría como excusa y lo es verguenza

    Por suerte, Claudio, de Poca Tinta me envió un mail contándome del tema e incluso agregó un post explicándolo así que me sumo a él:


    Lo que nos dicen que copiemos y peguemos es largo y poco recomendable (hay que terminar con el uso de la falsa etiqueta EMBED) pero, como con cualquier otro, basta saber cuales son los datos importantes y deshechar los otros:
    <embed src="http://media.mtvnservices.com/mgid:uma:video:mtvmusic.com:296046" width="320" height="271" type="application/x-shockwave-flash" flashVars="dist=http://www.mtvmusic.com" allowFullScreen="true" AllowScriptAccess="never"></embed> <div style="margin:0; text-align:center; width:320px;font-family:Arial,sans-serif;font-size:10px;"><a style="color:#000000;" href="http://www.mtv.com/music/artist/csny/artist.jhtml">Crosby, Stills & Nash</a> |<a style="color:#000000;" href="http://www.mtvmusic.com/">MTV Music</a></div>
    Con saber que la URL del reproductor es:

    http://media.mtvnservices.com/mgid:uma:video:mtvmusic.com:296046


    y que su tamaño por defecto es 320x271 ya tenemos todo lo que necesitamos y si queremos, usamos el código válido que, en Blogger, nos evitará problemas:
    <object width="320" height="271" id="movie" type="application/x-shockwave-flash" data="http://media.mtvnservices.com/mgid:uma:video:mtvmusic.com:296046"><param name="movie" value="http://media.mtvnservices.com/mgid:uma:video:mtvmusic.com:296046" /><param name="allowFullScreen" value="true"/></object>
    Para quienes usan LightWindow es interesante saber que también podemos usar el script para mostrar estos videos sin problemas:
    <a class="lightwindow" href="http://media.mtvnservices.com/mgid:uma:video:mtvmusic.com:18198" params="lightwindow_width=550,lightwindow_height=466,lightwindow_loading_animation=true" title="" rel="">ENLACE</a></div>

    Click para ver el video.

    Los experimentos de GMail

    Para utilizar las características experimentales de Gmail en español, deberemos esperar que Google se de cuenta que el mundo existe más allá del Rio Bravo pero, mientras tanto, podemos jugar un poco, "engañándolo". Basta ingresar en la Configuración y, temporalmente, cambiar el idioma a inglés, establecer nuestras opciones y luego, restaurar el idioma. Extrañamente, los cambios se mantendrán e incluso, algunos aprecerán "traducidos".


    Es importante saber que estos agregados de Gmail Labs son opciones de prueba, experimentos que con el tiempo, se pueden o no incorporar a las opciones normales y, algunas de ellas pueden no funcionar correctamente; nada grave, por cierto (más información) Eventualmente, basta ir a https://mail.google.com/mail/?labs=0 para deshabilitarlas todas y restablecer GMail.

    Hay muchas y estas son algunas de las que estoy probando:

    Quick Links agrega una caja en al columna izquierda que nos permite marcar determinadas direcciones dentro de GMail y guardarlas para tener un acceso rápido (filtros, búsquedas frecuentes, mensajes de ciertas personas, etc). Realmente muy útil.


    Superstars agrega íconos adicionales a los resaltados. Una vez habilitado, se establecen las preferencias en la primera pantalla de Configuración; allí las ordenamos para que vayan rotando cuando hacemos click al marcar un mensaje. También podemos buscar según diferentes tipo de destacados usando el operador has: (por ejemplo, has:blue-star).


    Signature tweaks coloca nuestra firma al final de los mensajes eliminando los caracteres "--"

    Navbar drag and drop nos permite reordenar la columa izquierda arrarastrando y soltando elementos. Muy útil.



    Custom Label Colors amplia las posibilidades para colorear etiquetas, permite combinar colores de fondos y textos.


    Mark as Read Button agrega un botón Marcar como leido para que no tengamos la necesidad de abrir los mensajes; muy cómodo para manejar los comentarios de Blogger.


    Google Docs gadget agrega una caja donde se nos muestra los documentos que tengamos en Google Docs. Desde allí podemos crear nuevos, marcarlos o buscarlos.


    Add any gadget by URL nos permite agregar cualquier gadget de Google a la columa izquierda de GMail. Lo hacemos desde Configuración donde veremos una nueva solapa con las opciones y allí ingrasermoas colocaremos la URL correspondiente.


    Otras posibilidades para explorar: Pictures in chat (muestra las iágenes de los contactos en el chat), Custom keyboard shortcuts, Mouse gestures, Random Signature, Custom date formats, Muzzle, Old Snakey, Email Addict, Right-side chat, Right-side labels, Hide Unread Counts, Advanced IMAP Controls, Canned Responses, Default 'Reply to all', Quote selected text, Mail Goggles, Vacation Time!, Go to label, Google Calendar gadget, Fixed width font, Forgotten Attachment Detector y se siguen agregando ...

    Animales humanos

    Una monada.


    La libertad siempre tiene un precio.


    Maniobras de distracción.


    El que mucho abarca poco aprieta.