Hacer un trim en Javascript con Regular expressions

Cómo hacer un trim en javascript de manera «elegante» usando regular expressions:

function trim(s){
s = s.replace(/\s+/gi, ‘ ‘); //sacar espacios repetidos dejando solo uno
s = s.replace(/^\s+|\s+$/gi, »); //sacar espacios blanco principio y final

return s;
}

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();

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

YubNub La línea de comandos sociales para la web

Hoy voy a hablar de un buscador que utilizo desde hace un tiempo YubNub, este es un buscador de aspecto simple, muy en la línea de google, que nos presenta las busquedas en la web como si estuvieramos en un Terminal de Linux. Me explico: para buscar algo deberemos poner un comando antes, por ejemplo: g wordpress nos dara aquellas páginas que contengan wordpress en el buscador de google. O bien y wordpress para hacer lo propio en el yahoo, o wk wordpress para hacer lo mismo en la wikipedia. Y esto solo para poner unos ejemplos ya que podemos hacer búsquedas en multitud de motores de búsqueda solo hace falta saber el comando. Algunos de estos són:

– delicious

– google maps

– google imagenes

– ebay

– amazone

– flickr

– wikipedia

– youtube

– …

Tener todo esto centralizado en un solo buscador ya es de por si remarcable y útil. Peró si además te ofrece la possiblidad de crear tus propias comandos personalizados, y acceder a funciones tales como:

– Whois

– Lynx

– Convertir unidades monetarias

– Traducir texto en diferentes idiomas

– Acceder a Javadoc

– Buscar torrents

– convertir a ASCII

– …

Sus possiblidades y utilidad se multiplican exponencialmente. Yo almenos he sustituido mi página de inicio de Google por esta. Podeís ver la lista de comandos de Yubnub en este enlace:

http://www.yubnub.org/documentation/jeremys_picks Seguir leyendo

¿Donde están los ingenieros de software del mañana?

«En Slashdot publicaron una noticia sobre un artículo escrito por Robert B.K. Dewar y Edmond Schonberg, dos profesores de Ingeniería Informática de la Universidad de Nueva York: «Educación de Ciencias de la Computación: ¿Dónde están los ingenieros de software del mañana?». En ella, apuntan a Java como «dañino» en el aprendizaje de la programación, así como critican a las universidades por no enseñar lenguajes sólidos como C, C++, Lisp y Ada. El artículo se reflejó en varios sitios, y parece un verdadero referente del estado actual de la educación formal en Ciencias de la Computación (o Informática). Como estudiante, recomiendo a todos aquellos que estén estudiando programación (o similar) leerlo. En su mayoría, este post es una traducción libre resumida de dicho artículo, así como opiniones y reflexiones personales agregadas.» En general, creo que enumera bien las tendencias más preocupantes en la enseñanza de ingeniería informática (menor énfasis en los fundamentos de programación, abuso de las «recetas» empaquetadas, menor énfasis en matemáticas y lógica, etc.), aunque es obvio que son más acusados en unas universidades que en otras.

Supuestas características de Ubuntu Hardy Heron

Tal como decimos en el titular de este artículo, explicaremos las “supuestas” características de la próxima versión de Ubuntu. ¿Por qué son supuestas? De acuerdo con la información que nos facilitan en ubuntuland, son las siguientes una serie de características propuestas y algunas están pendientes de aprobación final, es decir, no son definitivas de modo alguno. No obstante, puede resultar interesante observar la dirección que llevan los creadores de esta magnífica distribución GNU/Linux.

Algunos de los puntos que relacionamos a continuación vía mundogeek os resultarán sobradamente conocidos (como pueda ser el cambio de tema de escritorio gnome) o lógicos y habituales (como la mejora en compatibilidad de hardware). Otros, en cambio, me han resultado más novedosos:

Preservar home

Modificar el instalador para permitir al usuario instalar Ubuntu preservando el directorio /home de una instalación anterior. Esta característica está pendiente de ser aprobada.

GDM Face Browser

