¡Exámenes!

Publicado el 22. ene, 2012 ·0

Wooooola,

sólo escribiros para comentaros que llevo un mes y medio a tope, y que es por ello que no he podido dedicar un solo rato a escribir en el blog. Entre las fiestas, los preparativos pre-exámenes, las entregas de proyectos y trabajos final de cuatrimestre, y la preparación de la boda (sí, me caso en Septiembre), pues he estado sin tiempo.

Espero volver a escribir, y comenzar con una dinámica, en la segunda quincena de Febrero. Hasta entonces, disculpadme.

Saludos! :)

Categorías: General ·

How great is our God

Publicado el 10. dic, 2011 ·0

Tu vida es un milagro. La ciencia lo grita en cada nuevo descubrimiento.

Si te gusta la ciencia, te invito a ver el siguiente vídeo que:

  • Puede que disfrutes como un niño pequeño conociendo datos asombrosos y que demuestran la grandeza de nuestro mundo. No es posible que todo lo que conocemos sea casualidad
  • O puede que rompa tus esquemas mentales por completo, lo que quizás no te guste, pero que puede cambiar tu vida por completo

“How great is our God”, Louie Giglio

Categorías: Ciencia · Etiquetas:, ,

¿Cómo realizar búsquedas en Google?

Publicado el 01. dic, 2011 ·1

¿Cómo has logrado encontrarlo?

me preguntan a veces. Y es que cuando queremos buscar algo muy específico en Google, a menudo terminamos dejándolo por imposible. Por ello voy a dar algunos consejos y operadores que suelo usar en mis búsquedas.

En primer lugar informar sobre dos cuestiones básicas:

  • No se diferencian mayúsculas de minúsculas
  • Se ignoran los signos de puntuación, al igual que los símbolos @#$%^&*()=+[]\ y los caracteres especiales (aunque hay excepciones)

 

Para una búsqueda básica, de las de diario:

  • Usa términos sencillos, y frases cortas

Para buscar una librería en Sevilla, usa “librería sevilla”, en vez de “localización de una librería en la ciudad de sevilla”

  • Usa palabras que tengas más probabilidad de aparecer en la web que buscas

Si buscas un remedio al dolor de cabeza, es más probable que el sitio web haya escrito “dolor de cabeza” y no “qué tomarme cuando me duele la cabeza”

  • Usa palabras descriptivas

Para buscar uno de los desfasados (o eso pensamos) politonos para nuestro teléfono móvil, buscaremos “politonos famosos nokia” en vez de “sonidos famosos nokia”

 

Para una búsqueda un poco más avanzada:

  • Búsqueda de términos específicos

A menudo, realizamos la búsqueda de una palabra determinada, pero Google nos muestra resultados donde aparecen términos sinónimos. Por ejemplo, si buscamos “anti-virus”, Google nos mostrará resultados donde aparece la palabra “antivirus” (sin guión).

Para realizar una búsqueda de la palabra exacta, usaremos las comillas dobles (“”)

  • Búsqueda de frases

Para el caso en que queramos realizar la búsqueda de una frase concreta. En tal caso, y al igual que en el caso anterior, usaremos las comillas dobles (“”).

Por ejemplo, si queremos saber el autor de una cita, deberíamos buscar lo siguiente (comillas incluídas): “You must ask for God’s help…After each failure, ask forgiveness, pick yourself up, and try again”. En este case, podemos ver fue mencionada por CS Lewis

  • Búsqueda en un sitio web específico

¿Cuántos de nosotros no hemos necesitado realizar una búsqueda dentro de un sitio web? Yo en mi caso es una utilidad que uso casi a diario, al igual que las comillas.

Para ello usaremos el antecedente “site:”, seguido del sitio web y la búsqueda.

Como ejemplo, decir que queremos buscar en el blog de Genbeta información sobre Google Chrome, realizaríamos la siguiente búsqueda: “site:genbeta.com Google Chrome”

  • Términos a descartar

Una utilidad de la que también hago uso de vez en cuando es el descartar ciertas palabras de mis búsqueda. Para ello disponemos del operador menos (-).

