Artículos
HTML5

Precargar elementos en una página web

Creado: 21/Dic/2010 Actualizado: 09/Ene/2025

Precargar elementos es una de las opciones de optimización de cara al rendimiento más utilizadas en múltiples campos de la informática. La idea es cargar lo elementos que supongamos que el usuario va a necesitar el consecutivas peticiones.

En este caso vamos a precargar elementos de las páginas web que consideremos que el usuario puede visitar a posteriori. Cuándo hablamos de elementos nos referimos a imágenes, scripts, css,… incluso otras páginas enteras.

Para precargar un elemento utilizaremos la etiqueta LINK. En la etiqueta LINK el valor del atributo rel será prefetch. Esto indicará al servidor, que hay que descargar un elemento para la precarga.

Podemos precargar una imagen:

<link rel="prefetch" href="https://misitio.com/img/imagen.png">

O podemos precargar una página:

<link rel="prefetch" href="https://misitio.com/otra-url/">

En el caso de Firefox también soporta el valor next para la precarga:

<link rel="next" href="https://misitio.com/otra-url/">

Cuando estemos utilizando la precarga de elementos en una página web con prefetch debemos de tener en cuenta una serie de cosas:

Ancho de banda
Esto supone un consumo de ancho de banda adicional… Con lo cual tendremos que tener cuidado si estamos enviando información a dispositivos con ancho de banda limitado.

Datos de las estadísticas
Se están descargando elementos que no tienen porqué visualizarse, si bien quedará registro en los webservers de la petición de dichos recursos. Programas de estadísticas podrían ver alterados sus datos.

Soporte de navegadores
El soporte actual de los navegadores es Firefox (en todas sus versiones) y parece que Google Chrome 9. Puedes comprobar si tu navegador soporta el prefetch o bien consultar una lista general con el soporte del prefetch por parte de los navegadores.

En el caso de Firefox podemos deshabilitar la precarga de elementos mediante el código script:

user_pref("network.prefetch-next", false);

Existen alternativas en el servidor
Se puede formar en la configuración de los servidores el que cuándo se solicite una página se fuerce la descarga de otra. De esta manera evitamos tener que tocar todas las páginas de nuestro sitio web.

Aunque la precarga de elementos (o uso de prefetch) es muy potente, lleva implícito un conocimiento de las navegaciones de nuestra web, así como el comportamiento de nuestros usuarios para poder sacar verdadera ventaja de la técnica.

Vídeos sobre HTML5

Disfruta también de nuestros artículos sobre HTML5 en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test HTML5

¿Te atreves a probar tus habilidades y conocimiento en HTML5 con nuestro test?

Test HTML5
Artículos
HTML5

Crear un Websocket

Creado: 20/Dic/2010 Actualizado: 09/Ene/2025

Un websocket es una tecnología HTML5 que nos permite abrir sockets para una comunicación bidirecional, full-duplex, con baja latencia y que se basa en el protocolo TCP. Los Websockets están siendo estandarizado por la W3C mediante el Websocket API.

La versión del protocolo de Websockets más soportada en la actualidad es la versión 76.

Lo primero que tenemos que hacer es definir el Websocket. Para ello utilizamos la clase WebSocket, la cual recibe como parámetro la URI del Websocket.

var mysocket = new WebSocket("ws://echo.websocket.org");

Lo primero que vemos es que la URI del Websocket se caracteriza por el protocolo ws:// o wss:// si fuese una conexión segura.

En nuestro caso utilizamos la URI

ws://echo.websocket.org

que es un Websocket que responde con un eco de cada información enviada al servidor.

Una vez que hemos creado el Websocket lo siguiente que tenemos que hacer es definir las funciones de callback que controlarán el intercambio de información con el Websocket.

Las funciones de callback que hay que implementar son:

  • onopen – cuándo se abre el Websocket.
  • onmessage – para cuando recibimos un mensaje por el Websocket.
  • onclose – cuándo se cierra el Websocket.
  • onerror – si se produce un error en el Websocket.

Todas las funciones de callback del Websocket tienen la siguiente estructura:

mysocket.onxxx = function (evt){ ... };

