Pasos para crear un zip en java sin guardarlo en un directorio temporal

-Crear un ZipOutputStream que referencia el destino. En el ByteArrayOutputStream se guardará el zip temporalmente.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(baos);


-Crear un InputStream (o derivado) que referencia un archivo a agregar al ZIP. En el EmbeddedObject se guarda el archivo que se quiere añadir al zip.
EmbeddedObject obj;
InputStream is = obj.getInputStream();


-Crear una ZipEntry que representa el InputStream. Al ZipEntry se le pasa el nombre como se quiere que se llame el fichero que se añadirá al zip.
zipEntry = new ZipEntry(“12354.xls”);

-Agregar el ZipEntry al ZipOutputStream llamando a su método putNextEntry().
zip.putNextEntry(zipEntry);

-Copiar datos del InputStream al ZipOutputStream (usando un buffer array de bytes para leer desde el InputStream y luego escribirlo en el ZipOutputStream).
byte[] buffer = new byte[2048];
int byteCount;
while (-1 != (byteCount = is.read(buffer))) {
zip.write(buffer, 0, byteCount);
}


-Cerrar la entrada zip actual y el InputStream para escribir la siguiente entrada al ZipOutputStream.
zip.closeEntry();
is.close();

-Al añadir todos los ficheros al zip, cerrar el ZipOutputStream.
zip.close();

Anuncios

Que tal llevas el pulso???

Linerider es un juego que a pesar de su interfaz simple conseguirá engancharnos y estar buenos ratos delante del ordenador. El juego en cuestión consiste en dibujar un circuito por el que va a circular un personaje con un trineo. Este podrá hacer volteretas, ir marcha atrás, saltos, … Parece fácil peró ya vereis que dibujar un circuito con el ratón y que el trineo no se estrelle en un buen rato no és cosa fácil. Os dejo como ejemplo un par de circuitos espectaculares que se encuentran por la red.

Podeís jugar a el en este enlace

Suerte a todos

La cosa va de Wallpapers

En este artículo queria recomendaros 5 web que contienen una buena cantidad de fondos de escritorio, además de complementos gráficos para decorar vuestro sistema operativo preferido y hacer que os sintaís con el aún más comodos.

Interfacelift

Gnome-look

Kde-look

Socwall

Deviantart

Espero que os gusten y que encontréis un fondo que os guste

Las 50 mejores aplicaciones gratuitas para webmasters y diseñadores

Hoy navegando por internet he encontrado una lista bastante buena de aplicaciones gratuitas para diseñadores web y webmasters. Algunos de esos programas los estoy usando o los conocía per una buena parte no. Y creo que hay alguno de sobresaliente. Estan separados dependiendo del ámbito por ejemplo: gráficos 2d, gráficos 3d, animación, … Además hay una explicación de cada uno de ellos e imágenes. No tiene desperdicio. Para citar algunos he elegido estos tres, la lista completa la podeís encontrar en este enlace:

Paint.net

paintnet.jpg

UVMaper 

uvmapper.jpg

ImageSortes-

imagesorter.jpg

Poner varias páginas de inicio al Firefox

Seguro que cuando arrancas el navegador Firefox, normalmente debes visitar las mismas webs almenos al principio. Si quieres poner tus páginas preferidas para que se inicien al empezar debes hacer lo siguiente.

Para hacerlo solo debes de dejar las web que quieres abrir en diferentes pestañas y una vez que las tengas todas escogidas, seguir la siguiente ruta de opciones

Herramientas -> Preferencias -> Pgina de inicio -> Usar páginas actuales

Ya está. Es un truco bastante sencillo pero quizas le sirva de ayuda a alguien

Navega por las fotos de Badongo con esta sencilla página

Código sencillo en Javascript y Html para navegar por las fotos de badongo. Es muy sencilla, sin ningún css de estilo que lo dejo a gusto de cada uno. Solo contiene lo minimo. Para hacerla servir crear un archivo html con este código.

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

<script type=”text/javascript”>

var i;

function nextImage(){

document.getElementById(“ibadongo”).src=”http://www.badongo.com/pix/&#8221; + i;

i++;
document.getElementById(“numimage”).value = i;

}

function prevImage(){

document.getElementById(“ibadongo”).src=”http://www.badongo.com/pix/&#8221; + i;

i–;
document.getElementById(“numimage”).value = i;

}

function randomImage(){

random(3000000);
document.getElementById(“ibadongo”).src=”http://www.badongo.com/pix/&#8221; + i;
document.getElementById(“numimage”).value = i;

}

function loadPage(){

random(3000000);
document.getElementById(“ibadongo”).src=”http://www.badongo.com/pix/&#8221; + i;

document.getElementById(“numimage”).value = i;

}

function random(num){

i = Math.round(num*Math.random())

}
function nav2image(){

i=document.getElementById(“numimage”).value
document.getElementById(“ibadongo”).src=”http://www.badongo.com/pix/&#8221; + i;
document.getElementById(“numimage”).value = i;

}

</script>

</head>
<body onload=”loadPage();”>
<input id=”btn_prev” type=”button” value=”Previo” name=”btn_previo” onclick=”prevImage();” />
<input id=”btn_next” type=”button” value=”Siguiente” name=”btn_next” onclick=”nextImage();” />
<input id=”btn_random” type=”button” value=”Random” name=”btn_next” onclick=”randomImage();” />
<input type=”text” id=”numimage” name=”numimage” value=”1″ /><input type=”submit” value=”Buscar” onclick=”nav2image();” />
<br>
<iframe id=”ibadongo” width=”1024″ height=”700″ name=”ibadongo”></iframe>
</body>
</html>

Esta página esta hecha con Geany, editor de textos GNU, desde linux Ubuntu 7.10

Benchmark de javascript en navegadores

Jeff Atwood de Coding Horror ha realizado un benchmark de la implementación de javascript de las últimas versiones de los navegadores más usados actualmente: Opera 9.5, Safari 3, Explorer 7 y Firefox 2. Para ello utilizó un nuevo benchmark lanzado por Apple llamado SunSpider que se basa en código “real” o sea código que normalmente es usado en aplicaciones web, las diferentes categorías que cubre son:

3d Cómputo que se usaría para renderizar 3d, como operaciones de punto flotante.
accesso Acceso a arrays, propiedades de objetos y a variables
bitops Operaciones bitwise
Control de flujo Bucles, recursividad, condicionales.
criptografía Código para funciones criptográficas.
fecha Desempeño del objeto “Date”
Matemáticas Cálculos matemáticos
regexp RExpresiones regulares
string Operaciones con cadenas de caracteres

Como podrás ver en los resultados del benchmark, Opera tuvo el mejor desempeño pero como indica Jeff tuvo que usar la última beta del navegador para que todo el benchmark funcionara correctamente. Le sigue Safari, un gran resultado considerando que las pruebas se hicieron sobre el SO Windows, seguramente sobre mac OSX sus números incluso mejorarían. El tercer lugar sería para Firefox 2, pero eso gracias a una anomalía de Explorer en las operaciones con Strings, de no ser por eso, Explorer gana por bastante margen al navegador de Mozilla.

En un mundo en que cada vez se usa más javascript, este tipo de benchmark empiezan a tener sentido. Lo de Firefox es una llamada de atención al equipo de desarrollo, resulta increible que es prácticamente el browser más lento en javascript. Sería interesante ejecutar el benchmark sobre Firefox 3 beta 2.

Gráfico de la comparativa