-->

domingo, 22 de marzo de 2015

Porque es importante box-sizing (content-box vs border-box) en maquetacion

Cuando estamos maquetando nuestro sitio es comun que nos envolemos con los tamaños del contentpadding margin. aqui te pongo un video para que de una vez quede claro la manera en la que se van a referenciar los tamaños de las cajas en la pagina. espero que te sea de utilidad.

¿Conoces estos trucos secretos de Google y Youtube? ¡Pruebalos!

¿Conoces estos trucos secretos de Google y Youtube?
Navegando por Internet se encontró varios secretos no tan secretos de Google, youtube etc. ¿quieres conocerlos?

Muchos de estos trucos ya están ocultos hoy en día, y los que mostramos hoy puede que se vuelvan a ocultar dentro de un tiempo. Hoy te mostramos funciones ocultas con las que puedes “asustar” a algún amigo.



Google gravity


Como activarlo
1.- Desde la pantalla principal de google ir a preferencias luego elegir configuración de busquedas (Parte inferior derecha de la pantalla)
2.- En la seccion Predicciones de Google Instant seleccionar "No mostrar los resultados de instant"
3.- Luego en el buscador escribir "Google gravity" sin comillas y seleccionar "Voy a tener suerte" y listo

Se cae todo porque no tiene gravedad--ahhh y todo sigue funcionando------ Curioso

'Z or R twice' es uno de los divertidos trucos de Google con el que tu pantalla empezará a girar. Este truco viene de una frase ('Do a Barrel Roll' ) que anticipaba un giro de una nave especial en un videojuego de Nintendo 64 'Star Fox'. Para verlo tan solo tendrás que escribir 'Z or R twice' (sin las comillas) en tu buscador Google(esta curioso jeje)

'Atari Breakout' Es otro de los trucos de Google, pero esta vez para la búsqueda de imágenes. Si ponemos en el buscador Google imágenes 'Atari Breakout' sin las comillas veremos como nuestros resultados de imágenes se convierten en el divertido videojuego de arcade en el que hay que eliminar los bloques de la parte superior con una pelotita que rebota (y evitando que la pelota caiga también). (tip para jugarlo si golpeas la pelota por la parte izquierda la pelota rebotara por la izquierda y si rebota por la parte derecha la pelota rebotara por la derecha)


Otra curiosidad de Google es el juego del dinosaurio que podáis haber visto al quedaros alguna vez sin conexión. Parece un simple aviso de que te has quedado sin línea, pero detrás de este anuncio se esconde un divertido juego para que te entretengas hasta que la conexión regrese. ¿Y cómo se juega? Dándole a la barra espaciadora simplemente el dinosáurio empezará a correr, y deberás saltar (también con la barra espaciadora) los obstáculos.(Noten que no hay conexión en internet jeje)



Otro truco pero en esta ocasión de YouTube es el 'doge meme' que convertirá todos los resultados de tu búsqueda en un diseño bastante feo multicolor y con la tipografía de Comic Sans. Escribe 'doge meme' en el buscador de youtube y verás este truco al darle al botón de búsqueda.


¿Qué es MySQL?

¿Qué es MySQL?
MySQL es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar archivos llamados de bases de datos.
Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza multiples tablas para almacenar y organizar la información. MySQL fue escrito en C y C++ y destaca por su gran adaptación a diferentes entornos de desarrollo, permitiendo su interactuación con los lenguajes de programación más utilizados como PHP, Perl y Java y su integración en distintos sistemas operativos.
También es muy destacable, la condición de open source de MySQL, que hace que su utilización sea gratuita e incluso se pueda modificar con total libertad, pudiendo descargar su código fuente. Esto ha favorecido muy positivamente en su desarrollo y continuas actualizaciones, para hacer de MySQL una de las herramientas más utilizadas por los programadores orientados a Internet.

miércoles, 18 de marzo de 2015

JOptionPane y diálogos modales en Java Netbeans

En nuestras aplicaciones Java Swing es bastante habitual que tengamos que pedir al usuario la confirmación de una acción (por ejemplo, salir de la aplicación o borrar unos datos), pedirle algún dato sencillo, darle a elegir entre varias acciones o simplemente mostrarle un aviso. A veces es necesario para estas acciones abrir una ventana secundaria donde el usuario debe realizar la acción que sea y cerrarla. Por ejemplo, podemos mostrarle una ventana preguntando algo como "¿Estás seguro que quieres borrar todos esos datos?" y que tenga un par de botones "Sí",  "No".
Afortunadamente, en java no tenemos que hacer esas ventanas. Para las acciones más habituales, ya tenemos la clase JOptionPane que muestra esas ventanas por nosotros y nos devuelven la elección hecha por el usuario. En otras ocasiones, nos tendremos que hacer una ventana a nuestra medida, pero si usamos un JDialog modal, al menos tendremos la ventaja de que el código esperará a que el usuario introduzca los datos en dicha ventana.
Vamos a ver en este artículo ejemplos con JOptionPane y Diálogos modales

JOptionPane

JOptionPane tiene dos juegos repetidos de ventanas de aviso/confirmación. Una para ventanas normales y otra para JInternalFrame. Puesto que son lo mismo, vamos a ver aquí sólo los de ventanas normales. Las distintas posibilidades que tenemos de JOptionPane son:

JOptionPane.showOptionDialog()