Así, codificaremos las siguientes funciones de callback:

mysocket.onopen = function (evt){
   escribir("Websocket abierto");
};

mysocket.onmessage = function (evt){
  escribir("RECIBIDO: " + evt.data);	
};

mysocket.onclose = function (evt){
  escribir("Websocket cerrado");
};

mysocket.onerror = function (evt) {
  escribir("ERROR: " + evt.data);
}

Vemos que en todos los casos utilizamos la función escribir, la cual vuelca el contenido en una capa. De la siguiente forma:

function escribir(texto){
  valor = document.getElementById("caja").value;
  document.getElementById("caja").value = valor + texto + "\n";
}

Una vez que tenemos el Websocket abierto y con sus funciones de callback definidas empezamos a enviar mensajes. Para enviar mensajes al Websocket utilizamos el método .send()

function enviar(texto) {
  mysocket.send(texto);
  escribir("ENVIADO: " + texto);
}

Para finalizar nuestro cambio de mensajes con el Websocket utilizaremos el método .close() para cerrar el Websocket.

function desconectar(){		
  mysocket.close();
}

Solo nos quedará tener un pequeño layout que nos permita ejecutar las funciones enviar() y desconectar(). Así como tener una capa en la cual se vuelque el contenido.

<textarea id="caja" cols="100" rows="20"></textarea><br><input id="mensaje" size="105" type="text"> <button>Enviar</button> <button>Desconectar</button>

Por último que nos queda por saber es el soporte de los navegadores para los Websockets. En la actualidad los navegadores que soportan los Websockets son:

  • Firefox 4
  • Google Chrome 4
  • Opera 11
  • Safari 5

Vídeos sobre HTML5

Disfruta también de nuestros artículos sobre HTML5 en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test HTML5

¿Te atreves a probar tus habilidades y conocimiento en HTML5 con nuestro test?

Test HTML5
Artículos
Javascript

String con reverse en Javascript

Creado: 19/Dic/2010 Actualizado: 28/May/2015

La clase String en Javascript, no trae un método que nos permita dar la vuelta a la cadena. Es decir, lo que conocemos como reverse.

Si bien, mediante las técnicas que hemos aprendido para dar de alta un método online sobre una clase, lo que vamos a hacer es dar de alta el método reverse, directamente sobre la clase String de Javascript.

Además ya sabemos cómo se hace el código para invertir una cadena en Javascript.

Si recordamos como se daba de alta un método online sobre una clase, veremos que tenemos que utilizar la sentencia prototype sobre dicha clase. En este caso como es sobre String utilizaremos:

String.prototype.reverse = function() {...}

Ahora solo tenemos que integrar él código que invierte la cadena como cuerpo de la función. Retornando la cadena invertida.

Quedaría un código similar a:

String.prototype.reverse = function() {

	var x = this.length;
	var cadena = "";
	while (x>=0) {
		cadena = cadena + this.charAt(x);
		x--;
	}
	return cadena;
	
};

Ya solo nos quedará instanciar un String e invocar a su nuevo método .reverse().

var x = new String("Hola");
document.write("La cadena " + x + " invertida es " + x.reverse());

Código Fuente

Descárgate el código fuente de String con reverse en Javascript
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Javascript

Disfruta también de nuestros artículos sobre Javascript en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Javascript

¿Te atreves a probar tus habilidades y conocimiento en Javascript con nuestro test?

Test Javascript
Artículos
Javascript

Invertir una cadena en Javascript

Creado: 16/Dic/2010 Actualizado: 29/May/2015

Vamos a ver como podemos invertir una cadena en Javascript. Para ello crearemos el método invertirCadena(). Este método recibirá la cadena origina y devolverá la cadena invertida.

function invertir(cadena) {...}

Para invertir una cadena lo que vamos a hacer es recorrer carácter a carácter la cadena original y con estos caracteres ir componiendo una nueva cadena. La que será la cadena invertida.

Lo primero que debemos de hacer es saber el tamaño de la cadena. Esto nos lo dará el método .length. Ahora crearemos un método que itere por la cadena tantas veces como el tamaño de la cadena:

var x = cadena.length;

while (x>=0) {
  x--;
}

