Todo sobre Ubuntu 11.04 Natty Narwhal

Al igual que en anteriores ediciones de Ubuntu, os traigo una entrada resumen de toda la información tan genial que ha ido apareciendo en la red sobre la nueva versión de la que es la distribución más popular de Linux a día de hoy.

Cada seis meses aparece una versión nueva y si bueno me parece el trabajo desarrollado por Canonical y toda la comunidad, mejor aún me parece el trabajo que vierten a la red los compañeros bloggers sobre la distribución. Sin lugar a dudas, si hay algo que ayuda al Software Libre es esto: la participación que además se convierte en estos casos en documentación. read more

Leer más » 10 Comentarios

Pantalla de espera en peticiones AJAX con jQuery

Cuando trabajamos con aplicaciones que tienen interfaces web, sin lugar a dudas, la experiencia de usuario mejora enormemente si hacemos uso de tecnologías como AJAX que nos permiten transmisiones y recepciones asíncronas.

No se fuerzan cambios ni refrescos de pantalla y por lo tanto, la experiencia del usuario es más continua y más parecida a cómo sería en un interfaz de escritorio. Sin embargo, este tipo de tecnologías tiene un problema: si no controlamos los eventos del usuario mientras existe una carga de datos, es posible que se generen comportamientos erráticos.

Pongamos un ejemplo. Tenemos un sistema que carga una serie de datos de forma dinámica con AJAX a través de un formulario. Cuando el usuario hace la búsqueda, la carga se realiza y se le muestra. Si la carga tarda “mucho” y no se bloquea de alguna forma la posibilidad de seguir buscando, pueden aparecer resultados incoherentes (de búsquedas anteriores) o directamente fallar el sistema por sobrecarga.

¿Cuál es la solución más popular para este tipo de problemas? Utilizar una pantalla de espera. Vamos a explicar cómo hacerlo con jQuery en muy pocos pasos.

Introducción

La solución que vamos a usar, utilizará un div no opaco de color gris, que ocupará la pantalla al completo cuando se produzca una petición de tipo AJAX. El div incorporará una animación en la parte central.

El div

Deberemos situar un div que por defecto se encuentre escondido, hide, justo al comienzo de nuestro código del body. Contendrá una imagen de carga, que podréis generar fácilmente con alguna aplicación web como AJAXLoad.

El código será el siguiente:

<div id="div_carga">
<img id="cargador" src="./images/ajax-loader.gif"/>
</div>

El estilo del div

Para que el div ocupe la pantalla completa y la imagen se quede en medio, deberemos establecer las siguientes reglas CSS:

#div_carga{
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
	background: url(images/gris.png) repeat;
	display:none;
	z-index:1;
}

#cargador{
    position:absolute;
    top:50%;
    left: 50%;
    margin-top: -25px;
    margin-left: -25px;
}

El fichero gris.png que aparece, es un fichero con una imagen en PNG de color gris con transparencias.


El código jQuery

Finalmente tenemos que introducir el código que se encargue de hacer que en cuanto se produce una petición AJAX el div se muestre y que cuando finalice, se oculte. Podríamos hacerlo para cada operación, pero es mucho más cómodo usar las funciones:

¿Cómo? Como se muestra a continuación.

$('#div_carga') .hide() .ajaxStart(function() { $(this).show(); }) .ajaxStop(function() { $(this).hide(); }) ; read more

Leer más » 12 Comentarios

Instalar muCommander

muCommander es una alternativa al conocido Norton Commander. Es posible que muchos de vosotros uséis Total Commander (la alternativa de pago para Windows), yo de hecho lo uso en el trabajo, igual estoy creando un poco de polémica, pero a día de hoy no he encontrado un file manager mejor que este último.

Para instalarlo en Debian (y Ubuntu o derivados) editamos los sources de APT desde la línea de comandos con:

ahornero@6581-D:~$ sudo nano /etc/apt/sources.list
[sudo] password for ahornero: *** read more

Leer más » 6 Comentarios

Programar copias de seguridad automáticas de PostgreSQL

Si hace unos días hablábamos de cómo hacer backup y restaurar copias de seguridad con MySQL, hoy vamos a hablar de cómo hacerlo con PostgreSQL, incluyendo un detalle más: la automatización para que se ejecute de forma periódica y automática.

pg_dump