Tenemos un método JOptionPane.showOptionDialog() que nos muestra la ventana más configurable de todas, en ella debemos definir todos los botones que lleva. De hecho, las demás ventanas disponibles con JOptionPane se construyen a partir de esta. Por ello, al método debemos pasarle muchos parámetros:
  • parentComponent: A partir de este componente, se intentará determinar cual es la ventana que debe hacer de padre del JOptionPane. Se puede pasar null, pero conviene pasar, por ejemplo, el botón desde el cual se lanza la acción que provoca que se visualice el JOptionPane. De esta manera, la ventana de aviso se visualizará sobre el botón y no se podrá ir detrás del mismo si hacemos click en otro sitio.
  • message: El mensaje a mostrar, habitualmente un String, aunque vale cualquier Object cuyo método toString() devuelva algo con sentido.
  • title: El título para la ventana.
  • optionType: Un entero indicando qué opciones queremos que tenga la ventana. Los posibles valores son las constantes definidas en JOptionPaneDEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, o OK_CANCEL_OPTION.
  • messageType: Un entero para indicar qué tipo de mensaje estamos mostrando. Este tipo servirá para que se determine qué icono mostrar. Los posibles valores son constantes definidas enJOptionPaneERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, o PLAIN_MESSAGE
  • icon: Un icono para mostrar. Si ponemos null, saldrá el icono adecuado según el parámetro messageType.
  • options: Un array de objects que determinan las posibles opciones. Si los objetos son componentes visuales, aparecerán tal cual como opciones. Si son String, el JOptionPane pondrá tantos botones como String. Si son cualquier otra cosa, se les tratará como String llamando al método toString(). Si se pasa null, saldrán los botones por defecto que se hayan indicado en optionType.
  • initialValue: Selección por defecto. Debe ser uno de los Object que hayamos pasado en el parámetro options. Se puede pasar null.
La llamada a JOptionPane.showOptionDialog() devuelve un entero que representa la opción que ha seleccionado el usuario. La primera de las opciones del array es la posición cero. Si se cierra la ventana con la cruz de la esquina superior derecha, el método devolverá -1.
Aquí un ejemplo de cómo llamar a este método


 int seleccion = JOptionPane.showOptionDialog(
   unComponentePadre,
   "Seleccione opcion",
   "Selector de opciones",
   JOptionPane.YES_NO_CANCEL_OPTION,
   JOptionPane.QUESTION_MESSAGE,
   unIcono,    // null para icono por defecto.
   new Object[] { "opcion 1", "opcion 2", "opcion 3" },   // null para YES, NO y CANCEL
   "opcion 1");
if (seleccion != -1)
   System.out.println("seleccionada opcion " + (seleccion + 1));
y la ventana que se obtiene con el código anterior
ShowOptionDialog.jpg

JOptionPane.showInputDialog()

Tenemos varios métodos JOptionPane.showInputDialog() y la diferencia entre ellos es que tienen más o menos parámetros, según queramos aceptar o no las opciones por defecto. Los parámetros y sus significados son muy similares a los del método showOptionDialog(), pero hay una diferencia.
Si usamos los métodos que no tienen array de opciones, la ventana mostrará una caja de texto para que el usuario escriba la opción que desee (un texto libre). Si usamos un método que tenga un array de opciones, entonces aparecerá en la ventana un JComboBox en vez de una caja de texto, donde estarán las opciones que hemos pasado.
Aquí un par de trozos de código, el primero para conseguir una caja de texto,

// Con caja de texto
String seleccion = JOptionPane.showInputDialog(
   unComponentePadre,
   "Input dialog",
   JOptionPane.QUESTION_MESSAGE);  // el icono sera un iterrogante
         
   System.out.println("El usuario ha escrito "+seleccion);
y la imagen que obtenemos con este código
ShowInputDialog.jpg
En este segundo ejemplo, damos todas las opciones que queremos, obteniendo un JComboBox


// Con JCombobox
Object seleccion = JOptionPane.showInputDialog(
   unComponentePadre,
   "Seleccione opcion",
   "Selector de opciones",
   JOptionPane.QUESTION_MESSAGE,
   unIcono,  // null para icono defecto
   new Object[] { "opcion 1", "opcion 2", "opcion 3" },
   "opcion 1");
 System.out.println("El usuario ha elegido "+seleccion);
y esta es la imagen que se obtiene.
ShowInputDialog2.jpg

JOptionPane.showMessageDialog()

Esta es la más sencilla de todas, sólo muestra una ventana de aviso al usuario. La ejecución se detiene hasta que el usuario cierra la ventana. Hay varios métodos con el mismo nombre y más o menos parámetros, en función de si aceptamos las opciones por defecto (icono, por ejemplo) o queremos cambiar alguna cosa. Un trozo de código para llamarlo
JOptionPane.showMessageDialog(
   componentePadre,
   "Un aviso puñetero");

System.out.println("ya estas avisado");
y la imagen que muestra este código
ShowMessageDialog.jpg

JOptionPane.showConfirmDialog()

Este método muestra una ventana pidiendo una confirmación al usuario, estilo "¿Seguro que lo quieres borrar todo?" y da al usuario opción de aceptar o cancelar ese borrado masivo que está a punto de hacer. El método devuelve un entero indicando la respuesta del usuario. Los valores de ese entero puede ser alguna de las constantes definidas en JOptionPaneYES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, CLOSED_OPTION. Por supuesto, hay metodos iguales con más o menos parámetros para configurar las cosas más o menos.
El siguiente ejemplo de codigo
int confirmado = JOptionPane.showConfirmDialog(
   componentePadre,
   "¿Lo confirmas?");

if (JOptionPane.OK_OPTION == confirmado)
   System.out.println("confirmado");
else
   System.out.println("vale... no borro nada...");
muestra la siguiente imagen
ShowConfirmDialog.jpg