Internet, desarrollo web, música y desvaríos del autor
13 Nov
Algunos ya hemos oido hablar de AIR: La solucion para crear programas de escritorio que nos plantea Adobe. Cuando conoci la propuesta, que basicamente es poder transformar documentos html, flash, flex y javascript a aplicaciones, me llené de emocion.
Cuando bajé el alpha (hace ya algunos meses) y compilé mis primeras aplicaciones, sentí que le faltaba mucho por abarcar: No habia manejo de entorno, ni de ventanas… es decir, con html y javascript podias crear una aplicacion web de escritorio, pero no usar el sistema del cliente para nada.
Tuve una gran sorpresa cuando descargue el SDK de AIR beta 2. Este incorpora metodos mucho mas extensos, accesibles incluso desde Javascript simple, para controlar todo lo mencionado anteriormente simplemente incluyendo un archivo .js. El método de escribir la aplicacion se simplificó con esta version, asi como se ganó estabilidad y velocidad en el compilador. Un ejemplo de lo que podemos conseguir, usando solo javascript y air, es:
var sourceFile = air.File.documentsDirectory;
sourceFile = sourceFile.resolvePath("Apollo Test/test1.txt");
var destination = air.File.documentsDirectory;
destination = destination.resolvePath("Apollo Test/test2.txt");
if (sourceFile.copyTo(destination, true)) {
air.trace(”Done.”)
}
Simple y genial. Además, hay una documentación excelente al respecto. En lo personal, le veo un gran futuro al AIR. De hecho, ya vemos muchas aplicaciones que estan hechas en este formato. ¿Long live adobe?
Puedes descargar el ultimo SDK en el siguiente enlace, asi como la documentacion:
Adobe AIR
PD: Como nota curiosa… has visto ya adobeair.com? XD
7 Nov
Por medio de Base64, un sistema de codificación, podemos transformar cualquier tipo de archivo a caracteres simples ( texto plano ). Esto resulta muy útil cuando no queremos crear por ejemplo multiples archivos de imagen para adjuntarlos.
Si conocen Stylish, una extension para firefox, se preguntaran como hacen los autores de un tema para que en un archivo de css vayan incluidas las imagenes. Pues… base64 es la solucion. Además es ideal para hostings restrictivos, pues lo que estas arhcivando es simple texto.
La estructura basica que tiene un archivo codificado en base64 es la siguiente. El ejemplo es de un archivo png:
data:image/png;base64,MuChasLetrasyNum3r0s
Entonces… examinemos despacio cada uno de los componentes.
data:image/png
Nos indica que tipo de archivo estamos enlazando. Podemos reemplazar el “image/png” por el MIME type del tipo de archivo que vamos a usar. Una lista de MIME types esta disponible para que no te pierdas en esa parte.
Lo siguiente, base64, simplemente indica que el texto siguiente está codificado en base64.
MuChasLetrasyNum3r0s : Compone el archivo codificado en texto plano. Eso es lo divertido, lo que te voy a enseñar a continuacion
Php tiene dos funciones nativas que nos pueden ser muy utiles en este aspecto: base64_encode y base64_decode
Entonces, sabiendo eso, solo nos queda crear una funcion sencilla para leer un archivo y convertirlo:
<?php
function codificarImagen ($imagen) {
echo "data:image/png;base64,".base64_encode(file_get_contents($imagen));
};
codificarImagen("imagen.png");
?>
Lo anterior nos devuelve la imagen png convertida a base64. Fácil, no?
Bueno, genial, tranforme mi linda imagen a un monton de numeros y letras raros. ¿Y?
La buena noticia es que no tienes que hacer nada mas. Simplemente usa tu supertexto para todo:
Una imagen normal
<img title="Imagen en Base64" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...." />
Una imagen de fondo en css:
<style type="text/css">
div.imagen{
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA....);
}
</style>
Un css completo:
<link href="data:text/css;base64,iVBORw0KGgoAAAANSUhEUgA.." rel="stylesheet" type="text/css" />
Un js completo:
<script src="data:text/javascript;base64,iVBORw0KGgoAAAANSUhEUgA..." type="text/javascript"></script>
Y creo que ya entendieron el mensaje.
Desafortunadamente, y como sucede normalmente con lo cool, ie6 no soporta la codificacion en Base64. Sin embargo, los otros browsers (los decentes, como Firefox, Opera, Safari, etc) si, e incluso hay hacks para que funcione en el “bendito”. Uno de los mejores es el siguiente:
Fix para Base64 en ie6, por Dean Edwards
Las imagenes y archivos aparte no son malos, de modo que usa esta tecnica cuando se justifique, no vayas a empezar a codificar todas tus imagenes XD (so, es decir que no abuses). Lo otro es que logicamente a archivos mayores, el tamaño de la cadena de texto generada es mayor. Y por ultimo, no siempre se gana tamaño al codificar una imagen: A veces (bueh, la verdad, no se si siempre) se gana tamaño al ser convertido en texto. Esperen comparativas U_U
Un saludo