Si con MySQL usamos mysqldump, con PostgreSQL utilizamos pg_dump. ¿Cuál es la sintaxis básica? read more

Leer más » 6 Comentarios

¿Cómo traducir programas libres? Uso en PHP (Parte III)

Si ya hemos hablado en líneas generales del tema y hemos comentado cómo hacer uso de los ficheros .po, .mo y .pot, ahora nos toca el turno de llevar a la práctica todo esto. Suponemos que tenemos ya nuestros ficheros .PO y .MO creados. Si queréis practicar, podéis usar los paquetes de lenguaje de cualquier aplicación libre, por ejemplo, los de la versión española de WordPress. Empecemos paso a paso.

Marcar las cadenas a traducir

En lugar de usar directamente:

print “<p>Cadena a traducir</p>\n”; read more

Leer más » 7 Comentarios

Cargar una imagen en JavaScript

A la hora de desarrollar web apps resulta fundamental algún metodo eficaz para cargar imágenes en Javascript. Antes de que el usuario entre en una página es necesario que ésta se cargue por completo. Si en tu aplicación web vas a trabajar con imágenes dinámicas, es decir, que se crean en un momento determinado es fundamental que antes realices la carga en memoria.

Éste es el código que utilizo sin usar ningún tipo de librería:

var imagen = new Image(); imagen.onload = imagenCargada; imagen.src = "ejemplo.png"

En la función imagenCargada es donde ya sé que la imagen ha sido cargada correctamente y puedo proceder a su utilización ya que está almacenada en memoria. read more

Leer más » 4 Comentarios

¿Cómo traducir programas libres? Fichero .po, .mo y .pot (Parte II)

Si hace poco hablábamos en la primera parte de forma introductoria de cómo traducir programas libres, hoy vamos a entrar de lleno en cómo hacerlo.

Antes de empezar a leer más sobre cómo usar gettext con PHP en concreto y con ciertos cambios en otras tecnologías libres, veamos en qué consisten los ficheros que usaremos: .po, .mo y .pot y cómo editarlos y trabajar sobre ellos.

Ficheros .POT (Portable Object Template, plantillas de objetos portables)

El primer paso para comenzar a utilizar gettext, es tener una plantilla donde tengamos definidos todos los mensajes que debemos traducir. Normalmente, el lenguaje de referencia, es el inglés, pero podemos elegir cualquier otro. read more

Leer más » 6 Comentarios

Angry Birds Online

Os comentaba hace tiempo que Rovio Mobile, la compañía que está detrás de Angry Birds, preparaba el lanzamiento de Angry Birds para Ubuntu desde la Ubuntu Software Center, y después os hablé de la forma de instalarlo a través de Wine en Linux.

Hoy os presento la versión online de Angry Birds. Se trata de una copia china del famoso juego, quizás la ventaja que tiene es que no tenéis que instalarlo y podéis jugar desde cualquier lado al estar en flash. Los niveles del primer sector están todos abiertos, para acceder a los del segundo y siguientes supongo que, como en el original, habrá que pasarse todos los anterior. read more

Leer más » 1 Comentario

Instalar Rawstudio 2

Os comentaba hace tiempo la gran cantidad de programas de que disponemos en GNU/Linux para la edición y trabajo con fotografías. Incluso si os dais un paseo podréis descubrir que yo mismamente os he explicado algunos trucos, programas e ideas.

Rawstudio es un programa bastante completo para el revelado digital de fotografía. Es posible que muchos de vosotros uséis GIMP, pero esta es sin duda una opción más ligera y dedicada justamente al tratamiento de fotografías. Básicamente es la alternativa a Lightroom de Adobe (sólo para Windows). read more

Leer más » 3 Comentarios

Google Chrome con la barra de menú tipo MAC

Y es que vía OMG Ubuntu leo que en las últimas inestables (las daily builds) de Chromium (recordad que es el proyecto libre de Google Chrome) ya es posible usar el Global Menu, esto es lo que vulgarmente conocemos como menú tipo MAC. Bien, vamos a ello.

Lo primero que hemos de hacer es instalarnos las daily builds de Chromium, para ello abrimos un terminal y:

ahornero@6581-D:~$ sudo apt-key adv –recv-keys –keyserver keyserver.ubuntu.com 4E5E17B5

ahornero@6581-D:~$ sudo add-apt-repository ppa:chromium-daily read more

Leer más » 2 Comentarios