En cada vuelta del bucle y con el método .charAt() iremos componiendo la cadena invertida. Es decir, en la primera iteracción obtenemos el último carácter de la cadena y lo ponemos al principio de la cadena invertida, en la segunda iteracción obtenemos el penúltimo carácter y o ponemos como segundo carácter de la cadena invertida. Así hasta que hayamos recorrido la cadena por completo.

Recuerda que el método .charAt() recibe como parámetro la posición del carácter de la cadena que queremos leer.

Veamos como sería el código:

var x = cadena.length;
var cadenaInvertida = "";

while (x>=0) {
  cadenaInvertida = cadenaInvertida + cadena.charAt(x);
  x--;
}

Ya solo nos queda devolver el contenido de cadenaInvertida para tener completo nuestro método que invierte una cadena con Javascript:

function invertir(cadena) {
  var x = cadena.length;
  var cadenaInvertida = "";

  while (x>=0) {
    cadenaInvertida = cadenaInvertida + cadena.charAt(x);
    x--;
  }
  return cadenaInvertida;
}

Código Fuente

Descárgate el código fuente de Invertir una cadena en Javascript
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Javascript

Disfruta también de nuestros artículos sobre Javascript en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Javascript

¿Te atreves a probar tus habilidades y conocimiento en Javascript con nuestro test?

Test Javascript
Artículos
Javascript

Creando clases en Javascript con apply

Creado: 15/Dic/2010 Actualizado: 29/May/2015

Ayer veíamos que podíamos crear clases con Javascript mediante el método call. El método call nos permitía el invocar a múltiples constructores, reutilizando una estructura de clases coherentes.

Si bien, en Javascript contamos con otro método. El método .apply(). Este método, al fin y al cabo, viene a hacer lo mismo que hace el método .call(). Pero de otra forma.

Si recordamos, teníamos dos clases definidas DatosBasicos y Domicilio.

function datosbasicos(nombre,apellido,edad) {
  this.nombre = nombre;
  this.apellido = apellido;
  this.edad = edad;	
}

function domicilio(direccion,cp,ciudad){
  this.direccion = direccion;
  this.cp = cp;
  this.ciudad = ciudad;	
}

Y queríamos crear una clase Persona instanciando a los constructores de estas dos clases. El método .apply() nos permite hacer esto. Pero a diferencia del método .call(), .apply() recibe como parámetro el valor arguments. La variable arguments incluye todos los atributos de la clase que invoca.

Así, si definimos la clase Persona con .apply() sería de la siguiente forma:

function persona(nombre,apellido,edad,direccion,cp,ciudad){
	datosbasicos.apply(this,arguments);
	domicilio.apply(this,arguments);
}

Esto nos presenta un pequeño inconveniente, ya que deberemos de modificar DatosBásicos y Domicilio para que reciban todos los parámetros:

function datosbasicos(nombre,apellido,edad,direccion,cp,ciudad) {
  this.nombre = nombre;
  this.apellido = apellido;
  this.edad = edad;	
}

function domicilio(nombre,apellido,edad,direccion,cp,ciudad){
  this.direccion = direccion;
  this.cp = cp;
  this.ciudad = ciudad;	
}

Un pequeño inconveniente, pero que nos permite mantener la estructura de clases. Ahora ya solo te queda decidir cuál de los dos métodos en Javascript utilizar. Si .call() o .apply().

Código Fuente

Descárgate el código fuente de Creando clases en Javascript con apply
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Javascript

Disfruta también de nuestros artículos sobre Javascript en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Javascript

¿Te atreves a probar tus habilidades y conocimiento en Javascript con nuestro test?

Test Javascript
Artículos
Javascript

Creando clases en Javascript con call

Creado: 14/Dic/2010 Actualizado: 28/May/2015

Una de las cosas que no se podían hacer hasta Javascript 1.3 era el ejecutar multiples constructores en una clase. Cosa que se solucionó con el método call, el cual nos permite crear clases con varios constructores. Pero vamos paso a paso viendo cuál es el problema y la solución.

Si estás en una programación a objetos con Javascript, lo más normal es que definas en clases las entidades con las que trabajas. Por ejemplo podríamos tener las entidades DatosBásicosPersona y Domicilio. Veamos la declaración de estas clases:

function datosbasicos(nombre,apellido,edad) {
  this.nombre = nombre;
  this.apellido = apellido;
  this.edad = edad;	
}

function domicilio(direccion,cp,ciudad){
  this.direccion = direccion;
  this.cp = cp;
  this.ciudad = ciudad;	
}

Dadas estas clases podemos instanciar objetos de las mismas:

var db1 = new datos basicos("victor","cuervo","33");
var d1 = new domicilio("calle del pez,3","28001","madrid");

Pero, cómo podemos reutilizar estas clases para definir una entidad que sea persona en Javascript, la cual aglutine información de estas dos entidades. Pues para ello utilizamos el método call.

Este método nos permite invocar al constructor de una clase, pasándole la clase en la que queremos instanciar el constructor y los atributos de instanciación. Así, podríamos definir la clase persona de la siguiente forma:

function persona(nombre,apellido,edad,direccion,cp,ciudad){
  datosbasicos.call(this,nombre,apellido,edad);
  domicilio.call(this,direccion,cp,ciudad);
}

Vemos que el constructor de la clase persona invoca a los constructores de datosbasicos y domicilios haciéndoselos suyos. Muy importante ver que el primer atributo siempre es this, que hace referencia a la clase persona que inicia la instanciación.

Así, podremos instanciar una persona de la siguiente forma:

var p1 = new persona("victor","cuervo","33","calle del pez,3","28001","Madrid");

Y acceder a sus valores:

document.write("Mi código postal es " + p1.cp);

Manteniendo una correcta definición de clases.

Como hemos podido ver, el método call es un poco desconocido, pero es un métdodo de gran utilidad. Sobre todo si programas orientado a objetos con Javascript.

Código Fuente

Descárgate el código fuente de Creando clases en Javascript con call
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Javascript

Disfruta también de nuestros artículos sobre Javascript en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Javascript

¿Te atreves a probar tus habilidades y conocimiento en Javascript con nuestro test?

Test Javascript
Artículos
Java

Invertir una cadena con reverse en Java

Creado: 13/Dic/2010 Actualizado: 29/Dic/2014

En el artículo Invertir una cadena con Java veíamos como realizar un código que nos permitiese dar la vuelta a una cadena mediante un bucle for.

Si bien, tenemos otras opciones, por ejemplo utilizando el .reverse() de un StringBuffer.

Definimos el String y lo cargamos en el StringBuffer:

String cadena= "abuelita, abuelita";
StringBuilder builder=new StringBuilder(cadena);

Ejecutamos el .reverse() del StringBuffer y convertirmos el StringBuffer en una cadena mediante el método .toString()

String sCadenaInvertida=builder.reverse().toString();

Algo muy sencillo y útil.

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Artículos
Javascript

Saber si un objeto tiene una propiedad con Javascript

Creado: 12/Dic/2010 Actualizado: 28/May/2015

Si estamos trabajando con objetos en Javascript, una de las cosas que nos puede ayudar es el saber si un determinado objeto tiene una propiedad en cuestión. Para acceder a ella.

Y es que solo podremos saber si el objeto tiene variables públicas, nunca variables privadas.

Lo primero que haremos será definir una clase e instanciar un objeto de esa clase:

function rectangulo(base,altura){
	this.base = base;
	var altura = altura;
	this.calcularArea = function() { return this.base*this.altura; };
	this.getBase = function() {return base;}
	this.getAltura = function() {return altura;}	
}

var r1 = new rectangulo(2,3);

Vemos que el objeto tiene una propiedad base que es pública y otra que es altura, la cual es privada. Para saber si un objeto tiene una propiedad utilizamos el método .hasOwnProperty, el cual recibe como parámetro el nombre de la propiedad sobre la cuál queremos conocer su existencia.

Así el código para saber si un objeto tiene una propiedad sería:

if (r1.hasOwnProperty("base"))
  document.write("El objeto tiene la propiedad BASE");
else
  document.write("El objeto NO tiene la propiedad BASE");

