miércoles, 30 de noviembre de 2011

WordPress: Tema Sliding Doors

Buscando un tema de WordPress para un sitio que estoy montando me topé con "Sliding Doors" ("Puertas Corredizas"), y me agradó bastante por su efecto en el menu principal que hace honor al título del tema.

Como tuve que pasar un rato leyendo el foro para averiguar como personalizar el menú, dejo a disposición una pequeña guía de cómo hacerlo para todo aquel que quiera evitar rascarse la cabeza un rato.

Instalar el tema es bastante sencillo con WordPress. Solo se necesita hacer una búsqueda usando "Sliding Doors". Seleccionamos el tema y lo instalamos.


Vamos añadir una nueva página que va a ser enlazada en el menú deslizante. Usamos la opción de añadir una nueva página.



Para cambiar la imagen que se usará en el menú para esta página damos clic al link de "Imagen destacada" y seleccionamos la imagen de nuestra preferencia.


Seguidamente seleccionamos la opción de "Usar como imagen destacada".

Guardamos los cambios y publicamos la página.


Ahora nos vamos a la sección de menús. Creamos un nuevo menú, le agregamos nuestra página recien creada y lo seleccionamos como el menú de "Sliding Navigation".


Listo, tenemos nuestra página en el menu deslizante.

jueves, 17 de noviembre de 2011

Búsqueda de letras faltantes del abecedario en una oración


Creo que siempre es bueno salvar cualquier código que uno haya hecho por más simple o trivial que parezca. Puede ser que en el momento menos esperado lo requiramos y realmente es frustrante acordarse de que ya uno lo había hecho y luego desechado a la basura.

Dejo para el historial un pequeño código que hice como parte del proceso para aplicar a una empresa. El planteamiento es simple. Codificar un programa que busque las letras faltantes del abecedario en una oración.

import java.util.HashSet;
import java.util.Set;

/**
* Test code to find missing letters of the alphabet from a String sentence.
* @author gabriel.solano
*
*/
public class MissingLetters {

private final int ASCII_CODE_FOR_LETTER_A = 97;
private final int ASCII_CODE_FOR_LETTER_Z = 122;

/**
* Gets the missing letters of a sentence in lower case.
* @param sentence
* @return String having all the letters that the sentence is missing from the alphabet.
*/
public String getMissingLetters(String sentence){
/*
* 1. Let's populate a set with the unique characters of the sentence.
* This approach avoids having two nested for's in the code (better performance).
*/
Set<Integer> uniqueASCIICodes = new HashSet<Integer>();

for (char character : sentence.toLowerCase().toCharArray() ) {
if (character >= ASCII_CODE_FOR_LETTER_A
&& character <= ASCII_CODE_FOR_LETTER_Z) { // Range of lower case letters.
uniqueASCIICodes.add((int)character);

if (uniqueASCIICodes.size() == 26) {
break; // Sentence already covered all letter from the alphabet.
}
}
}
/*
* 2. Move in the range of ascii codes of lower case alphabet
* and check if letter was present in sentence.
*/
StringBuilder misingLettersBuilder = new StringBuilder();

for (int i=ASCII_CODE_FOR_LETTER_A; i <= ASCII_CODE_FOR_LETTER_Z; i++) {
if (!uniqueASCIICodes.contains(i)) {
misingLettersBuilder.append((char)i);
}
}
return misingLettersBuilder.toString();
}

public static void main(String[] args) {

String case1 = "A quick brown fox jumps over the lazy dog";
String case2 = "bjkmqz";
String case3 = "cfjkpquvwxz";
String case4 = "";

MissingLetters missingLetters = new MissingLetters();

System.out.println("Missing letters for[" + case1 + "]: " +
missingLetters.getMissingLetters(case1));
System.out.println("Missing letters for[" + case2 + "]: " +
missingLetters.getMissingLetters(case2));
System.out.println("Missing letters for[" + case3 + "]: " +
missingLetters.getMissingLetters(case3));
System.out.println("Missing letters for[" + case4 + "]: " +
missingLetters.getMissingLetters(case4));
}
}

Salida del programa:

Missing letters for[A quick brown fox jumps over the lazy dog]:
Missing letters for[bjkmqz]: acdefghilnoprstuvwxy
Missing letters for[cfjkpquvwxz]: abdeghilmnorsty
Missing letters for[]: abcdefghijklmnopqrstuvwxyz