Se sustituye GDM por una versión con animaciones OpenGL y con la posibilidad de seleccionar un usuario haciendo clic sobre su avatar. Posible integración con MeMaker (una aplicación para crear avatares) y Cheese (una aplicación para capturar imágenes y vídeos utilizando la cámara web). Esta característica está aprobada, pero no se ha empezado a trabajar en ella.

Detección Hardware

Actualizar y mejorar la infraestructura de detección de hardware de Debian / Ubuntu. Esta característica ha sido aprobada para Hardy Heron, aunque aún no se ha empezado a trabajar en ella.

Autodetectar Frecuencia Monitor

Una característica que permitirá acabar con muchos de los problemas de resolución que sufren muchos usuarios. En los foros de linux.adslzone.net nos hemos encontrado con varios casos.

Esta característica está prácticamente implementada en su totalidad, pero el que se incluya en Hardy Heron o en la próxima versión de Ubuntu dependerá de la magnitud de los cambios necesarios.

Mejorar autenticación Apt

Aprobada. La implementación progresa adecuadamente. El código se puede obtener desde el repositorio de Michael Vogt en Launchpad.

Rediseño del Gestor de Controladores Restringidos

Se pretende reescribir la aplicación de gestión de controladores restringidos así como crear una nueva base de datos de controladores, de forma que la aplicación pueda ser utilizada en otras distribuciones. No debería haber cambios en el comportamiento de la aplicación desde el punto de vista del usuario.

Aprobada y asignada a Martin Pitt. Se ha comenzado la implementación. Prioridad media.

Disco duro lleno

Una nueva aplicación que permita al usuario liberar espacio del disco duro si se encuentra con que el disco está casi lleno. En principio debería permitir borrar la papelera, la caché de .thumbnails, la caché del navegador, logs antiguos, la caché de apt, etc. También debería ser posible poder añadir nuevos elementos a borrar del disco mediante pequeños plugins.

Está aprobada y asignada a Michael Vogt (prioridad media).

Efectos escritorio

Trabajar en la integración de Compiz con el escritorio de Ubuntu. Las herramientas para controlar la apariencia, los espacios de trabajo, las combinaciones de teclas y las sesiones deberían tener en cuenta a Compiz.

Además Compiz debería ser el gestor de ventanas por defecto en los sistemas que lo soporten.

Aún no se ha aprobado.

Nuevo tema

Esta característica aún no se ha aprobado, pero hay montones de propuestas distintas sobre cómo debería lucir el tema de Hardy Heron. Parece ser que el tema actual de Ubuntu no convence a la mayoría.

Compartir archivos fácilmente

Facilitar compartir archivos con otras máquinas en una red LAN o WAN sin que el usuario necesite saber cómo funciona nfs o samba y sin necesitar permisos de super usuario.

Se han sugerido distintas opciones como giver o Telekinesis.

Soporte para varios monitores

En realidad esta característica ni si quiera tiene un draft en condiciones, por lo que es altamente improbable que lo veamos en Hardy Heron y seguramente se pospondrá para una versión posterior. Consistiría en una pequeña interfaz que se ocupara de configurar automáticamente Xinerama, TwinView, o cualquier otro sistema utilizado por nuestra gráfica para el soporte de varios monitores, en lugar de tener que editar xorg.conf a mano.

Prefetch

Uno de los proyectos del Summer of Code de 2007 consistió en el desarrollo de distintos parches que permitían precargar archivos y mejorar la velocidad de carga del sistema.

Aún no se ha aprobado y su implementación depende de una evaluación previa de las ventajas y desventajas.

Automatix

Simplificar la instalación de distintas aplicaciones populares integrando Automatix en Ubuntu. Esta característica no se ha aprobado.

Instalación con un solo clic

Simplificar aún más la instalación de software que no está incluido en los repositorios de Ubuntu, posiblemente aumentando las capacidades de apturl. Esta característica aún no ha sido aprobada, pero hay que tener en cuenta que en un principio apturl permitía hacer cosas como añadir nuevos repositorios o instalar software de repositorios que no se encontraban en sources.list, pero estás ideas se desestimaron (al menos momentáneamente) por considerarlas poco seguras.