document.write("
"); if (r1.hasOwnProperty("altura")) document.write("El objeto tiene la propiedad ALTURA"); else document.write("El objeto NO tiene la propiedad ALTURA"); document.write("
"); if (r1.hasOwnProperty("area")) document.write("El objeto tiene la propiedad AREA"); else document.write("El objeto NO tiene la propiedad AREA");

Al ejecutar el código veremos que obtenemos el valor false para altura (ya que es una propiedad privada) y para área (ya que no existe). En cambio veremos el valor de true para base.

Vídeos sobre Javascript

Disfruta también de nuestros artículos sobre Javascript en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Javascript

¿Te atreves a probar tus habilidades y conocimiento en Javascript con nuestro test?

Test Javascript
Artículos
Java

Validador de RUT en Java

Creado: 09/Dic/2010 Actualizado: 29/Dic/2014

El RUT es el Rol Único Tributario es un número único Chileno que sirve como identificador tributario.

El RUT consta de dos partes, el número y el dígito verificador separados por un guión. En el siguiente ejemplo se toma como RUT el número 30.686.957-X, donde 30.686.957 es el número del RUT y X es el dígito verificador que no conocemos o que queremos verificar:

Se procede a tomar el número de RUT de derecha a izquierda, multiplicando cada dígito por los números que componen la serie numérica 2,3,4,5,6,7; y sumando el resultado de estos productos, como se muestra a continuación (si se ha aplicado la serie hasta el 7 y quedan dígitos por multiplicar, se comienza la serie nuevamente):

7 × 2 = 14,
5 × 3 = 15,
9 × 4 = 36,
6 × 5 = 30,
8 × 6 = 48,
6 × 7 = 42,
0 × 2 = 0,
3 × 3 = 9

Entonces la suma de los productos es

14+15+36+30+48+42+0+9 = 194

Para poder hacer con Java esto tenemos que invertir el número:

public static Object[] invertir(Object[] array) {
  Object[] invertir_int = new Object[array.length];
  int maximo = array.length;

  for (int i = 0; i < array.length; i++) {
    Object j = array[maximo - 1];
    invertir_int[maximo - 1] = array[i];
    maximo--;
    }
  return invertir_int;
}

Ahora, vamos multiplicando por la serie de números y acumulando la suma en rutSumado.

int a = 2;
for (int i = 0; i < array.length; i++) {
  array[i] = Integer.parseInt((String) array[i]) * a;
  rutSumado += Integer.parseInt(String.valueOf(array[i]));
  if (a == 7) {
    a = 1;
  }
  a++;
}

Al número obtenido por la suma del producto de cada dígito por la serie ya mencionada, se le aplica módulo 11, o sea, se divide por 11 y se determina el resto de la división.

194: 11 = 17
Resto: 7

Ahora a 11 se le resta el resto:

11 - 7 = 4

El código Java sería

int resto = rutSumado % 11;
String Digito = String.valueOf(11 - resto);

Con el valor obtenido:

  • Si el resultado es 11, el dígito verificador será 0.
  • Si el resultado es 10, el dígito verificador será K.
  • En otro caso el resultado será el dígito verificador.

Para hacer esto con Java:

if (Digito.equals("11")) {
  Digito = "0";
}

if (Digito.equals("10")) {
  Digito = "K";
}

Como en el ejemplo el resultado de la resta es 4, el dígito verificador es 4. Por ende, el RUT del ejemplo es el 30.686.957-4.

Saludos, Espero que les sea de ayuda :D

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Artículos
HTML5

¿Soporta mi navegador la caché local de HTML5?

Creado: 01/Dic/2010 Actualizado: 09/Ene/2025

Si quieres saber si tu navegador soporta la caché local de HTML5 solo tienes que insertar el siguiente código HTML5.

if (localStorage)  {
  //Se soporta la caché local
}

El elemento localStorage es quien nos permite saber si está implementada la caché local HTML5 en tu navegador o no.

Puedes comprobarlo sobre tu propio navegador.

Vídeos sobre HTML5

Disfruta también de nuestros artículos sobre HTML5 en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test HTML5

¿Te atreves a probar tus habilidades y conocimiento en HTML5 con nuestro test?

Test HTML5