Si por ejemplo queremos buscar la palabra “virus”, pero no queremos referirlo a un software, usaremos: “virus -software -programa -windows”. Es decir, podemos excluir aquellos términos que sean usuales en las búsquedas de “virus” y que, sin embargo, no queremos que aparezcan

Si queréis más tips y trucos para mejorar vuestras búsquedas, tanto en tiempo como en eficacia, podéis echarle un ojo a los siguientes enlaces de Google, de los que me he valido para coger la mayoría de los ejemplos que os he comentado:

Enlace | Ayuda básica para las búsquedas

Enlace | Más ayuda relacionada con las búsquedas

Enlace | Opciones de los resultados de búsqueda

Categorías: Google, Internet · Etiquetas:,

Premio al mejor anuncio de TV de 2010

Publicado el 29. nov, 2011 ·1

En otro día me encontré con el anuncio que ganó el 2010 Best TV Advertisement Award. Os recomiendo verlo, os gustará:

Categorías: Humor · Etiquetas:,

Árbol Genérico en Java

Publicado el 18. nov, 2011 ·0

Hoy publico la clase ArbolGenerico, acompañada de NodoGenerico, que he implementado en Java. Es una clase creada únicamente con los métodos básicos necesarios, debido a que finalmente no tuve que hacer uso de ella.

/*
 * 	Autor:		Luis Israel Diéguez Arjona
 * 	Sitio web:	http://israeldieguez.com
 *
 * 	Clase:		ArbolGenerico
 *
 */

package ArbolGenerico;

import java.util.ArrayList;

public class ArbolGenerico<T> {

	private NodoGenerico<T> raiz;

	private ArbolGenerico(NodoGenerico<T> nodo) {
		raiz = nodo;
	}

	public ArbolGenerico(T objeto, ArrayList<ArbolGenerico<T>> hijos) {
		NodoGenerico<T> antHermano;
		ArbolGenerico<T> hijo;
		int i = 0;

		raiz = new NodoGenerico<T> (objeto);
		if (hijos != null && !hijos.isEmpty()) {
			hijo = hijos.get(i);
			raiz.setPrimerHijo(hijo.getRaiz());
			antHermano = hijo.getRaiz();
			i++;

			while (i < hijos.size()) {
				hijo = hijos.get(i);
				antHermano.setSigHermano(hijo.getRaiz());
				antHermano = hijo.getRaiz();
				i++;
			}
		}
	}

	public ArbolGenerico(ArbolGenerico<T> arbol) {
		raiz = arbol.getRaiz();
	}

	public NodoGenerico<T> getRaiz() {
		return raiz;
	}

	public ArrayList<ArbolGenerico<T>> getHijos() {
		ArrayList<ArbolGenerico<T>> hijos = new ArrayList<ArbolGenerico<T>>();
		NodoGenerico<T> hijo;
		int i = 0;

		if (raiz != null) {
			hijo = raiz.getPrimerHijo();
			hijos.add(new ArbolGenerico<T>(hijo));

			while (i < numHijos()) {
				hijo = hijo.getSigHermano();
				hijos.add(new ArbolGenerico<T>(hijo));
				i++;
			}
		}

		return hijos;
	}

	public int numHijos() {
		int cont = 0;

		if (raiz != null) {
			NodoGenerico<T> hijo = raiz.getPrimerHijo();

			while (hijo != null) {
				cont++;
				hijo = hijo.getSigHermano();
			}
		}

		return cont;
	}

	public ArbolGenerico<T> subArbol(int i) {
		ArbolGenerico<T> arbol = null;
		NodoGenerico<T> hijo;
		int cont = 0;

		if (i < numHijos()) {
			hijo = raiz.getPrimerHijo();
			while (cont < i) {
				hijo = hijo.getSigHermano();
				cont++;
			}
			arbol = new ArbolGenerico<T>(hijo);
		}

		return arbol;
	}

	public boolean esHoja() {
		return (raiz.getPrimerHijo() == null);
	}

	public int altura() {
		if (esHoja())
			return 1;
		else
			return 1 + alturaHijos (getHijos());
	}