Integración de AppArmor

AppArmor, el popular framework de seguridad, ya es parte de Ubuntu desde Gutsy. Se pretende mejorar la integración y la usabilidad.

Se ha aprobado, pero no se ha comenzado a implementar.

Firewall

Simplificar el uso de iptables para los usuarios, con una interfaz fácil de manejar, detección dinámica de puertos abiertos y soporte de integración de paquetes.

Aprobada, pero no se ha comenzado la implementación.

Salir del equipo

En esta especificación se describen cosas tales como cambiar de cuenta de usuario usando el applet “Fast User Switching”, combinar Suspender e Hibernar en un nuevo comando “Dormir” o apagar automáticamente la computadora si no se ha utilizado durante un cierto tiempo.

Aún no se ha aprobado.

Mejor integración con Wine

Un entorno más integrado, intuitivo y funcional para correr aplicaciones usando Wine.

Xorg 7.3

Una de las características clave de Xorg 7.3 es una mejor auto detección de los monitores. En esta característica ya se comenzó a trabajar en Gutsy.

Mejorar el arranque

Mejorar el aspecto del arranque del sistema operativo y unificar los temas de pantalla de inicio y pantalla de login.

Aún no se ha aprobado, aunque se propuso para Feisty.

Reflexionando un poco después de la lectura de estas características propuestas (y dejándome llevar un poco por la ilusión), creo que podremos disfrutar con Hardy Heron de una de las mejores ‘distros’ del momento y que avanzará en el acercamiento de linux a los usuarios noveles. Al tiempo…


DJ Project, integración de navegadores web y reproductores flash en aplicaciones Swing

DJ Project es un proyecto libre que proporciona herramientas y librerías para apoyar el desarrollo de aplicaciones de escritorio Java. DJ Project – Native Swing es una parte del anterior proyecto que pretende facilitar la integración de componentes nativos en aplicaciones Swing, especialmente la integración de navegadores web y reproductores de Flash. DJ Project Native Swing trata de proporcionar un API para los componentes nativos similar a las API que suelen proporcionar los componentes Swing y, según los creadores, resuelve de un modo transparente para el programador todos los problemas relacionados con multithreading. Nuevamente según los creadores del proyecto, éste es uno de sus puntos fuertes respecto al componente JDIC Browser de Swing Labs.Aquí podéis ver unas capturas de pantalla y aquí podéis lanzar una demo (sólo para Windows de 32 bits) del proyecto.

¿Cuántos os habéis visto en la necesidad de integrar un componente nativo en una aplicación de escrtorio? ¿Qué solución usastéis para ello?

Actualización 1.4.1 de openSwing, framework libre para el desarollo de aplicaciones swing Java

OpenSwing es un framework para el desarrollo de aplicaciones swing, tanto para aquellas que no se comunican con una base de datos como para aquellas aplicaciones de dos o tres capas cuyo front end es una aplicación de escritorio. El framework incluye un conjunto de componentes gráficos implementados en Swing orientados a la visualización de datos entre los cuales hay componentes para mostrar cantidades de dinero, grids, un componente híbrido entre un árbol y un grid, calendarios, diagramas de Gantt y un largo etcétera.

OpenSwing también cuenta con una librería para el desarrollo de la capa de acceso a datos y (para las aplicaciones de tres capas) la lógica de negocio, así como una librería que se encarga de simplificar la comunicación con el servidor. También cuenta con componentes para visualizar documentos PDF y Excel. El framework se distribuye bajo licencia LGPL y cuenta con abundante documentación entre la cual se incluyen varias aplicaciones de demostración.

Algunos acoplamientos:

Home page: http://oswing.sourceforge.net

Demo: http://oswing.sourceforge.net/demo10/demo10.jnlp

JAllInOne demo: http://www.hostingjava.it/-carniel/jAllInOne.jnlp