	private int alturaHijos (ArrayList<ArbolGenerico<T>> hijos) {
		int altura, alturaMax;
		int i = 0;

		alturaMax = 0;
		while (i < hijos.size()) {
			altura = hijos.get(i).altura();
			if (altura > alturaMax)
				alturaMax = altura;
			i++;
		}

		return alturaMax;
	}

}

A continuación la clase NodoGenerico:

/*
 * 	Autor:		Luis Israel Diéguez Arjona
 * 	Sitio web:	http://israeldieguez.com
 *
 * 	Clase:		NodoGenerico
 *
 */

package ArbolGenerico;

public class NodoGenerico<T> {

	private T objeto;
	private NodoGenerico<T> primerHijo;
	private NodoGenerico<T> sigHermano;

    public NodoGenerico(T objeto) {
        this.objeto = objeto;
        primerHijo = null;
        sigHermano = null;
    }

    public NodoGenerico(T objeto, NodoGenerico<T> pHj, NodoGenerico<T> sHm) {
        this.objeto = objeto;
        primerHijo = pHj;
        sigHermano = sHm;
    }

    public NodoGenerico(NodoGenerico<T> nodo) {
        this.objeto = nodo.getObjeto();
        primerHijo = nodo.getPrimerHijo();
        sigHermano = nodo.getSigHermano();
    }

	public T getObjeto() {
		return objeto;
	}

	public void setObjeto(T objeto) {
		this.objeto = objeto;
	}

	public NodoGenerico<T> getPrimerHijo() {
		return primerHijo;
	}

	public void setPrimerHijo(NodoGenerico<T> primerHijo) {
		this.primerHijo = primerHijo;
	}

	public NodoGenerico<T> getSigHermano() {
		return sigHermano;
	}

	public void setSigHermano(NodoGenerico<T> sigHermano) {
		this.sigHermano = sigHermano;
	}

}

Y por último un ejemplo de su uso (puedes ver el árbol final haciendo un debug y poniendo el punto de ruptura en la última línea):

/*
 * 	Autor:		Luis Israel Diéguez Arjona
 * 	Sitio web:	http://israeldieguez.com
 *
 * 	Clase:		Testing
 *
 */

package ArbolGenerico;

import java.util.ArrayList;

public class Testing {

	public static void main(String[] args) {
		// Subarbol 4
		ArrayList<ArbolGenerico<String>> lista4 = new ArrayList<ArbolGenerico<String>>();
		ArbolGenerico<String> arbol5 = new ArbolGenerico<String>("5", null);
		ArbolGenerico<String> arbol6 = new ArbolGenerico<String>("6", null);
		lista4.add(arbol5);
		lista4.add(arbol6);
		ArbolGenerico<String> arbol4 = new ArbolGenerico<String>("4", lista4);

		// Subarbol 2
		ArrayList<ArbolGenerico<String>> lista2 = new ArrayList<ArbolGenerico<String>>();
		lista2.add(arbol4);
		ArbolGenerico<String> arbol2 = new ArbolGenerico<String>("2", lista2);

		// Subarbol 3
		ArrayList<ArbolGenerico<String>> lista3 = new ArrayList<ArbolGenerico<String>>();
		ArbolGenerico<String> arbol7 = new ArbolGenerico<String>("7", null);
		ArbolGenerico<String> arbol8 = new ArbolGenerico<String>("8", null);
		ArbolGenerico<String> arbol9 = new ArbolGenerico<String>("9", null);
		lista3.add(arbol7);
		lista3.add(arbol8);
		lista3.add(arbol9);
		ArbolGenerico<String> arbol3 = new ArbolGenerico<String>("3", lista3);

		// Subarbol 1
		ArrayList<ArbolGenerico<String>> lista1 = new ArrayList<ArbolGenerico<String>>();
		lista1.add(arbol2);
		lista1.add(arbol3);
		ArbolGenerico<String> arbol1 = new ArbolGenerico<String>("1", lista1);
	}

}
Categorías: Java, Programación · Etiquetas:,